DR-051 (delete-not-mothball, four-scene contract, one look, Bathynaut in), session log w/ commit table + field notes, strip/mothball inventory status banner (MOTHBALL rows -> DELETED), CLAUDE.md updated (scene contract, DR-051 purge bullet, LANTERN murk world bullet, save v7, retired bullets archived 07-15; 39.8 KB, under budget). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
14 KiB
title, date, tags, permalink
| title | date | tags | permalink | |||||
|---|---|---|---|---|---|---|---|---|
| LANTERN — Strip / Rework / Mothball Inventory (Phase 0.2) | 2026-07-13 |
|
gamevault/06-roadmap/lantern-strip-mothball-inventory |
LANTERN — Strip / Rework / Mothball Inventory
STATUS UPDATE 2026-07-15 (DR-051_Lantern_Realignment_Purge): every MOTHBALL-verdict row below was DELETED outright (operator overrode the reversibility stance — git history is the archive): automation chain, EB-2 turrets, END-1 Core, END-2 win/lose, CyclePhaseSystem/ThreatDirector, plus the legacy single-ability path (
AbilityRef/AbilityCooldown/EffectiveAbilityStats), first-run onboarding, the old Synty biomes/scenes, and the 10 old-theme enemy prefabs. Save epoch is v7 (fresh).CharacterId→FrameKind. KEEP/REWORK rows remain the live quarry map.Phase 0.2 of Roadmap_Lantern_Slice, adopted under DR-048_Lantern_Adoption_Full_Pivot. Inventories every current subsystem against the LANTERN vertical slice. Existing code is quarry, not foundation — this table records the salvage call, not a migration contract. The per-phase build specs (deeper technical pass) own the actual rework; this is the map.
Legend: KEEP = ports ~as-is (re-theme only). REWORK = the chassis/plumbing survives, the design on top changes. MOTHBALL = retire from the flow via baked toggles (
ScheduleEnabledpattern), code + tests keep compiling for reversibility — do not delete. CUT = the design is gone from the slice (code may still be mothballed).Headline calls (roadmap standing constraints): combat feel layer + telegraphs → KEEP; boon pipeline → REWORK into mutations; regions/relevancy, save, hub lifecycle → REWORK; sieges/economy leftovers → MOTHBALL.
Combat & player (the primary verb — strongest salvage)
| Subsystem (current) | Verdict | LANTERN target / note |
|---|---|---|
Combat feel layer — CombatFeedbackSystem (+ split siblings), per-kind telegraph colours/voices/lights, hit-stop (camera punch), dash juice, damage numbers |
KEEP | The single strongest asset. Roadmap: "combat feel layer + telegraphs: keep." Re-palette to warm/cold/lure; feed the SoD skillshot bar. |
Player mover — CharacterController kinematic (collide-and-slide), PlayerControlSystem, CharacterProcessor, planar Y-lock, predicted-physics infra |
KEEP | Suit-frames are weighted seafloor infantry (no swimming) — the top-down CC config is exactly right. |
Camera — PrototypeCameraRig (ARPG follow, look-ahead, zoom, shake/Hold) |
KEEP | Unchanged; the warm-cone-in-dark framing is a camera+light job. |
Projectile/melee plumbing — predicted AbilityFireSystem, ProjectileMoveSystem/ClassificationSystem, swept ProjectileDamageSystem, HealthApplyDamageSystem, MC-4 combo Step |
REWORK | Keep the predicted-spawn + swept-hit + server-damage spine. Rebuild the ability grammar as 4-socket skillshot kits with real windups/telegraphs/aim. |
Aim — PlayerAimSystem (client-derived), AimReticleSystem, scheme byte, soft auto-target |
REWORK (auto-target CUT) | SoD-grade manual aim is the feel target — the in-arc soft auto-target ends. Reticle + client-derived aim plumbing reused. |
Ability data model — AbilityDatabase blob, AbilityRef, StatModifier/EffectiveAbilityStats, StatRecomputeSystem (every-tick fold, rollback-correct) |
KEEP / REWORK | The substrate for Sparks (abilities-as-organs) + mutations — StatModifier→EffectiveAbilityStats is exactly what buffs/tiers/mutations ride (Identity_Lantern). |
Boon pipeline — BoonEffects (SendToOwner Pierce/Fork/Chain/Flags), BoonOffer, offer dedup / dominated-protection / Family bias, KillRewardSystem, ProjectileEffectState |
REWORK → wild mutations | The mechanic-changer architecture IS the wild-mutation warp substrate. Layer on: paced thresholds (pocket-clear beats), evaporate-at-homecoming, Tallow fix slots (1/Spark), culture library, raw-socketing. DR-047_Phase17_Boon_Overhaul_Mechanic_Changers is the salvage seed. |
Enemy AI + directors — server-only EnemyAISystem (no-pathfinding collide-and-slide + Depenetrate/tangent-slide/EnemyNavState nudge backstop), RoomEnemyDirectorSystem, kind-indexed roster, Dying window, separation pass, poise byte |
REWORK | Chassis kept (sole-position-writer, cover-aware nudge). Re-theme the roster to the bestiary: Drowners (Strider), Grindylow (Crawler leapers), Wreckers (Strider + fake-beacon/scan), Wisp-Choir (Drifter motes). Formalize spawn/rig path into CreatureKit (Workstream A2). |
Boss — server-only BossState/BossAISystem (sole mover, telegraphed radial SLAM, phase-2 speed + summon), Health.Max [GhostField], party-HP scale |
REWORK | Reused for the shelf-boss (Phase 6) — a real multi-phase skillshot fight. |
World, netcode & lifecycle (the ★review-first zone)
| Subsystem (current) | Verdict | LANTERN target / note |
|---|---|---|
Regions / relevancy — RegionTag{byte} (server-only), GhostRelevancy (SetIsIrrelevant), RegionRelevancySystem, untagged-global-ghost rule |
REWORK | The seed for LANTERN's hardest idea: light-as-information relevancy (entities outside your lamp radius aren't replicated) + pocket streaming. Coordinate-region split → pocket-graph. Owned by the ★review-first Lantern_World_Model_Spike — no world code until that review passes. |
Run / room lifecycle — RunDirectorSystem (sole RunInfo writer), RunLifecycle/RoomExplore, RoomEpoch/RoomTag teardown, PortalCommand/PortalInteractRequest, ready-check, ClassSwapUtil, PrepCatalog/PrepPurchaseRequest |
REWORK | Maps onto the descent lifecycle: muster at deepest lit waypoint → Bell down → pockets → Bell recall / lit-road walk home; ~30–40 min cap. Rooms→pockets (seed-fresh re-knot); portal→Bell/waypoint transit; class-at-base→suit-frame pick; per-run prep kept. State machine is salvage; the pocket-graph replaces the linear route map. |
Save system — SaveData (single-slot atomic JSON, versioned/additive, [MinLoadableVersion,Current]), SaveService, born-correct CycleDirectorSpawnSystem staging, BaseRestoreSystem (charge-free replay + remaining-tick cooldowns + HP) |
REWORK | Persistence = seed-pinning: persist pinned-pocket seed + structure deltas + banked light + culture library. The versioned-additive JSON + born-correct load pattern is exactly what pinning needs — keep the HOW, change the WHAT. Hosting = "Wicks travel; worlds are saves" (Valheim contract). |
Frontend / on-demand worlds — GameBootstrap, WorldLauncher/SessionRunner/MainMenuController, UITK menu (Single/Host/Join), CreateClientWorld/CreateServerWorld |
KEEP | The Valheim hosting model needs exactly this on-demand world lifecycle + menu flow. Re-skin the menu to the station. |
Build / structures / grid — BaseGridMath (locked coord space), StructureCatalog, co-op-atomic BuildPlaceSystem, PlacedStructure, EB-1 Health/Destructible structure loss-state |
REWORK | Building v1 inside lit pockets (Phase 3) — the grid + atomic-placement RPC + catalog reused; structure-death (EB-1) reused for tide defense (severable fuel lines, garrisoned junctions). |
Economy, resources & harvest
| Subsystem (current) | Verdict | LANTERN target / note |
|---|---|---|
Ledger + harvest — global StorageEntry ledger (ResourceLedger tag), personal InventorySlot bag (OwnerSendType.All), unified swept ResourceHarvestSystem (nodes + clutter, immortal-sink guard), G-deposit RPC |
REWORK | Re-mean the currencies: Flame / Lumen / Gloam / Loudness / Salvage / Chum / Tallow (Identity_Lantern). Ledger + personal bag + swept harvest plumbing kept; carried-vs-banked cargo distinction is new; harvest = Lumen nodes + organ drops. |
Resource ids — Ore / Aether / Biomass / Charge (ResourceId bytes) |
REWORK | Re-meaned to the LANTERN currency set (bytes, not enums — Burst rule holds). |
Inventory / equipment — EquipmentSlot→AbilityRef swap, ItemDatabase blob, EquipSystem (atomic bag↔slot) |
REWORK / PARTIAL | Already PAUSED. The slot→ability swap is the graft-into-socket substrate for Sparks; culture library (permanent per-station collection) is new. |
Automation — Harvester/Conveyor/Fabricator chain, ProductionMath/ConveyorMath, deterministic offline catch-up, server-only I/O buffers |
MOTHBALL | LANTERN cuts spatial production machinery (Identity_Lantern scope ladder). v1.0 automation is assignment-based (Tenders under the Klabautermann), not conveyors. Mothball the chain; keep the deterministic-catch-up math as reference for assignment production. |
Sieges / win-condition (tower-defense layer — mothball-bound)
| Subsystem (current) | Verdict | LANTERN target / note |
|---|---|---|
Base-siege win — END-2 final siege + latching Victory/Loss, GoalReachedSystem, RunOutcome ([GhostField] server-only) |
MOTHBALL / REWORK-meter | No base-siege win in LANTERN. GoalProgress/RunOutcome win-meter reworks into the Lamp brightness = campaign meter. The Dawn (final carry) is the v1.0 win, not the slice. |
Losable Core — END-1 CoreIntegrity, CoreDamageSystem/CoreRestoreSystem, Core as AI fallback target |
MOTHBALL | Already mothball-bound (Phase 2). No Core in LANTERN; the station is never destroyed — loss ceiling = frontier pockets, never a shelf. |
Turret defense — EB-2 turret-ammo Charge, TurretFireSystem soft-fail spend, ledger-fed Fabricator mint |
MOTHBALL | No turret auto-defense in the slice. Tide defense (defend a planted lantern / fuel line) is a different, later beat (Phase 6 scripted tide). |
Cycle/phase director — CyclePhaseSystem (sole Phase writer), scheduled-siege / retaliation |
MOTHBALL / REWORK | The auto-cycle retires. The forecast model (Siren sings tide windows in advance) replaces sprung sieges — a planned event, not an interrupt. |
Presentation, world-feel & art (the LANTERN look is already here)
| Subsystem (current) | Verdict | LANTERN target / note |
|---|---|---|
Rendering identity — dark-ambient + dynamic-light-first (clean dark-Synty), DynamicLightSystem (projectile/portal/node/impact lights), per-biome dark palettes, ACES/HDR grade |
KEEP | This is LANTERN. The rendering pipeline stops being a style and becomes the fiction (light carves playable space). Add the capture/photo grade (lifted profile for clips) + the readability law (value-first, flicker-cadence, 200px). |
Atmosphere / ambient — WorldAtmosphereSystem (fog/ambient cross-fade), AmbientMotionSystem (drift/sway/rustle), AmbientLifeSystem (critters + cloud shadows + weather beats) |
KEEP / REWORK | Ports as water-column atmosphere (murk, silt-outs, plankton blooms, currents, whale-falls). Critters → light's-edge fauna; weather beats → the dark-as-weather language. |
Hazards / breakables / decals / cover — HazardExplosionSystem (barrels), GeyserEruptSystem (periodic AoE, born-correct tick), BlightClutter breakables, destructible cover (env-collider ghost), ScorchDecalSystem/CoverDamageSystem |
KEEP / REWORK | The both-sides-telegraphed AoE chassis (barrels/geyser) ports to vent fields; breakables/cover → wreck/coral dressing; decals reused. BlightClutter → pocket clutter (glow-flora/wrecks). |
HUD / UI — HudSystem (UITK, split siblings), MenuUi palette/PanelSettings/EventSystem, build palette, PauseMenuController, HudTheme SO |
REWORK | UITK chassis + build palette kept; re-mean to Flame / Lumen / Gloam / Loudness pips + lamp-morse ping wheel. Station panels (Lamp meter, rack, graft-bench) are Phase 7. |
Animation — Rukhanka 2.9 client-derived (PlayerAnimationDriveSystem, EnemyAnimationDriveSystem, ServerStripAnimationSystem), AnimatedLitShader, EnemyRigTools, humanoid muscle-clip pipeline |
KEEP / REWORK | Client-derived pipeline kept wholesale (netcode replication OFF). Formalize into the 3 rig families (Drifter/Crawler/Strider, Workstream A1); AnimatedLitShader → the deformation-aware Skinned-Palette master shader (palette-atlas material decision). |
World art assets — Synty biomes (BaseBiome Meadow / ExpeditionBiome Arid), ColliderFitTools, EnvArtTools (HDRP→URP) |
REWORK / QUARRY | Synty = placeholder quarry during transition (Synty_Asset_Inventory). LANTERN's abyssal look is custom Blender + the 3 master shaders + one palette atlas (Workstream A0). ColliderFitTools reused for pocket collider fitting. |
Dev tooling — DebugOverlay/TuningConfig, DebugCommandSendSystem, class-switch, screenshot rig, validation-harness |
KEEP / REWORK | Retooled per roadmap cross-cutting: pocket-graph visualizer, seed-pin inspector, Loudness/threat readout, descent-state overlay. The server-inject validation harness pattern stays. |
What this leaves for Phase 1
The combat gym (Phase 1) can be built almost entirely from KEEP + light REWORK: player mover + camera + combat feel + projectile/melee spine + ability data model + telegraphs, with two suit-frames on the existing humanoid pipeline and 4–5 Sparks on the reworked boon substrate. The ★review-first items (relevancy → light-as-information, pocket streaming) are quarantined behind Lantern_World_Model_Spike and do not block the gym.
Related
- DR-048_Lantern_Adoption_Full_Pivot — the adoption this delivers 0.2 for
- Roadmap_Lantern_Slice — the phase roadmap each verdict feeds
- Lantern_World_Model_Spike — owns the REWORK of relevancy/lifecycle/save (★review-first)
- Systems_Index — the per-system design docs being inventoried
- Synty_Asset_Inventory — the placeholder quarry