Wave Spawning System

**Wave Spawning System is a 100% blueprint powered spawning system for quickly and easily setting up enemy waves in Unreal Engine.

Marketplace Page: https://www.unrealengine.com/marketp…pawning-system**

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:


  • 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

Current Version: 1.0.4

Preview Screenshots:

If you have any doubts or queries regarding the toolkit, you can always reach out to me personally through the support email.


  1. Getting Started on a New Map: Wave Spawning System Tutorial: Getting Started on a New Map - YouTube

  2. Create Randomized Spawn Locations using Spawning Volumes: Wave Spawning System Tutorial: Create Randomized Spawn Locations using Spawning Volumes - YouTube

  3. How to use Wave Triggers: Wave Spawning System Tutorial: How to use Wave Triggers - YouTube

  4. Setting up Difficulty Control for Wave Cycles: Wave Spawning System Tutorial: Difficulty Control for Wave Cycles - YouTube

  5. Setting up waves with custom AI characters: Wave Spawning System Tutorial: Using your own custom AI characters - YouTube

  6. How to set up points distribution for destroyed AI units: Wave Spawning System - #13 by Stormrage256

Update Logs:

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)

Input Controls:

Two additional tutorials have also been uploaded:

Hi, I’ve added a new tutorial for setting a limit on the maximum number of AI units that can be active in wave at any time: Wave Spawning System Tutorial: How to add Spawn Limiters to limit Max Spawned AI - Google Docs

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 :slight_smile: @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.

Any help would be really appreciated, thanks!

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?

No rush on these, get well soon friend <3

Thanks for waiting, I’m back to work finally. :slight_smile:

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.

That should do it. But if you have any further doubts regarding it, just let me know.

And glad to hear that you’ve already found a fix for the Accessed None error.

As for the continuation of triggered waves, just set the AutoActivate? to True in the following spot:

It should keep spawning the subsequent waves listed in the data table just like the non triggered wave spawning system.

Both of these solutions seem to work, thank you so much! I had no idea you could untick Read Only, that was the main thing stumping me here.

Will give your product 5 stars on Epic, you’ve done an amazing job <3

1 Like

Happy to hear that they worked! And thanks a lot for your feedback. :slight_smile:

Hi @Stormrage256,

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?

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.