#server #bevy #lan #browser #networking #game-engine #gamedev

bevy_server_browser

Bevy游戏引擎插件,用于在本地网络中创建和搜索可发现的服务器

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 游戏开发

MIT/Apache

31KB
291

bevy_server_browser

crates.io docs.rs

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