初期設定と接続
Photon Unity Networking (PUN)は簡単にセットアップできます。 新しいプロジェクトにPUNをインポートすると、PUNウィザードのポップアップが開きます。また、メニューにも「Window」「Photon Unity Networking」と表示されるようになります。
Photon Cloudの新規(無償)アカウントの登録は、メールアドレスを入力するか、ダッシュボードの既存のAppIdをDashboardをコピーアンドペーストするだけでおこなえます。
自分でPhotonサーバーをホスティングする場合は、"skip"をクリックして 下記のようにPhotonServerSettings
を編集します。
接続するには、コード内でPhotonNetwork.ConnectUsingSettings()
を呼び出すだけです。
さらに操作が必要な場合はページ下部の "手動接続"を参照してください。
PhotonServer設定
ウィザードがプロジェクトへコンフィグレーションを格納するためPhotonServerSettings
ファイルを追加します。このファイルは、基本的にはConnectUsingSettings
に使用されます。PhotonCloudまたは独自のホスティングサーバーへの接続とその他のよくある変更を設定できます。
AppId、Photon Cloud Region、Game Versionやその他の設定ができます。デフォルト設定でほとんどの場合は問題ありません。
設定値
AppId Realtime、Chat および Voice
AppIdはPhoton Cloudで各タイトルを識別するため使用されています。PUNはRealtime AppIDを使って接続します。 Photon ChatとPhoton Voiceでも同様で、機能を使うためにはそれぞれのAppIdが必要です。
Appバージョン
PUNでは、Appバージョンはゲームバージョンの一部です。異なるゲームバージョンの値を持つクライアントは隔離されます。Game Version の値が異なるクライアントは分けられます。PUNはこの値にPunVersion
の文字列を追加し、異なる PUNバージョン間の潜在的な非互換性を軽減します。
ネームサーバーの使用
旧Photonサーバーのインスタンスに接続すると、クライアントはネームサーバーではなくマスターサーバーにダイレクトに接続されます。自分でPhotonを設定する際には、下記を参照のうえここだけチェックを外してください。
Dev Region
PUN v2.17から、PhotonNetwork.ConnectUsingSettings()
を使用して接続した場合にのみ、Unity Editorと「Development」ビルドで「Dev Region」が使用されるようになりました。
この値を削除するだけで、Unity Editorと「Development Build」で「Dev Region」を無効にすることができます。
詳細は こちらです。
リージョンの固定
クラウドに接続すると、PUNがベストリージョンを選択します。特定のリージョンに接続を希望する場合は、リージョンコードを入力すると、Best Region Selectionがオフになります。
サーバー
このオプションは、特に独自のPhotonサーバーのホスティングの際に関わってきます。実行するにはPhoton Server SDKを取得してください。 Use Name Server
のボックスのチェックを外しクライアントをマスターサーバーにダイレクトに接続させます。
入力したアドレスにクライアントが到達していることを確認してください。 クライアントが使用しているアドレスはパブリックかスタティックIP、ホストネームなど様々な可能性があります。
iOS向けゲーム開発をする場合 "PUN and IPv6" と "how to setup Photon Server for IPv6"を参照してください。
設定がきちんとされていれば、プログラム内でPhotonNetwork.ConnectUsingSettings()
を呼び出せます。
ポートとプロトコル
Photonは、一度のセッションの間に複数のサーバーの使用を可能にするため構築されました。ここで入力されたポートは最初に接続するサーバーの一つで、マスターサーバーかネームサーバーです。ポートはまた、選択したプロトコルにも影響されます。
Photon Cloudに接続すると、値は0になります。Photonが使用するstandard portsを検索します。
プロトコルのデフォルトは(信頼性のある)UDPですが、PhotonはTCPおよびWebSocketをサポートしています。PUNのクライアントは自動的にWebGLエクスポートにおいてSecure WebSocketsを使用することになります。
UDPの使用をお勧めします。
ロビー統計の有効化
ロビー統計をサーバーから取得するにはここにチェックを入れます。 詳細は"App And Lobby Stats"のページを参照してください。
ネットワークロギング
下層レベルのPhotonプログラムのロギングを制御します。必要でない限り、Error
設定に従ってください。
サポートロガーの有効化
接続中、マッチメイキング中もしくはルームの中でに起きたことをトラッキングするのに非常に有効です。ここにチェックが入っていると、スクリプトがコールバックに登録され重要な情報がログされ、ゲームのデバッグに役立ちます。
バックグラウンドでの実行
Unity設定を同じ名前でセッティングします。 詳細はこちら。
RPCのリスト
"Remote Procedure Calls"でルームの中の他のクライアントでのメソッド呼び出しができるようになります。
PUNにはPhotonServerSettings
のメソッドのリストがあり、各名称のインデックスをRPCを呼び出す際の略称として使用できます。
Remote Procedure Callsをご確認ください。
セルフホスティングしたPhotonの設定
Photon Server SDKにはこのサービスがないので"Use Name Server"のチェックを外します。リージョンの固定もクリアにします。"Server"を自身のPhotonサーバーのIPアドレスもしくはホストネームに設定します。クライアントから届くネットワーク内であるようにしてください。クライアントが同一マシンのスタンドアロンビルドである場合は、"localhost" や 127.0.0.1の使用も大丈夫です。ポートに 5055 と入力してください。
Photon Server(OnPremises)を利用する際には、注目すべき調整点が2つあります。
- クライアントは、ユーザーを認証しない場合でも、一意のUserIdを設定する必要があります。例えば、デバイスごとにGUIDを生成して保存します。
- GameVersion / AppVersion は、別個の仮想 AppIds を作成するためには使用しません。
手動接続
PhotonNetwork.ConnectUsingSettings()
の代わりにPhotonNetwork.ConnectToMaster()
を使用して独自のPhotonサーバーに接続できます。
Photonをオンプレミスでホスティングする際には便利な機能です。
ConnectToMaster()
には、masterServerAddress
およびport
を提供する必要があります。
アドレスは自身のDNSかIPアドレスになります。 コロンの後にポートを含む(ポートとして0をパスします)か、もしくは別でポートをパスします。
appID パラメータ はPhotonクラウドにのみ関係しています。自分でPhotonをホストする場合は任意の値を設定することができます。
ゲームやアプリのバージョンは、ConnectToMasterを呼び出す前に PhotonNetwork.AppVersion
として設定することができます。
Photon Cloudでは、ConnectUsingSettings()
(上述)を使うのがベストです。
これは、ネームサーバがリージョンのマスターサーバを自動的に見つけるようにするためのものです。