初期設定
Photon Unity Networking (PUN)の設定は非常に簡単です。
新しいプロジェクトにPUNをインポートするとPUN Wizardがポップアップ表示されます。
フィールドにEメールを入力するか、既存のAppIDを貼り付ければ新しい(無料)Photon Cloudアカウントの登録ができます。
新たな(無料)のPhoton Cloudアカウントを登録するには、メールアドレスを入力するか、または既存のAppIdをペーストします。
以上で作業は完了です。
Photon Serverを自分でホスティングする場合は、「スキップ」をクリックして以下のように PhotonServerSettings
を編集します。
接続するには、コード内でPhotonNetwork.ConnectUsingSettings()
を呼びます。
さらに管理が必要な場合は、以下の "手動で接続"を参照してください。
PhotonServerSettings
このウィザードはプロジェクト内に PhotonServerSettings
ファイルを追加し設定を保存します。
また、ここからサーバーの設定を編集することも可能です。
AppIdやPhoton Cloudのリージョンなどを設定できます。
クライアントの ゲームバージョン はコードで設定されます。
選択するオプションで、もっとも重要なのは「ホスティング」です。
ホスティングタイプ
「ホスティング」オプションでは、ゲームを処理するサーバーやコンフィグレーションなどを設定します。
「Photon Cloud」と「ベストリージョン」は、どちらも弊社の管理されたクラウドサービスに関連しています。
特定のリージョンを選択するか、クライアントに最良のpingのリージョンを選択させてください。
Photon Serverを別の場所で実行している場合は「セルフホスティング」を選択します。
または、クライアントを「オフラインモード」にし続けることもできます。
ベストリージョン
「ベストリージョン」モードではアプリケーションの初回起動時に、把握しているすべてのリージョンにpingを送信します。
この処理には時間を要するため、結果はPlayerPrefs
に保存されます。
これによって、接続時間が短縮されます。
無視するリージョンを設定できます。
より少ないリージョンでクライアントを送信することによって、それらの継続しているリージョンでより多くのプレイヤーを保持できます。
ゲームの人気度がそれほど高くなる前の場合には、この方法でメリットを得られます。
PhotonNetwork.OverrideBestCloudServer()
を使って、使用する別のリージョンを定義します。
「ベストリージョン」オプションは、決定的なものではありません。
リージョンにあまり差がない場合や、まったく同じping計算がされた場合には、「ランダム」になる可能性があります。
理論上は以下の設定が可能です:
- 同一デバイスから、複数リージョンに対してまったく同じpingを設定します。同じネットワークに接続したクライアント上で異なるリージョンに接続する場合には、ランダムになります。
- 同じネットワークに接続した異なるデバイス上(または同じデバイス上で異なる試行を実行する)で、同じリージョンに対して異なるping値を設定します。
たとえば、「us」と「usw」(または「ru」と「rue」)の場合、オンラインリージョンの許可リストを使用してリージョンを選択するか、または明示的にリージョンに接続します。
デバッグをおこなうには、ロギングレベルを「情報」に設定し、「現在のベストリージョン」をクリアしてください(PUNの場合:PhotonNetwork.BestRegionSummaryInPreferences = null)。詳細を参照するか、またはメールでログを送信してください。
セルフホスティング
このオプションは、こちらからダウンロード可能なオンプレミスのSDKを使用して、独自のサーバー上でPhoton Serverをホスティングしているユーザーに関係があります。
該当する場合には、サーバーアドレスとポートをPhotonServerSettings内にセットアップしてください。
クライアントが入力されたアドレスに到達できることを確認してください。
パブリックアドレス、静的なIPアドレス、ホスト名、またはクライアントがネットワーク内で使用するその他のアドレスを設定できます。
iOS向けにゲーム開発をしている場合には、「PUNとIPv6」と「IPv6用にPhoton Server を設定する方法](~/server/current/operations/ipv6)」を参照してください。
セットアップが正常に完了すると、コード内でPhotonNetwork.ConnectUsingSettings()
を呼び出すことができます。
プロトコル
ポートは、選択したプロトコルに依存します。このため、これら2つのフィールドが合致する点を確認してください。
デフォルトのポートにリセットするには、フィールドをクリアします。
デフォルトは(信頼性の高い)UDPですが、PhotonはTCPもサポートしています。
UDPの使用を推奨します。
Unity 4.7対応のPUN+は、TCPを提供しません。
WebGLエクスポートは、WebSockets Secureとのみ作動します。
クライアントの設定
クライアントの設定セクションには、プロジェクトごとに設定するべきオプションがいくつか含まれています。
ロビーに自動参加
「ロビーに自動参加」をチェックすると、PUNは接続時にデフォルトのロビーに自動的に参加します(またはルームを退出します)。
Photonのロビーは最新のルームリストを提供します。このため、プレイヤーは参加すべきルームを選択できます。
この機能はデフォルトではオフになっています。これは、すべてのデモで使用されているとおり、ランダムマッチメイキングを使用したほうがよいためです。
「ロビーに自動参加」がチェックされていない場合には、OnConnectedToMaster
コールバックが呼ばれます。
「ロビーに自動参加」がチェックされている場合には、OnConnectedToMaster
はスキップされ、OnJoinedLobby
のみが呼ばれます。
ロビー統計を有効化
サーバーからロビー統計を取得するには、これをチェックする必要があります。
詳細情報は 「アプリケーションとロビー統計」を参照してください。
バックグラウンドで実行
これによって、同じ名前でUnityの設定がおこなわれます。
詳細はこちらを参照してください。
RPCリスト
「リモートプロシージャコール」を使用すると、ルーム内のすべてのクライアントにメソッドをコールすることができます。
PUNはこれらのメソッドのリストをPhotonServerSettings
に保持します。
これは、初期セットアップの場合には関係ありません。
詳細はリモートプロシージャコールを参照してください。
手動で接続
PhotonNetwork.ConnectUsingSettings()
の代わりにPhotonNetwork.ConnectToMaster()
を使用すれば、独自のPhoton Serverに接続できます。
Photonをオンプレミスでホスティングする場合には、これを活用できます。
ConnectToMaster()
には、 masterServerAddress
とport
を提供する必要があります。
このアドレスはオンプレミスのDNS名であるか、またはIPアドレスです。
このアドレスでコロンの後にポートを入力するか(この場合には、ポートとして0を渡します)、または個別にポートを渡すことができます。
ConnectToMaster()
にはさらに2つのパラメータがあります:「appID」と「gameVersion」です。
これらのパラメータはPhoton Cloudにのみ関係があり、Photonをホスティングする場合には任意の値を設定できます。
Photon Cloudには、ConnectUsingSettings()
を使用してください。
これには、自動的にリージョンのマスターサーバーを見つけるためにネームサーバーが含まれます。