docs+feat: 13 retail-AC deep-dives (R1-R13) + C# port scaffolds + roadmap E-H
78,000 words of grounded, citation-backed research across 13 major AC
subsystems, produced by 13 parallel Opus-4.7 high-effort agents. Plus
compact C# port scaffolds for the top-5 systems and a phase-E-through-H
roadmap update sequencing the work.
Research (docs/research/deepdives/):
- 00-master-synthesis.md (navigation hub + dependency graph)
- r01-spell-system.md 5.4K words (fizzle sigmoid, 8 tabs, 0x004A wire)
- r02-combat-system.md 5.9K words (damage formula, crit, body table)
- r03-motion-animation.md 8.2K words (450+ commands, 27 hook types)
- r04-vfx-particles.md 5.8K words (13 ParticleType, PhysicsScript)
- r05-audio-sound.md 5.6K words (DirectSound 8, CPU falloff)
- r06-items-inventory.md 7.4K words (ItemType flags, EquipMask 31 slots)
- r07-character-creation.md 6.3K words (CharGen dat, 13 heritages)
- r08-network-protocol-atlas 9.7K words (63+149+94 opcodes mapped)
- r09-dungeon-portal-space.md 6.3K words (EnvCell, PlayerTeleport flow)
- r10-quest-dialogs.md 7.1K words (emote-script VM, 122 actions)
- r11-allegiance.md 5.4K words (tree + XP passup + 5 channels)
- r12-weather-daynight.md 4.5K words (deterministic client-side)
- r13-dynamic-lighting.md 4.9K words (8-light cap, hard Range cutoff)
Every claim cites a FUN_ address, ACE file path, DatReaderWriter type,
or holtburger/ACViewer reference. The master synthesis ties them into a
dependency graph and phase sequence.
Key architectural finding: of 94 GameEvents in the 0xF7B0 envelope,
ZERO are handled today — that's the largest network-protocol gap and
blocks F.2 (items) + F.5 (panels) + H.1 (chat).
C# scaffolds (src/AcDream.Core/):
- Items/ItemInstance.cs — ItemType/EquipMask enums, ItemInstance,
Container, PropertyBundle, BurdenMath
- Spells/SpellModel.cs — SpellDatEntry, SpellComponentEntry,
SpellCastStateMachine, ActiveBuff,
SpellMath (fizzle sigmoid + mana cost)
- Combat/CombatModel.cs — CombatMode/AttackType/DamageType/BodyPart,
DamageEvent record, CombatMath (hit-chance
sigmoids, power/accuracy mods, damage formula),
ArmorBuild
- Audio/AudioModel.cs — SoundId enum, SoundEntry, WaveData,
IAudioEngine / ISoundCache contracts,
AudioFalloff (inverse-square)
- Vfx/VfxModel.cs — 13 ParticleType integrators, EmitterDesc,
PhysicsScript + hooks, Particle struct,
ParticleEmitter, IParticleSystem contract
All Core-layer data models; platform-backed engines live in AcDream.App.
Compiles clean; 470 tests still pass.
Roadmap (docs/plans/2026-04-11-roadmap.md):
- Phase E — "Feel alive": motion-hooks + audio + VFX
- Phase F — Fight + cast + gear: GameEvent dispatch, inventory,
combat, spell, core panels
- Phase G — World systems: sky/weather, dynamic lighting, dungeons
- Phase H — Social + progression: chat, allegiance, quests, char creation
- Phase J — Long-tail (renumbered from old Phase E)
Quick-lookup table updated with 10+ new rows mapping observations to
new phase letters.
This commit is contained in:
parent
7230c1590f
commit
3f913f1999
20 changed files with 15312 additions and 17 deletions
|
|
@ -127,16 +127,66 @@ Plus polish that doesn't get its own phase number:
|
|||
|
||||
---
|
||||
|
||||
### Phase E — Long-tail
|
||||
### Phase E — "Feel alive" — motion hooks + audio + VFX
|
||||
|
||||
Unlocks the sensory layer: footsteps, swing whooshes, impact sparks,
|
||||
spell auras. All three systems share animation-hook delivery as the
|
||||
trigger source — motion hooks are the blocker.
|
||||
|
||||
Research backing: `docs/research/deepdives/00-master-synthesis.md` + R3 + R4 + R5.
|
||||
|
||||
- **E.1 — Motion-hook expansion.** Extend MotionInterpreter + AnimationSequencer to deliver all 27 AnimationHookType values (Sound=1, SoundTable=2, CreateParticle=18, AttackFrame=20, SoundTweaked=21, …) during frame advance. See `r03-motion-animation.md`.
|
||||
- **E.2 — Audio engine.** `AudioEngine` via `Silk.NET.OpenAL`, inverse-square CPU falloff, 16-voice pool. SoundTable + Wave dat decoders. Motion-hook wiring for footsteps + attacks. See `r05-audio-sound.md`.
|
||||
- **E.3 — Particle system.** `ParticleSystem` on Silk.NET GL (port WorldBuilder's `ParticleBatcher`). 13 motion-type integrators. `PhysicsScript` dispatcher tied to motion-hooks. See `r04-vfx-particles.md`.
|
||||
|
||||
**Acceptance:** walk around, footstep sounds per material; swing a weapon, hear whoosh; combat impact shows sparks + hit sound.
|
||||
|
||||
### Phase F — Fight + cast + gear
|
||||
|
||||
Core gameplay loop on top of Phase E.
|
||||
|
||||
Research: R1 + R2 + R6 + R8 + UI slices 04/05.
|
||||
|
||||
- **F.1 — GameEvent envelope dispatcher.** 94 sub-opcodes in `0xF7B0`. Zero handled today. Start with `PlayerDescription (0x0013)` + property-update events. See `r08-network-protocol-atlas.md`.
|
||||
- **F.2 — Item + inventory model.** `ItemInstance` / `Container` / `PropertyBundle`. Appraise round-trip (`0x00C8` → `0x00C9`). Burden math. See `r06-items-inventory.md` + `src/AcDream.Core/Items/`.
|
||||
- **F.3 — Combat math + damage flow.** Damage formula, per-body-part AL, crit, hit-chance sigmoid. Server broadcasts damage events; client displays + HP bar. See `r02-combat-system.md` + `src/AcDream.Core/Combat/`.
|
||||
- **F.4 — Spell cast state machine.** `SpellCastStateMachine` + active buff tracking. Buffs + recalls first, projectile spells later. Fizzle sigmoid + mana conversion. See `r01-spell-system.md` + `src/AcDream.Core/Spells/`.
|
||||
- **F.5 — Core panels.** Attributes / Skills / Paperdoll / Inventory / Spellbook — using the retail-ui framework from Phase D.2. See `05-panels.md` under retail-ui.
|
||||
|
||||
**Acceptance:** equip a weapon, swing at a monster, see damage numbers, buff yourself, recall to the lifestone.
|
||||
|
||||
### Phase G — World systems
|
||||
|
||||
Research: R9 + R12 + R13.
|
||||
|
||||
- **G.1 — Sky + weather + day-night.** Deterministic client-side from Portal Year time. Sky dome geometry + keyframe gradients + rain/snow particles. See `r12-weather-daynight.md`.
|
||||
- **G.2 — Dynamic lighting.** 8-light D3D-style fixed pipeline. Hard-cutoff at Range, no attenuation inside. Cell ambient. Shader UBO per frame. See `r13-dynamic-lighting.md`.
|
||||
- **G.3 — Dungeon streaming + portal space.** `EnvCellStreamer`, portal-visibility BFS, `PlayerTeleport (0xF751)` handling with `LoginComplete` re-send, "pink bubble" loading state. See `r09-dungeon-portal-space.md`.
|
||||
|
||||
**Acceptance:** walk outside at dusk, see the sky gradient + sun moving; enter a torch-lit dungeon via portal; leave back to daylight.
|
||||
|
||||
### Phase H — Social + progression
|
||||
|
||||
Research: R7 + R10 + R11 + UI slice 05.
|
||||
|
||||
- **H.1 — Chat window.** UI panel + all 6 wire opcodes (Channel, Tell, System, HearSpeech, HearRangedSpeech, TurbineChat).
|
||||
- **H.2 — Allegiance.** Tree model + XP pass-up math + 5 allegiance chat channels + MOTD. See `r11-allegiance.md`.
|
||||
- **H.3 — Emote scripts + quests + dialogs.** 122 EmoteType × 39 Trigger mini-VM. Contract tracker UI. NPC dialog rendered via chat with `<Tell:…>` markup. See `r10-quest-dialogs.md`.
|
||||
- **H.4 — Character creation.** `0xE000002 CharGen` dat + 13 heritages + templates + appearance picker + preview renderer. See `r07-character-creation.md`.
|
||||
|
||||
**Acceptance:** create a character from scratch, talk to an NPC, get + complete a quest, gain XP that passes up to the patron.
|
||||
|
||||
### Phase J — Long-tail (deferred / low-priority)
|
||||
|
||||
Not detailed here; each gets its own brainstorm when it becomes relevant.
|
||||
|
||||
- **Dungeon landblocks** (`0xAAAA0000` family) + teleport-on-door-click + server-side portal handling
|
||||
- **Phase 7.2 multi-floor stair walking** — cells reachable via portals the cell-walker doesn't cross
|
||||
- **Player character full rig** (held weapons, spell effects, death/revive animation)
|
||||
- **Weather + day/night cycle**
|
||||
- **Spellcasting pipeline**
|
||||
- **Group/fellowship UI**
|
||||
- Player character full rig (held weapons, spell effects, death/revive animation)
|
||||
- Group/fellowship UI
|
||||
- Trade window (multi-player confirms)
|
||||
- Salvage + tinker UI
|
||||
- House ownership + hooks
|
||||
- Society UI
|
||||
- GM visible tools (we explicitly don't build GM powers; but DEV-mode tools like teleport anywhere are useful)
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -173,16 +223,23 @@ Not detailed here; each gets its own brainstorm when it becomes relevant.
|
|||
| Holtburg sign half-buried | **5 FIXED** ✓ |
|
||||
| Can't walk past the loaded 3×3 window | **A.1 FIXED** ✓ (5×5 default, `ACDREAM_STREAM_RADIUS` to tune) |
|
||||
| Frame hitch crossing landblock boundary | **Phase A.3** (synchronous loader for now; async returns when DatCollection is thread-safe) |
|
||||
| Walking around doesn't move me on the server | **Phase B (Gameplay)** |
|
||||
| Can't talk to NPCs | **Phase B** |
|
||||
| Can't open a door | **Phase B** |
|
||||
| Portals render as a rotating black disk | **Phase C.1 (VFX)** |
|
||||
| Chimneys have no smoke | **Phase C.1** |
|
||||
| Houses have no fireplace fire | **Phase C.1** |
|
||||
| No fireplace / torch lighting | **Phase C.2** |
|
||||
| Walking around doesn't move me on the server | **Phase B.3 FIXED** ✓ |
|
||||
| Can't talk to NPCs | **Phase H.3** (emote scripts + dialogs) |
|
||||
| Can't open a door | **Phase F** (object-use action) |
|
||||
| Portals render as a rotating black disk | **Phase E.3** (particle system) |
|
||||
| Chimneys have no smoke | **Phase E.3** |
|
||||
| Houses have no fireplace fire | **Phase E.3** |
|
||||
| No fireplace / torch lighting | **Phase G.2** (dynamic lighting) |
|
||||
| Skin/hair color slightly off | **Phase C.3** |
|
||||
| No chat window | **Phase D.2** |
|
||||
| No sound | **Phase D.4** |
|
||||
| Dungeons / foundry interior missing | **Phase E** |
|
||||
| No chat window | **Phase H.1** |
|
||||
| No sound | **Phase E.2** |
|
||||
| Dungeons / foundry interior missing | **Phase G.3** |
|
||||
| Can't fight monsters | **Phase F.3** (combat math + damage) |
|
||||
| Can't cast spells | **Phase F.4** |
|
||||
| No inventory panel | **Phase F.2 + F.5** |
|
||||
| No character creation — must use ACE admin | **Phase H.4** |
|
||||
| Sky is a flat color | **Phase G.1** (weather + day-night) |
|
||||
| Can't join allegiance | **Phase H.2** |
|
||||
| No quest tracker | **Phase H.3** |
|
||||
|
||||
If you see something not on this list, add it here and assign a phase.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue