48 个版本 (26 个破坏性更新)

0.27.0 2024 年 7 月 4 日
0.26.3 2024 年 6 月 9 日
0.24.1 2024 年 3 月 7 日
0.18.2 2023 年 12 月 27 日
0.1.0 2023 年 3 月 28 日

#21 in 游戏开发

Download history 200/week @ 2024-05-05 410/week @ 2024-05-12 422/week @ 2024-05-19 486/week @ 2024-05-26 418/week @ 2024-06-02 330/week @ 2024-06-09 177/week @ 2024-06-16 114/week @ 2024-06-23 219/week @ 2024-06-30 187/week @ 2024-07-07 212/week @ 2024-07-14 260/week @ 2024-07-21 269/week @ 2024-07-28 316/week @ 2024-08-04 228/week @ 2024-08-11 103/week @ 2024-08-18

每月下载量 986
用于 8 crates

MIT/Apache

335KB
6K SLoC

Bevy Replicon

crates.io docs.rs codecov

Bevy 游戏引擎 提供服务器授权网络功能的包。

功能

  • 自动面向组件的世界状态复制。
  • 基于事件的 messaging API,具有不同的保证(可靠的、可靠的无序的和不可靠的)。
  • 控制实体和事件对客户端的可见性。
  • 将复制到场景中以保存服务器状态。
  • 支持在单个 App 中以及在单独的客户端和服务器中。
  • 可自定义序列化和反序列化,即使是未实现 serde 特性的类型(如 Box<dyn Reflect>)。
  • 没有内置的 I/O,可以与任何消息库一起使用。请参阅 消息后端 了解已提供的集成。
  • API 专注于编写一次逻辑,自动适用于单人游戏、客户端、服务器和监听服务器(当服务器也是玩家时)。

如果您是网络的新手,请参阅 术语表

目标

该包的目的是提供一个最小化和快速的内核,可以扩展所需的功能以确保流畅的游戏体验。考虑以下示例

  • 一个节奏较慢的集中式托管游戏可能需要 ECS 级别的复制,并在其上添加一些插值。
  • 节奏稍快的游戏可能更关注顺序,并需要一个锁步系统。
  • 射击游戏需要玩家的客户端预测和其余部分的插值。
  • 体育游戏或比大多数射击游戏更复杂的在线游戏需要整个世界级别的 ECS 复制,并具有完整回滚功能。
  • 格斗游戏只需要复制一些输入事件,并在其上添加回滚功能。

所有这些示例都具有截然不同的优化要求。这就是模块化之所以至关重要的原因。它还允许更多开发者参与其中,并维护他们所使用的内容。

查看相关crates以扩展核心功能。

另请参阅X游戏应该使用什么类型的网络?

入门指南

查看快速入门指南

为了查看示例,请导航到消息后端仓库,因为运行它们需要I/O。

有任何问题?请随时在Bevy Discord服务器中的专用bevy_replicon频道中提问。

[!WARNING] 确保您的bevy_replicon版本与所使用的crate兼容,根据语义版本控制。

消息后端

辅助Crates

  • bevy_bundlication - 使用类似bundle的API添加复制组的注册。
  • bevy_replicon_attributes - 通过客户端属性和实体/事件可见性条件添加人体工程学可见性控制。此crate的原始客户端可见性API的扩展。

插值和/或回滚

其他Crates

Bevy兼容性

bevy bevy_replicon
0.14.0 0.27
0.13.0 0.23-0.26
0.12.1 0.18-0.22
0.11.0 0.6-0.17
0.10.1 0.2-0.6
0.10.0 0.1

依赖项

~40–77MB
~1.5M SLoC