Modern open-source C# .NET 10 Asheron's Call client. Faithful port of retail client behaviour to Silk.NET with a plugin API.
Find a file
Erik e4a5b8a51a fix(app): scale order for live entities + FlyCamera speed tune (Phase 5c-fix)
User-reported visuals after Phase 5c ObjScale landed:
  - Nullified Statue is bigger but "distorted" and half-sunken into the
    foundry
  - WASD/Space/Ctrl camera speed too fast

Fixes:

1. Scale multiplication order. Phase 5c used `scaleMat * PartTransform`,
   which in C# row-vector Matrix4x4 semantics means "scale first (in
   mesh-local space), then apply PartTransform." For multi-part meshes
   where each part has an attachment translation, this scales the mesh
   but leaves the attachment offset un-scaled — so child parts drift
   relative to each other and the base anchor ends up below the ground.
   Offline scenery hydration has always used the opposite order:
   `PartTransform * scaleMat`, meaning "transform first, then scale the
   resulting position." Matching that order fixes both distortion and
   sinking in one change, and makes live entities consistent with
   scenery's proven path.

2. FlyCamera.MoveSpeed 100 → 35. 100 world units/sec is ~half a landblock
   per second at AC scale — fine for terrain-scouting but too aggressive
   for inspecting specific entities like the foundry statue. 35 is a
   little faster than walk pace and feels right for visual iteration.
2026-04-11 18:06:52 +02:00
docs/plans docs(plan): Phase 3c terrain blending plan 2026-04-10 23:43:04 +02:00
src fix(app): scale order for live entities + FlyCamera speed tune (Phase 5c-fix) 2026-04-11 18:06:52 +02:00
tests feat(net): CreateObject body parser — GUID + Position + SetupId extracted (Phase 4.7d) 2026-04-11 15:18:54 +02:00
.gitignore chore: phase 0 — skeleton + dat asset inventory 2026-04-10 09:02:56 +02:00
AcDream.slnx feat(net): AcDream.Core.Net scaffold + ISAAC keystream (Phase 4.1) 2026-04-11 14:14:28 +02:00
CLAUDE.md feat(net+app): SubPalette overlays applied to palette-indexed textures (Phase 5b) 2026-04-11 16:30:08 +02:00
README.md chore: phase 0 — skeleton + dat asset inventory 2026-04-10 09:02:56 +02:00

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 directory
  • references/ — 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.