本页目录

Lightyear:Bevy 多人游戏网络库

lightyear · cBournhonesque/lightyear

Lightyear 是一个面向 Bevy 游戏引擎的网络库,用于开发服务器权威(server-authoritative)的多人游戏,主要使用 Rust 编写。项目通过 WebTransport 支持 wasm,可用于浏览器环境。仓库中提供示例与教程,包括通过教程复刻 simple_box...

其他 Three.js JavaScript 渲染技术 高级
★ Stars 1,221 Forks 177 License Apache-2.0 更新 2026-11-14

国内开发环境适配

Windows
未知
Linux
未知
macOS
未知
引擎 / 框架:Three.js 暂无中文教程标记 未标记站长实测
依赖通过 crates.io 获取,国内环境通常需要配置镜像源或代理;README 要求 Bevy 0.20 对应 Rust 1.97.1 或更高版本,工具链版本较新,建议提前确认本地 rustup 可升级。WebTransport/wasm 相关能力涉及证书与浏览器环境,具体配置方式 README 未展开,需以官方文档为准(待核验)。

中文项目介绍

Lightyear 是一个面向 Bevy 游戏引擎的网络库,目标是帮助开发者编写**服务器权威(server-authoritative)**的多人游戏。项目以 Rust 为主要语言,README 明确说明它通过 WebTransport 兼容 wasm,因此具备在浏览器环境中运行的能力。

从定位上看,Lightyear 并不是一个完整的游戏框架,而是专注在网络同步这一层:连接管理、序列化、消息通道、输入处理、状态复制与预测等。开发者仍然照常使用 Bevy 的 ECS 来组织游戏逻辑,只在需要联网的环节接入 Lightyear 提供的能力。

仓库同时提供示例与教程。README 建议先从 examples 目录入手,并给出了一篇逐步复刻 simple_box 示例的教程;配套的书籍(book)目前仍在编写中,可作为补充阅读材料。

核心功能

对玩家输入(鼠标、键盘)做了专门处理

在客户端按 tick 缓冲,并保证客户端在 tick `N` 的输入会在服务端的 tick `N` 被处理;

客户端预测

只需一行改动即可在客户端启用带 rollback 的预测,让输入手感更跟手;

快照插值

同样只需一行改动,即使实体复制频率较低也能平滑插值;

输入延迟

可自定义输入延迟量,在响应速度与误预测之间做取舍;

带宽管理

可为连接设置带宽上限,消息按开发者设定的优先级递减顺序发送,并采用优先级累积策略;

延迟补偿

使被预测的实体能够与插值实体交互,常用于 FPS 类游戏。

补充说明

快速开始

README 给出的起步方式非常直接。以 Bevy 0.20(要求 Rust 1.97.1 或更高版本)为例,在 Cargo.toml 中加入依赖:

[dependencies]
lightyear = "0.31"

随后可以按以下顺序上手:

  • 先浏览仓库中的 examples,了解不同拓扑和功能的最小可运行样例;
  • 跟着教程从头复刻 simple_box 示例,理解客户端与服务端的职责划分;
  • 遇到细节问题时查阅仍在完善中的官方 book。

需要注意,具体 API 能力与兼容的版本组合应以官方文档为准,README 中的版本号会随迭代变化。

仓库结构

Lightyear 采用 Cargo workspace 组织代码,各 crate 的源码位于 crates/ 下并按职责分组;目录名省略了 lightyear_ 前缀,但 Cargo 包名保留该前缀。README 列出的分组如下:

  • crates/io:底层 IO 链路与后端,包括 aeronet、link、udp、crossbeam、websocket、webtransport;
  • crates/connection:连接抽象与适配层,如 connection、raw_connection、netcode、steam;
  • crates/core:顶层 lightyear crate,以及共享核心、同步、工具与帧插值相关 crate;
  • crates/inputs:输入相关 crate,如 inputs、inputs_native、input_bei、inputs_leafwing;
  • crates/replication:复制、预测与插值相关 crate;
  • crates/transport:序列化、传输与消息相关 crate;
  • crates/integration:Bevy 生态集成,例如 Avian;
  • crates/platform、crates/deterministic、crates/tools、crates/tests:平台支持、确定性复制、工具与测试辅助。

这种拆分方式让使用者既可以直接依赖顶层的 lightyear,也可以在需要时只挑选某个子模块。

相关项目与游戏

README 提到了若干周边与使用案例,可作为参考:

  • lightyear-template:一个带主观取舍的 Bevy + Lightyear 起步模板;
  • Lumina:使用该库的游戏项目;
  • cycles.io:为 Bevy Jam 5 制作,可在线试玩。

Bevy 版本兼容

README 提供了一张对照表,说明 Lightyear 各版本对应的 Bevy 版本:

Lightyear Bevy
0.31 0.20
0.28-0.30 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

升级 Bevy 版本时,应同步选择对应的 Lightyear 版本,避免 API 不匹配。

学习建议

Lightyear 涉及网络同步中的多个高门槛概念:服务器权威模型、客户端预测与回滚、快照插值与延迟补偿。建议按如下路径推进:

  • 先用 simple_box 级别的示例跑通「连接—输入—复制」的最小闭环;
  • 再分别打开预测、插值、带宽管理等开关,观察行为差异;
  • 最后根据游戏类型(例如 FPS 更依赖延迟补偿)选择需要的特性组合,而不是一次性全部启用。

由于配套书籍仍在编写中,遇到不确定的行为时,直接阅读示例代码与官方文档通常比猜测更可靠。

开源许可证与版权说明

许可证标识:Apache-2.0。源码、资源与依赖许可可能不同,请以官方仓库为准。本站仅做索引,不托管源码。

相似项目