Grid Placement 6.0 — snap-fit grids for Godot 2D + 3D

Place buildings on an isometric map, paint layered terrain with fences that keep the ground underneath, build side-view platformer levels, settle hex tiles — or snap together a 3D modular house. Every clip below is captured from a real running demo, driven through the real placement pipeline. In the 3D house proof, floors, walls, door, windows and four CORNER posts are real placement commits; the roof, gables and chimney are presentation dressing and are labeled as such wherever they appear.

source-bound media 3956897c2 3D film 24/24 commits 2D guard --strict green @ 3956897c2

Kit-house assembly — floors through GRID roof, end to end

The page-head clip is the full build: floor deck → N/S walls and door → E/W window columns → four CORNER posts → House Roof slopes → House Gable triangles, each through catalog ghost → valid → click. Gable plaster fills the roof WoodTrim bargeboard triangle. Chimney is the only visual-only dressing. No catalog warmup and no closing orbit — 26.5 s, readable per beat. Poster: roof ghost beside the finished gable — two real film frames, process → destination.

real game footagee2e assembly1280×720 · 33.7 s · 1012 frames1.2 MB
Proof details + object classification

Cut (frames 92–1129, no reordering — catalog select through finished house + chimney, orbit excluded) from media/demos/grid_placement_6_house_proof.mp4 (1456 f, 48.5 s, driver godot/test/smoke/demo_3d_house_film.gd, PROOF_DONE placed_total=42, fail-closed). The 24-tile 1×1 floor deck is laid with one rect-fill drag through the demo-owned drag path (click = corner A, cursor glide = corner B, release commits the inclusive rectangle through the real service); walls, door, windows, four CORNER posts, two per-slope roof pieces and two dedicated yaw-0 gable scenes commit through the GRID CELL/CORNER ghost paths. Placement ops come from HouseBuildPlan — the same SSOT the GdUnit geometry suite enforces. Per-object classification: placement_service 42 (24 deck fill tiles, 2 N walls, S wall, S door, 3+3 E/W wall/window column pieces, 4 CORNER posts, 2 roof slopes, 2 gables) · visual_only 1 (chimney — staged, never registered) · authored_environment (grid + dressing props). The camera glides per beat (deck, N face, S face, E/W columns, corners, roof, both gables) so every commit lands on screen. A fail-closed PROOF_GEOM gate verifies dressed-face-outward on all 10 wall-family slots and full deck coverage before PROOF_DONE. Captured at source e564714 (branch capture/site-refresh-ui: PR #992 geometry hardening + rect-fill + mirrored roof scenes).

>

1. Watch placement happen — five workflows

The four 2D demos are driven through their real placement flow — paint, select, preview, place, rotate, move, demolish, mode-switch — and recorded at fixed 30 fps through the release-gate pipeline (scripts/ci/demo_video_proof.py generate, commit-bound manifest, guard --strict green at 3956897c2); the 3D house film is recaptured at e564714 with the rect-fill deck drag and per-beat camera. Press play on any card.

Top-down — layered terrain, objects and fences

Fences occupy their own layer — painting a fence never replaces the ground underneath. The fence goes down as one hollow 4×4 pen with a stone pillar parked beside it on bare ground; rotate/flip, demolish and a clean mode-switch close the loop. 14/14 checkpoints, zero skips.

16.3 s1280×720306 KB

Isometric — grid-aligned building on an isometric map

Single snow, then a grass drag across the diamond grid, then a blacksmith snapped onto it. Then the failure workflow: a tile is demolished, the building re-selected, hovered over its own occupied tile — red ghost, rejected — and the cursor moved away. 12 supported checkpoints pass, 2 honestly unsupported.

16.8 s1280×720524 KB

Platformer — side-view placement and editing

Wall blocks need neighbors: an isolated single is rejected on the spot, a connected block lands. The crate lands in the empty cell above its painted support — resting on it, not inside it. Rotation is honestly skipped: the supported box cannot rotate in place. 11 supported checkpoints pass, 2 unsupported.

12.7 s1280×720178 KB

Hex — native hex-grid placement

Dirt, grass, stone and water brushed across a true hex grid with the beehive selected and the cursor highlight tracking every cell. 7 supported checkpoints pass, 5 unsupported (terrain-only paths).

10.0 s1280×720230 KB

House — 3D placement interaction on the grid

Empty grid to finished house in the placement-demo scene: catalog select, one rect-fill drag lays the 24-tile 1×1 deck, ghost previews → walls → door → windows → four CORNER posts → two per-slope roof pieces → gable triangles, with the toolbar, mode readout and build log visible throughout. 42 GRID commits (CELL fill + CELL + CORNER); chimney is the only staged dressing. The camera glides per beat so exactly what is being placed is on screen — deck from above, N/S faces, E/W columns, corners, roof, both gables. Filmed at e564714 — dressed faces verified outward by the in-film geometry gate, every deck-side joint flush on its grid line, corners MOUNTED at the intersections (see §2).

48.5 s1280×72017.3 MB

2. Finished 3D result — seam-closed modular walls

A real frame of the same §1 film (closing orbit): every ground-story module below was committed through the placement pipeline, none hand-placed. Wall, door and window modules carry measured mesh bounds and opt into partner-aware seam closure, so each deck-side face lands exactly on its shared grid line — verified numerically at this source on all four interfaces (N, S, E, W) plus the floor grade, worst joint gap 0.0000. Four CORNER posts commit at the wall-joint intersections (generic yaw, exterior occupancy).

Finished modular house — gable framing, dressed roof, four CORNER posts, flush wall-to-deck joints

Finished house — 42 committed modules + staged chimney

6 floors, 2 N walls, an S wall, an S door, 3+3 E/W wall/window column pieces through GRID CELL commits, four CORNER posts at the outer intersections, then two individual Roof Slope pieces (one commit per side) and two House Gable ends through the same GRID CELL ghost-click path. Gable plaster fills the roof WoodTrim bargeboard triangle. Chimney is staged dressing only (flipped so its moulded end is buried in the roof plane). Watch the 33.7 s page-head clip for the piece-by-piece assembly, or the 48.5 s proof film for the closing orbit.

placement proofall joints flush @ 0.00004 CORNER posts MOUNTED
True-wireframe proof — live mesh triangle edges over the committed 20-piece house

True wireframe — mesh edges vs grid truth

Blue/cyan edges are triangles read back from the live placed meshes; green dashed lines are cell boundaries, red planes are the declared closure interfaces, yellow ticks are committed origins. Four CORNER posts sit on the wall-joint intersections. Full verdicts: N/S/E/W joints and floor grade all FLUSH; each corner MOUNTED.

worst joint 0.0000bound to 3956897c2
True-wireframe close-up — N wall-wall joint closing on its grid line

Joint close-up — N wall-wall interface

The declared closure plane (red) sits exactly on the shared grid line and both committed wall faces land on it: measured N wall-wall gap 0.0000. Same closure contract covers the S wall-door joint and both window-column joints.

N gap 0.0000numeric, not visual
True-wireframe close-up — NE CORNER post flush with both walls

NE corner — intersection mount

Post origin on the N/E wall-joint; occupancy fills the exterior quadrant so the timber faces both outer walls. Generic yaw from adjoining hosts — not a per-corner hardcoded transform.

MOUNTEDyaw +π/2
True-wireframe close-up — SE CORNER post flush with both walls

SE corner — intersection mount

Same contract on the S/E joint. Knight and dressing cubes are authored environment, not placements.

MOUNTEDyaw 0
True-wireframe close-up — NW CORNER post flush with both walls

NW corner — intersection mount

N/W joint, exterior occupancy. Posts align with both wall thicknesses; no outer notch, spur, float or bury.

MOUNTEDyaw π
True-wireframe close-up — SW CORNER post flush with both walls

SW corner — intersection mount

S/W joint after the NE/SW yaw-sign fix. Local +X+Z lands in the exterior quadrant on all four orientations.

MOUNTEDyaw −π/2
Corner note (#982, open): House Corner is back in the 3D catalog as a CORNER mount. Each of the four posts commits independently through preview → valid → commit at the wall-joint intersection (not the CELL centroid). Generic orientation from adjoining walls; preview == commit == restore. #971 seam closure on walls/doors/windows is unchanged (FLUSH 0.0000).

3. Why Grid Placement 6.0

2D + 3D in one plugin

Square, isometric and hex grids plus side-view and full 3D — the clips above are all the same system.

Layered terrain

Ground, fences, objects and buildings stack on separate layers instead of overwriting each other.

Modular pieces that snap

Walls, doors, windows, floors, corner posts, roof slopes and gable triangles align to grid slots — the house is 42 committed modules, zero manual nudging. (The chimney shown is staged dressing, not a placement commit.)

Save / load in the demo UI

Every 2D demo ships SAVE and LOAD front and center — persistence is part of the workflow, not an afterthought.

4. itch.io store set — sized, verified, cut at this source

Final-RC media: the whole set — the four 2D demo MP4s, posters, GIFs and shots, plus the 3D house film, posters, cover and house GIF/shot — is cut from real captures: the four 2D films at 3956897c2 (guard --strict green) and the 3D house film recaptured at e564714 (42 GRID commits: one rect-fill deck drag + CELL + CORNER, per-slope roof + mirrored gables, per-beat camera, fail-closed PROOF_GEOM gate). Download from this page and upload as-is.

Every file below is cut to itch.io's published specs (cover 315:250; 3–5 screenshots any size; animated GIFs accepted as screenshots; trailer via YouTube/Vimeo link — itch takes no direct video upload). Download from this page and upload as-is. Slot plan + byte counts: itch_media_inventory.md.

itch.io cover — finished timber-gable house with title lockup

Cover — 630×500 PNG

Exact 315:250 ratio. Finished timber-gable house under a title + value-prop lockup — one strong building, no dashboard. Built by media/itch/cover/build_covers.py from a real capture frame (GRID-placed gable filling the roof wood triangle, frame 920); every pixel is game footage. Upload this PNG as the cover. 2× master (617 KB) linked for reuse.

630×500218 KB315:250
Screenshot — top-down fence placement

Screenshot 1 — top-down

4×4 pen with the pillar parked beside it, demolish confirmed in the log. PNG 302 KB · GIF 673 KB

Screenshot — isometric blacksmith placement

Screenshot 2 — isometric

Blacksmith on snow and grass with the build log confirming it. PNG 482 KB · GIF 939 KB

Screenshot — platformer wall building

Screenshot 3 — platformer

Walls and the box committed with adjacency rejects in the build log. PNG 147 KB · GIF 714 KB

Screenshot — hex terrain painting

Screenshot 4 — hex

Dirt and water brushed on the hex grid, beehive ghost tracking the cursor. PNG 307 KB · GIF 417 KB

Screenshot — finished modular house with placement UI

Screenshot 5 — house

Finished kit house with fitted gables, roof, chimney and four CORNER posts, placement toolbar and “Placed.” confirmation in the log — a real frame of the §1 film. PNG 385 KB · GIF 313 KB

Animated — top-down workflow

GIF — top-down workflow

Full 16.3 s flow at 12 fps, 640×360. Uploads directly as an itch screenshot.

640×36012 fps
Animated — isometric workflow

GIF — isometric workflow

Full 16.8 s flow including the failure workflow, 12 fps, 640×360. Uploads directly as an itch screenshot.

640×36012 fps
Animated — platformer workflow

GIF — platformer workflow

Full 12.7 s flow at 12 fps, 640×360. Uploads directly as an itch screenshot.

640×36012 fps
Animated — hex workflow

GIF — hex workflow

Full 10.0 s flow at 12 fps, 640×360. Uploads directly as an itch screenshot.

640×36012 fps
Animated — house foundation excerpt

GIF — house foundation excerpt

8 s foundation excerpt (floor deck down, first walls landing), 12 fps, 640×360. Uploads directly as an itch screenshot.

640×36012 fps
Trailer (video): itch.io takes no direct video upload — the Trailer field wants a YouTube/Vimeo URL. Upload media/demos/grid_placement_6_house_proof.mp4 (48.5 s, 4.8 MB, kit-house assembly end to end) there, then paste the link. The five demo MP4s (§1) work as unlisted YouTube clips linked from the description.

5. Technical verification / release evidence

Audit material for reviewers. Everything above is backed by the artifacts below — same source, revalidated on each deploy. Closed by default; open what you need.

Capture source
3956897c2 / e564714
2D films / house film + wireframe
2D checkpoints
44 / 0
supported pass / fail · 9 unsupported skips @ 3956897c2
3D commits
23 / 23
fail-closed film proof
Migration
PASS
5.0.9 → 6.0, idempotent
Provenance — source, kit, pipeline
2D demo proof provenance + checkpoint detail
Media file inventory
media/demos/grid_placement_6_house_assembly.mp4  1.2 MB 33.7 s 1012 frames (hero: floors through roof slopes+gables+chimney, frames 92–1103, no orbit)
media/demos/grid_placement_6_house_proof.mp4  17.3 MB 48.5 s 1372 frames (3D placement interaction, UI visible, placed_total=42, rect-fill deck drag)
media/demos/grid_placement_6_top_down_proof.mp4  306 KB 16.3 s (fence pen + pillar + demolish) @ 3956897c2
media/demos/grid_placement_6_isometric_proof.mp4  524 KB 16.8 s (blacksmith + failure workflow) @ 3956897c2
media/demos/grid_placement_6_platformer_proof.mp4  178 KB 12.7 s (walls + box + adjacency rejects) @ 3956897c2
media/demos/grid_placement_6_hex_proof.mp4  230 KB 10.0 s (hex paint + beehive) @ 3956897c2
media/demos/*_poster.jpg  6 posters, each cut from its film (all recut; house_poster = frame 920; assembly poster = split of frame 750 roof ghost | frame 920)
media/demos/wireframe/truewire_iso.png + truewire_joint_N.png + truewire_corner_{NE,SE,NW,SW}.png  true-wireframe proof (live mesh edges vs grid truth, 20-piece) @ 3956897c2
Grid Placement 6.0 media review — all films, posters, GIFs, shots, cover and wireframes captured/recut at source 3956897c2 (branch capture/site-refresh-ui — merge of fix/982-corner-intersection-mount [PR #986] and demo/hud-dark-deck [PR #988]). Known nits: film toasts/cursor visible in 3D frames, beige dressing block at the plot edge, in-demo cubes/knight in wireframe stills — tracked for a later pass. Issues #982/#971/#907/#973 stay open.