ゲームサーバの起動方法①(Script後述)
・ゲームサーバへの登録
クライアントが起動したゲームサーバを参照するには、起動したゲームサーバを、
マスターサーバに登録する必要がある。マスターサーバは広く公開されているので、
クライアントはマスターサーバに接続して目的のゲームサーバを探し出す。
MasterServer.RegisterHost(ゲームタイプ名、ゲーム名、コメント);
※コメントは検索時に表示するが、省略してもよい。
・ゲームサーバの検索
クライアントはNetWorkクラスのConnect関数を呼び出すことでゲームサーバに接続できるが、接続するゲームサーバを探索し指定しなくてはならない。
以下の2つの方法
・IPアドレスとポート番号を直接指定する
・マスターサーバからサーバ一覧を取得し選択する
・IPアドレスとポート番号から直接指定
ゲームサーバが固定されたIPアドレスを持ている場合に使用。
※NATパンチスルーが必要ない。
通常は使用しないが、ゲーム開発中など1台でサーバとクライアントを動作させたいときは、以下の方法で自分自身のサーバに接続することができる。
Network.Connect("000.0.0.1",00000);
ゲームサーバのポートが00000で待ち受けていると仮定すると、CPがNTに接続されていない場合や、マスターサーバが混み合っていて使用できない時などに利用ができる。(遅延がない)
・マスターサーバからゲームサーバ一覧を取得
マスターサーバに問い合わせる方法。通常はこちらを使用する。
MSに登録されているリスト一覧を送信してくれるようにリクエストを出す。
サンプルだぜサーバであれば、、、
MasterServer.RequestHostList("SampleDaze");
となる。
次にゲームサーバから送られてきたリストを受け取る。
MasterServerClassのPollHostList関数で受け取る。
HostData[] hosts = MasterServer.PollHostList();
リストは徐々に到着してくるため、PollHostList関数の戻り値を毎フレーム監視し、
サーバのリストを更新する必要がある。
PollHostList関数の戻り値によって、ゲームサーバの一覧はHostData型の配列で渡される。この型にはゲームサーバをマスターサーバに登録した時のゲーム名(ルーム名)やコメントが入っている。
これを表示させ、ユーザーにどのゲームに参加するかを選ばせる。
そしてHostData型に含まれるguid変数を使用して接続を行う。
Network.Connect(host[0].guid);
接続が完了したら、、、
OnConnectedToServer();
ゲームサーバ側は、
OnPlayerConnected(NetworkPlayer otherPlayer);
がUnityから呼び出され通知される。