Notum
A native Linux client for Anarchy Online, in Rust on Bevy, reading the game's own data.
Pre-alpha, in development
Description
Anarchy Online shipped in 2001 on a Direct3D 7 fixed-function engine, and it now runs only on Windows or through compatibility layers. Notum reads the same data files the original client reads, from the player's own install, and renders them itself so the game can run natively on Linux. It is a client only, with no server component and no wrapper around the original executable. Nothing plays yet: the current build browses every asset, flies through a real playfield and walks it with collision, offline.
Block diagram
- Game install
- ao-* readers
- rdb:// assets
- AoMaterial
- Bevy renderer
Decisions
Port the Direct3D 7 fixed-function pipeline as a Bevy material
The original client has no programmable shaders. Its look comes from multitexture stages, render states and fixed-function lighting, and each mesh record carries a D3DMATERIAL7 block. AoMaterial carries that block, the alpha test, blend and cull modes and two texture stages into a WGSL shader that runs the stage cascade, checked against DXVK's fixed-function shaders.
Read mesh records by their own schema
Mesh records carry a dictionary of class and field names ahead of their data. The reader walks every object by field name instead of hard-coding offsets per class, and a roundtrip command parses each record, writes it back and compares. Mesh meaning sits on top in a separate crate, which exports glTF that Blender opens. The cost is a generic object model between the bytes and the typed mesh.
The repository holds only original work
No game assets or extracted data enter the tree. Format findings are written up as prose, each with a citation to a record type or byte offset, and guesses are labelled as guesses. Tests run on synthetic fixtures made by the project's own tooling. The cost is that visual checks need a local install and a person comparing, since game screenshots cannot be committed as a reference set.
Errata
- Nothing plays yet. There is no network code; connecting to a server and entering the world are later phases.
- The walker's run speed, jump height and slope limit are chosen values, not measured from the original client, and water is not handled yet.
Revision history
| Version | Changes |
|---|---|
| 0.13.0 | Character controller: a kinematic walker on the colliders, a first-person view, and a headless walk gate. |
| 0.12.0 | Collision: avian3d colliders on the terrain and placed objects, checked by ray casts at every exit and spawn point. |
| 0.11.0 | A real playfield on screen, drawn through the fixed-function pipeline as a Bevy material. |
| 0.10.0 | Asset browser: every record in the resource database in a panel, click to view. |
Not affiliated with or endorsed by Funcom. Anarchy Online and its assets belong to their owners. No game data is shown on this page.