Modern open-source C# .NET 10 Asheron's Call client. Faithful port of retail client behaviour to Silk.NET with a plugin API.
Adds IAnimationHookSink + AnimationHookRouter for fan-out of animation hooks to downstream subsystems (audio, particles, combat, renderer mutators). GameWindow.TickAnimations now drains ConsumePendingHooks every tick and broadcasts each hook via the router with the entity's world position pre-computed. The router is a composite sink: register N sinks once at startup, each sees every hook. Registration is idempotent, unregister works, and a throwing sink no longer poisons dispatch (each OnHook call is wrapped in try/catch so one bad subsystem can't halt the whole animation tick). A NullAnimationHookSink is provided for headless tests / offline mode. 6 router tests verify: single/multi sink fan-out, idempotent register, unregister, throwing-sink isolation, null-sink no-op. Total: 376 Core tests + 109 Core.Net = 485 (up from 479). This closes Phase E.1 plumbing; E.2 (audio) and E.3 (particles) will each register a concrete sink that translates their hook types into real-world effects. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| docs | ||
| memory | ||
| src | ||
| tests | ||
| tools | ||
| .gitignore | ||
| AcDream.slnx | ||
| CLAUDE.md | ||
| README.md | ||
acdream
Experimental modern open-source Asheron's Call client in C# / .NET 10.
Status: pre-alpha, not playable. Phase 0 only — dat file asset inventory.
Stack: .NET 10, Chorizite.DatReaderWriter for dat parsing. Silk.NET + Avalonia planned for rendering/UI (not yet wired up).
Requires: A retail Asheron's Call install (Turbine/Microsoft property — supply your own). Set ACDREAM_DAT_DIR environment variable to the directory containing client_portal.dat, client_cell_1.dat, client_highres.dat, and client_local_English.dat, or pass it as the first CLI argument.
Layout
src/AcDream.Cli/— console app that dumps asset counts from a dat directoryreferences/— local read-only reference material (ACE, ACViewer, WorldBuilder, DatReaderWriter, holtburger, retail AC install). Gitignored.
Run
dotnet run --project src/AcDream.Cli -- "C:\path\to\Asheron's Call"
Or set ACDREAM_DAT_DIR and run without args.