From the game i am making, Deathwave (link in my description) ive developed a wave system for enemy spawning. The wave system works as following:
You create a blueprint inheriting from the WaveSystem class.
You edit its “Waves” array, wich each one has “spawns” array, to define exactly what you want.
You spawn your wave system class from the game mode and call “Start Round 0” to start the system.
Current features are:
Limit to how much can spawn, per wave.
Editable spawn speed per wave.
How many enemies of each type spawn, and the max of them.
Blueprint events for wave started, finished, and how many enemies are left to spawn.
So, for example, you can have 2 waves. First one spawns 5 skeletons and 5 mages (kinda like in my game), there is a max amount of enemies of 3 in the wave, and each of the skeletons and mages can only spawn 2 max.
The system will spawn 2 mages and 1 skeleton or reverse, at a rate of one per second(as its what it is by default). When you kill the skeleton, another skeleton appears, becouse the mages are maxed( only 2 at the same time). If you kill a mage, then its 50/50% chance of a skeleton or a mage, as it grabs one at random from the kinds of enemies that arent maxed.
Second round could have 5 skeletons, 5 mages, and 5 knights, and 2 max of each, with 5 as max enemies in total. It would spawn 2,2,1 of the 3 classes, the class with only 1 enemy being random.
For a possible marketplace release, it would have tweakable chance for spawning and work by Data Table becouse the system can be hard to read as only blueprint arrays. Also made into a plugin with open source code.
Price would be cheap.