Every cat, rebuilt
The five playable cats are no longer drawn pixel by pixel. Each one is modelled in 3D from simple shapes on a jointed skeleton, shaded in five flat tones per material, posed in code and rendered down to pixel art. It is the same method that made the spirit companions Razor and Blade in Reign of Valtherin.
Each frame is rendered at four times its final size, then reduced: every final pixel takes the most common colour in its block. Outlines, and the lines where one body part overlaps another, use the darkest tone of that part's own colour, never black.
The tool renders every frame of every cat in about a minute: 745 frames across five cats, 23 sheets each. The frames land on the existing sheet layouts with the same names, sizes and anchor points, so the animation system picked them up without a code change.
- Mittens keeps what defines him: the big chibi head, gold-green eyes with a catchlight, the white blaze and bib, the red collar and gold bell. He now has real volume and consistent lighting from the window at upper left.
- Molly and Simon have their own builds. Molly is slight, with bigger eyes and ears. Simon is a heavy tom with a broad head and tiger stripes.
- Bones and Gidget have their own bodies for the first time. Until now they were recoloured copies of Mittens. Bones is a lanky white cat with grey patches, Gidget a small, round mocha tortoiseshell.
Every frame is checked before it goes in: every colour comes from the game's palette, nothing touches the cell edges, every grounded frame stands exactly on the floor row, the cat riding Samus sits exactly on her back, and each animation frame differs enough from the last to read as motion. All five cats pass with zero problems.
Two things were learned on the way. The 3D library converted every colour to a different colour space by default, which pushed every pixel off the palette; turning that off made the output exact. And poses have to be checked against the real sheets: measuring the old frames showed the feet belong one row lower than first assumed, and that the cat sat about six pixels too far right of his collision centre.
The title screen now shows the whole cast behind a remade Mittens, who is still the biggest thing on it.
The last two worlds
Worlds 7 and 8 are built, each with three stages, a boss, art, a region on the world map and medals. We are keeping the ending to ourselves.
Ice is a floor material. On ice the cat keeps only 18% of his normal grip, so starting, stopping and turning all take longer, while in the air he handles as normal. A finished roll on ice ends at walking speed, so a roll is still a way to get your feet back. Hairballs slide along the ice instead of arcing, and a few things bounce them: some surfaces send a shot off in a straight line, walls send it back once like a puck, and some enemies knock it back at you.
The last world's environment art is 28 tiles, 41 props and 4 background layers. Everything in the open is cold and desaturated, and warm colour appears only in a few places. In failing light, a thin amber line along every surface you can stand on keeps the routes readable. A check script tests all 74 files for palette colours, anchor points and seamless repeats, and confirms that every standable surface carries the amber line at the height the levels use at the height the levels use.
It caught real mistakes. Two tiles had a mortar line or stone sitting exactly on the repeat edge. The background trees broke where the 480 pixel layer wraps, because each clump's pattern was computed from its unwrapped position, so the two sides of the seam disagreed. And rounding the corners of the big pixel lettering ate the letters away entirely, because each removed corner exposed a new one. Corners are now chosen all at once, before any are removed.
Reading the code line by line
An automated test player played all six new stages for about 100 seconds each. It finished 7-1 and 8-2 and found a few real problems: the stage name in the corner read "1-1" in every new world, one flowerbed could push the cat out sideways, and two stages needed their camera limits fitted. But it never reached the end of the game, so the code for those parts was read line by line for anything a player could get stuck on. That produced 23 problems. Each was checked against the code before anything changed, and 21 were fixed.
The ice was mostly not ice. After the cat's first jump, the ice under him quietly went back to normal floor for the rest of that stretch. The game remembered which surface he stood on, but when he left the ground it reset the grip and kept the memory, so landing on the same ice restored normal grip. On the rink's long open sheets the ice only worked until the first hop. The bot had walked across it for a whole stage without noticing. World 7 now plays the way it was designed, slippery all the way across and harder than the test runs suggested.
Other fixes from that pass:
- A prop in the middle of one arena bounced shots straight back at the boss and made a phase far shorter than intended. You can now stand on it, and shots pass underneath.
- A trick shot up a narrow chimney had almost no room to spare, so one small change to the hairball's size would have made the stage impossible to finish. The chimney is a little wider and still too narrow to climb.
- The level timer could end the game during its own ending, which runs about two minutes and cannot be sped up. The timer now stops when it begins.
- In co-op, the second cat kept control during the ending and could wander off.
- Boss health bars that are meant to move now do.
The same read was then done for the six finished worlds: 16 problems, 15 fixed. Three were ways a stage could become impossible to finish:
- A crowd that follows you. In one stage a growing crowd follows the cat and only moves forward. It came to rest on the last checkpoint, so a cat knocked out in the boss's room came back inside the crowd, was pushed out on the wrong side, and could never get back to the fight. The crowd now always stops short of where you return.
- A swinging object. One way to beat a boss is to knock an object loose so it lands in her path. From the spot the level guides you to, it swung so hard it flew off the edge of the level and the fight could never end. A falling object now keeps only a little of its swing.
- A boss that could not decide. If the thing a boss wanted to fetch ended up directly underneath him, he turned round, turned back, and kept doing it forever. Now he puts his head down and picks it up.
A smaller one with a story in it: in an early world the cat picks up a burr that is meant to stay in his fur for the rest of the world. It had been quietly disappearing after the first stage. It stays now.
Several moments in two-player play only paid attention to the first player, such as a ribbon that is the only route to the end of one stage. Either cat can use it now. And four bosses had their own copy of the same "skip the ending" code, all with the same flaw: holding a button when the final hit landed skipped the ending the moment skipping was allowed. Finding it once fixed it in all four, and the lesson is that copied code copies its bugs too.
Confirming it in play
Once Unity was open again, the fixes were built in and the automated player spent ten minutes on the stages they touched. The first ice stage took 77 seconds with one fall, against about 94 seconds and three falls before the ice fix, even though the ice is now much more slippery. A cat knocked out in that boss room came back and walked straight in. One new problem turned up: a two-step gap let the cat get behind a boss, so his herding pushed it into the end wall. The gap is now solid.
Two stages looked stuck, and both turned out to be the player, not the game. The bot treated any wall taller than about a cat's height as unclimbable, and when it did decide a ledge needed the second jump, it never pressed it. By hand, both walls are fine. Fixed, the bot got over one wall in 12 seconds and reached the boss's yard in 25, where before it had stood at the wall for the whole run. When a test stalls, try the spot by hand before changing the level. That kept two well-tuned climbs exactly as designed.
None of this has been played by a person on a controller yet, and the last fights and the ending have not been played start to finish.
