对玩家输入(鼠标、键盘)做了专门处理
在客户端按 tick 缓冲,并保证客户端在 tick `N` 的输入会在服务端的 tick `N` 被处理;
lightyear · cBournhonesque/lightyear
Lightyear 是一个面向 Bevy 游戏引擎的网络库,用于开发服务器权威(server-authoritative)的多人游戏,主要使用 Rust 编写。项目通过 WebTransport 支持 wasm,可用于浏览器环境。仓库中提供示例与教程,包括通过教程复刻 simple_box...
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 示例,理解客户端与服务端的职责划分;需要注意,具体 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 提到了若干周边与使用案例,可作为参考:
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 级别的示例跑通「连接—输入—复制」的最小闭环;由于配套书籍仍在编写中,遇到不确定的行为时,直接阅读示例代码与官方文档通常比猜测更可靠。
Farbrausch 2001—2011 年 demo 工具源码合集,使用 C++,涉及 demoscene 与 D...
id Software 以 GPL 发布的《Doom 3 BFG Edition》C++ 源代码。发布包不含游...