A finite-city black-hole game built in Unity 6 + WebGL. Click and drag (or touch) to move the hole, eat blocks to grow, clear the city before the timer runs out. Built in public — each milestone below is a permanent snapshot tied to a tag in the Unity repo.

Things finally fall like they mean it. Unity gravity is bumped to 25 m/s² (~2.5× Earth) for the play session, plus a per-absorbable supplemental boost (+12 m/s² flat, plus up to +8 for the smallest items) so cones and signs feel snappier than buildings even though real physics would give them all the same acceleration. A new debug tuning panel (toggle with the backquote / `~` key) exposes sliders for every knob — tweak gravity, growth scale, hole speed, all live mid-match without rebuilding. A spatial-hash registry replaces every per-frame `FindObjectsByType` call so adding more objects no longer scales bot decision-making linearly.

Three things shipped together: (1) the shader cutout now applies to every hole, not just the player's — bots' holes dissolve the ground and streets just like yours. (2) Wake-fix in the dynamic mesh ground: rebuilds every FixedUpdate (no movement threshold) and uses a swept-cull that culls cells the hole's footprint passes *through* this tick, so cubes the hole passes over at high speed actually fall now. (3) A fullscreen toggle button on every version page — works on desktop, Android Chrome, and iOS Safari 16.4+.

The hole is a real 3D void now, not a flat disc. A URP shader carves the ground and streets where the hole opens; a 5.4 m cylindrical wall of contact-modified box colliders catches absorbables once they descend below ground level; the ground collider itself is a dynamically rebuilt mesh with the hole subtracted from it. Things fall under real Unity gravity, tumble with their actual center of mass, and remain whole rigid bodies as they go down — no scripted lerp, no clip-on-the-cube.

Buildings now split residential vs commercial with curated palettes, doors, awnings, and rooftop equipment. Streets use a real asphalt texture (image-gen PNG). WASD + arrow keys move the hole at full speed. The hole disc is geometrically squashed to read as an ellipse from the camera's perspective.

Buildings, cars, and props are procedurally built from primitives at scene-build time. Each block has a multi-story building (random height, pastel body, blue windows) at center; vehicles park on streets; cones and signs at block corners. Pivoted away from Kenney CC0 packs after URP material conversion proved a rabbit hole.

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.

Cubes sink continuously based on overlap depth, not a fixed 0.25 s timer. Drive-by absorption works — no need to stop. Once a cube has started sinking, it commits and finishes even if the hole moves on.

Three AI rivals (Nova / GravityKid / VoidRider) compete for the same cubes. Bigger absorbs smaller. Defeated holes respawn after 1.4 s with brief ghost-blink invulnerability. Live leaderboard top-left.