Открытый проект полной реализации сервера XO на Rust. Сам сервер + DLL + Docs
  • C++ 71.3%
  • C 20.7%
  • Rust 6.2%
  • Python 1.5%
  • PowerShell 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
nekotonix e3d27169fc
Some checks failed
ci / test (push) Has been cancelled
DllV1 relink
2026-10-24 18:47:28 +03:00
.github/workflows Created OpenCrossoutServer collection 2026-09-29 03:07:31 +03:00
crates Fix Replica fields 2026-09-29 13:42:11 +03:00
DllV1@586abeb15c DllV1 relink 2026-10-24 18:47:28 +03:00
DllV2 fix dllv2 X bind 2026-10-24 18:44:34 +03:00
docs One-click run 2026-09-29 12:14:55 +03:00
game@2b17f178a4 Recursive fix 2026-09-29 03:20:06 +03:00
ida-calls-finder Created OpenCrossoutServer collection 2026-09-29 03:07:31 +03:00
.dockerignore Created OpenCrossoutServer collection 2026-09-29 03:07:31 +03:00
.env.example Created OpenCrossoutServer collection 2026-09-29 03:07:31 +03:00
.gitattributes Created OpenCrossoutServer collection 2026-09-29 03:07:31 +03:00
.gitignore Fix breakpoints dllv2 2026-10-24 17:43:52 +03:00
.gitmodules Dll v1 2026-09-29 11:06:53 +03:00
Cargo.lock Created OpenCrossoutServer collection 2026-09-29 03:07:31 +03:00
Cargo.toml Created OpenCrossoutServer collection 2026-09-29 03:07:31 +03:00
config.example.toml Created OpenCrossoutServer collection 2026-09-29 03:07:31 +03:00
docker-compose.yml Created OpenCrossoutServer collection 2026-09-29 03:07:31 +03:00
Dockerfile Created OpenCrossoutServer collection 2026-09-29 03:07:31 +03:00
LICENSE Created OpenCrossoutServer collection 2026-09-29 03:07:31 +03:00
play.bat One-click run 2026-09-29 12:14:55 +03:00
play.ps1 Fix breakpoints dllv2 2026-10-24 17:43:52 +03:00
README.md One-click run 2026-09-29 12:14:55 +03:00
run.bat Created OpenCrossoutServer collection 2026-09-29 03:07:31 +03:00
run.sh Created OpenCrossoutServer collection 2026-09-29 03:07:31 +03:00
rustfmt.toml Created OpenCrossoutServer collection 2026-09-29 03:07:31 +03:00
start.sh Created OpenCrossoutServer collection 2026-09-29 03:07:31 +03:00
start_docker.bat Created OpenCrossoutServer collection 2026-09-29 03:07:31 +03:00

OpenCrossoutServer

Оригинальный проект был написан на c#, но для более лёгкого старта и меньших путаниц я попросил claude полностью переписать его на Rust. DLL тоже.

  • DllV2 - Dll переписанная на Rust. В оригинальном live клиенте заменяете libcurl библиотеку на название этой и кладёте рядом с .exec
  • run.bat - Запустит сервер на Rust. Рекомендую если хотите собрать из исходников
  • ida-calls-finder - Плагин для IDA PRO (9.0.24), для нахождения запросов SO и RPCP

Возможности

  • Логин через лаунчер, регистрация по ключам (или открытая), список серверов, новости, раздача обновлений клиента.
  • Ангар: профиль, креативный инвентарь (все предметы игры), косметика, ангары, сундуки.
  • Чертежи: гараж, тест-драйв, выставка (публикация, поиск с фильтрами, лайки, теги, скачивание).
  • Друзья, поиск игроков, почта и «поделиться чертежом».
  • Чат: каналы, личные сообщения, команды (.help, .give, .srvup, .maplist, ...).
  • Game data из файлов игры (Lua + XML), горячая перезагрузка, моды и синхронизация через git-вебхук.
  • Лёгкое расширение: новый RPC-метод, реплицируемое поле, чат- или консольная команда — одна функция и одна строка регистрации (docs/extending.md).

Играть у себя: play.bat (самый простой способ)

Положите рядом play.bat + play.ps1, xo-server.exe (рядом, в server\ или в bin\server\) и libwaveneko.dll, затем дважды кликните play.bat. Скрипт сам:

  1. найдёт игру (Steam, папка bin\win64 рядом или окно выбора Crossout.exe) и запомнит путь;
  2. создаст/обновит Crossout_PRIVATE.exe и скопирует libwaveneko.dll (после обновления игры — тоже);
  3. пропишет в cfg.json адрес сервера и protoKey, не трогая остальные настройки;
  4. при первом запуске спросит логин и пароль и создаст аккаунт;
  5. запустит сервер, дождётся его готовности и запустит игру с -circuit local.

В игре останется выбрать сервер Creative и войти. play.bat -Reset — забыть путь к игре и аккаунт.

DLL сама берёт protoKey у сервера (/launcher/protokey), поэтому для подключения к чужому серверу достаточно указать его адрес в hostAddress в cfg.json.

Быстрый старт (Docker, «в один клик»)

  1. Склонируйте репозиторий вместе с gamedata:
    git clone --recursive https://github.com/nekotonix/OpenCrossoutProtocol.git
    
    (Папка game/ автоматически заполнится gamedata и strings через git submodule).
  2. Запустите start_docker.bat (Windows) или ./start.sh (Linux/macOS).
  3. Создайте аккаунт: docker compose exec xo xo-server cmd user create имя пароль 99999.

Сервер слушает 9001 (HTTP), 9013 (ангар), 9014 (чат). Для игры по сети укажите свой IP/домен в PUBLIC_HOST в файле .env.

Быстрый старт без Docker (тоже в один клик)

  1. Склонируйте репозиторий с --recursive (или скрипт сам подтянет сабмодуль game/ при наличии git).
  2. Запустите run.bat (Windows) или ./run.sh (Linux/macOS).

Скрипт возьмёт готовый xo-server из релизного архива, а в копии исходников сам соберёт его через cargo (нужен Rust). При первом запуске спросит логин и пароль администратора и откроет консоль сервера.

Документация

Структура репозитория

crates/ocp          OpenCrossoutProtocol: транспорт, крипто, сериализация (библиотека, MIT)
crates/ocp-derive   #[derive(Encode, Decode)] для структур сообщений
crates/server       xo-server: auth + cabin + chat + консоль
crates/xo-probe     «фальшивый клиент» для проверки сервера от логина до чата
docs/               документация

Лицензия

crates/ocp и crates/ocp-derive — MIT (как исходный OpenCrossoutProtocol). Сервер (crates/server, crates/xo-probe) — AGPL-3.0 (как CreativeCabin).

Проект создан в образовательных целях. Для подключения нужен клиент с заменёнными ключами, либо подключенная Dll.