In this action horror game, one girl must kill 9 of her neighbors in order to go on the shoe collecting spree of a lifetime. No shoes are safe in Zombies Ate My Neighbors!
This is a 1 player, any% run aiming for fastest total time.
My main strategy was to use heavy RNG manipulation to get speed shoes pretty much everywhere, and to use a speed shoe (2x movement speed) on every level.
For comparison, I compare my level times with MechChicken's 2P any%, and Allbeert's 1P any%. In 2P, you can multitask and thus collect items and kill bosses slightly faster. However, in 2P you'd also need to collect 2x the items as the 1P run; a herculean task to be sure. As the times below will show, a 2P run will not be able to compete with a 1P run, and the 2nd character is basically just dead weight, as 1P can do nearly everything faster.
Note: Original submission had the labels mixed up. Negative number for a comparison means that Meerkov was slower than the previous run.
Level breakdown:
# | Level | MechChicken | Allbeert | Meerkov | Meerkov v MechChicken | Meerkov v Allbeert |
---|---|---|---|---|---|---|
1 | Zombie Panic | 1831 | 2088 | 1954 | -123 | 134 |
2 | Evening Of The Undead | 552 | 592 | 208 | 344 | 384 |
3 | Terror In Aisle Five | 762 | 770 | 428 | 334 | 342 |
4 | Chainsaw HedgeMaze Mayhem | 718 | 726 | 721 | -3 | 5 |
5 | Weird Kids On The Block | 634 | 768 | 644 | -10 | 144 |
6 | Pyramid Of Fear | 668 | 579 | 532 | 136 | 47 |
7 | Dr. Tongue's Castle Of Terror | 1070 | 790 | 778 | 292 | 12 |
8 | Titanic Toddler | 862 | 828 | 452 | 410 | 376 |
9 | Toxic Terrors | 758 | 704 | 418 | 340 | 286 |
10 | No Assembly Required | 881 | 916 | 450 | 431 | 466 |
11 | Weeds Gone Bad | 584 | 578 | 320 | 264 | 258 |
12 | Mars Needs Cheerleaders | 796 | 796 | 602 | 194 | 194 |
13 | Chopping Mall | 697 | 557 | 422 | 275 | 135 |
14 | Seven Meals For Seven Zombies | 1075 | 724 | 562 | 513 | 162 |
15 | Dinner On Monster Island | 248 | 281 | 305 | -57 | -24 |
16 | Ants | 1712 | 1444 | 1174 | 538 | 270 |
17 | Office Of The Doomed | 378 | 386 | 378 | 0 | 8 |
18 | Squidmen Of The Deep | 1172 | 1050 | 896 | 276 | 154 |
19 | Nightmare On Terror Street | 806 | 1064 | 470 | 336 | 594 |
20 | Invasion Of The Snakeoids | 2500 | 1734 | 1147 | 1353 | 587 |
21 | The Day The Earth Ran Away | 1160 | 634 | 656 | 504 | -22 |
22 | Revenge Of Dr. Tongue | 1732 | 1749 | 602 | 1130 | 1147 |
23 | The Caves Of Mystery | 658 | 736 | 607 | 51 | 129 |
24 | Warehouse Of The Evil Dolls | 1076 | 656 | 656 | 420 | 0 |
25 | Look Who's Shopping | 1048 | 738 | 608 | 440 | 130 |
26 | Where The Red Fern Growls | 302 | 300 | 296 | 6 | 4 |
27 | Dances With Werewolves | 452 | 468 | 320 | 132 | 148 |
28 | Mark Of The Vampire | 1983 | 1040 | 466 | 1517 | 574 |
29 | Zombie House Party | 1116 | 1134 | 1329 | -213 | -195 |
30 | The Horror Of Floor Thirteen | 330 | 344 | 407 | -77 | -63 |
31 | Look Who's Coming To Dinner | 342 | 460 | 260 | 82 | 200 |
32 | Giant Ant Farm | 1980 | 959 | 648 | 1332 | 311 |
33 | Fish And Crypts | 670 | 788 | 522 | 148 | 266 |
34 | I Was A Chainsaw Maniac | 352 | 324 | 218 | 134 | 106 |
35 | Boardwalk Of Terrors | 600 | 514 | 280 | 320 | 234 |
36 | Monster Phobia | 3110 | 2336 | 2026 | 1084 | 310 |
37 | Labyrinth Of Horrors | 714 | 399 | 394 | 320 | 5 |
38 | Monsters Of The Blue Lagoon | 775 | 758 | 742 | 33 | 16 |
39 | Destroy All Vampires | 442 | 434 | 294 | 148 | 140 |
40 | Pyramid Of Fear Two | 1208 | 1231 | 671 | 537 | 560 |
41 | Martians Go Home! | 992 | 724 | 604 | 388 | 120 |
42 | Spikes | 374 | 338 | 218 | 156 | 120 |
43 | Super Fund Cleanup Site | 1104 | 824 | 674 | 430 | 150 |
44 | The Curse Of Dr. Tongue | 830 | 524 | 468 | 362 | 56 |
45 | Danger In Picnic Park | 715 | 872 | 715 | 0 | 157 |
46 | Day Of The Chainsaw | 1186 | 500 | 492 | 694 | 8 |
47 | Gridiron Terror | 1798 | 556 | 524 | 1274 | 32 |
48 | Curse Of The Tongue | 3442 | 4362 | 3345 | 97 | 1017 |
Cr | Monsters Among Us | 1053 | 683 | 548 | 505 | 135 |
= | Total Time | 111048 | 92277 | 82377 | Saved 28671 | Saved 9900 |
Note: The level breakdown is counted from first input of the level to when the character exits the door. As mentioned in Allbeert's run, MechChicken's run has a lot of time during the score screens that can be skipped, so I decided to only break out the gameplay time to give a better comparison between the three runs. The final row is for the entire run including score screens.
Detailed Comments:
Note: I made changes to every single level, but I decided to only comment on the decisions I thought were unique. Levels not mentioned here, generally I either picked up an extra speedshoe, or used a speedshoe where one wasn't used before.
Level 1: Zombie Panic
I did major route changes for some levels in this run. After the 5th victim dies, I'm 54 frames ahead. By the 8th victim (the dog) I'm 278 frames ahead. However, I make a mistake by not luring the zombie tighter and instead going for a chest first. I end the level only 135 frames ahead, squandering two seconds from what I could have gotten :/.
My reroute took me to the pool before the baby in the house. Because of the speedshoe, this is much faster than taking the trampolines. Additionally, because I lure the zombie to kill the baby instead of saving it, I reap some addition time in level 2.
Level 2: Evening Of The Undead
With only 1 survivor to save, this is now the shortest level in the game, with only 199 frames of input.
Level 3: Terror In Aisle Five
At this point, I only have 1 shoe to spend on either L3 or L4. I spend it here, it's very slightly better than level 4; though I tried both.
Level 5: Weird Kids On The Block
Our first shopping spree. Future runs will want to consider which chests through the entire game are worth picking up. The paths I take are pretty reasonable, but there might be a chest that's faster to reach somewhere.
Level 7: Dr. Tongue's Castle Of Terror
I use a glitch that allows me to walk on fire. Even though I used 1 Fire Extinguisher ammo, it is possible to walk over the fire without extinguishing it at all. It seems to depend on the frame of animation the fire is on to help your hitbox walk right past it.
Level 10: No Assembly Required
I take a faster path, which also uses less bazooka.
Level 11: Weeds Gone Bad
By rapidly pressing and unpressing buttons, we keep the invulnerability to plants by using the weedwacker, but never actually attack anything or spend any ammo.
Level 12: Mars Needs Cheerleaders
I take a shorter route for shopping than collecting the shoes on the field.
Level 20: Invasion Of The Snakeoids
Snakoids are the only enemy in the game whose AI is based directly on the player input. In my run, I have to leave in 2P's input because removing it would actually desync the run otherwise. This actually means that using 2P's input, you can manipulate the RNG on levels with Snakoids, which is great because there are tons of items to pick up here, and it was pretty troublesome.
Level 22: Revenge Of Dr. Tongue
I get huge gains on this level, because I don't collect the flamethrower. This cuts some 15 seconds off my time. The only benefit will be in fighting the bosses, however I show in my run that the weedwhacker is just as good, though more difficult to fight with because of how close you need to get.
Level 28: Mark Of The Vampire
Skipped the keys and the 3000 points in gold. We will be aiming for <40k final score.
Level 29: Zombie House Party
Shopping! We take a totally new route that gets us 13 items. Future runs may need to weigh the benefit of looting more on this level, or e.g. taking a slightly different route (e.g. for 11 items) if there are faster chests to get in other levels instead.
Level 30: The Horror Of Floor Thirteen
By shopping for a few chests first, I find the spiders were not as aggressive in killing the cheerleader. We stride right in and save her.
Level 32: Giant Ant Farm
We take a new path, skipping all skeleton keys.
Level 35: Boardwalk Of Terrors
Reroute, which costs 1 less bazooka.
Level 36: Monster Phobia
Without the flamethrower, or the second player, we need to use a new strategy. Soda cans do maximum 6 per hit. Silverware caps out at 8 damage. Weed wacker deals 1-2 damage based on where you hit the spider. It's fairly hard to get maximum efficiency out of the weedwacker because the spider moves around and has a lot of attacks to avoid. Weedwacker will hit every 3 frames, but other weapons have ~27 frame recharge, if you attack while moving. The boss has 6 health bars: for 21, 11, 11, 11, 11, and 36 hp respectively. Each bar is independent.
We use a mix of the three weapons to kill the boss faster than the original run with two players(!). Having the flamethrower is clearly not a big advantage. Shown below are frames saved, relative to the other two runs:
Boss Stage | Meerkov v MechChicken | Meerkov v Allbeert |
---|---|---|
1 | 44 | 42 |
2 | -9 | 9 |
3 | -9 | 6 |
4 | 4 | -19 |
5 | -36 | -8 |
6 | 58 | 110 |
Total Saved | 52 | 140 |
I drop my arms at the door, but I come back for them and leave the level.
Level 37: Labyrinth Of Horrors
I try taking damage to save time as suggested in the first run. It's not faster unfortunately.
Level 43: Super Fund Cleanup Site
New path. Jumping from the nearest point is a tiny bit faster than jumping closer to the victim, and also prevents the swampmen from getting near him.
Level 47: Gridiron Terror
Fun fact, you can actually get a few pixel boost by running into the football players so they launch you forwards.
Level 48: Curse Of The Tongue
I too pick up the skeleton key at the start of the level (only 60 frames to pick it up, very good!). Unfortunately this spawns the vampire. I'm not afraid of no stinking blood sucker, so I trigger the boss asap, cutting more than a second from the MechChicken's run, and over 10 seconds from Allbeert's run.
Why did I choose to fight the boss? Well, at first I really didn't want to. It's a lot of very careful frame precision to do boss fights like this, which takes a lot of tries. I tried to be clever and hit 40k points on level 47, allowing me to save the second victim on 48 and kill the first victim with a vampire (you die to the boss, and the vampire will float over the wall and kill the cheerleader, so you don't need to save her). Unfortunately, this was actually almost identical to the 2P run in terms of frame count. I figured, if an optimal run to the second victim wasn't actually faster (and in fact would be slower because the "Extra Victim Bonus" message on 47), I could save some frames by fighting more efficiently instead, as I did on Monster Phobia. It's pretty similar in time however, it might be worth considering going for the 2nd victim just because fighting the spider boss is a pain.
The spider boss in this level has a lot of health. The bars are 21, 21, 21, 21, 21, 41, or just about 146 health compared to the original 101.
I basically ignore the vampire. He attacks every so often, but if you are careful you can kill the bats with the weedwacker. In form 2, I remember to use the Clown to distract the vampire so he stops bothering me.
In form 2, we fight a giant floating head. It has 4 health bars, 36, 36, 36, 36, total of 144 health. Silverware only does 1 damage now, and soda doesn't do anything. Our friend the weedwacker however is still at full power, dealing 1-2 damage every 3 frames. And because the AI has a nice pattern of charging and then retreating, we can get into an easy rhythm of mowing him down.
Boss Stage | Meerkov v MechChicken | Meerkov v Allbeert |
---|---|---|
Spider 1 | 23 | 3 |
Spider 2 | -24 | 14 |
Spider 3 | 9 | 33 |
Spider 4 | -28 | 11 |
Spider 5 | -16 | 86 |
Spider 6 | -36 | 123 |
Face 1 | -13 | -58 |
Face 2 | 65 | 101 |
Face 3 | -22 | -19 |
Face 4 | 33 | 31 |
Total Saved | 203 | 1024 |
Winner screen:
It costs 6 frames per enemy killed. I might have been able to skip killing one or two, but often I weighed the cost of trying to walk around the enemies and determined it's not really worth getting worried about, because it's nearly identical. I killed 3 more enemies, for 18 more frames, than Allbeert.
Credits Level:
And we use the final speed shoe we saved!
Possible Improvements:
Menu Load Time:
Allbeert's run, for some reason, spends at least 6 frames less than mine on almost every level load. The only thing I can guess is that something about the items I picked up is causing longer level load times compared to the other run. ~5 seconds.
Level 1:
Get Shoe instead of Bazooka (thus unable to open second door), control the 9th and 10th victims more carefully. ~2 seconds
All levels:
Better RNG on chests. While I did a pretty good job, there is always room for improvement. Several of the pick ups required waiting 20+ frames. Since we pick up over 40 items, this could work out to ~3 seconds.
Snakoid Manipulation:
It turns out, the Snakoid AI is based partially on what buttons BOTH controllers are pressing. I didn't realize this until I finished. You could use this to manipulate level 20's RNG for some savings.
Item Routing:
I picked up items and used them all, but I can't be sure these were the optimal items to collect. Especially on level 29, there are many possible paths for collecting items. Choosing a slightly different path, or one that gets an extra Shoe or two may be able to save ~3 seconds.
Saving the 2nd Victim on the last level:
I'm pretty sure I've proven saving the second victim isn't efficient, however that hinges on tricking the vampire to kill the cheerleader being too slow. If someone had a faster way than dying, this might be viable.
Boss Fights:
I was pretty solid on the boss fights, but better RNG can help a lot. ~2 seconds
Killing Monsters:
Killing monsters is bad. ~0.5 seconds
Appendix:
HOW DOES RNG EVEN WORK
The RNG is 2 bytes located at 0x24 and 0x25. 0x25 is the "high order" byte, and the RNG ranges from 0-65535. To get the value, just take memory(0x25) * 256 + memory(0x24).
Every frame of the game (including menus) the RNG will increment by 1. If it gets to the maximum, it rolls back over to 0 again. In addition, every time an event needs a random number, it reads the RNG value, and then adds some extra number back in. It does this so you don't get 5 zombies on screen reenacting Thriller, because they are no longer getting the same random numbers.
Item ID | Item Name |
---|---|
3 | none |
12 | gun |
13 | extinguisher |
15 | weedwacker |
16 | holy symbol |
17 | bazooka |
18 | soda |
19 | tomato |
20 | popsicles |
22 | plates |
23 | silverware |
33 | key |
34 | ~Shoe~ |
35 | Red Potion |
36 | Blue Potion |
37 | Mystery Potion |
40 | Medkit |
41 | Pandora's Box |
42 | Skeleton Key |
43 | Clown |
47 | gold |
48 | $$ |
I then just had a script poke the memory address for the RNG, opened a chest, and record which item spawned for all 65536 possible RNG values. Items we care about have low spawn rates. Shoes are only 1/128, and Skeleton Keys are 1/256, fairly close to the estimates of 1% and 0.5% given in various faqs.
Now you too have the power to manipulate the RNG. Go Forth and TAS.
Why did you lose frames?
I got some questions asking why I had lost some frames but didn't explain in the level break down. The truth is, I thought it was too boring for the main post! So I'll add it to the appendix here. I came up short on four levels compared to Allbeert's run, which looks like 304 frames slower. Why is that? Actually it's not that exciting. Because I need to pick up speed shoes so many places (~70 chests over the course of the run to get all those shoes and keys!) some of the time I spend some frames early on to get bigger savings later.
The shortest level was 199 frames of input, and a shoe is 2x movement speed. I used this to get a guideline estimate that a shoe is worth a minimum of 100 frames. In every practical situation it's worth more (or on bosses which I need to I can fight efficiently with a melee weapon). Skeleton Keys are a necessity for some major shortcuts, but we can just say they are also worth at least 100 frames (definitely more, however, because you can skip mini-bosses).
15: Dinner on Monster Island
I lost 24 frames here to pick up an item. 24 is much lower than 100, so this is an obvious choice for a chest to get.
21: The Day the Earth Ran Away
I lose 22 frames to pick up an item. Again, worth it.
29: Zombie House Party
I pick up 11 items, but Allbeert only got 4. Each shoe is worth 100 frames, and skeleton keys are worth more than that. Let's be generous and assume that we could have collected the key later instead of a shoe. 11 shoes would be worth 700+ frames. We are down -195 frames, a net savings of over 495+ frames by slowing down to shop here.
30: The Horror Of Floor Thirteen
I pick up 4 items instead of just 1 item. That's 300+ frames of additional savings, and it only cost me -63 frames compared to Allbeert's run.
Why do you slow down in random places?
If I stop, or backtrack for a few steps for seemingly no reason, what I'm doing is manipulating the RNG. By causing enemies to spawn or despawn by moving the camera, among other things, you can get slightly better RNG. A good example is Level 5 Weird Kids on the Block, where I need to pick up 6 chests, and sometimes the fastest way to advance the RNG to a good number is actually to move in a very careful, but funky looking pattern.
Samsara: Judging.
Samsara: Really, all these 1-player ZAMN submissions are making me crave an update to the 2-player "all victims saved" run. If someone does that before the end of the year, they will be my hero forever.
Despite a couple small mistakes, the routing looks clean and everything seems tighter overall. Given the better audience reception, I think we can accept this to Moons as an improvement to the published run.
...but please someone do all victims saved next
Samsara: Actually hang on, I need to think about obsoletion chains real quick.
Samsara: After some general discussion and some personal thought, I'm going to accept this as an improvement to both the published run and the 2p any% run. The reasoning behind this is mostly because of the 2p run falling off in entertainment value since its publication, with only 4 ratings (thus, low interest) and an average entertainment of 6.1 (lower than what we'd expect from a Moon run). We can't push it down to Vault since it's not eligible, so I think it's safe to let it be obsoleted for now. If a much more optimized 2p run comes along and it gets good enough feedback, then we can bring the 2p any% category back, though if that happens I'd like to see some more discussion on the merits of having both 1p and 2p any% runs.
feos: Pub.