Official protocol extensions for the Endless Online library ecosystem.
| Name | Description |
|---|---|
deep |
The "Deep" protocol extensions created by Vult-r. Adds and extends packets for features of the 0.3.x client version |
| Name | Description |
|---|---|
environment |
The server's time of day, the weather, the request board, where players take on NPCs' requests, and marks over quest NPCs with a quest to take. Made for Forest Rift's reoserv server and eoweb web client |
actors |
NPCs the server directs: residents who travel between maps, and later cutscenes. Made for Forest Rift's reoserv server and eoweb web client |
scenes |
Cutscenes and the stories that string them together: the file format (schema, examples, a checker) and the Scene packets (244) that play them. RUNTIME.md says how servers and clients run them. Made for Forest Rift's reoserv server and eoweb web client |
The eo-protocol repository defines the binary protocol used by Endless Online servers and clients. The official protocol only covers the vanilla 0.0.28 version of the game.
Protocol extensions are a standard, structured way for custom server projects to add new packets, modify existing enums, or extend structs — without permanently forking the base protocol.
Each extension is a directory of protocol.xml files. The
eo-proto-merge CLI tool merges them into a complete
copy of the eo-protocol XML, ready to pass to an eolib code generator.
Install eo-proto-merge:
pip install git+https://github.com/sorokya/eo-proto-merge.gitCreate an extensions.xml in your project:
<extensions>
<!-- Extension from a git repository (files at the repo root) -->
<extension type="git" name="deep"
repo="https://github.com/sorokya/eo-protocol-extensions"/>
<!-- Local file-based extension -->
<extension type="file" name="local-test" path="../my-extension"/>
</extensions>Then apply:
eo-proto-merge apply --config=extensions.xml --output=./eo-protocolThis writes a merged eo-protocol/ directory you can point your eolib code generator at.
See the eo-proto-merge README for the full CLI reference.
Each git extension repository contains one or more named extension subdirectories at its
root. The name attribute in extensions.xml selects which subdirectory to use:
your-extension-repo/
my-feature/
protocol.xml ← top-level definitions
net/
client/protocol.xml ← client-to-server packets
server/protocol.xml ← server-to-client packets
pub/
protocol.xml ← pub file type definitions
Reference it in your extensions.xml:
<extension type="git" name="my-feature"
repo="https://github.com/your-org/your-extension-repo"/>Pin to a release tag or commit with ref:
<extension type="git" name="my-feature" ref="v1.0.0"
repo="https://github.com/your-org/your-extension-repo"/>See EXTENSIONS.md for the full extension authoring guide,
including how to submit extensions to this registry.
Pull requests welcome for:
- New official extensions (as top-level directories in this repo)
- Documentation improvements
See EXTENSIONS.md for extension submission guidelines.
MIT