You should have made this "Boom Challenges Deemed Impossible" to convince some Doomgods to prove you wrong and find a seed with a 300 damage shotgun blast.
Funny story, during the pre-release beta testing of Boom one of the testers sent a message about the bug we were beating on. He commented in passing that during the demo he was recording he'd taken out an undamaged Revenant with one SSG blast and he'd never seen that before. One of TeamTNT's coders (I think it was Rand Phares but it's been so long) told him he'd done something with billion-to-one odds - possibly not low-balling it as I think the RNG was still being tweaked at the time. The tester was NOT happy to hear this because the bug we were testing was a demo corruption bug. He'd recorded a demo of it but the demo was useless garbage!
@@leonardpitre393 they say he's still playing that level to this day, hoping to record that lost demo once again before his soul can be at peace. They say on a dark winters night, you can still hear his ghostly voice echoing on the wind, cursing each revenant that refuses to die to a single SSG hit, like a 'little boney bitch'. 'They' say a lot of shit, to be honest.
@@leonardpitre393 what a demo plot worth to read! Probably someone else RIGHT now would curse at revs "what the fuck??? Why you took no dmg, yo flithy skeleton?"
I wasn't expecting the RNG to be different in Boom, Boom's descendants and GZDoom. This is so subtle that it can be easily overlooked, so it's nice this video compares the differences and examine why Doom's very basic "RNG" has been revamped so it is even less predictable and gives a more diverse amount of numbers returned. Even though I haven't seen anyone (in non-TAS playthroughs/speed runs) accurately keep track of which position the RNG index is, to predict damage rolls, hitscan accurateness and other RNG factors to exploit and/or to use it to their advantage.
Well now i know why that one Revenant took one extra SSG blast to kill over all the other ones. Thanks Ducino, you wouldn't know how much this information has helped me.
The ZDoom's RNG being different from Vanilla's was once a discussion topic in Skulltag/Zandronum community. People were arguing that the Vanilla's RNG made the SSG more powerful and that you could "feel" that in deathmatch. I think that your bar charts at 5:18 validate that argument. In the end the Skulltag devs were convinced to restore the old RNG and thus we now have the "compat_oldrandom" flag in Zandronum that does just that when enabled.
"People were arguing that the Vanilla's RNG made the SSG more powerful and that you could "feel" that in deathmatch." I think it is just auto-suggestion. Lets say you put them in deathmath marathon where half of them were on zandronum and half on ZDoom. If you could somehow hide which version of doom engine they are playing, I bet their guess about what they are actually playing would be purely random. "I think that your bar charts at 5:18 validate that argument." Decino clearly stated that in all cases average (200) is same.
@@Mader_Levap To be fair, the average might be the same, but the odds of getting a 245 highroll are higher in vanilla, and highrolls can sometimes be palpable.
@@Mader_Levap I was there during this time, and played a lot of competitive doom up until early this year, from which I’ve taken a break now. And no, it was not something you could hide, of course it required us to play both Skulltag, AND ZDaemon to notice this, otherwise no one would’ve known. But just telling us to fire SSGs randomly for an hour will of course, have us guess. Why? Because it’s an RNG table, you can’t instantly tell, it took many people, and many MANY games to figure out the RNG was different on Skulltag.
Vanilla's distribution might be crap, but overall vanilla's graph is weighted towards more damage vs less. The theoretical maximum might be less, but on average your SSG shots will be more damaging with Vanilla's random table versus a true PRNG, because there are more 10 and 15 damage pellets than 5. This is why multiplayer ports often have an option for using the Vanilla PRNG, because when playing DM the reduced damage from a true PRNG was pretty noticeable.
You ask me, they did it like that in the vanilla so that the big damage shots really feel "lucky" as opposed to the average which is pretty constant. They wanted that 1 in 50 chance that one blast from the double shotgun can rip apart half a room vs the 90% chance of doing more or less regular damage and making you have to mop up the survivors. I always felt really "skillful" when one shot cleared out an entire room. Kinda disheartening when I realized it's all just RNG, but I think that's the beauty of it. They created a very powerful illusion.
@@evanharrison4054 That's actually a very good point. Boom might be "more fancy math" but those 1 in a million-type damage shots are less exciting. Getting a 1 in 50 shot in DM though? That feels *great.* Yeah so the maths is fancier, but does it make the game more *fun?*
@@evanharrison4054 I don't think it was purposeful. After all, the existence of the random table predates the SSG, which is where the damage difference is most visible. I think there was a discussion on DW about this which IIRC came to the conclusion that id simply took some bytes from a conventional PRNG and put it in a table.
@@brainstewX I don't see the sport in it, to be honest - if anything it'd be better to just use the table. Doom uses so much randomness per tic and the random table's quality is good enough to the point where it's hard to see a difference most of the time. The two instances where it is most visible are SSG damage and predictable initial spawns in DM. The first one is a net positive, and you could remedy the second one by having a random initial value in the table.
One thing in GZdoom that caught me off guard when I was going through Doom 2 is that the RNG seed gets saved in your save game and I also suspect it DOES use the different seeds/counters for different entity types. Las time I got to the Icon of Sin I had some miserable luck with the spawner. Before I could send the lift up the first time, I had a macubus right beside it, one archvile on the lower platform and like a couple pain elementals already. Not to mention the other nonsense. But the thing is no matter how much I died and had to reload (and I died so many times in that map) when I came back the sequence of spawns was always deterministic. So I had to devise some strategy around dealing with that very specifically "Camp here and wait for the archvile to spawn, then rush it and kill the Pain elemental on the way up" kind of deal. I noticed that firing shots and other sheananigans would not influence this so the RNG sequence for the Icon was preset and isolated. It was a painful way of finding that out
...huh. I use GZDoom and always got the same seed when fighting the Icon of Sin in Doom II - it *always* started with a Spectre, though I don't remember the rest. That explains it, I just presumed that there was a set order to the fight.
Your RNG video was, I THINK, the first decino vid I've seen. That or the monster sprite one. Either way, interesting to see the way another engine tackles it. Thanks for the info Ducino
2:30 The magic numbers are such that they form a linear congruence pseudorandom sequence. I believe *most* values would do, but in practice one just picks them from a programming book to make sure the bits are properly randomized from one iteration to them next and the period isnt cut short due to some mathematical coincidence.
The short answer seems to be "start shit and find out". There's a couple of theorems that help pick values that don't have trivial cycles, but you then need to put the output through a bunch of "randomness tests" to show it doesn't have undesirable patterns. What's an undesirable pattern, you ask? Ah, I see you like philosophy.
Saying Boom is popular to this day is a half-truth. Boom's various evolutions are what is still popular. These evolutions raised the engine limits even more and support features created for MBF at the very least, which is still more than enough to make the latest version of Boom (2.02 from 1998) incompatible with modern "Boom"-compatible wads. The "Boom Compatible" label bothers me so much because there's still at least one loser (me) actually using Boom (or MBF sometimes), and the only guide I have for what it's actually compatible with is time of release.
I mean I think it's pretty accurate. The boom and zdoom families together pretty much corner the market on beyond-vanilla dooming, even though you probably shouldn't use either raw boom or raw zdoom in current year
Yeah for the benefit anyone not terribly familiar with DOOM sourceports, this is akin to conflating the original ZDoom with all its descendants (GZDoom, Zandronum, etc.), only kinda worse because ZDoom itself at least lasted much longer.
Just use GZDoom already. I have Zandronum installed too. But I only use it for online gameplay. So I basically don't really use it. It's such a pain every server wants you to have a different version. I had to figure out how to download a specific version in Mercurial to build one.
Always a good day when a decino video comes out. I always watch the technical ones...being a c++/c# coder myself makes them fun to see the guts, and I usually have the long play-throughs going in the background when working on hobbies. Keep up the good work, and congrats on 3 years as well.
Comes to my mind something. You have showed us how ... boring Doom becomes if all the RNG values are the same. But what happens, if the values are not random, instead they are increasing or decreasing between 0 to 255? Will the Icon if Sin explosion look like a ramp? :D
Fun fact: for an LCG like this, you can derive another LCG which has the same values and period, but in reverse order! For a=1664525 and c=221395, the reversed LCG would be a=4276115653 and c=3246257569. It's pretty simple: your new a is the multiplicative inverse of the old a, modulo m; the new c is -c * the new a, modulo m again. You could use a reverse step function like this to reconstruct an earlier RNG state in a video game, for example after reconstructing a seed using a few random outputs later in the sequence. The value 221395 comes from your video's 221297 + pr_class * 2, where pr_class = 49; I used 49 rather than 50, because C enums start at 0 (the comments in the source appear to be off by one!).
Yet another nice video, TeamTNT made a good job. Interesting, I was mostly using Boom with DosBox some time ago. And by the way, happy 3rd anniversary, _boomer_
Wow, right as I was about to ask "Where GZDoom?" you also decided to show it. I might consider getting boom in the future, I'm sticking to GZDoom for now. But at the same time, I kinda want to try to find the "god run" seed with massive super shotgun damage. Guess I'll leave it to Zero Master as always. Thanks for digging through the code and compiling the data into one neat graph at the end! I'm sure that I am not the only one who appreciates it.
@@1pcfred You _are_ fighting the legions of hell as an ordinary man, after all. An ordinary military man, but an ordinary man nonetheless. You need all the help you can get.
@@hostiusasinhostilityhostil7853 Doom Guy is no ordinary man. I mean who can run carrying all the guns and ammo he can? The Mythbusters did an episode on it. A really buff person can do it. Ordinary men? Not so much.
@@1pcfred You've seen him on the title screen, right? He's pretty buff. not to mention story/logic and gameplay segregation because imagine playing doom except you have encumbrance, imagine how much that would slow down the pace of the game
It's 4:30 am here and wanted to go sleep but now I have just numbers in my head, random numbers of course. But besides that, I like to take an insight look how things work in my favourite video game and all what has to do with it. Thanks for your effort and your time you spent in the analysis video series decino.🙂👍
I knew I was looking forward to this. Can’t wait for the next one! I know you mentioned in your last video how you’re creating your own levels. Could you make a video going over the tools used to design them?
Question for the code-heads out there: does the RNG factor into a monster's decision to shoot/attack? So often in decino's videos I see him trying to start some infighting but a demon just refuses to shoot. Other times they seem to be very trigger happy. Why is that?
Purely random. Also depends how far away you are from the enemy -- the closer, the more likely they will attack. Then there's also pain states which triggers them to attack you. Many factors.
@@decino yeah there's a certain long range where Doom monsters just can't tell you're there. Some mods have sniper weapons with scopes too. So I cheese them from far off. I just can't help it.
@@KristianBiondic It's been getting pretty spicy as to use a chaingun to invoke painchance, thus a retaliatory strike, as an infighting means. Weaker, more frequent attacks are best, it seems. Entirely situational though.
Ah, you've got to love Boom; it's explosive limit-removing capabilities forged 20-odd years ago still reverberate throughout all modern sourceports and assorted Doom modding tech we have today.
4:56 imagine in a tense nightmare level or something your being cornered by a pinky with almost no ammo, just 2 shotgun shells. You fire the super shotgun and all pellets hit but you miraculously land the 1 in 25 million chance for the shot to not kill the pinky
I remember using Boom in the earlier years for playing DOOM with custom WADs (primarily WolfenDOOM if I remember right), but before that I also knew of a Bomberman clone on Mac that used DOOM characters and it was also called Boom.
Lol when you started talking about BOOM in the vid I was like "wtf thats not what the title promised". as it turns out I dont know what capital Ds or Bs look like lmao
This was very informative. I didn't think Boom used it's own RNG it used Xorshift. This also explains how to use the results in a normal distribution to get/set damage from a weapon attack. This is a great topic if you are looking for a practical use of the normal distribution in any game design application.
The fact do rng calls for multiple rng values from the same table making it so the best possible damage roll is not the biggest number is such an interesting concept.
Wow this video was insightful. Something always feels a little off after playing a lot of vanilla or limit-removing wads and then playing a boom mapset (or vise versa), but I could never figure out what exactly. The graphs spell it out though, seems like the vanilla damage skews slightly towards the high side, while being a smaller range overall.
2:33 i have no idea if this is the case for BOOM, but sometimes these random magic numbers for RNG systems are specifically and carefully calculated/chosen to give the most evenly random-looking results. sometimes other numbers, if used in the same situation, can give much more predictable patterns. or in other words, its a "more random" number
The problem with PRNGs is that they can end up in stunted cycles, so you need to pick a good starting value so you don't reach the end of the Collatz Conjecture too soon.
Hi decino. Do you experience jumpscares while playing Doom games? I cant deny, your videos helped me a lot to return to playing (and finishing) Doom and Doom 2 (on easier levels, of course). But it was still fighting myself. To this day, I am afraid of finishing Amiga's Black Crypt. So, do you feel any emotion while playing Doom games or it's just technical thingy. Turn left, turn right, shoot this, shoot that. I am curious. Thanks for answer, in advance.
Watch your order of operations at 2:30. Boom is multiplied by the first magic number, then that result is added. (A × B) + C + (D × 2) rather than A × (B + C) + (D × 2) or A × (B + C + D) × 2.
In classic Doom, how long does it take for the RNG cycle through the RNG table once? On chaotic slaughtery maps, does the RNG table get cycled around multiple times per game tic? What about maps where very little is going on?
The SSG alone goes through half the table. Imagine thousands of enemies doing pathfinding and attacking each other. Thousands of RNG calls are made per tic in that case.
I just realized they used the exact same RNG table numbers for DOOM as they did for Wolfenstein 3D. [p246 of fabien sanglards pdf writeup on the Wolfenstein 3D engine.]
You should have made this "Boom Challenges Deemed Impossible" to convince some Doomgods to prove you wrong and find a seed with a 300 damage shotgun blast.
this could be neat since you would spice up the current Decino impossible challenges listed in his channel
Funny story, during the pre-release beta testing of Boom one of the testers sent a message about the bug we were beating on. He commented in passing that during the demo he was recording he'd taken out an undamaged Revenant with one SSG blast and he'd never seen that before. One of TeamTNT's coders (I think it was Rand Phares but it's been so long) told him he'd done something with billion-to-one odds - possibly not low-balling it as I think the RNG was still being tweaked at the time.
The tester was NOT happy to hear this because the bug we were testing was a demo corruption bug. He'd recorded a demo of it but the demo was useless garbage!
@@leonardpitre393 they say he's still playing that level to this day, hoping to record that lost demo once again before his soul can be at peace.
They say on a dark winters night, you can still hear his ghostly voice echoing on the wind, cursing each revenant that refuses to die to a single SSG hit, like a 'little boney bitch'.
'They' say a lot of shit, to be honest.
@@leonardpitre393 That is hilariously tragic.
@@leonardpitre393 what a demo plot worth to read! Probably someone else RIGHT now would curse at revs "what the fuck??? Why you took no dmg, yo flithy skeleton?"
decino: =sigh of waning faith in humanity as he's listing patreon backers= "dog cloaca"
Can't blame him. It appears someone definitely took some artistic liberties when it came to anatomy.
I live for Beaks Make Me Coom
Still my favorite part is Riley!
I always wait for CappaBitch 🤣
OGs remember Vladimir Jerkov
Decino: celebrating channel's 3rd anniversery
Also Decino: "About 1000 years ago, I released a video..."
Obviously the 3rd Millenium of his content, what’d you expect?
So finally got rid of that "agonizing rectal pain" I see...
I wasn't expecting the RNG to be different in Boom, Boom's descendants and GZDoom. This is so subtle that it can be easily overlooked, so it's nice this video compares the differences and examine why Doom's very basic "RNG" has been revamped so it is even less predictable and gives a more diverse amount of numbers returned. Even though I haven't seen anyone (in non-TAS playthroughs/speed runs) accurately keep track of which position the RNG index is, to predict damage rolls, hitscan accurateness and other RNG factors to exploit and/or to use it to their advantage.
In very short maps people make use of it, where getting a certain roll can be quite consistent
@@Intestine_Ballin-ism could you give us any example of it at all? including the map and it's "quite consistent" roll? I'm honestly curious about it
These differences in RNG formula are a classic example of "there's more than one way to skin a cat".
That kind of RNG index tracking is so involved I'm pretty sure only a TAS could do it reliably in Vanilla.
@@Intestine_Ballin-ism You are making stuff up. Only TAS can get any use from original Doom's very pseudo-random generator.
*"About a thousand years ago I released a video how Doom's RNG works."*
Wow 3019 is here. The future is now -old man- Boomers, because Boom xD
Do we still have COVID in the future?
@@zach11241 Selfish idiots won't disappear in the future, so yeah.
Selfish idiots like who, Faucci?
@Mr Scruffles Yeah, the selfish hypocondriacs who insist that putting a Petri dish on your face keeps them safe.
@@KopperNeoman Or who think turning a country into a full-on police state is a reasonable measure.
Well now i know why that one Revenant took one extra SSG blast to kill over all the other ones. Thanks Ducino, you wouldn't know how much this information has helped me.
I guess? Most of the time it's because I spazzed out and only hit half a meatshot. 😅
So essentially what I nicknamed 'critical hits'?
dacino really outdid himself on this video
The ZDoom's RNG being different from Vanilla's was once a discussion topic in Skulltag/Zandronum community. People were arguing that the Vanilla's RNG made the SSG more powerful and that you could "feel" that in deathmatch. I think that your bar charts at 5:18 validate that argument. In the end the Skulltag devs were convinced to restore the old RNG and thus we now have the "compat_oldrandom" flag in Zandronum that does just that when enabled.
"People were arguing that the Vanilla's RNG made the SSG more powerful and that you could "feel" that in deathmatch."
I think it is just auto-suggestion. Lets say you put them in deathmath marathon where half of them were on zandronum and half on ZDoom. If you could somehow hide which version of doom engine they are playing, I bet their guess about what they are actually playing would be purely random.
"I think that your bar charts at 5:18 validate that argument."
Decino clearly stated that in all cases average (200) is same.
@@Mader_Levap To be fair, the average might be the same, but the odds of getting a 245 highroll are higher in vanilla, and highrolls can sometimes be palpable.
@@Mader_Levap the average is not the only thing you could sense.
@@Mader_Levap I was there during this time, and played a lot of competitive doom up until early this year, from which I’ve taken a break now.
And no, it was not something you could hide, of course it required us to play both Skulltag, AND ZDaemon to notice this, otherwise no one would’ve known.
But just telling us to fire SSGs randomly for an hour will of course, have us guess.
Why? Because it’s an RNG table, you can’t instantly tell, it took many people, and many MANY games to figure out the RNG was different on Skulltag.
I've only played Deathmatch with bots, but even there on Zandronum I felt like the SSG was pretty OP
Vanilla's distribution might be crap, but overall vanilla's graph is weighted towards more damage vs less. The theoretical maximum might be less, but on average your SSG shots will be more damaging with Vanilla's random table versus a true PRNG, because there are more 10 and 15 damage pellets than 5. This is why multiplayer ports often have an option for using the Vanilla PRNG, because when playing DM the reduced damage from a true PRNG was pretty noticeable.
You ask me, they did it like that in the vanilla so that the big damage shots really feel "lucky" as opposed to the average which is pretty constant.
They wanted that 1 in 50 chance that one blast from the double shotgun can rip apart half a room vs the 90% chance of doing more or less regular damage and making you have to mop up the survivors.
I always felt really "skillful" when one shot cleared out an entire room. Kinda disheartening when I realized it's all just RNG, but I think that's the beauty of it. They created a very powerful illusion.
@@evanharrison4054 That's actually a very good point. Boom might be "more fancy math" but those 1 in a million-type damage shots are less exciting. Getting a 1 in 50 shot in DM though? That feels *great.* Yeah so the maths is fancier, but does it make the game more *fun?*
Maybe Boom should shift its entire distribution to the right, and narrow it up a bit. It would feel more 'vanilla' while retaining its symmetry.
@@evanharrison4054 I don't think it was purposeful. After all, the existence of the random table predates the SSG, which is where the damage difference is most visible. I think there was a discussion on DW about this which IIRC came to the conclusion that id simply took some bytes from a conventional PRNG and put it in a table.
@@brainstewX I don't see the sport in it, to be honest - if anything it'd be better to just use the table. Doom uses so much randomness per tic and the random table's quality is good enough to the point where it's hard to see a difference most of the time.
The two instances where it is most visible are SSG damage and predictable initial spawns in DM. The first one is a net positive, and you could remedy the second one by having a random initial value in the table.
One thing in GZdoom that caught me off guard when I was going through Doom 2 is that the RNG seed gets saved in your save game and I also suspect it DOES use the different seeds/counters for different entity types.
Las time I got to the Icon of Sin I had some miserable luck with the spawner. Before I could send the lift up the first time, I had a macubus right beside it, one archvile on the lower platform and like a couple pain elementals already. Not to mention the other nonsense. But the thing is no matter how much I died and had to reload (and I died so many times in that map) when I came back the sequence of spawns was always deterministic. So I had to devise some strategy around dealing with that very specifically "Camp here and wait for the archvile to spawn, then rush it and kill the Pain elemental on the way up" kind of deal.
I noticed that firing shots and other sheananigans would not influence this so the RNG sequence for the Icon was preset and isolated. It was a painful way of finding that out
...huh. I use GZDoom and always got the same seed when fighting the Icon of Sin in Doom II - it *always* started with a Spectre, though I don't remember the rest. That explains it, I just presumed that there was a set order to the fight.
Your RNG video was, I THINK, the first decino vid I've seen. That or the monster sprite one. Either way, interesting to see the way another engine tackles it. Thanks for the info Ducino
2:30 The magic numbers are such that they form a linear congruence pseudorandom sequence.
I believe *most* values would do, but in practice one just picks them from a programming book to make sure the bits are properly randomized from one iteration to them next and the period isnt cut short due to some mathematical coincidence.
The short answer seems to be "start shit and find out". There's a couple of theorems that help pick values that don't have trivial cycles, but you then need to put the output through a bunch of "randomness tests" to show it doesn't have undesirable patterns. What's an undesirable pattern, you ask? Ah, I see you like philosophy.
@@SimonBuchanNz Either that, or one of the Boom devs' initials is O.D. and they were born in 1966. 0x19660D. 🤷
Saying Boom is popular to this day is a half-truth. Boom's various evolutions are what is still popular. These evolutions raised the engine limits even more and support features created for MBF at the very least, which is still more than enough to make the latest version of Boom (2.02 from 1998) incompatible with modern "Boom"-compatible wads. The "Boom Compatible" label bothers me so much because there's still at least one loser (me) actually using Boom (or MBF sometimes), and the only guide I have for what it's actually compatible with is time of release.
then why still use the original?
I mean I think it's pretty accurate. The boom and zdoom families together pretty much corner the market on beyond-vanilla dooming, even though you probably shouldn't use either raw boom or raw zdoom in current year
Yeah for the benefit anyone not terribly familiar with DOOM sourceports, this is akin to conflating the original ZDoom with all its descendants (GZDoom, Zandronum, etc.), only kinda worse because ZDoom itself at least lasted much longer.
Just curious but why are you still using Boom instead of one of its descendants? What do you prefer about it?
Just use GZDoom already. I have Zandronum installed too. But I only use it for online gameplay. So I basically don't really use it. It's such a pain every server wants you to have a different version. I had to figure out how to download a specific version in Mercurial to build one.
5:51 Secret Decino face reveal.
i always enjoy seeing the funny names your patrons come up with
It's a shame that AGONIZING RECTAL PAIN wasn't in this roll call.
Yeah what happened to him
@@reptongeek eventually that sort of thing has to catch up to you. F in the chat for ARP.
@@wallyhackenslacker Someone Kickstart this person a Gofundme, so they can become a Patreon supporter again!
Most videos I stop watching as soon as the patron list starts, but with decino I always wait for Beaks make me coom.
2:18 - Out of context, that looks like a pretty solid amount of damage to do to a former human.
This video dropping at 10 p.m. EST felt like a RNG call.
Decino's info and edits are always top tier 👌
Oh shoot, no more shout-out to AGONIZING RECTAL PAIN? That's the best part of these videos!
I think some people are signing up for your Patreon with ridiculous names just to see if you'll say them. Great video Decino.
1:55 - BigMacDavis approves!
I’ve been waiting a while for this one! I find RNG a cool thing they did. Revenant missiles that do 80 damage were always my favorite :)
Always a good day when a decino video comes out. I always watch the technical ones...being a c++/c# coder myself makes them fun to see the guts, and I usually have the long play-throughs going in the background when working on hobbies. Keep up the good work, and congrats on 3 years as well.
Comes to my mind something. You have showed us how ... boring Doom becomes if all the RNG values are the same. But what happens, if the values are not random, instead they are increasing or decreasing between 0 to 255? Will the Icon if Sin explosion look like a ramp? :D
Fun fact: for an LCG like this, you can derive another LCG which has the same values and period, but in reverse order! For a=1664525 and c=221395, the reversed LCG would be a=4276115653 and c=3246257569. It's pretty simple: your new a is the multiplicative inverse of the old a, modulo m; the new c is -c * the new a, modulo m again. You could use a reverse step function like this to reconstruct an earlier RNG state in a video game, for example after reconstructing a seed using a few random outputs later in the sequence.
The value 221395 comes from your video's 221297 + pr_class * 2, where pr_class = 49; I used 49 rather than 50, because C enums start at 0 (the comments in the source appear to be off by one!).
The list just keeps growing, You're doing more than enough out here decino. Cheers!
Yet another nice video, TeamTNT made a good job. Interesting, I was mostly using Boom with DosBox some time ago. And by the way, happy 3rd anniversary, _boomer_
Wow, right as I was about to ask "Where GZDoom?" you also decided to show it. I might consider getting boom in the future, I'm sticking to GZDoom for now. But at the same time, I kinda want to try to find the "god run" seed with massive super shotgun damage.
Guess I'll leave it to Zero Master as always. Thanks for digging through the code and compiling the data into one neat graph at the end! I'm sure that I am not the only one who appreciates it.
booms rng is somthing i wouldent expect to be so diffrent for you to make a video
Virgin Doom vs. Boom's chad bell curve
6:57 decino said it. He said *"sussy baka"* 😂
Lol that’s so funny.
Never felt vanilla doom's RNG needed improving. Looks like I'm the odd one out :D
no, rng is all about how it "feels" in game. real rng feels like shit so you're right :)
I can use a spread on the more damaging side myself. To hell with fighting fair.
@@1pcfred You _are_ fighting the legions of hell as an ordinary man, after all. An ordinary military man, but an ordinary man nonetheless. You need all the help you can get.
@@hostiusasinhostilityhostil7853 Doom Guy is no ordinary man. I mean who can run carrying all the guns and ammo he can? The Mythbusters did an episode on it. A really buff person can do it. Ordinary men? Not so much.
@@1pcfred You've seen him on the title screen, right? He's pretty buff.
not to mention story/logic and gameplay segregation because imagine playing doom except you have encumbrance, imagine how much that would slow down the pace of the game
Thank you decino. Your videos always give me some comfort in my ongoing, prolonged darkest hour.
I love bell curve rng. My favorite tabletop RPG GURPS uses 3d6 for it's rolls which produces a pretty sexy bell curve.
I had to leave the Patreon for a while due to income being spotty, but I'm employed again and glad to be be back in the sexy people club
This analysis is too good, it make my brain go Boom
I see that sneaky "The Octaurum" by Decino :P
Sounds awesome though! Can't wait for your stuff in the community project :3
Me: I hate sundays
decino: *uploaded a new video* you like sundays
Me: I love sundays
This video is so random xD
*holds up spork*
More Vanilla or more BooM randomness?😉
@@decino Rawr means I love you in dinosaur!
It's 4:30 am here and wanted to go sleep but now I have just numbers in my head, random numbers of course.
But besides that, I like to take an insight look how things work in my favourite video game and all what has to do with it. Thanks for your effort and your time you spent in the analysis video series decino.🙂👍
I love your channel so much. Thanks for loving Doom as much (if not more) than we do!
Beautiful work in going out of your way to both put together and simulate rng calls.
I knew I was looking forward to this. Can’t wait for the next one!
I know you mentioned in your last video how you’re creating your own levels. Could you make a video going over the tools used to design them?
I use Ultimate Doom Builder. Plenty of video tutorials already out there.
I appreciate the reply! Excited to see the levels you come up with
Decino saying Boom kept me laugh for minutes
The thumbnails are part of the reason why I love these vids, asides from learning something new
Question for the code-heads out there: does the RNG factor into a monster's decision to shoot/attack? So often in decino's videos I see him trying to start some infighting but a demon just refuses to shoot. Other times they seem to be very trigger happy. Why is that?
Purely random. Also depends how far away you are from the enemy -- the closer, the more likely they will attack. Then there's also pain states which triggers them to attack you. Many factors.
@@decino interesting... I guess it's more complicated than a simple table lookup! Keep up the fine work 👌
@@decino yeah there's a certain long range where Doom monsters just can't tell you're there. Some mods have sniper weapons with scopes too. So I cheese them from far off. I just can't help it.
@@KristianBiondic It's been getting pretty spicy as to use a chaingun to invoke painchance, thus a retaliatory strike, as an infighting means. Weaker, more frequent attacks are best, it seems. Entirely situational though.
Ah, you've got to love Boom; it's explosive limit-removing capabilities forged 20-odd years ago still reverberate throughout all modern sourceports and assorted Doom modding tech we have today.
Another top drawer analytics video, thanks. Great to see the differences, well explained.
knew it! the only reason decino can be gone for a week is cuz he's working on an analysis video
It's because onetruepurple called him a noob.
I fucking love when you dive this deep into the logic behind such a well made game from freaking 30 years ago. So cool.
More lovely Decino ASMR
As always, great work!
It would also be interesting to see more videos about the differences between the newer engines and the vanilla one
RNG is an intersting aspect of game design. Thank you for revisiting it for BOOM.
Love all of the analysis videos! Always so interesting!
octaurum is my favourite midi of yours, it's so serene
Very nice video as always!
I've learned so much from these analysis videos that I feel confident enough to write a novel about how Doom works. I won't, but I feel like a could
4:56 imagine in a tense nightmare level or something your being cornered by a pinky with almost no ammo, just 2 shotgun shells. You fire the super shotgun and all pellets hit but you miraculously land the 1 in 25 million chance for the shot to not kill the pinky
I remember using Boom in the earlier years for playing DOOM with custom WADs (primarily WolfenDOOM if I remember right), but before that I also knew of a Bomberman clone on Mac that used DOOM characters and it was also called Boom.
I always love your code analysis videos. :-) Keep 'em comin'! \m/
Man do I love these deep dives into the code of this awesome old game. Thanks, d 👍
Nice video like always. I have idea maybe some next video will be talking about monster hitboxes for shooting weapons
Lol when you started talking about BOOM in the vid I was like "wtf thats not what the title promised".
as it turns out I dont know what capital Ds or Bs look like lmao
This was very informative. I didn't think Boom used it's own RNG it used Xorshift. This also explains how to use the results in a normal distribution to get/set damage from a weapon attack. This is a great topic if you are looking for a practical use of the normal distribution in any game design application.
Seeing this gives me an idea for a run: "ALL MAX damage" run.
Rule of the run: ALL damage dealt and received will always deal the max damage.
forum.zdoom.org/viewtopic.php?t=72516&p=1191916
The fact do rng calls for multiple rng values from the same table making it so the best possible damage roll is not the biggest number is such an interesting concept.
i appreciate that you always say riley! with the exclamation mark
Thank you for the content
This guy is the best Doom RUclipsr ever, change my mind.
Thank you, very cool video.
i sent this to my phd supervisor who is a statistics lecturer at my uni. we like to show our students modern day applications of statistics
I understood some of those words.
Wow this video was insightful. Something always feels a little off after playing a lot of vanilla or limit-removing wads and then playing a boom mapset (or vise versa), but I could never figure out what exactly. The graphs spell it out though, seems like the vanilla damage skews slightly towards the high side, while being a smaller range overall.
>wake up
>check internet
>yellow thumbnail video from decino
>happiness
I love these analysis videos
0:22 I demand a download link for this!
It doesn't exist anymore. It's footage from 2006 I found on my external drive.
wtf man. youve put more research into doom than some people have in their PHDs,........ on behalf of everyone, I really appreciate all your videos man
The Boom bell curve only made me think of the IQ bell curve memes but with Doom. I'm sure a whole bunch of funnies could be made with that format. :D
Decino... you kill my brain whit this video lmao
Special thanks to Patreons Beaks Make Me Coom and Cappabitch for making Decino say your names. Always makes me chuckle,
Retweet If Balls Itch 👌
Had no idea Boom had a different RNG routine, that's pretty cool.
2:33 i have no idea if this is the case for BOOM, but sometimes these random magic numbers for RNG systems are specifically and carefully calculated/chosen to give the most evenly random-looking results. sometimes other numbers, if used in the same situation, can give much more predictable patterns. or in other words, its a "more random" number
The problem with PRNGs is that they can end up in stunted cycles, so you need to pick a good starting value so you don't reach the end of the Collatz Conjecture too soon.
Hi decino.
Do you experience jumpscares while playing Doom games?
I cant deny, your videos helped me a lot to return to playing (and finishing) Doom and Doom 2 (on easier levels, of course). But it was still fighting myself. To this day, I am afraid of finishing Amiga's Black Crypt.
So, do you feel any emotion while playing Doom games or it's just technical thingy. Turn left, turn right, shoot this, shoot that. I am curious. Thanks for answer, in advance.
I think the blind runs will answer that question.
"beaks make me coom" will never not be funny to me
YT's estimate for the game featured in this video: zdoom
It's trying man, it's really trying
Wow that's amazing dude
Decine reading out the patreon names is like the set of words Zemo used to activate the Winter Solider
Was very interesting didn't know there was much difference in the rng between boom and the original doom so yeah cheers for upload decino
Watch your order of operations at 2:30. Boom is multiplied by the first magic number, then that result is added. (A × B) + C + (D × 2) rather than A × (B + C) + (D × 2) or A × (B + C + D) × 2.
I love learning doom programming with u decino :D, im gonna be a game dev in the future, sO tgis is serve me a lot
the ANALysis of rng has too many numbers for me to comprehend but I always like hearing your voice
Co-worker: Good morning decino
Decino: Vanilla doom's is 3559 damage
NOW I KNOW WHY YOU LOVE BOOM SO MUCH!:)
Because is pretty fancy from perspective someone who love look into code:)
In classic Doom, how long does it take for the RNG cycle through the RNG table once?
On chaotic slaughtery maps, does the RNG table get cycled around multiple times per game tic?
What about maps where very little is going on?
The SSG alone goes through half the table. Imagine thousands of enemies doing pathfinding and attacking each other. Thousands of RNG calls are made per tic in that case.
That sigh before announcing dog cloaca
"So about a 1000 years ago..."
so you ARE a Doom God!
Frick yes, so this is where you've been
“About a thousand years ago”
*Video uploaded on March 13th, 2019*
I just realized they used the exact same RNG table numbers for DOOM as they did for Wolfenstein 3D. [p246 of fabien sanglards pdf writeup on the Wolfenstein 3D engine.]
i love these kind of vids!
This is where Ash stole his famous line
"THIS IS MY BOOMSTICK"