5个版本 (破坏性)
0.5.0 | 2024年3月11日 |
---|---|
0.4.0 | 2024年1月3日 |
0.3.0 | 2024年1月2日 |
0.2.0 | 2023年12月25日 |
0.1.0 | 2023年12月25日 |
#1307 in 游戏开发
31KB
291 行
bevy_server_browser
Bevy游戏引擎插件,用于在本地网络中创建和搜索可发现的服务器。
此插件不提供服务器和客户端之间的任何连接,您需要将其与网络库配对,例如 bevy_matchbox。此插件仅允许客户端在本地网络中发现服务器及其信息,因此您无需在客户端中输入服务器的IP地址。
MSRV:最低支持的Rust版本是 rust 1.75
用法
请参阅下面的用法或 示例 了解更全面的用法。
此示例在一个单独的应用程序中展示了服务器和客户端,这意味着客户端将发现自己,您可以使用这两个功能或仅使用客户端或服务器。
use bevy::prelude::*;
use bevy_server_browser::prelude::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
// Add the server browser plugin
.add_plugins(ServerBrowserPlugin::new("test_id"))
.add_systems(
Startup,
// run discover servers after setup
(setup_discoverable_server, discover_servers).chain(),
)
.add_systems(
Update,
print_discovered_servers.run_if(resource_changed::<DiscoveredServerList>()),
)
.run();
}
fn setup_discoverable_server(mut commands: Commands) {
// add discoverable server as a resource which makes it available for discovery
// on local network
info!("Adding discoverable server");
commands.insert_resource(DiscoverableServer {
port: 1234,
metadata: ServerMetadata::new().with("name", "Test Server"),
});
}
fn discover_servers(mut search_servers: EventWriter<SearchServers>) {
// send SearchServers event which will trigger search of discoverable servers
// and update Res<DiscoverableServerList> accordingly
search_servers.send_default();
}
fn print_discovered_servers(servers: Res<DiscoveredServerList>) {
if servers.is_empty() {
info!("No servers discovered");
return;
}
info!("Discovered {} servers:", servers.len());
for server in &servers {
info!(
"Name '{}' ({}) with addresses {:?} on port {}",
server.metadata.get("name").unwrap_or("Unknown Name"),
server.hostname, server.addresses, server.port
);
}
}
bevy | bevy_server_browser |
---|---|
0.13 | 0.5.0 |
0.12 | 0.1.0 - 0.4.0 |
依赖关系
~9–21MB
~240K SLoC