docs: roadmap N.0 shipped + realistic N.2-N.9 estimates + N.3 handoff
Roadmap updates after Phase N.1 ship:
- Marks N.0 (submodule + project refs setup) as ✓ SHIPPED with the
c8782c9 commit reference
- Updates N.2-N.9 effort estimates with realistic post-N.1 numbers
(originals were 1-2 days / 1 week / 2 weeks; realistic numbers
factor in conformance-test discovery, ACME-vs-Chorizite delta
hunts, and the visual-verification-then-revert cycle that ate
most of N.1's calendar time)
- Adds a "Lessons from N.1" subsection so future N phases benefit
from the rotation-bug-conformance-test pattern, the ACME divergence
insight, and the "whackamole = stop" rule
- Updates total calendar estimate to 3-4 months / 10-12 engineering
weeks for N.2-N.9 (was 2-3 months / 6-8 weeks)
New handoff doc at docs/research/2026-05-08-phase-n3-handoff.md
captures everything a fresh agent picking up N.3 (texture decoding)
needs: phase context, what to read first, suggested task decomposition,
watchouts (especially the ACME-divergence and conformance-test
lessons), and where to start.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
ad8b931be7
commit
6010827b21
2 changed files with 192 additions and 11 deletions
|
|
@ -530,9 +530,39 @@ submodule replacing `references/WorldBuilder/` snapshot, project
|
|||
references in our solution. Long-lived `acdream` branch in the fork
|
||||
for our deletions/additions; merge upstream `master` periodically.
|
||||
|
||||
**Lessons from N.1 (apply to N.2-N.10):**
|
||||
|
||||
1. **Per-helper conformance tests work.** The N.1 conformance test caught a
|
||||
~180° rotation bug in our retail port that had been silently wrong
|
||||
forever. Write the conformance test BEFORE the substitution in each
|
||||
sub-phase.
|
||||
|
||||
2. **ACME ≠ Chorizite/WorldBuilder.** ACME is a downstream fork of WB with
|
||||
additional retail-faithful filters that upstream WB (our submodule)
|
||||
doesn't have. When a visual discrepancy appears, check ACME's source
|
||||
(`references/WorldBuilder-ACME-Edition/`) for delta filters BEFORE
|
||||
investigating retail decomp directly. ACME's deltas tend to come as
|
||||
coherent units — porting one filter without its companions can
|
||||
over-suppress.
|
||||
|
||||
3. **"Whackamole" is the warning sign.** If a phase generates 3+ visual
|
||||
regressions on default-on, stop, accept the cosmetic deltas as
|
||||
ISSUES.md entries, ship the migration. Bugs we leave behind are
|
||||
debuggable; bugs we never ship are forgotten.
|
||||
|
||||
4. **Subagent-driven execution holds up at this scope.** Fresh subagent
|
||||
per task with the full task text inline keeps quality high without
|
||||
polluting the controller's context. Each task should be self-contained
|
||||
enough that a subagent without session history can complete it.
|
||||
|
||||
**Sub-phases (strangler-fig with feature flags):**
|
||||
|
||||
- **N.0 — Setup.** Submodule + project references + build green. ~1-2 hrs.
|
||||
- **✓ SHIPPED — N.0 — Setup.** Shipped 2026-05-08 (commit `c8782c9`).
|
||||
WorldBuilder fork at `github.com/eriknihlen/WorldBuilder.git` registered
|
||||
as git submodule at `references/WorldBuilder/` tracking the `acdream`
|
||||
branch. `AcDream.Core.csproj` references `WorldBuilder.Shared` +
|
||||
`Chorizite.OpenGLSDLBackend`. Build green, all 28 scenery/terrain tests
|
||||
passing.
|
||||
- **✓ SHIPPED — N.1 — Scenery algorithm calls.** Shipped 2026-05-08.
|
||||
Replaced `IsOnRoad` / `DisplaceObject` / slope-normal calc / rotation /
|
||||
scale inside `SceneryGenerator.Generate()` with calls to WB's
|
||||
|
|
@ -545,31 +575,50 @@ for our deletions/additions; merge upstream `master` periodically.
|
|||
(road-edge tree at landblock 0xA9B1).
|
||||
- **N.2 — Terrain math helpers.** Refactor `TerrainSurface.SampleZ` /
|
||||
`SampleNormal` / `SampleSurface` to call WB's `TerrainUtils.GetHeight`
|
||||
/ `GetNormal` internally. ~1-2 days.
|
||||
- **N.3 — Texture decoding.** Replace `TextureCache` decode pipeline
|
||||
with WB's `TextureHelpers`. ~2-3 days.
|
||||
/ `GetNormal` internally. ~1-2 days. Smallest remaining N phase, low
|
||||
risk after N.1's conformance proof on GetNormal.
|
||||
- **N.3 — Texture decoding.** Replace our `TextureCache` decode
|
||||
pipeline (`src/AcDream.App/Rendering/TextureCache.cs`) with WB's
|
||||
`TextureHelpers` (INDEX16, P8, BGRA, DXT, alpha). Touches every
|
||||
texture path. **Realistic estimate: 3-5 days** (was 2-3) — the GL
|
||||
upload path needs adapting and we'll need conformance tests per
|
||||
texture format. Handoff doc:
|
||||
`docs/research/2026-05-08-phase-n3-handoff.md`.
|
||||
- **N.4 — Object meshing.** Replace `SetupMesh.cs` + `GfxObjMesh.cs`
|
||||
with calls to WB's `ObjectMeshManager`. Character-appearance
|
||||
behaviors (CreaturePalette / GfxObjRemapping / HiddenParts) remain
|
||||
ours — ACME is the secondary oracle. ~1 week.
|
||||
ours — ACME is the secondary oracle. **Realistic estimate: 1.5-2
|
||||
weeks** (was 1) — character appearance edge cases like N.1's
|
||||
rotation bug will surface.
|
||||
- **N.5 — Terrain rendering.** Replace `TerrainChunkRenderer` +
|
||||
`TerrainAtlas` + `TerrainBlending` with WB's `TerrainRenderManager` +
|
||||
`LandSurfaceManager` + `TerrainGeometryGenerator`. ~2 weeks.
|
||||
`LandSurfaceManager` + `TerrainGeometryGenerator`. **Realistic
|
||||
estimate: 3-4 weeks** (was 2) — largest single phase, GPU-buffer
|
||||
ownership shifts, integration with our streaming loader is
|
||||
non-trivial.
|
||||
- **N.6 — Static objects rendering.** Replace `StaticMeshRenderer` +
|
||||
`InstancedMeshRenderer` with WB's `StaticObjectRenderManager`.
|
||||
~2 weeks.
|
||||
**Realistic estimate: 2-3 weeks** (was 2) — interacts with N.4
|
||||
output.
|
||||
- **N.7 — EnvCells / dungeons.** Replace EnvCell rendering with WB's
|
||||
`EnvCellRenderManager` + `PortalRenderManager`. ~2 weeks.
|
||||
`EnvCellRenderManager` + `PortalRenderManager`. **Realistic
|
||||
estimate: 2-3 weeks** (was 2).
|
||||
- **N.8 — Sky + particles.** Replace sky rendering + particle pipeline
|
||||
(#36 / C.1 work) with WB's `SkyboxRenderManager` +
|
||||
`ParticleEmitterRenderer`. ~1 week.
|
||||
`ParticleEmitterRenderer`. **Realistic estimate: 1.5-2 weeks**
|
||||
(was 1) — visual continuity matters; we just shipped C.1 and that
|
||||
work flows through here.
|
||||
- **N.9 — Visibility / culling.** Replace `CellVisibility` +
|
||||
`FrustumCuller` with WB's `VisibilityManager`. ~3-5 days.
|
||||
`FrustumCuller` with WB's `VisibilityManager`. **Realistic
|
||||
estimate: 1 week** (was 3-5 days) — affects perf and what gets
|
||||
drawn.
|
||||
- **N.10 — GL infrastructure consolidation (optional).** Replace our
|
||||
`Shader` / `TextureCache` / `SamplerCache` plumbing with WB's
|
||||
`ManagedGL*` wrappers + `OpenGLGraphicsDevice`. ~1 week.
|
||||
|
||||
**Estimated calendar:** 2-3 months. Engineering effort: 6-8 weeks.
|
||||
**Estimated calendar:** **3-4 months / 10-12 engineering weeks for
|
||||
N.2-N.9 (skipping N.10).** (Was 2-3 months / 6-8 weeks — revised
|
||||
upward after N.1 landed; realistic per-phase numbers above.)
|
||||
|
||||
**Each sub-phase:**
|
||||
- Ships behind `ACDREAM_USE_WB_<NAME>=1` flag.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue