#bevy #networking #gamedev #back-end

aeronet_replicon

使用aeronet实现的bevy_replicon后端

3个不稳定版本

0.7.0-alpha.2 2024年8月16日
0.7.0-alpha.12024年7月30日
0.6.0 2024年7月30日

游戏开发中排名第897

Download history 221/week @ 2024-07-27 11/week @ 2024-08-03 37/week @ 2024-08-10

每月下载量269

MIT/Apache

105KB
1K SLoC

aeronet_replicon

crates.io docs.rs

使用aeronet实现的bevy_replicon后端。

Replicon为Bevy游戏引擎提供组件级复制,此Crate提供与Replicon集成的类型和Bevy插件。传输不一定是网络化的。

入门

插件

首先,您必须设置传输实现。查看aeronet crate以了解可用的传输。

然后添加以下插件,具体取决于您是想使用客户端还是服务器

设置和连接您的传输后,您可以使用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