The prop library was costing players more than it was worth. hunyuan3d
hands back ~120,000 triangles and 1024px textures per object, so a
COOKING POT was a 4MB download — and the fryer bench, which loads a pot,
a basket and a rack, made a phone fetch 13MB before it could show you
anything. Right after shipping touch controls, that is the wrong bill.
scripts/optimise-models.sh: simplify to 10% of the triangles with a
0.002 error bound, textures to 512. Across 51 models that is 214MB →
47MB, and at the distance this game frames anything, the before and
after screenshots are indistinguishable — I checked the pot at full
frame before trusting it on the rest. The fryer bench now costs under
3MB.
The script skips anything already under the threshold, so a second run
cannot grind an optimised mesh into mush; delete the file and re-run
gen-assets.sh to go back to an original.
Regression sweep after: toast scene pristine, grill 9.4, pan 8.0, steak
9.4, bruschetta 9.6, air fryer 9.5, chips 10.0, pasta 10.0, eggs 10.0.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The MODELBEAST station lane finished — 14 hero props, all local, all
free — and the single-instance vessels are now wired into the benches
that were still cooking in grey primitives:
- the deep fryer: a steel pot with handles, a wire basket that rides the
lift animation, and a proper drain rack stage left
- the poach: a perforated slotted spoon the egg actually sits IN
- pasta night: a real stockpot, with the salt visibly clouding the water
Per-piece food (wings, chips) stays procedural on purpose: their colour
IS the gameplay read — raw to golden to regret — and a textured mesh
tinted per-frame reads as mud. Fidelity loses to legibility.
Three fixes the screenshots forced, none of which guessing would have
found:
- The oil disc was sized to the understudy cylinder, so it poked out
past the real pot's narrower rim like a yellow skirt. Refitted.
- The basket sat below the oil line — invisible, and a basket you
cannot see is a basket you cannot judge. Raised proud, handle kept.
- The spoon is 1.9 long in Z with its bowl at one END, so centring the
model parked the bowl a full half-length away from the egg. Measured
the bounding box in-browser and shifted by half the length; the egg
rides the bowl now.
And one prop rejected: the generated egg carton ships with six eggs
baked into the mesh, and that bench is entirely about which eggs are
YOURS — draggable, float-tested, state-coloured. A carton that already
has eggs in it is a lie the player has to see past. An empty tray is
queued instead.
Verified after: chips 10.0, poach 9.9, pasta 10.0.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>