这个项目能做什么

Lightyear 是一个网络库,用于使用 Bevy 游戏引擎编写服务器权威的多人游戏。它通过 WebTransport 与 WebAssembly 兼容,并作为 Rust crate 分发(针对 Bevy 0.19 的 lightyear = "0.30")。 入门指南:该仓库提供了示例、一个重新创建 simple_box 示例的教程,以及一本正在编写中的书以提供更多文档。 仓库布局:工作区 crate 位于 crates/ 下,按角色分组,目录名去掉了 lightyear_ 前缀,而 Cargo 包名则保留了该前缀。分组包括 io(低级链接和后端,如 aeronet、link、udp、crossbeam、websocket、webtransport)、connection(connection、raw_connection、netcode、steam)、core(顶层 lightyear crate 以及 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 crate。 README 中描述的功能: - 传输无关的 IO:UDP 套接字,加上 aeronet 以支持 WebSocket、Steam 和 WebTransport。 - 序列化:postcard 是默认的序列化器,并支持提供自定义序列化函数。 - 消息传递:具有不同排序和可靠性保证的通道,以及对大于约 1200 字节的消息进行数据包分片。 - 输入处理:玩家输入在客户端每个 tick 缓冲,客户端在 tick N 的输入会在服务器的 tick N 上处理;通过在每个数据包中包含最近的帧来保护输入免受数据包丢失的影响。存在与 leafwing-input-manager 和 bevy-enhanced-input 的可选集成。 - 确定性复制:在仅复制输入且模拟是确定性的情况下受支持;与锁步和预测/回滚兼容。 - 世界复制:使用 bevy_replicon 进行复制、兴趣管理、预生成和相关功能。 - 高级复制:带有回滚的客户端预测、快照插值、可配置的输入延迟、基于优先级发送的带宽管理,以及针对预测实体和插值实体之间交互的延迟补偿。 - 拓扑:客户端-服务器、P2P,以及客户端充当服务器的宿主-客户端模式。 - 示例:涵盖功能以及与其他 Bevy crate(如 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)。