Об этом проекте
Lightyear — это сетевая библиотека для написания многопользовательских игр с серверным авторитетом на игровом движке Bevy. Она совместима с WebAssembly через WebTransport и распространяется как крейт Rust (lightyear = "0.30" для Bevy 0.19).
Начало работы: в репозитории есть примеры, руководство, воссоздающее пример simple_box, и находящаяся в разработке книга для дополнительной документации.
Структура репозитория: крейты рабочего пространства находятся в crates/, сгруппированы по роли, при этом имена каталогов опускают префикс lightyear_, а имена пакетов Cargo его сохраняют. Группы включают io (низкоуровневые соединения и бэкенды, такие как aeronet, link, udp, crossbeam, websocket, webtransport), connection (connection, raw_connection, netcode, steam), core (крейт верхнего уровня lightyear плюс core, sync, utils, frame interpolation), inputs (inputs, inputs_native, input_bei, inputs_leafwing), replication (replication, prediction, interpolation), transport (serialization, transport, message), integration (интеграции с экосистемой Bevy, такие как Avian), а также крейты platform, deterministic, tools и tests.
Возможности, описанные в README:
- Транспортно-независимый ввод-вывод: сокеты UDP, а также aeronet для поддержки WebSocket, Steam и WebTransport.
- Сериализация: postcard является сериализатором по умолчанию, с поддержкой предоставления пользовательской функции сериализации.
- Передача сообщений: каналы с различными гарантиями порядка и надёжности, а также фрагментация пакетов для сообщений размером более примерно 1200 байт.
- Обработка ввода: ввод игрока буферизуется каждый тик на клиенте, и ввод клиента для тика N обрабатывается на тике N на сервере; ввод защищён от потери пакетов путём включения последних кадров в каждый пакет. Существуют опциональные интеграции для leafwing-input-manager и bevy-enhanced-input.
- Детерминированная репликация: поддерживается, когда реплицируются только вводы и симуляция детерминирована; совместима с lockstep и prediction/rollback.
- Репликация мира: использует bevy_replicon для репликации, управления интересами, предварительного спавна и связанных функций.
- Продвинутая репликация: клиентское предсказание с откатом, интерполяция снапшотов, настраиваемая задержка ввода, управление пропускной способностью с приоритетной отправкой и компенсация задержки для взаимодействий между предсказанными и интерполированными сущностями.
- Топологии: клиент-сервер, P2P и режим host-client, где клиент выступает в роли сервера.
- Примеры: множество примеров, охватывающих возможности и интеграции с другими крейтами Bevy, такими как avian.
README также перечисляет связанные проекты, включая стартовый проект lightyear-template и игры, такие как Lumina и cycles.io, а также таблицу совместимости, сопоставляющую версии Lightyear с версиями Bevy (0.28-0.30 — Bevy 0.19, 0.26-0.27 — 0.18, 0.25 — 0.17, 0.20-0.24 — 0.16, 0.18-0.19 — 0.15, 0.16-0.17 — 0.14, 0.10-0.15 — 0.13 и 0.1-0.9 — 0.12).
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.