The Backward Walker Finally Learned to Run
Yesterday we were laughing at our player character moonwalking backwards through Xinyi District. Today that same character has idle breathing, a walking cycle, a run, and a jump — all powered by 18-bone skeletal animation. Here's how one AI agent fixed a bug, another rebuilt the character from scratch, and the two of them spent a full day solving an animation mystery together.
One Line That Fixed Everything
Midnight's solution was elegantly simple: rotation.y = Math.PI.
The backward-walking bug came down to a 180-degree misunderstanding between Blender and the game engine. Blender exports the character facing -Z. The engine moves the player toward +Z. Add π radians of rotation and suddenly the character is looking the right direction. Bug squashed.
But fixing the direction revealed a deeper problem: the character itself was embarrassingly basic.
From Stick Figure to Chibi Hero
The original humanoid clocked in at 168 polygons. That's barely a stick figure with aspirations.
The human sent Dusk a clear redesign brief: rounder proportions, a slightly oversized head readable from the top-down camera, visible clothing details (t-shirt, shorts, sneakers), and a target of 2,000–3,000 faces. Dusk didn't iterate — they rebuilt from scratch.
The result: 3,204 faces, 18 bones, four animation groups — idle breathing, walking, running, jumping. The new character has a proper chibi silhouette that's instantly recognizable even from 30 meters above.

The Case of the Missing Animations
After Midnight integrated the new character, the human opened the game and reported: "No animations. Whose fault is this?"
A detective story began.
Dusk loaded the GLB file back into Blender and audited every track: all four animations present, 180 FCurves intact, nothing missing. Dusk messaged Midnight: the data is fine — the problem is the playback code.
Turns out Midnight had wired up the new character model but hadn't yet implemented the AnimationGroup playback logic. Once that was added, the character came alive — subtle breathing at idle, leg swings when walking, a slight forward lean when running.
The human's verdict: "It works."
Two words. Case closed.
The World Got Beautiful. Then Unplayable.
While the character drama was unfolding, Midnight shipped a major visual overhaul: ACES tone mapping, warm color grading (cool purple shadows, warm amber highlights), a peach-toned skybox, and a unified Taiwanese warm color palette across all building materials — cream white, soft pink, pale yellow, brick red, mint green.
Human feedback: "good."
Next message: "It's so laggy I can't even enter the game."
The visual upgrade came with a performance price tag. Midnight pivoted immediately: removed SSAO entirely (the biggest per-frame GPU cost), added a distance culling system to disable meshes beyond 150m, simplified post-processing shaders, and halved shadow map resolution from 1024 to 512. The performance battle is still ongoing.
Meanwhile, Dusk was running a parallel operation: rebuilding three landmark towers with drastically reduced polygon counts. Taipei 101 went from 12,462 faces down to 1,268 — a 95.5% reduction — while keeping its iconic silhouette intact.

Five Scooters, Parked and Waiting
Amid all this drama, Midnight quietly completed one more task: placing five rideable scooters at key locations across the map — near spawn, along Songshou Road, at Songzhi/Shifu intersection, Songgao Road, and Songde/Songshou.
The human confirmed it: the scooter riding system is the next major milestone.
Those white-and-teal scooters — 1,455 faces each, with separate front and rear wheel meshes designed for rotation — are parked and patient. Waiting for the frame rate to stabilize. Waiting for a player to walk up and press a button. Waiting for Taipei Runner to actually start running.
| This awakening by the numbers |
|
| Character face count |
168 → 3,204 (+1,805%) |
| Bones |
18 |
| Animation groups |
4 (idle / walk / run / jump) |
| Buildings remodeled |
3 (avg. 90% face reduction, max -95.5%) |
| Arcade modules placed |
~320 |
| Performance optimization phases |
4 |
| Rideable scooter locations |
5 |