Merge branch 'claude/quirky-jepsen-fd60f1' — N.4-N.10 strategy revision

This commit is contained in:
Erik 2026-05-08 12:32:19 +02:00
commit 0fb93171e4

View file

@ -1,6 +1,6 @@
# acdream — strategic roadmap # acdream — strategic roadmap
**Status:** Living document. Updated 2026-05-08 for Phase N.3 (texture decode via WB TextureHelpers) shipping. **Status:** Living document. Updated 2026-05-08 for Phase N.3 shipping + N.4-N.9 strategy revision (rendering rebuild on shared WB infrastructure rather than independent substitutions).
**Purpose:** One source of truth for where the project is and where it's going. Every observed defect or missing feature has a named phase that owns it; when something looks wrong in-game, look here to find the phase that'll address it. Implementation details live in per-phase specs under `docs/superpowers/specs/`, not in this file. **Purpose:** One source of truth for where the project is and where it's going. Every observed defect or missing feature has a named phase that owns it; when something looks wrong in-game, look here to find the phase that'll address it. Implementation details live in per-phase specs under `docs/superpowers/specs/`, not in this file.
--- ---
@ -604,41 +604,57 @@ for our deletions/additions; merge upstream `master` periodically.
byte-identical equivalence per format** before substitution; updated byte-identical equivalence per format** before substitution; updated
`SurfaceDecoderTests` to match the new A8 split semantics. Visual `SurfaceDecoderTests` to match the new A8 split semantics. Visual
verification at Holtburg passed 2026-05-08 — no texture regressions. verification at Holtburg passed 2026-05-08 — no texture regressions.
- **N.4 — Object meshing.** Replace `SetupMesh.cs` + `GfxObjMesh.cs` - **N.4 — Rendering pipeline foundation.** **Rebranded from "object
with calls to WB's `ObjectMeshManager`. Character-appearance meshing" 2026-05-08 after brainstorm.** WB's `ObjectMeshManager` is
behaviors (CreaturePalette / GfxObjRemapping / HiddenParts) remain not a static helper — it's a 2070-line stateful asset pipeline that
ours — ACME is the secondary oracle. **Realistic estimate: 1.5-2 owns GPU resources (VAO/VBO/IBO), an LRU cache + memory budget,
weeks** (was 1) — character appearance edge cases like N.1's background staging, a shared texture atlas, and a bindless rendering
rotation bug will surface. path. Adopting it wholesale is the foundation that N.5 + N.6 + N.7
- **N.5 — Terrain rendering.** Replace `TerrainChunkRenderer` + build on. Concretely: (1) integrate `ObjectMeshManager` +
`TerrainAtlas` + `TerrainBlending` with WB's `TerrainRenderManager` + `TextureAtlasManager` as the shared infrastructure; (2) build a
`LandSurfaceManager` + `TerrainGeometryGenerator`. **Realistic per-instance customization layer that threads `CreaturePalette` /
estimate: 3-4 weeks** (was 2) — largest single phase, GPU-buffer `GfxObjRemapping` / `HiddenParts` / `TextureChanges` / `SubPalettes` /
ownership shifts, integration with our streaming loader is `AnimPartChange` through WB's atlas keys; (3) extend WB's
non-trivial. `MeshBatchData` to carry our surface metadata (`Translucency` /
- **N.6 — Static objects rendering.** Replace `StaticMeshRenderer` + `Luminosity` / `Diffuse` / `SurfOpacity` / `NeedsUvRepeat` /
`InstancedMeshRenderer` with WB's `StaticObjectRenderManager`. `DisableFog`) — likely a fork patch on the `acdream` branch; (4)
**Realistic estimate: 2-3 weeks** (was 2) — interacts with N.4 decide animation cache strategy (per-frame transform via uniform/SSBO
output. vs. cache invalidation); (5) adapter from our streaming loader's
Setup/Static spawn events to WB's `IncrementRefCount` lifecycle.
**Estimate: 3-4 weeks.** No visible change yet — visual verification =
"world looks identical to before." Foundation enables the next phases.
- **N.5 — Terrain rendering.** Wire WB's `TerrainRenderManager` +
`LandSurfaceManager` + `TerrainGeometryGenerator` onto the foundation
N.4 builds. Closes N.2's deferred terrain math substitution: visual
mesh and physics both switch to WB's `CalculateSplitDirection` +
`GetHeight` + `GetNormal` in lockstep, resolving ISSUE #51. **Estimate:
2-3 weeks** (was 3-4 — atlas + GPU pipeline already in place from N.4).
- **N.6 — Static objects rendering.** Wire WB's
`StaticObjectRenderManager` onto N.4's foundation; replace our
`StaticMeshRenderer` + `InstancedMeshRenderer`. Mostly draw
orchestration at this point — most of the substance landed in N.4.
**Estimate: 1-2 weeks** (was 2-3).
- **N.7 — EnvCells / dungeons.** Replace EnvCell rendering with WB's - **N.7 — EnvCells / dungeons.** Replace EnvCell rendering with WB's
`EnvCellRenderManager` + `PortalRenderManager`. **Realistic `EnvCellRenderManager` + `PortalRenderManager` on top of N.4's
estimate: 2-3 weeks** (was 2). foundation. **Estimate: 1-2 weeks** (was 2-3 — naturally smaller now
that infrastructure is shared).
- **N.8 — Sky + particles.** Replace sky rendering + particle pipeline - **N.8 — Sky + particles.** Replace sky rendering + particle pipeline
(#36 / C.1 work) with WB's `SkyboxRenderManager` + (#36 / C.1 work) with WB's `SkyboxRenderManager` +
`ParticleEmitterRenderer`. **Realistic estimate: 1.5-2 weeks** `ParticleEmitterRenderer`. **Estimate: ~1 week** (was 1.5-2 — C.1
(was 1) — visual continuity matters; we just shipped C.1 and that already shipped most of this; N.8 is glue + sampler-object reuse).
work flows through here.
- **N.9 — Visibility / culling.** Replace `CellVisibility` + - **N.9 — Visibility / culling.** Replace `CellVisibility` +
`FrustumCuller` with WB's `VisibilityManager`. **Realistic `FrustumCuller` with WB's `VisibilityManager`. **Estimate: ~1 week**
estimate: 1 week** (was 3-5 days) — affects perf and what gets (was 3-5 days, slight bump for streaming-loader interaction).
drawn.
- **N.10 — GL infrastructure consolidation (optional).** Replace our - **N.10 — GL infrastructure consolidation (optional).** Replace our
`Shader` / `TextureCache` / `SamplerCache` plumbing with WB's `Shader` / `TextureCache` / `SamplerCache` plumbing with WB's
`ManagedGL*` wrappers + `OpenGLGraphicsDevice`. ~1 week. `ManagedGL*` wrappers + `OpenGLGraphicsDevice`. **Largely subsumed by
N.4** — `OpenGLGraphicsDevice` arrives as the host of `ObjectMeshManager`
and atlas. May not need a dedicated phase; revisit after N.6.
**Estimated calendar:** **3-4 months / 10-12 engineering weeks for **Estimated calendar:** **2.5-3 months / 9-13 engineering weeks for
N.2-N.9 (skipping N.10).** (Was 2-3 months / 6-8 weeks — revised N.4-N.9 (N.10 likely subsumed; N.2 folded into N.5; N.3 shipped).**
upward after N.1 landed; realistic per-phase numbers above.) Revised 2026-05-08 after recognizing N.4-N.6 are one rendering rebuild
on shared infrastructure rather than three independent substitutions.
**Each sub-phase:** **Each sub-phase:**
- Ships behind `ACDREAM_USE_WB_<NAME>=1` flag. - Ships behind `ACDREAM_USE_WB_<NAME>=1` flag.