DEV Community

CGT Rocket X Racer
CGT Rocket X Racer

Posted on

Packing a garage fleet from one car visual under Compatibility

A runner that ends with a single victory pose wastes the collecting loop. In CGT Rocket X Racer — a fan-made rocket-car runner for desktop browsers — the payoff is a garage pack: the cars you built line up, then leave. The hard part is not inventing a second vehicle system. It is packing a readable fleet from the same visual the player just flew, without cloning physics cars or blowing a Compatibility + no-threads budget.

Fan-made · Desktop-only · Not affiliated with any car maker.

The pack size is already decided mid-run

During the run you collect five part types: body, chip, motor, thrust, and energy. Cars-built is the minimum of those five counters. The HUD marks the weakest bin in red, so the player already knows which part is capping the fleet before the finish garage opens. The end sequence does not invent a new score. It stages a number the run already earned.

That contract matters for packing. The pack is honest only if the lineup count tracks the same min rule the HUD used. If the garage showed a fixed parade regardless of collection, the red counter would feel decorative. If it tried to spawn a full physics car per built unit, a strong run would hitch the tab right when the player wants a clean reward.

One source visual, many quiet replicas

The garage display path starts from the car the player actually finished with — after hit-flash alpha is restored — not from a separate showcase prefab. Design intent: duplicate the visual tree, park replicas on berths inside the delivery-hub frame, and disable processing on those copies so they do not keep running gameplay systems.

Dynamic nodes get stripped from each replica before it sits on a plinth: particle emitters, audio players, cameras, lights, animation players. The mesh stays. The thruster language players already learned mid-run — side nozzle mist locked to body markers, underbody hover jets that read as flight — can be reused for the leave beat without carrying live VFX graphs on every copy. Shadows stay off on display meshes. Compatibility already limits what a browser tab can spend; a row of cars is not an excuse to multiply draw cost by accident.

Controls during the run stay the same keyboard contract the rest of the loop uses: A/D for lane cuts, W or Space for the jump-flip, S for ground roll, Shift for boost. None of that input path belongs on a parked replica. Packing is presentation, not a second simulation.

Cap what the camera shows, keep the true count

A strong collecting run can push cars-built past what a landscape framing can read at a glance. Design intent for the garage pack is a hard display cap: show up to a small row that fits the delivery hub, while the results UI still reports the real cars-built total. Icons and the count-up carry the full number. The 3D pack carries silhouette and motion.

That split avoids two failure modes. First, an endless row that shrinks into illegible dots at the back of the garage. Second, a fake “full fleet” that ignores the min-of-five rule. Players should be able to glance at the pack, then confirm the exact total on the stock-style results line without arguing with the camera.

Berths are staggered left/right and stepped back along the garage depth so overlapping meshes do not read as one blob. The delivery hub itself is a lit box the car flies into and settles in — not a hard cut to a menu — so the pack appears inside a space the player already understands as finish.

Lift-off is delivery, not fireworks

After results, the front-of-garage beat is a pack lift: cars leave together, but not as a synced parade. Design intent is departure with variation — peel timing and direction differ so the eye reads “these are leaving,” not “a particle fountain of identical silhouettes.” Some peel off. Most keep going. The fleet should exit the frame rather than hover forever as celebration confetti with thrusters.

That motion reuses the same flight tells as the run. Underbody hover jets and marker-locked mist sell flight without new post-process. Compatibility and the no-threads web template already push us toward motion and camera over heavy effects; the pack lift is the same philosophy at the end of the loop.

What packing must never break

  • Cars-built stays min(body, chip, motor, thrust, energy) from the run — the pack does not invent units.
  • Replicas do not keep physics, boost, or input alive on the plinth.
  • Display count can be capped for readability; the results total stays truthful.
  • Thruster markers stay on the mesh; mist that drifts off the body is worse when multiplied across a row.
  • Landscape framing stays readable: the pack is a wide beat, not a portrait crop of one car.

Why this sits after fair hazards

A short pack only motivates if players trust the run that fed it. Presses and sweeping indoor arms are audited so pickups are not buried inside hazard motion and indoor patterns keep a safe lane. Distance-sampled hazards keep boost from scrambling approach phase. When a missing energy part is the player’s miss, a thin garage row is coaching. When a miss feels like a dishonest stamp, the same row feels like the game cheated the reward.

We are still tightening how many replicas stay lit under Compatibility when the leave beat starts, and how aggressively we strip VFX before duplication. Feedback from people shipping Godot 4 browser showcases — especially fleet outros that reuse one player mesh — is welcome.

Try it

Play the desktop browser build: CGT Rocket X Racer

Fan-made · Desktop-only · Not affiliated with any car maker.

Top comments (0)