Versions: client, protocol, rules, server, database
"Version" means at least four different things in DAoC emulation, and they move independently. This page is what we know so far and where each fact comes from. We update it as we learn more.
| What | Decided by | What we use |
|---|---|---|
| Client / protocol version | the game.dll the player runs |
1.127 (1.127e) |
| Rules / content era | server code and database content | 1.65 |
| Server software | the emulator's release | OpenDAoC 2026.09.36 |
| Database | the emulator's data repository | whatever ships in that release (no version number) |
Client and protocol version
The protocol version is the client version. The server has no separate protocol number.
- The client announces it in its first packet. A 1.127e client sends client type, then
1, 1, 27, the revision lettere, and a two-byte build number. The server answers with "1.127". (Source: OpenDAoCGameClient.CheckVersion; a recorded 1.127e session.) - The server needs an exact match. OpenDAoC has one packet-writer class per client version, 62 in all: 1.68 to 1.99, then 1.100 to 1.129. An unknown version is disconnected.
- Each version only adds its differences. Every class inherits from the previous version's and overrides what changed. 1.129's class is empty: the server treats 1.129 exactly like 1.128.
- The revision letter doesn't change behavior. The server stores it, and some older reply formats (1.124, 1.125) include it, but no packet format is chosen by it. The 1.127 reply is just "1.127".
- The numbering wrapped. Older clients sent the version as three digits, so 1.99 was followed
by
2, 0, 0, which the server reads as 1.100. The first packet itself changed format after 1.115c.
Changes that matter for a client we're writing today:
| From | Change |
|---|---|
| 1.115 | New first-packet layout |
| 1.124 | Positions become 32-bit floats in region-wide coordinates (were 16-bit, zone-local) |
| 1.125 | Login strings get 4-byte length prefixes |
| 1.126 | Login packet is just username and password; new character-list packet |
| 1.127 | What OpenDAoC's documentation recommends players run |
We implement exactly one protocol version: 1.127. It's what OpenDAoC recommends and what the recorded session we test against uses. We haven't found out why the community settled on 1.127 specifically.
Rules and content era
This is the game as it was at a given Mythic patch: classes, spells, zones, items, monsters. It lives in the server's code and database, not in the client.
- OpenDAoC's database describes itself as aiming at 1.65: the October 2003 patch, the last before Trials of Atlantis (1.66 onward). Many freeshards treat 1.65 as "classic". Others target different patches (you'll hear 1.58 or 1.55); we haven't researched those.
- The oldest client OpenDAoC accepts is 1.68, so a "1.65 server" can't talk to an actual 1.65-era client. Freeshards pair a modern client with old rules. The client has art and zones for later content; the server never uses them.
Server software
OpenDAoC tags releases by date: YEAR.MONTH.BUILD, e.g. 2026.09.36 (commit f0aaa1e). These
numbers are unrelated to DAoC patch numbers. One server release speaks all 62 client versions
above. OpenDAoC is a fork of Dawn of Light (DOLSharp),
which has its own history and supported versions.
Database
The game data lives in OpenDAoC-Database, which has no version numbers. OpenDAoC's Docker build copies the database repository's latest commit at the moment the image is built. So the only thing that pins the data is the exact server image: the same release tag rebuilt later could ship different data. We pin the image by its digest.
Other projects, by client version
| Project | Client version |
|---|---|
| OpenDAoC-ClientSimulator | 1.124 |
| OnlyAModel | 1.125 |
| PacketLogConverter | decoders up to 1.126 |
| RustDAoC | 1.127e |
| Uthgard's open-sourced encryption | 1.110 |
When reading any of these, check its version first. Several packets we care about changed between 1.124 and 1.127.
Open questions
- Why 1.127 became the standard client for freeshards.
- Whether 1.128 and 1.129 clients are in use anywhere, and how they differ on the client side.
- Which patch dates and era boundaries hold up against primary sources. The 1.65 date above comes from community history, not from Mythic's patch notes.