
I would argue, however, than any “randomness” introduced into a wave system will always inevitably lead to some difference in “difficulty” per wave, which, depending on your context, may negatively impact a player’s experience. For that reason, I would take a moment to consider all variables which can change across waves (examples: number of zombies, type zombie, health per zombie, spawn location, speed, damage dealt to players, spawn frequency/how fast the zombie spawn, etc.) and group them into categories based on whether each variable will have a direct impact on “difficulty”, as perceived by the player(s), or the change will (at least mostly) only counter act this sense of “sameness” you seem to be running from. However, variables such as spawn location would have a much smaller impact on the overall sense of “difficulty” while still avoiding the repetitive nature of waves. For example, if the number of spawned zombies is varied, this will obviously increase the difficulty for the waves which happen to have more. Different variables you introduce to produce a “random” effect can have various effects on the “difficulty” of each wave. Before you look too much further into ways to introduce “randomness” into waves, I would stop to suggest you ask yourself how much randomness could impact the player’s ability to navigate a wave system. Although I’m unsure of the exact details, I would guess that “classic” wave systems are highly structure, meaning it is either explicitly defined or some sort of increasing function is used to determine “difficulty”. However, I would argue that the system you seek is highly subjective and may be that way because of the specific use case you intend to implement it for. I’m unaware of any resources which directly address a system which you seem to be looking for.
