KatamariGame
Katamari Cosmos — the entire game in one self-contained world component, mounted on a single host entity by `scenes/main.scene/entrypoint.luau`.
KatamariGame
Katamari Cosmos — the entire game in one self-contained world component,
mounted on a single host entity by scenes/main.scene/entrypoint.luau.
Roll the katamari with WASD (mouse or Q/E steers, mouse Y pitches the camera, Shift dashes, Esc pauses). Absorb everything smaller than the ball to grow it; reach the stage's target diameter before the clock runs out.
Systems
- State machine: title / stage select / settings / extras / playing /
paused / won / lost, all rendered as zui screens from
buildTree(). - Four stages: Prince's Room, Town Square, Downtown, Moonrise Boulevard — each with its own arena size, prop count, target diameter, clock, and sky time-of-day. Clearing a stage unlocks the next.
- Stuck props: absorbed objects parent to the ball and ride its surface, keeping their world size as the katamari grows around them (capped at 40; the oldest sink into the mass).
- Combo chains: pickups within 2.5s of each other stack a growth multiplier, shown as a HUD meter.
- Royal Stars: rare glowing pickups sized to become absorbable mid-run; each grants +6s of bonus time.
- Ranks: S/A/B/C by fraction of the clock remaining at the win, persisted per stage and shown in stage select, extras, and results.
- King subtitles: milestone quips at 25/50/75% of the target (toggleable in settings).
- Persistence: clears, best diameters, ranks, collection, and settings
in a key=value file at
/source/katamari_save.ini.
Dev cheat hook
While a run is playing, write an attribute on the host entity to grow the ball — used by automated tests to drive the win path:
entity(hostId).attribute.set("cheat", "grow:0.35") -- +35cm diameter
Telemetry attributes (gstate, diameter, target, absorbed,
timeLeft, propsLeft, stageIdx, combo, stars, stuck,
subtitle) publish on the host entity at 5Hz.
Scoped to this part · feeds back into the world's score.