[GD] Unified target handle + celestial targeting + survey UI #945

Closed
opened 2026-08-06 16:11:59 +00:00 by spikerj · 2 comments
Owner

Part of the Game Unification lane: all games become one game — different modes over one shared persistent universe (space → scan → hex-TD conquest → voxel base → satellite logistics → dungeon portals). Clients = Angular web + Godot (iOS/Android embed Godot). Full plan: ~/.claude/plans/i-want-a-plan-breezy-eclipse.md on the 4090.

Part of EPIC #927.

space_arena.gd: target handle becomes {kind,id} (_target_body_id: String alongside int _target_entity_id); branch _set_target/_update_reticule/_aim_forward/_refresh_target_hud (369-545) on kind; _try_pick_target (424) includes _world_bodies with per-candidate threshold maxf(8.0, radius*1.15) preferring smaller angular miss; _cycle_target (447) ships first then nearest ~10 bodies; handle ScanBodyAck/SurveyReport(List); SURVEY button (radar SCAN stays separate); update stale "never send Target" comments. celestial_body_node.gd: set_selected() torus ring at radius·1.25. game_server_client.gd: extended target() + scan_body(). New survey panel. Update docs/PROTOCOL.md. Tests: wire_selftest.gd round-trips + arena_smoke.gd fake-report + radius-50 pick test.

Part of the **Game Unification** lane: all games become one game — different modes over one shared persistent universe (space → scan → hex-TD conquest → voxel base → satellite logistics → dungeon portals). Clients = Angular web + Godot (iOS/Android embed Godot). Full plan: `~/.claude/plans/i-want-a-plan-breezy-eclipse.md` on the 4090. Part of EPIC #927. `space_arena.gd`: target handle becomes {kind,id} (`_target_body_id: String` alongside int `_target_entity_id`); branch `_set_target`/`_update_reticule`/`_aim_forward`/`_refresh_target_hud` (369-545) on kind; `_try_pick_target` (424) includes `_world_bodies` with per-candidate threshold `maxf(8.0, radius*1.15)` preferring smaller angular miss; `_cycle_target` (447) ships first then nearest ~10 bodies; handle `ScanBodyAck`/`SurveyReport(List)`; SURVEY button (radar SCAN stays separate); update stale "never send Target" comments. `celestial_body_node.gd`: `set_selected()` torus ring at radius·1.25. `game_server_client.gd`: extended `target()` + `scan_body()`. New survey panel. Update `docs/PROTOCOL.md`. Tests: `wire_selftest.gd` round-trips + `arena_smoke.gd` fake-report + radius-50 pick test.
spikerj added the enhancementagentic labels 2026-08-06 16:11:59 +00:00
Author
Owner

Implementation up: spikersoft-games-godot PR #10. Unified {kind,id} target handle, radius-aware pick (maxf(8, r*1.15)) with angular-miss tie-break, CelestialBodyNode.set_selected torus ring, SURVEY button + survey panel (safe-area aware), PROTOCOL.md updated. Headless wire_selftest + arena_smoke PASS (Godot 4.7 downloaded and actually run). Merge AFTER backend #521-#523; needs games.pck re-export for the iOS shell after merge. Will close after merge.

Implementation up: spikersoft-games-godot PR #10. Unified {kind,id} target handle, radius-aware pick (maxf(8, r*1.15)) with angular-miss tie-break, CelestialBodyNode.set_selected torus ring, SURVEY button + survey panel (safe-area aware), PROTOCOL.md updated. Headless wire_selftest + arena_smoke PASS (Godot 4.7 downloaded and actually run). Merge AFTER backend #521-#523; needs games.pck re-export for the iOS shell after merge. Will close after merge.
Author
Owner

Resolved in spikersoft-games-godot PR #10 (merged to main). Unified {kind,id} target handle, radius-aware pick, radar-contact store + cycling (incl. ContactLost lostEntityId field fix), SURVEY button + safe-area survey panel, PROTOCOL.md updated. Reminder: games.pck re-export for the iOS shell. Closing.

Resolved in spikersoft-games-godot PR #10 (merged to main). Unified {kind,id} target handle, radius-aware pick, radar-contact store + cycling (incl. ContactLost lostEntityId field fix), SURVEY button + safe-area survey panel, PROTOCOL.md updated. Reminder: games.pck re-export for the iOS shell. Closing.
Sign in to join this conversation.