The Wave Spawning System will allow you to quickly set up & spawn hordes of enemies in your game. Simply define the waves in a data table, add a Wave Spawn Controller to your level and link it with spawn points, and begin spawning right away!
Using a batching system to define clusters of AI units within a wave, the Wave Spawning System allows you to set up huge waves comprising of multiple groups of enemies with minimal effort. Each batch of AI units can be customized independently using parameters such as spawn starting time, time intervals between spawns, spawn point, and number of units, to create a diverse set of enemy waves that match your specifications.
The Wave Spawning System also supports multiple spawning modes: use either the basic Fixed Location spawn points or Spawning Volumes that generate randomized spawn locations over larger regions, with fail-safe tests that maximize the probability of finding valid spawn locations.
Showcase Video:
Features:
Automated Wave Spawning at Level Start
Manual Wave Spawning through Wave Triggers
DataTable driven workflow enables easy setting up of waves
Batching of AI units for easy customization
Special Waves that spawn Bosses at the end
Customize Spawn Starting Time, Number of Units, and more
Basic Spawn Points with fixed location spawning
Spawning Volumes that generate randomized spawn locations over large areas
Precaching of Spawn Locations to minimize the impact on runtime performance
Fail-Safe Tests to maximize the probability of finding valid spawn locations
Notification Systems for Wave Completion & Points Distribution
Countdown Timer for players to prepare for incoming waves
Sample Gameplay Level showcasing the working of core systems in tandem
Fully commented Blueprints to accelerate the learning process
The v1.0.1 update has gone live on the Marketplace.
Change Log:
AI Stats Control parameters are now passed at spawn as structs instead of individual float variables like Health Multiplier, thus enabling new control parameters (for example, a damage multiplier) to be added without requiring any changes to the default workflow.
Added a fail-safe test to ensure that Stats Control parameters are initialized (with default multiplier values of 1.0) for at least a single wave cycle.
Additional Notes:
Search for Version****1_0_1 in the blueprint editor to identify all new changes in this update.
Hi, I’ve shared a free Win 32 executable demo based on the sample gameplay map that comes with the Wave Spawning System. So if anyone’s interested in trying it out before purchasing, you can download it from Dropbox and have a look at it yourself: https://www.dropbox.com/s/dttnlznblx…20Demo.7z?dl=0
Gameplay Demo Description:
One Wave Cycle comprising of 10 waves
Boss Spawn at the end of the final wave
Two player weapons: Projectile (basic) & Railgun (penetrating hitscan)
Four enemy types: Grunt (basic), Mutator (keeps growing if left alive), Elite (additional zig-zag motion to make targeting difficult), & Boss (with two side turrets that can attack player)
So if you want to control the max concurrent unit count, you can now do so by making a few small changes to the AI Batch Spawner & Wave Spawn Controller blueprints. The wave spawning system will then spawn new units until it reaches the max unit count, then stops, & continues again once the unit count drops below the threshold.
The v1.0.4 update has gone live on the marketplace. This is a minor update that focuses on usability improvements based on customer feedback.
Change Log:
I. The AIPointsDistribution array has now been moved from the example Game Mode BP to the BP_WaveSpawnController blueprint and set to Instance Editable for easy in-editor customization. This array can be used to specify the number of points given to the player when an AI unit is destroyed. And you can specify the points separately for each AI class as shown below:
Hey there, just purchased your product and really enjoying it so far @Stormrage256
I’m not super skilled in Blueprints, so I was wondering if there was a way I could check if all the enemies are dead i.e. have a variable ‘Is Dead’ true (instead of checking if they are destroyed to get to the next wave), because I am looking to keep the corpses of the enemies on the ground.
I am also getting an error on switching to the next wave where it says Accessed None trying to read the IsValid Node in the wave spawn controller.
Hi @mongoose665 , glad to hear that you’re enjoying it. Unfortunately, I just came down with covid yesterday and have a hard time looking at screens due to the headache. It’s getting better already, so I expect to resume work in a couple of days. I’ll get back to your query as soon as possible.
Also regarding the Accessed None error, are you getting that message in a completely new project downloaded from the marketplace?
@Stormrage256 Sorry to hear about the Covid, hope you feel better soon! I have fixed the Accessed None error, it is because when you add an array to a Wave (i.e. another enemy type) the clear button doesn’t delete that enemy type, it just clears it to nothing, so I’d left an enemy type with no reference.
Still looking for a way to detect if all Enemies have a Death variable to trigger next wave, and I’m also looking to find a way to have the rest of the waves come automatically one after another when the first one is triggered by a WaveTrigger. That might already be a function you’ve put in?
Alright, so yea I did some tests, and setting up corpses to be left behind just requires a couple of minor changes. First head over to the DestroyAIUnit function in BP_WaveSpawnController and remove the Destroy Actor node.
With that, we’ve ensured that the wave spawn controller forgets about this unit without actually destroying it.
Next, open up your AI parent blueprint. Right after the logic for starting the termination protocols, you can add all the required changes like setting IsDead variable, disabling collision, tick, other AI behaviors, etc. Basically something like this, but just turn off everything that is not required anymore.
I’m new to Unreal and I want to ask you if I can do the following with Wave Spawning System:
If I have a multi-room level, is it possible for each room to have its own set of waves / progression, independent of the other rooms?
Thanks!
Hi there, you can have separate spawn points in each room for spawning AI units, but the overall wave progression is designed to be tied to a level as a whole.
Multiple instances of wave systems can work in a single level, but then the HUD updates and score system wouldn’t work as intended and you’ll have to rewrite that part of the system. So I’d not recommend using it for such scenarios unless you’re interested in making those changes.