- C++ 71.3%
- C 20.7%
- Rust 6.2%
- Python 1.5%
- PowerShell 0.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .github/workflows | ||
| crates | ||
| DllV1@586abeb15c | ||
| DllV2 | ||
| docs | ||
| game@2b17f178a4 | ||
| ida-calls-finder | ||
| .dockerignore | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| Cargo.lock | ||
| Cargo.toml | ||
| config.example.toml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| LICENSE | ||
| play.bat | ||
| play.ps1 | ||
| README.md | ||
| run.bat | ||
| run.sh | ||
| rustfmt.toml | ||
| start.sh | ||
| start_docker.bat | ||
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. Скрипт сам:
- найдёт игру (Steam, папка
bin\win64рядом или окно выбораCrossout.exe) и запомнит путь; - создаст/обновит
Crossout_PRIVATE.exeи скопируетlibwaveneko.dll(после обновления игры — тоже); - пропишет в
cfg.jsonадрес сервера иprotoKey, не трогая остальные настройки; - при первом запуске спросит логин и пароль и создаст аккаунт;
- запустит сервер, дождётся его готовности и запустит игру с
-circuit local.
В игре останется выбрать сервер Creative и войти. play.bat -Reset — забыть путь к игре и аккаунт.
DLL сама берёт protoKey у сервера (/launcher/protokey), поэтому для подключения к чужому серверу
достаточно указать его адрес в hostAddress в cfg.json.
Быстрый старт (Docker, «в один клик»)
- Склонируйте репозиторий вместе с gamedata:
(Папкаgit clone --recursive https://github.com/nekotonix/OpenCrossoutProtocol.gitgame/автоматически заполнится gamedata и strings через git submodule). - Запустите
start_docker.bat(Windows) или./start.sh(Linux/macOS). - Создайте аккаунт:
docker compose exec xo xo-server cmd user create имя пароль 99999.
Сервер слушает 9001 (HTTP), 9013 (ангар), 9014 (чат). Для игры по сети укажите свой IP/домен
в PUBLIC_HOST в файле .env.
Быстрый старт без Docker (тоже в один клик)
- Склонируйте репозиторий с
--recursive(или скрипт сам подтянет сабмодульgame/при наличии git). - Запустите
run.bat(Windows) или./run.sh(Linux/macOS).
Скрипт возьмёт готовый xo-server из релизного архива, а в копии исходников сам соберёт его
через cargo (нужен Rust). При первом запуске спросит логин и пароль администратора и откроет
консоль сервера.
Документация
- Установка и запуск — Docker, без Docker, PostgreSQL, порты, бэкапы.
- Конфигурация — все параметры
config.tomlи переменные окружения. - Подключение клиента — ключ сервера, лаунчер, адреса.
- Клиентский мод DllV2 — установка в игру, прокси libcurl без инжектора, моды, горячие клавиши.
- Консоль, команды и права — управление аккаунтами, ключами, игроками; чат-команды.
- HTTP API — все эндпоинты лаунчера и игровой сессии.
- Архитектура — как устроен сервер и где что лежит.
- Расширение сервера — добавление RPC-методов, полей, команд, GameData.
- Протокол OpenCrossoutProtocol — формат кадров, криптография, сериализация.
- Моды и синхронизация gamedata — git + вебхук.
- Решение проблем — диагностика,
xo-probe.
Структура репозитория
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.