A review with no log to work from
The newest version of the Watch the AI mode had never run in a finished build, and the run from the day before left no log. With no evidence to work from, reading the code was the only option, and it found real problems. Nothing was played; all the fixes compile cleanly.
It could get stuck forever
- If a bug made the AI crash on every frame, the "reset and carry on" safety net sent it to the title screen and straight back into the same stage, again and again. Now a stage that fails twice is skipped, a stage that keeps throwing errors is skipped, and if five problems pile up inside ten minutes the game closes itself so the launcher restarts it fresh.
- If it kept dying in the same spot, nothing changed its approach, so it repeated the same death until a seven minute limit. After three deaths at one goal it moves on past it, after four deaths in a boss fight it hands the fight to the older scripted version, and after twelve deaths in a stage the stage is skipped.
Its map of the level had holes
- It never planned a simple step off an edge. Eight of the 33 kinds of move it knows were thrown away the instant they started, so every descent was a big jump, which fails under a low ceiling.
- It trusted things that move. Walking ants, swinging toys and sinking quicksand were all treated as solid ground, so it kept planning to land on platforms that were not there any more.
- It did not allow for ice. On the World 7 ice it let go of the stick as if on a normal floor and slid past every target. It now brakes the way ice requires.
- It lost a step in its plan after every side trip such as grabbing a token or breaking a crate, so it headed for the exit early.
Smaller fixes: the on-screen guide for the last stage had described the ending in plain words and now only says what the AI is doing, the "secrets found" counter could count an ordinary token, and a lot of small pieces of text were being rebuilt every frame, which would cause tiny stutters on a long stream.
The boss fights
Snookums' fight could stall if the AI picked a firing spot behind the lawnmower, because every shot hit the mower. It now picks a spot with a clear line. Bruiser's fight could never hand over to the backup script if every stomp missed; it now gives up after six wasted tries. After a stomp the AI could be left holding jump and run together. All three are fixed.
The tools failed in instructive ways
- A launcher that said "failed" while the build was still going. The build script waited by running a command that quietly refuses to work when another program starts the script, so it counted through its whole 40 minute wait in a few seconds and reported failure. The editor was building the whole time. It now waits properly, and a build run twice afterwards worked both times.
- A relaunch loop with no pause. The scripts that restart the game for the stream would have relaunched a game that crashed on start over and over. They now pause five seconds.
- Markers that only fit one screen shape. The AI's markers and dotted path were positioned correctly only at 16:9. They are now placed from the camera's own position.
Sixteen silent sounds
A read of the sound list against the code found that 20 of the game's generated sound effects were never played by anything. Whole mechanics ran in silence. Sixteen are now wired in, each at the thing that causes it:
- The pollen sneeze, and the rustle of walking through standing grass.
- The sleepy calico's snore while she sleeps and her grumble when she wakes.
- The wind-up mouse's squeak when a meow startles it, and the ratchet as it re-winds.
- A hairball splatting against a wall, the claw swipe and the roll's whoosh.
- The mower blade's whirr, the steam vent's hiss and the scalding sizzle, the scree's rattle, the updraught's whoosh, the burr sticking to the cat's coat, the shop till, and the title screen's start sound.
Sounds in this game pan left and right but do not get quieter with distance, so a mower at the far end of a stage would have been heard everywhere. Level sounds now use a range from the nearest cat: silent beyond it, fading towards it. Repeating sounds are short pulses, so nothing can be left looping. Some were left out on purpose, such as the two HUD pip ticks, whose notes warn they only suit HUD-only animation, and the bubble pop.
The volumes (0.55 to 0.8) are first guesses. Nothing was heard yet, and they need judging by ear.
