Zombie game wave difficulty progression

Started by
5 comments, last by Jim1664 11 years, 9 months ago
Hello,

Well, here's an interesting theoratical question.
I'm making a zombie game in Unity for school's finals projects, and I just started work on the wave manager script.
Everything is going fantastically so far, but I was just wondering, since I couldn't find any articles anywhere online, how exactly do games typically plan their difficulty progression? How should I construct the formula to decide how many spawns should be on every wave?

I could always go with a simple straightforward calculation of something like waveSpawns = wave*4, but that just doesn't seem right at all.
I want to know what methods are usually used in zombie games, or even just any other game that uses similiar difficulty progression logic.

Thanks alot for any input.
Advertisement
Tough question. If you know where to look, I'm sure there's a million articles, with theory and formulas, but in the end it all comes down to extensive testing. My suggestion is to pick a curve, say, an exponential plus a sine:

Difficulty(t) = a * exp( b * t + c ) + d * sin( e * t )

Where t is time and a, b, c, d and e are constants to be defined. Find the best values for a, b, c, d and e by play testing the hell out of it. And if necessary, don't be afraid to override the equation at certain parts of the game, if it's not working very well there.

If you're curious, I came up with that curve because similar shapes come up when I google search for "difficulty curve games". They all look like some exponential with local peaks and valleys, so I made this thing up. I've plotted it with a few values here at fooplot.com, click here.

How to translate that into something usable in your game is up to you, as it depends on what you're doing. Sounds like you're going for a tower defense thing (the term "wave" gave it away). Besides the number of enemies in each wave, it can be tricky to translate difficulty into something more solid, because enemies can be 'different' and the difficulty associated with each class would depend on the way the player is preparing (or not preparing), so good luck with that! :)
It mostly comes down to play testing, once you have an idea of what difficulty requires what spawn count you can try to do some curve fitting. I guess the hardest part is finding the appropriate group of people, for the play tests, that represent your target audience.
I think I read something from Valve about this... and they described it as a fairly complicated thing.
Personally I'd just make it as in most tower defense games: fixed waves by design and more and more playtesting.

Previously "Krohm"


How should I construct the formula to decide how many spawns should be on every wave?

Having more than one aspect to vary the difficulty enhances the feeling that the difficulty rises non-linear even if you have quite linear formulas in the background. I once did a very simple tower-defence game where instead of just using the number of enemies spawned I also increased their speed and toughness as well as the spawn speed. The first wave started off with all values set to 1 and then I began to increase a random stat every new wave. This had the effect, that even a wave with few enemies could be quite hard to beat and that it didn't feel like the AI was just beating you by increasing the number of enemies. Of course this was far from balanced and it might be a good idea to weight the values somehow, but as Mussi wrote, in the end finding the perfect balance is a matter of testing.
Right, so playtesting it is then.
A little too early in development for that, but I'll keep it in mind.
Thanks alot all of you(Upvoted everyone) =)

By the way, though, the game is a traditional zombie survival game, not a tower defense. I'm mainly using CoD Zombies as reference.
You should be careful not to make too hard; while play-testing, keep in mind that through extensive testing you'll get rather good at your game. Easy for you won't be as easy for mister Joe Bloggs, coercing randomers to playtest for you could be a good idea.

This topic is closed to new replies.

Advertisement