4个版本 (2个破坏性版本)
0.4.0 | 2024年7月9日 |
---|---|
0.3.0 | 2024年5月7日 |
0.1.2 | 2023年11月9日 |
0.1.0 | 2023年11月6日 |
#407 在 游戏开发
每月170次下载
220KB
546 代码行
bevy_veilid
使用Bevy和Veilid构建2人回合制P2P游戏
在Veilid的帮助下,构建具有匿名性的客户端的回合制P2P游戏。
https://github.com/stillonearth/bevy_veilid/assets/97428129/4c505eef-1dee-4ab4-b0e7-51262a3b3337
兼容性
Bevy版本 | Veilid版本 | bevy_veilid版本 |
---|---|---|
0.11 | 0.2.4 | 0.1.0 |
0.11 | 0.2.5 | 0.1.2 |
0.12 | 0.3 | 0.2 |
0.13 | 0.3.2 | 0.3 |
0.14 | 0.3.3 | 0.4 |
📝功能
- 事件驱动:读取和发送事件以与其他对等方通信
- 回合制:无需时钟同步
- 匿名:每次运行创建一个新的身份
👩💻 使用方法
有关基本示例,请参阅examples/pingpong。
1. 定义要通过网络发送的消息
#[derive(Serialize, Deserialize, Debug, Clone, Default, Resource)]
struct SampleMessage {
pub counter: i32,
pub extra: String,
}
2. 将插件附加到Bevy
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(VeilidPlugin::<SampleMessage>::default())
.add_systems(
Update,
(
on_ev_veilid_initialized,
handle_ui_state,
on_host_game,
on_join_game,
on_ev_awating_peer,
on_ev_error,
on_ev_veilid_message,
on_ev_connected_peer,
on_ev_change_counter,
),
)
.run();
}
3. 连接到系统
事件
EventConnectedPeer
EventError
EventAwaitingPeer
EventVeilidInitialized
EventReceiveMessage<SampleMessage>
EventSendMessage<SampleMessage>
EventMessageSent
资源
bevy_veilid
将将其注入Bevy
pub enum VeilidPluginStatus {
Initializing,
Initialized,
ConnectedPeer,
AwaitingPeer,
Error,
}
💻 内部机制
完整的Veilid实例将在后台运行,设置在veilid_duplex中。 veilid_duplex
管理Veilid内部,并提供一个API,通过引用每个运行的独特dht_keys将消息发送给另一个对等方。
示例
依赖项
~33–78MB
~1.5M SLoC