Modern open-source C# .NET 10 Asheron's Call client. Faithful port of retail client behaviour to Silk.NET with a plugin API.
PlayerTeleport (0xF751) is a standalone GameMessage (u16 sequence, align-4). When received, WorldSession fires TeleportStarted(uint sequence). GameWindow subscribes: OnTeleportStarted sets PlayerMovementController.State = PortalSpace, freezing all WASD/physics input. OnLivePositionUpdated detects arrival (different landblock or >100 unit jump on our character guid), recenters the streaming origin, resolves physics for ground Z, snaps the player entity + controller, returns State to InWorld, and sends GameActionLoginComplete directly (matching holtburger's PlayerTeleport handler: send_login_complete on every portal transition). PlayerMovementController gains PlayerState enum + early-return guard: if State == PortalSpace, Update() returns a zero-movement result immediately so no MoveToState / AutonomousPosition messages are emitted during transit. WorldSession gains ResetLoginComplete() for callers that need to re-arm the latch (documented; not called by the teleport path since we send LoginComplete directly rather than through the PlayerCreate latch). Opcode source: holtburger/crates/holtburger-protocol/src/opcodes.rs:84 Wire layout: holtburger/crates/.../movement/messages/teleport.rs Build: 0 errors. Tests: 283 passed, 0 failed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| docs | ||
| src | ||
| tests | ||
| .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.