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.
"Establish Base" on a scanned planet launches a hex-tower-defence match keyed by planetId; waves scale with planet difficulty; new harvester vehicle joins matter mines; victory writes conquest (owner, matchId, baseSnapshot) into the shared universe.
Position: hex-TD KEEPS its SignalR hub + twin reducer; unification is at the data layer — match completion publishes planet.conquest.completed to game.events; consumer writes Planet conquest fields + game_conquests; GameServer re-reads the Redis planet cache on zone-join/landing.
Playable when done: scan → decide → fight → own, end-to-end on web; conquest permanent + visible on mobile.
The unit is tracked by the shared [Unify P2] title prefix and by sibling
cross-links in each issue body. Closing here — the umbrella tracker is being
emptied.
— Opus 5 Agent
Dissolved into per-repo issues as part of the umbrella-tracker breakup.
This epic could never auto-close from a merge, because Gitea only resolves
`fixes #N` within a single repo. Its work now lives where the code is:
**Backend**
- spikerj/spikersoft-backend#586 — [BE] HexTowerDefenceMatch + hub: planetId/difficulty/outcome; require scan report
- spikerj/spikersoft-backend#587 — [BE] Harvester vehicle in the C# match manager
- spikerj/spikersoft-backend#588 — [BE] Conquest completion → planet.conquest.completed → universe write
- spikerj/spikersoft-backend#589 — [BE] SpaceZone broadcasts conquest status; re-read planet cache on join/landing
- spikerj/spikersoft-backend#595 — [Unify] Wave scaling by planet difficulty; win = N(difficulty) waves — C# match manager
**Angular**
- spikerj/spikersoft-angular#658 — [NG] Harvester in the TS reducer + renderer
- spikerj/spikersoft-angular#659 — [NG] Establish Base flow: scan-report HUD → hex-TD host keyed by planet
- spikerj/spikersoft-angular#660 — [NG] Conquered-planet ownership display in the space game
- spikerj/spikersoft-angular#662 — [NG] Menu collapse 1/3: remove hex-TD standalone entry
- spikerj/spikersoft-angular#703 — [Unify] Wave scaling by planet difficulty; win = N(difficulty) waves — TS reducer twin
**Godot**
- spikerj/spikersoft-games-godot#13 — [GD] Establish Base button + conquest interstitial + ownership display
The unit is tracked by the shared `[Unify P2]` title prefix and by sibling
cross-links in each issue body. Closing here — the umbrella tracker is being
emptied.
— Opus 5 Agent
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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.mdon the 4090."Establish Base" on a scanned planet launches a hex-tower-defence match keyed by
planetId; waves scale with planet difficulty; new harvester vehicle joins matter mines; victory writes conquest (owner, matchId, baseSnapshot) into the shared universe.Position: hex-TD KEEPS its SignalR hub + twin reducer; unification is at the data layer — match completion publishes
planet.conquest.completedtogame.events; consumer writes Planet conquest fields +game_conquests; GameServer re-reads the Redis planet cache on zone-join/landing.Playable when done: scan → decide → fight → own, end-to-end on web; conquest permanent + visible on mobile.
Tickets
Child issues (per-repo, auto-close on merge)
This epic is complete when every box below is checked. Each child lives in the
repo that holds its fix, so
fixes #Nin a PR closes it automatically.Backend
Angular
Godot
Checklist generated by the umbrella-tracker migration, 2026-08-07 — Opus 5 Agent
Dissolved into per-repo issues as part of the umbrella-tracker breakup.
This epic could never auto-close from a merge, because Gitea only resolves
fixes #Nwithin a single repo. Its work now lives where the code is:Backend
Angular
Godot
The unit is tracked by the shared
[Unify P2]title prefix and by siblingcross-links in each issue body. Closing here — the umbrella tracker is being
emptied.
— Opus 5 Agent