3个不稳定版本
新 0.7.0-alpha.2 | 2024年8月16日 |
---|---|
0.7.0-alpha.1 | 2024年7月30日 |
0.6.0 | 2024年7月30日 |
在游戏开发中排名第897
每月下载量269
105KB
1K SLoC
aeronet_replicon
使用aeronet实现的bevy_replicon
后端。
Replicon为Bevy游戏引擎提供组件级复制,此Crate提供与Replicon集成的类型和Bevy插件。传输不一定是网络化的。
入门
插件
首先,您必须设置传输实现。查看aeronet
crate以了解可用的传输。
然后添加以下插件,具体取决于您是想使用客户端还是服务器
- Replicon的
ClientPlugin
和此crate的RepliconClientPlugin
- Replicon的
ServerPlugin
和此crate的RepliconServerPlugin
设置和连接您的传输后,您可以使用Replicon。
use aeronet::client::ClientTransport;
use aeronet_replicon::client::RepliconClientPlugin;
use bevy::prelude::*;
use bevy_replicon::prelude::*;
#[derive(Debug, Clone, Component, serde::Serialize, serde::Deserialize)]
pub struct MyComponent { /* .. */ }
fn configure<T: ClientTransport + Resource>(app: &mut App) {
app.add_plugins((ClientPlugin, RepliconClientPlugin::<T>::default()))
.replicate::<MyComponent>()
.add_systems(Startup, setup::<T>);
}
fn setup<T: ClientTransport + Resource>(mut commands: Commands) {
let client = create_client::<T>();
commands.insert_resource(client);
}
# fn create_client<T>() -> T { unimplemented!() }
连接和断开连接
所有与客户端/服务器的高级交互(即连接、断开连接;除了仅发送数据之外的所有操作)都必须通过aeronet进行。Replicon不处理此操作。
通道和频道
Replicon的channels类似于我们的lanes。实际上,Replicon通道ID在编码和解码过程中直接映射到通道索引。
客户端密钥
在服务器端,您的传输的T::ClientKey
类型通过ClientKeys
资源映射到Replicon的ClientId
。使用此资源在两者之间进行映射。
依赖关系
~41–77MB
~1.5M SLoC