ネットワークメッセージ
シーンオブジェクト

Local Discovery

Unity ゲームは、NetworkDiscovery コンポーネントによって、ローカルネットワーク上で互いに特定し合うことができます。NetworkDiscovery は自らの存在をブロードキャストしたり、他のゲームのブロードキャストを受信したりできます。また NetworkManager を使用してマッチングゲームに参加することも可能です。これはインターネット上では機能せず、ローカルネットワーク上でのみ機能します。このコンポーネントは、ネットワーク トランスポート レイヤーの UDP ブロードキャスト機能を使用しています。

Local Discovery を使用するには、シーン内に空のゲームオブジェクトを作成し、そこに NetworkDiscovery コンポーネントを追加してください。

NetworkDiscovery コンポーネント
NetworkDiscovery コンポーネント

NetworkManagerHUD 同様、NetworkDIscovery コンポーネントにもデフォルトの制御用 GUI が提供されています。ゲーム開始時に “\Initialize Broadcast\” ボタンを押して起動してください。

このコンポーネントは、サーバーモードとクライアントモードのどちらでも実行できます。

サーバーモードのときは、指定のポートのネットワークを介してブロードキャストメッセージを送信します。このメッセージにはゲームの Key と Version が含まれています。Key と Version によってゲームの種類が特定されます。競合(例:ゲームが、異なる種類のゲームへの参加を試みてしまうなど)を避けるためには、Key フィールドの値をカスタマイズしてください。このコンポーネントは、マシンがゲームをホスティングしている場合には、サーバーモードで実行する必要があります。デフォルトの GUI を使用していないときは、コンポーネントは StartAsServer() 関数によってサーバーモードで実行されます。

クライアントモードのときは、コンポーネントは指定のポート上のブロードキャストメッセージを検知します。メッセージが受信され、メッセージ中の Key が NetworkDiscovery コンポーネント中の Key と一致すると、ゲームがローカルネットワーク上で参加可能であることを意味します。デフォルトの GUI を使用していない場合は、コンポーネントは StartAsClient() 関数によってクライアントモードで実行されます。

デフォルトの GUI を使用している場合、NetworkManager が使用可能ならクライアントをゲームに参加させるボタンが表示されます。

NetworkDiscovery コンポーネントには、ブロードキャストメッセージ受信の通知を受け取るために実装できる仮想関数があります。

virtual void OnReceivedBroadcast(string fromAddress, string data);

NetworkDiscovery サーバーとクライアントの両方を、同じ処理で同時に実行することはできませんのでご注意ください。

ネットワークメッセージ
シーンオブジェクト