A paper sky-lantern climbs a festival night on the breath of its own flame. That flame is the only light you have and the only fuel you have: stoke it to rise and see further, or coast to save it and go nearly blind. Built end to end by AI agents on Cocos Creator — concepted, modelled, animated, scored, compiled headless on Linux and audited until clean — and measured every build against the 4 MB WeChat mini-game gate.
Hold Space / W / ↑ or touch to stoke · A D or ← → to steer · P pause · M reduced motion · N mute
3.3 MB web build · starts in seconds
Nothing was modelled before the concept pack existed. The hero sheet fixed the one thing the piece had to deliver — a lantern that is genuinely the light source, its flame raking warm amber across clay pantiles in a deep indigo night. Every art round after that was judged against this image, side by side, until a full audit round found nothing.
The whole loop played from placeholder rectangles first, driven by an autopilot through Playwright on desktop and mobile, before a single asset existed. Five real defects fell out at that stage — including a keyboard path that was silently dead until the player happened to click, and a level rule where the reward and the obstacle fought each other so hard that a perfect run still starved.
The lab signature: a custom Cocos Effect that lights normal-mapped sprites from the lantern's live world position. Every lit surface ships an albedo pass and a camera-space normal pass baked in Blender, so the flame rakes across real relief rather than a painted highlight. It is load-bearing, not decoration — light radius is sight radius, so stoking to see further is the same act as spending your fuel.
Every prop is code-modelled and rendered to sprites at one shared px-per-metre, each with a matching camera-space normal pass. The rooftop crowd is real motion data, not procedural posing: CMU clip 15_04 retargeted onto a rig and sampled to standing stances.
This lab's signature number is the WeChat main package against the 4,194,304-byte cap. Every figure below is measured from the shipped build, including the ones that are not flattering.
| Measurement | Value | Conditions |
|---|---|---|
| WeChat main package | 3.38 MB (3,383,883 B) | 80.7% of the 4,194,304-byte cap — the gate this lab exists for. Re-measured after the 2026-08-24 readability round: the hazard tick signature and gap brackets are drawn in code, so they cost the main package 1,097 B. |
| Tier-3 subpackage | 45.9 kB | outside the cap; fetched on demand at tier 3 |
| Cost of a whole tier of art | 1.5 kB to the main package | because the art itself went to the subpackage |
| Web build | 3.35 MB | raw, uncompressed |
| Engine core, trimmed | 1.64 MB | 15 modules kept of 33 default |
| Engine core, untrimmed | 3.08 MB | what the default config ships — 1.49× over the cap on its own |
| Prop atlas (albedo + normal) | 276.4 kB | 640×512, 19 sprites at one shared 96 px/m |
| Engine splash removed | −0.20 MB | no-splash baked into the build config; the removed logo was an embedded base64 image |
| Audio | 241.6 kB | five mono MP3s from sampled instruments |
| Art headroom left | 0.81 MB | tighter than it looks once every lit surface needs a normal pass too |
| Audit rounds | 65+ | blockout through gate 7, plus this operator fix round |
| Verified playthrough | desktop and mobile both complete the climb | zero console, page and network errors |
| Device verification | pending | WeChat devtools are Windows/macOS-only. A substitute harness boots the real package under a mocked host API with real headless GL — it proves the package is coherent and renders, not that it runs on a handset. |
A hand-written Cocos .effect lighting normal-mapped sprites from the lantern's live world position. The mechanic, not a filter.
Tier 3 ships as a WeChat subpackage, loaded on demand and excluded from the 4 MB main package.
Flame core that breathes with the stoke, an ambient ember field, and one-shot bursts on pickup and snuff.
33 default modules cut to 15, halving the engine core — the difference between fitting the gate and missing it.
Rooftop crowd retargeted from CMU 15_04 onto a rigged figure; no procedural fallback used.
Koto and halo pad over a 26.7 s night loop; vibraphone, taiko and tubular bell for the cues. Nothing synthesised.
hit-stop 60 ms grace window 45 s light radius 150 → 320 px fuel 7.0/s stoking, 2.2/s coasting gap shift ≤ 190 px 4 parallax rates one PPU: 96 px/m