p2p_rudp_sample
p2p_rudp サンプル
概要
Room モジュールを使用してユーザー同士が P2P 接続し、RUDP (Reliable UDP) を使用して P2P 通信を行うサンプルです。 Room モジュールの特徴についてはこちらのページを参照してください。
ローカル環境でサーバーを起動する
サンプルで使用するサーバーを起動するためのチュートリアルを実施して、ローカル環境で Diarkis サーバーを起動します。
サンプルの引数
サンプルの起動時には以下の3つのパラメータを指定してください。
p2p_rudp_sample.exe serverAddr UID clientKey
serverAddr
Diarkis サーバのエンドポイントを指定してください
UID
接続するユーザーの ID を任意の文字列で指定してください
clientKey
クライアントキーを任意の文字列で指定してください
起動例:
p2p_rudp_sample.exe 192.168.1.123:7000 1111 AAAA
起動方法
本サンプルは起動すると Room に接続し、Room のメンバー数が 2 人になるまで待機します。 サンプルプログラムを 2 つ起動することで 2 人のユーザーが Room に参加し P2P 接続の処理が開始します。
サンプルコード説明
Room の P2P を使用する全体的な流れ
Diarkis ランタイムおよび Diarkis Module を初期化し、Diarkis サーバーへ接続します。 詳細については Diarkis モジュール利用の全体的な流れ を参照してください。
セットアップ Room と P2P モジュールを初期化します。
Room へ接続
DiarkisRoomBase::SendCreateOrJoinByCustomIDを使用して Room に接続します。Room に接続することが目的のためDiarkisRoomBase::SendJoinRandomRoom等、他の接続用の API を使用しても問題ありません。P2P 接続を開始 Room に接続後、
DiarkisRoomBase::SendStartP2PSyncを実行することで P2P 接続を開始します。この API は Room に接続しているメンバーの中で誰か 1 人が実行すれば他のユーザー含めて全員の P2P 接続処理が開始します。本サンプルでは Room のオーナーとなっているユーザーが代表してこの API を実行しています。P2P 接続完了待ち 本サンプルでは全ユーザーの P2P 接続が完了するまで待機します。
DiarkisP2PBase::GetConnectedUsersで P2P 接続が完了しているユーザー数をチェックすることができるため、この人数が想定している人数になるまで待機しています。DiarkisP2PBase::GetConnectedUsersは接続しているピアの数となるため参加人数 - 1 でチェックしています。P2P で RUDP メッセージを送信 P2P での接続完了後、
DiarkisP2PBase::SendBroadcastを使用して P2P 接続している全ユーザーに対してメッセージを送信しています。 この時 Reliablity にReliability::RELIABLE_ORDEREDやReliability::RELIABLE_UNORDEREDを指定すると RUDP としてメッセージを送信します。Reliability::RELIABLE_ORDEREDでは到達保証・順番保証となりReliability::RELIABLE_UNORDEREDでは到達保証のみとなります。 また、RUDP では MTU を超える大きなサイズのパケットも送信することができます。簡単に大量のデータを送ることが出来てしまいますので、ネットワーク負荷を考慮してご使用ください。P2P でメッセージを受信 P2P でメッセージを受信すると
DiarkisP2PBase::OnP2PMessageが発火します。DiarkisP2PBase::OnP2PMessageの引数のDiarkisMessageEventArgsでは送信元 UID やペイロードなど様々な情報を取得することができます。 ユーザーはDiarkisP2PBaseを継承しDiarkisP2PBase::OnP2PMessageをオーバーライドすることで受信したデータに対してアプリ固有の処理を実装することができます。切断処理
DiarkisP2PBase::Disconnectを使用して P2P 接続を切断します。このとき、Room に接続したままであれば Room 経由で通信を行うことが可能です。終了処理 詳細については Diarkis モジュール利用の全体的な流れ を参照してください。
最終更新
役に立ちましたか?

