Zombie Console

Version 0.4


What is Zombie Console?

The more and more acquainted I became with zombies mechanics, the more intrigued I became into deeper analysis across different game scenarios, but would encounter limitations in existing software. By late 2020, I decided to provide you this tool to help you, as it has helped me. Over time, I developed various scripts to speed up my game analysis. Zombie Console is essentially a conglomeration of this effort, in java. Back then, I had wished something like Zombie Console was around when analyzing my or other peoples’ games. At the time, Zombacus calculator was the closest tool available when it came to sph and time projections, but it is neither sound nor sufficient enough for such questions. Zombie Console provides you with accurate results, backed by accountable/predictable nature and quantifiable aspects of the game...and it's all packaged up in a way where you can copy-paste game scenarios straight into a command.

Currently, the interface is built as a command line tool. Future versions of this page will have a more comfortable and updated, web-friendly user interface.

For a *much* more detailed explanation of how to use this program to its full potential, reference the Zombie Console Documentation.

Because Zombie Console was created for the community, its future direction(s) depends on your feedback. Questions and discussion of this program can be found at our discord server.

Thanks to everyone that has supported Zombie Console!



What Can You Do with Zombie Console?

Notable Future Release Plans

How the Heck do I Use This?

As stated previously, future versions of this page will have a more comfortable and updated, web-friendly user interface, but for now, it is barebones as a commandline-like interface.

Communicating with the interface follows:
The syntax for all questions into Zombie Console is as follows:
<function> <parameters>
The available functions and their associated parameters follow.

Available functions

add, sub, mult, div, zombies, comb, sph, time

Available parameters

Each function has a set of accepted or optional parameters. They start with a single dash if they accept a value. Some parameters are dependent (like -i and -f discussed below)

Parameter Description
-r the round(s)
-p the number of players = {1,2,3,4}
-t the time, e.g. 25:01:01"1 day, 1 hour 1 min 1 sec""25 hours 1 min 1 sec""1501 min 1 sec""1 hour 1441 min 1 sec""90061 secs"90061, et cetera
-s the sph
-m the bounds you wish in your result, which can take on (a) the actual max-ammo rounds (e.g. -m [7, 12, 17, 22, 27]) or (b) a particular case: none, all, worst, avg, best. Choosing -m all will result in projecting all the bounds together. When m is one of the last four cases (all, worst, avg, or best), then in addition, the -i and -f parameters are required
-i initial max-ammo round(s)
(only necessary when -m is set to worst, avg, best, or all)
-f max-ammo round frequency
(only necessary when -m is set to worst, avg, best, or all)


Time Arithmetic

The parameters to these particular functions are TIMEs or SCALARs, appropriately. Time units supported are seconds, minutes, hours, and days.


If you add 23 hours, 14 minutes and 55 seconds to 45 minutes and 5 seconds,
you get 24 hours exactly.
add "23 hours, 14 minutes and 55 seconds" "0 days, 0 hours 45 min 5 sec" 24:00:00

You may choose the TIME format that best suits you add 23:14:55 "45 min 5 sec" add 23:14:55 45:05 add "1394 min 55 secs" 45:05 add 00:1394:55 45:05 add "83695 secs" 45:05 ...all of which result in: 24:00:00
If your time value is simply a number alone, then its unit is assumed to be in seconds. add 83695.0 45:05 24:00:00

Currently, decimal precision is only supported for time in seconds only. add 00:1394.5:25 "45 min 5 sec" Error: TIME or REAL>= 0, but instead received 00:1394.5:25

If your time unit is seconds only, you may increase your time precision in the decimal range. All time calculations final results are rounded to the nearest second. add 83695.4 45:05 24:00:00 add 83695.5 45:05 24:00:01


Subtracting that amount (45 minutes and 5 seconds) from 1 day, we get 23 hours, 14 minutes and 55 seconds again sub "1 day" "45 min 5 sec" 23:14:55


There are exactly 60 amount of minutes (00:01:00) in 1 hour (01:00:00). div 01:00:00 00:01:00 60.0

How many 59 seconds are there in 1 hour? div 01:00:00 00:00:59 61.016949152542374

So there are exactly 61.016949152542374 amount of 59 seconds in 1 hour. Hence, 1 hour divided by that, is exactly 59 seconds. Notice how this time we're using a SCALAR as the second parameter. div 01:00:00 61.016949152542374 00:00:59


And to beat the point to death, 59 seconds accumulated 61.016949152542374 times is exactly 1 hour. mult 00:00:59 61.016949152542374 01:00:00

Number of zombies

On solo, how many zombies on just round 30 alone? zombies -r 30 -p 1 -m none 105

Total zombies (if they came every round) from 1 to 30 (exclusive) zombies -r [1,30] -p 1 -m none 1396

What is the expected average number of zombies? Remember there are max-ammo rounds that don't spawn zombies. Simply by specifying the initial rounds and the frequency of these rounds, we can subtract these zombies that never came from our total. In this example, dog rounds start on round 5, 6, or 7 (-i [5,7]), and frequent every 4 or 5 rounds (-f [4,5]). zombies -r [1,30] -p 1 -m avg -i [5,7] -f [4,5] 1062.0

Besides the average number of zombies, we could also determine the worst-case or the best-case number of zombies possible. zombies -r [1,30] -p 1 -m all -i [5,7] -f [4,5] Best/Average/Worst: 1012.00/1062.00/1126.00
If no Max-Ammo Rounds:

Q: My kills don’t match up to the output A: Certain game aspects (like nukes) don’t add to the tally of kills in your in-game stats, so your kills will be different, by an unavoidable, but small amount. See section 3.3.3 in the doc.

Round Combinations

The best, average, and worst possible combinations of max-ammo rounds, given a particular game scenario. This is the most abstract of the functions and is by far the most useful aspect when it comes to sph-time calculations. This has many uses and is general for that purpose. For an explanation of how the average-case works for max-ammo rounds, see section 3.2.3 in the doc.

What kind of dog rounds should I expect on Kino from rounds 1 to 30? comb -r [1,30] -p 1 -i [5,7] -f [4,5] -m all Best: [5, 9, 13, 17, 21, 25, 29] Worst: [7, 12, 17, 22, 27] Average(s): 1: [6, 10, 15, 19, 24, 28] 2: [6, 11, 15, 20, 24, 29]

So having best dogs implies that you have dogs on these rounds: 5,9,13,17,21,25,29

Seconds per Horde

Zombie Console provides not only a sound sph, but one that is much more accurate than any previous sph measurements before because it takes into account the max-ammo rounds, ultimately providing you with any bound (best, average, worst-case) you desire. Hence, your results are much more rich, with probabilistic interpretation, and in which case, for the first time ever, especially since the lower bound (i.e. the best-case) is now accessible to you, you may now form accurate time projections! Huzzah!

Say the total gametime for a solo Kino 30 speedrun was 29:09. Then what is the sph? Well, it all depends on the max-ammo rounds, so we need -m, -i and -f again. sph -r [1,30] -p 1 -t 29:09 -i [5,7] -f [4,5] -m all EXACT SPH: 31.09-34.61 AVG SPH: 32.97 If no Max-Ammo Rounds: 25.08

The sph calculation is precise (i.e. a "tight bound") as long as we remove the max-ammo rounds from the calculation. If the max-ammo rounds are unknown, then what you get is the range of possible sph's, as well as the expected sph. So in this example, your exact sph is contained somewhere in these bounds: 31.09-34.61, and on average, you'd expect your sph to be close to 32.97.
Now if instead you were playing a map without max-ammo rounds, like Nacht for instance, then your sph would be 25.08. In this Kino 30SR example, if you had average dogs, you'd expect an sph of 32.97 seconds per horde. If you had best dogs, you'd expect 34.61; on worst dogs, 31.09. This makes sense if you think about it - your sph will increase if your dog rounds are more ideal, because then you're doing less work (killing less zombies) but in the same amount of time (29:09).

I should mention that these sph values returned above here are rounded to the nearest hundreds place to be easier to read. For more precision, or to follow a function's process, run your command with the --verbose option. sph -r [1,30] -p 1 -t 29:09 -i [5,7] -f [4,5] -m all --verbose Worst/Avg/Best: 31.097690941385437/32.97175141242938/34.60079051383399 25.083094555873927 if no max-ammo rounds

Now if you indeed know the actual dog rounds, then by all means, use them for the value to the -m parameter to get your exact sph. sph -r [1,30] -p 1 -t 29:09 -m [5,9,13,17,21,25,29] 34.60079051383399

...Or maybe you weren't lucky enough to get best dogs: sph -r [1,30] -p 1 -t 29:09 -m [5,9,13,17,21,25,30] 31.517551755175518

Time Projections

Say your sph is 34.61 for rounds 1-30 on solo kino. Then your time projections are: time -r [1,30] -p 1 -s 34.61 -i [5,7] -f [4,5] -m all Best/Average/Worst: 00:29:09/00:30:21/00:31:54 If no Max-Ammo Rounds: 00:38:23

Say your sph is 32.97 for rounds 1-30 on solo Kino. Then your projections would be: time -r [1,30] -p 1 -s 32.97 -i [5,7] -f [4,5] -m all Best/Average/Worst: 00:28:00/00:29:09/00:30:37 If no Max-Ammo Rounds: 00:36:48

And finally, the worst case: time -r [1,30] -p 1 -s 31.09 -i [5,7] -f [4,5] -m all Best/Average/Worst: 00:26:41/00:27:46/00:29:09 If no Max-Ammo Rounds: 00:34:58

Notice how 29:09 made its way as the best-, average-, and worst-case scenario time in each of these projections. These sph values were pulled straight from the bounds calculated in the previous section. We received exactly what we expected - 29:09 appropriately for each case.

Q: "My time/sph calculations are off slightly." A: Be careful to check your significant digits against your precision or else your analysis may result in rounding errors. (See section in the doc for more details). Remember, using --verbose may reveal more precision in your results.

Final Words

Throughout these examples, at any time we could have changed the rounds (-r), number of players (-p), or other tweaks to fit our scenario. If you're interested in getting deeper into the functionality or mechanics of how these things work, the doc goes into much more detail.

Your Feedback Is Needed!

Feel free to start up a discussion in our discord. Like many software projects, this is an ongoing effort, so if you notice a technical error, please open a ticket. Please provide all appropriate details in a bug report, such as a replicable example, your system, browser, versions, etc.

Your changes and suggestions may get into future releases.


zombies -r 9 -p 1 -m [5, 9] All params must start with "-" or "--". Parameter values cannot have excess whitespace. Removing the space fixes the error: zombies -r 9 -p 1 -m [5,9] 0 Alternatively, you could quote them, so they're distinguished, and in which case any excess whitespace within the quotes will be ignored: zombies -r 9 -p 1 -m " [ 5 , 9 ] " 0

sph -r [1,6] -p 1 -t 00:00:50 -m [5] ***Error: Impossible to have completed this quickly [. . . ] time must be > 00:00:50 The time you provided is too fast to finish the rounds. So in this example, it's impossible to finish the first five rounds (-r [1,6]) in 50 seconds. Because the sph and time functions take round delay into account (see section in doc), in order to form realistic queries, your times must be larger than this time-delay accumulation. Running the command again with a time just slightly over 50 seconds (say, 50.0000001 seconds) will result in a very small sph close to 0: sph -r [1,6] -p 1 -t 50.0000001 -m [5] 5.3333333956591863E-8