eveofdarkness.org

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 letter e, and a two-byte build number. The server answers with "1.127". (Source: OpenDAoC GameClient.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.