Skip to content

About

Official protocol extensions and the eolib-ext tool for the Endless Online library ecosystem.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

19 Commits

Folders and files

Repository files navigation

eo-protocol-extensions

Validate Extensions

Official protocol extensions for the Endless Online library ecosystem.


Official extensions

Name Description
deep The "Deep" protocol extensions created by Vult-r. Adds and extends packets for features of the 0.3.x client version

Forest Rift extensions

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

What are protocol extensions?

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.


Using extensions with eo-proto-merge

Install eo-proto-merge:

pip install git+https://github.com/sorokya/eo-proto-merge.git

Create 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-protocol

This 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.


How to host your own extension

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.


Contributing

Pull requests welcome for:

  • New official extensions (as top-level directories in this repo)
  • Documentation improvements

See EXTENSIONS.md for extension submission guidelines.

License

MIT

About

Official protocol extensions and the eolib-ext tool for the Endless Online library ecosystem.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages