Page 1 of 2

Dynamic Enemy Reinforcements v3

PostPosted: Sat Feb 13, 2021 12:54 am
by fcas3t
Dynamic Enemy Reinforcements (DER) is a mod with the goal of providing intense combat experiences. It works on any Doom map, for any difficulty.

DER is a fork of AID, but they are fundamentally different: The purpose of DER is to supplement the enemy spawns of a map, whereas AID replaces them entirely. DER simply adds enemies, regardless of player health, and it never changes items.

DER has 4 pairs of CVars that control how often reinforcements are spawned, how close they are to the player, and the severity. Each pair is the minimum and maximum of the range for generating random numbers. Thus, by default, DER spawns 1 to 3 groups every 15 to 45 seconds, and each group has 2 to 4 enemies. They will teleport in, sometimes very close to the player.

The enemies hand-placed by the map designer are the starting pool for randomly spawning reinforcements. However, the roster is not created until the 3rd map tick, after other enemy mods may have altered the pool. Thus DER should work seamlessly with other enemy mods.

Disclaimer: The default settings can be intense. Reinforcements will spawn very close to you. I've had jump scares :twisted:

Re: Dynamic Enemy Reinforcements

PostPosted: Sat Feb 13, 2021 12:55 am
by fcas3t
Other notes:

There is no menu to change the CVars, so use the console. (You can copy-paste the CVar names or type them into the console. Press the up key to get previous commands, so you don't have to re-type them. To change values, just type a space and new number, such as: der_min_seconds 30)

The der_chance CVar is the percent chance that reinforcements will spawn when the interval timer expires. By default, der_chance is 100, which means always spawn.

To disable DER, set der_chance to 0. The value can be changed at any time.

der_chance was added in v2, replacing the original der_enabled, which was the equivalent of 100% or 0%, i.e. all-or-nothing. I wanted the ability to reduce the overall intensity of reinforcements without having to change the other CVars. So now, a der_chance of 50 results in about half of the reinforcements compared to the default. (Of course you can still modify the other CVars to your liking.)

DER will never spawn any monster flagged as a boss or mini-boss. In v2, I added exclusions for other EVP monster types I don't want as reinforcements. For the relevant details and how to make your own exclusions, see the code and my instructions here.

The other significant change for v2 was adding the der_dilute CVar, which is explained below.

Re: Dynamic Enemy Reinforcements

PostPosted: Sat Feb 13, 2021 1:30 am
by JohnDoe8
Very nice I must say, the mod gives the real feeling of a demonic invasion taking place, it's both immersive and fun imo.

the only downside is that one can never get 100% kills on maps, but that's just a minor nitpick.

Re: Dynamic Enemy Reinforcements

PostPosted: Sat Feb 13, 2021 7:59 am
by JohnnyTheWolf
This mod feels like an overhaul of the Nightmare difficulty.

Re: Dynamic Enemy Reinforcements

PostPosted: Sun Feb 14, 2021 2:58 pm
by fcas3t
JohnDoe8 wrote:Very nice I must say, the mod gives the real feeling of a demonic invasion taking place, it's both immersive and fun.


Thanks for the nice feedback. I strongly agree :mrgreen:

JohnnyTheWolf wrote:This mod feels like an overhaul of the Nightmare difficulty.


That's a good point. I hadn't thought about how DER compares to Nightmare. (In my personal fork of EVP, I removed it as a difficulty option.) I only seriously tried Nightmare once, about a month ago, and the "not being remotely fair" warning from 1993 still rings true. I didn't like either enemy respawning or -fast. DER is a much better alternative for serious gameplay.

Re: Dynamic Enemy Reinforcements

PostPosted: Sun Feb 14, 2021 3:14 pm
by fcas3t
I suggest these supplements to DER, based on my own gameplay:

Use the infighting CVar provided by the game engine. It can enhance the experience either way: Disabling infighting makes groups of diverse enemies tougher, while Full infighting not only makes things easier, it can be amusing to watch.

My cloning mod can serve a useful purpose of diluting the pool of possible reinforcements. By cloning only grunts (the weakest enemies), the overall roster of enemies is less concentrated, which can be helpful on the toughest maps.

edit for v2: The new der_dilute CVar adds grunts to the roster without any need for cloning. The default value works well for me on a variety of maps. Set der_dilute to 0 to disable it, i.e. no diluting the roster with grunts. The higher the value, the more grunts are added to the roster. See the code for more info.

Re: Dynamic Enemy Reinforcements

PostPosted: Mon Feb 15, 2021 1:02 am
by Valken
Is this mod compatible with Universal Entropy which takes monsters and create different versions of it viewtopic.php?f=43&t=66778&hilit=Universal+Entropy

I like the idea a lot but would be cool to use both on top of monster randomizers.

Edit - I did a back 2 back test of AI director and DER with UE before either mods.

DER is almost like a wave based simulator, in that it keeps spawning enemies when you backtrack.

AID just takes over the original spawners and mixes it up.

For RPG such as Brutal Heretic, Hexen and IronTusk Diablo, I really suggest DER.

It is awesome and relentlessly hard as ammo depletes very quickly but gives the player a chance to "build up" their players! SAVE OFTEN!

For running through levels just to complete the mission, stick with AID.

Re: Dynamic Enemy Reinforcements

PostPosted: Mon Feb 15, 2021 6:14 am
by Captain J
Speaking of overhaul, i hope i could customize the number or variants of the ambushing enemies. In case of people don't want their game to be Nightmarish but wants a bit of challenge. Decent addon overall!

Re: Dynamic Enemy Reinforcements

PostPosted: Mon Feb 15, 2021 10:55 pm
by MsrSgtShooterPerson
This has become part of my regular play so far - mostly because I like having some activity go on in normally quiet parts of the map. :D

I do occasionally get monsters stuck on each other though (inter-colliding) or stuck on walls and sometimes on the edge of platforms - perhaps there's some solution to further nudge these specific monsters away from these spots?

I customized the script a bit for my own use actually such that the reinforcements intensify approaching 100% kills, but also shutting down at 80% (so a 100% kill rate is still somewhat guaranteed possible)

It would also be nice to perhaps have some means to compensate for the extra ammo spent - perhaps restore pickup spawning but tie it up to monster drops instead such as the new pickups aren't just littered on the floor at random (which I remember was original AID behavior) :D

Re: Dynamic Enemy Reinforcements

PostPosted: Tue Feb 16, 2021 11:37 am
by fcas3t
MsrSgtShooterPerson wrote:This has become part of my regular play so far - mostly because I like having some activity go on in normally quiet parts of the map. :D
I customized the script a bit for my own use actually such that the reinforcements intensify approaching 100% kills, but also shutting down at 80% (so a 100% kill rate is still somewhat guaranteed possible)


I'm glad you're enjoying it and have modified it for your use case.

MsrSgtShooterPerson wrote:I do occasionally get monsters stuck on each other though (inter-colliding) or stuck on walls and sometimes on the edge of platforms - perhaps there's some solution to further nudge these specific monsters away from these spots?


edit: I'm pleased to update this comment to say that in Version 3, all of the clipping problems should be fixed.

And, while testing this fix, I observed several reinforcements that were stuck walking in-place on the edge of platforms. This is actually a GZDoom engine bug. The moment these enemies were perturbed (by shooting them with the pistol to not kill them) they moved around just fine, no longer stuck. The thing is, it's an edge case bug that probably only occurs when using DER, or any other mod that spawns monsters and spreads them out. (The only other way would be if a map designer decides to be wacky and hand-place an enemy on an edge like this.)

MsrSgtShooterPerson wrote:It would also be nice to perhaps have some means to compensate for the extra ammo spent - perhaps restore pickup spawning but tie it up to monster drops instead such as the new pickups aren't just littered on the floor at random (which I remember was original AID behavior) :D


That's outside the scope of DER, as stated in the first post. So you'll need a separate mod for that, or add it to your fork.

Re: Dynamic Enemy Reinforcements

PostPosted: Sat Feb 20, 2021 12:27 am
by Armaetus
This will certainly make ObAddon maps a nightmare to play based on the quantity chosen, unless there's some way to replenish at least a fraction of health.

Re: Dynamic Enemy Reinforcements v2

PostPosted: Sat Apr 03, 2021 6:26 pm
by fcas3t
New Version release notes

I replaced the pk3 file in the first post with version 2. (For the record, the original had been downloaded 230 times when I deleted it; v2 is a new file with its own counter.)

The changes from the original version were replacing the der_enabled CVar with der_chance (explained above), adding der_dilute and exclusions (see the code), cleaning up the Vector operations a bit, and adding useful comments to the code.

I made these nice refinements weeks ago for my own DER usage, so they're well-tested.

The other CVars are the same, so the default experience of v2 is very similar to the original.

Re: Dynamic Enemy Reinforcements v3

PostPosted: Thu Apr 08, 2021 4:03 pm
by fcas3t
Version 3 release notes

Thanks to Player701, the lone bug I was aware of is now fixed! See this thread for more info.

So I'm pleased to release the third, and likely final, version of DER. It's bug-free and feature-complete :mrgreen:

Re: Dynamic Enemy Reinforcements v3

PostPosted: Tue Aug 17, 2021 10:02 pm
by Gustavo6046
Oh! I like this mod so far, adds variety and ongoing life to gameplay :)

How about adding a delay between spawning enemies? Would make it look a bit more fluid (a bit less mechanic? I guess?), and also would reduce the chance for lag spikes on the ZScript VM. :D

Re: Dynamic Enemy Reinforcements v3

PostPosted: Thu Aug 19, 2021 4:16 pm
by fcas3t
Gustavo6046 wrote:Oh! I like this mod so far, adds variety and ongoing life to gameplay :)

How about adding a delay between spawning enemies? Would make it look a bit more fluid (a bit less mechanic? I guess?), and also would reduce the chance for lag spikes on the ZScript VM. :D


Glad you're enjoying it, but to answer your question: No, I won't be changing this. (The only change I'm interested in for DER is if someone else figures out a workaround for the GZ engine edge case bug discussed in a prior post.)

I always use DER for my gameplay (changing der_chance to accomodate the wide variety of map difficulties) and it's performed just fine on many maps, including some large ones. Reinforcement spawning has always been fluid.

In my many hours of playing with DER, I've only experienced one noticable lag spike in GZDoom, which may have been caused by something else. The most important factor for lagging is the power of your PC. Another factor is other mods you're using and the scripts they run.