Hole Game

v0.4-cityprep

City grid layout · Playfield is now a 4×4 city block with asphalt streets and lawn block interiors. Five absorbable tiers (ExtraTiny → Big) with weighted distribution. Hole disk floats cleanly above streets. Primitives only — Blender meshes drop into this layout next.

Build notes

Layout

  • 4×4 grid of city blocks separated by gray asphalt streets (5 N–S strips + 5 E–W strips).
  • Each block is 8×8 units; streets are 3 units wide; stride is 11. Total city span ~50×50.
  • Block interiors stay green (the underlying ground plane); streets sit on top as thin Y-flat cubes.
  • Absorbables spawn inside block interiors with proper inset so they don't overlap streets.

Five-tier absorbable system

  • ExtraTiny (req radius 0.10, score 5, mass 0.05): cones, very small props.
  • Tiny (req 0.30, score 12, mass 0.10): trash, small boxes.
  • Small (req 0.55, score 22, mass 0.18): signs, posts.
  • Medium (req 0.80, score 38, mass 0.30): cars-sized.
  • Big (req 1.40, score 90, mass 0.55): buildings-sized.
  • Weighted spawn distribution: 35 / 25 / 20 / 15 / 5 percent. Lots of tiny props for early-game pickup, few buildings for late-game.

Hole disc Z-fighting fix

  • Previous version had the hole disc at world Y 0.0125–0.0175, overlapping the street strips' Y range (0–0.02). Result: the strips' mesh occluded parts of the disc, leaving four corner petals.
  • Fixed by raising the disc's local Y to 0.04 — clearly above all street geometry.

Other tuning

  • Ground plane bumped to 60×60 with a slightly more saturated lawn green so it reads against asphalt.
  • Bot wander bounds bumped to 22 units to reach corner blocks.
  • AbsorbableObject gained a null-guard for definition to silence a NRE during early-frame init.