Photon運営事務局です。
たまにはサーバーサイドもということで、Photon Serverのお話もしていきたいと思います。
なお、こちらはV4に対応した内容となっております。
まずは基本的なインストールですが、実用的に使う場合は複数台構成になるかと思います。ですので、複数台構成で使う場合のインストール方法について、簡単にご説明していきたいと思います。
基本的なインストール方法はドキュメントの5分でPhotonをはじめましょうをご覧ください。
http://doc.exitgames.com/ja/onpremise/current/getting-started/photon-server-in-5min
また、Photon Serverの起動などについては、Photonコントロールをご確認ください。
https://doc.photonengine.com/ja-jp/onpremise/current/applications/photon-control-application
Photon Serverのアプリ構成
Photon Serverのベースアプリケーションとしては、下記の二つがあります。
- MMO
- LoadBalancing
MMOは1台構成でのベース、そしてLoadBalancingは複数台構成のベースとなります。
Photon RealtimeはLoadBalacingをベースに作られていますし、Photon Unity Networking(PUN)を利用する場合はLoadBalancingが必須となります。
ですので、実用上はLoadBalancingを利用する場合がほとんどになるでしょう。
ここでは、そのLoadBalancingで、Master Server * 1台、Game Server * 2台の構成でインストールを進めていくこととします。
LoadBalacingの内部構成
LoadBalancingの中に、さらに2つのアプリケーションが存在しています。
- Master
- Game
MasterはMaster Serverの部分で、いわゆるロビーの部分と振り分け機能を持っています。
GameはGame Serverの部分で、ルームに入室後のゲーム部分を受け持っています。V3まではGame1/Game2と同一の実装が2つありましたが、1つに統合されてわかりやすくなっています。
Master ServerとGame Serverの詳細については、下記をご覧ください。
https://doc.photonengine.com/ja-jp/onpremise/current/applications/loadbalancing/application
ここでは、Master Serverがロビー、Game Serverがルームの部分を担当するんだな、ということだけ理解できればOKです!
Master Serverの構築
能書きはこのくらいにして、実際の設定に入っていきましょう。
まずは、Master Serverの構築を進めていきます。
PhotonServer.configの編集
Photon Server全体の設定を行うPhotonServer.configを編集していきます。
ファイルの場所は下記の通りです。
(server-sdk)¥deploy¥bin_Win{32|64}¥PhotonServer.config
基本的な方針としては、LoadBalancingアプリ(インスタンス)内のGameアプリに関する部分を除く、という形になります。
最初に出てくるのがUDPListers。UDP送受信に関する部分です。この中のGameに関する部分を削除かコメントアウトします。159-168行目になります。
<!-- 0.0.0.0 opens listeners on all available IPs. Machines with multiple IPs should define the correct one here. --> <!-- Port 5055 is Photon's default for UDP connections. --> <UDPListeners> <UDPListener IPAddress="0.0.0.0" Port="5055" OverrideApplication="Master"> </UDPListener> <UDPListener IPAddress="0.0.0.0" Port="5056" OverrideApplication="Game1"> </UDPListener> <UDPListener IPAddress="0.0.0.0" Port="5057" OverrideApplication="Game2"> </UDPListener> </UDPListeners>
次はTCPListeners。TCP送受信に関する部分です。ここも同様にGame1/2に関する部分を削除(またはコメントアウト。以下同様)。183-197行目になります。
<!-- 0.0.0.0 opens listeners on all available IPs. Machines with multiple IPs should define the correct one here. --> <TCPListeners> <!-- TCP listener for Game clients on Master application --> <TCPListener IPAddress="0.0.0.0" Port="4530" OverrideApplication="Master" PolicyFile="Policy\assets\socket-policy.xml" InactivityTimeout="10000" > </TCPListener> <TCPListener IPAddress="0.0.0.0" Port="4531" OverrideApplication="Game1" PolicyFile="Policy\assets\socket-policy.xml" InactivityTimeout="10000"> </TCPListener> <TCPListener IPAddress="0.0.0.0" Port="4532" OverrideApplication="Game2" PolicyFile="Policy\assets\socket-policy.xml" InactivityTimeout="10000"> </TCPListener> <!-- DON'T EDIT THIS. TCP listener for GameServers on Master application --> <TCPListener IPAddress="0.0.0.0" Port="4520"> </TCPListener> </TCPListeners>
続いてはWebSocketListeners。WebSocket通信に関する部分です。ここも同様に削除します。232-246行目です。
<!-- WebSocket (and Flash-Fallback) compatible listener --> <WebSocketListeners> <WebSocketListener IPAddress="0.0.0.0" Port="9090" DisableNagle="true" InactivityTimeout="10000" OverrideApplication="Master"> </WebSocketListener> <WebSocketListener IPAddress="0.0.0.0" Port="9091" DisableNagle="true" InactivityTimeout="10000" OverrideApplication="Game1"> </WebSocketListener> <WebSocketListener IPAddress="0.0.0.0" Port="9092" DisableNagle="true" InactivityTimeout="10000" OverrideApplication="Game2"> </WebSocketListener> </WebSocketListeners>
最後はApplicationの定義部分。Game1/Game2の定義を削除します。269-286行目です。
<!-- Defines which applications are loaded on start and which of them is used by default. Make sure the default application is defined. --> <!-- Application-folders must be located in the same folder as the bin_win32 folders. The BaseDirectory must include a "bin" folder. --> <Applications Default="Master"> <Application Name="Master" BaseDirectory="LoadBalancing\Master" Assembly="Photon.LoadBalancing" Type="Photon.LoadBalancing.MasterServer.MasterApplication" ForceAutoRestart="true" WatchFiles="dll;config" ExcludeFiles="log4net.config" > </Application> <Application Name="Game1" BaseDirectory="LoadBalancing\GameServer1" Assembly="Photon.LoadBalancing" Type="Photon.LoadBalancing.GameServer.GameApplication" ForceAutoRestart="true" WatchFiles="dll;config" ExcludeFiles="log4net.config"> </Application> <Application Name="Game2" BaseDirectory="LoadBalancing\GameServer2" Assembly="Photon.LoadBalancing" Type="Photon.LoadBalancing.GameServer.GameApplication" ForceAutoRestart="true" WatchFiles="dll;config" ExcludeFiles="log4net.config"> </Application> <!-- CounterPublisher Application --> <Application Name="CounterPublisher" BaseDirectory="CounterPublisher" Assembly="CounterPublisher" Type="Photon.CounterPublisher.Application" ForceAutoRestart="true" WatchFiles="dll;config" ExcludeFiles="log4net.config"> </Application> </Applications>
お疲れ様でした。Master Serverの設定ファイルの変更は以上になります。
Photon Serverの起動
変更が終わったら、まずMaster Serverを起動してみて、正常に起動するか確認してみてください。
正常に起動しない場合は、
(server-sdk)¥deploy¥bin_Win{32|64}¥log
フォルダにログファイルが生成されるので、ログのエラー内容を確認してみてください。
Game Serverの構築
Master Serverの構築が終わったので、続いてGame Serverの構築に進みましょう。
ここでは、すべてのGame ServerでGame1アプリを使うこととします。2つなので、Game1/Game2それぞれを使ってもいいのですが、さらに増やす場合に面倒なので、同じ物としました。
PhotonServer.configの編集
まず最初はMaster Serverと同じくPhotonServer.configから編集していきましょう。
(server-sdk)¥deploy¥bin_Win{32|64}¥PhotonServer.config
基本方針はMaster Serverと一緒ですが、残すのがGame1となります。
最初はUDPListers。この中のMaster/Game2に関する部分を削除。154-158,164-168行目になります。
<!-- 0.0.0.0 opens listeners on all available IPs. Machines with multiple IPs should define the correct one here. --> <!-- Port 5055 is Photon's default for UDP connections. --> <UDPListeners> <UDPListener IPAddress="0.0.0.0" Port="5055" OverrideApplication="Master"> </UDPListener> <UDPListener IPAddress="0.0.0.0" Port="5056" OverrideApplication="Game1"> </UDPListener> <UDPListener IPAddress="0.0.0.0" Port="5057" OverrideApplication="Game2"> </UDPListener> </UDPListeners>
次はTCPListeners。TCP送受信に関する部分です。ここも同様にMaster/Game2に関する部分を削除します。174-181,191-197行目になります。
<!-- 0.0.0.0 opens listeners on all available IPs. Machines with multiple IPs should define the correct one here. --> <TCPListeners> <!-- TCP listener for Game clients on Master application --> <TCPListener IPAddress="0.0.0.0" Port="4530" OverrideApplication="Master" PolicyFile="Policy\assets\socket-policy.xml" InactivityTimeout="10000" > </TCPListener> <TCPListener IPAddress="0.0.0.0" Port="4531" OverrideApplication="Game1" PolicyFile="Policy\assets\socket-policy.xml" InactivityTimeout="10000"> </TCPListener> <TCPListener IPAddress="0.0.0.0" Port="4532" OverrideApplication="Game2" PolicyFile="Policy\assets\socket-policy.xml" InactivityTimeout="10000"> </TCPListener> <!-- DON'T EDIT THIS. TCP listener for GameServers on Master application --> <TCPListener IPAddress="0.0.0.0" Port="4520"> </TCPListener> </TCPListeners>
続いてはWebSocketListeners。WebSocket通信に関する部分です。ここも同様に削除します。224-230,240-246行目です。
<!-- WebSocket (and Flash-Fallback) compatible listener --> <WebSocketListeners> <WebSocketListener IPAddress="0.0.0.0" Port="9090" DisableNagle="true" InactivityTimeout="10000" OverrideApplication="Master"> </WebSocketListener> <WebSocketListener IPAddress="0.0.0.0" Port="9091" DisableNagle="true" InactivityTimeout="10000" OverrideApplication="Game1"> </WebSocketListener> <WebSocketListener IPAddress="0.0.0.0" Port="9092" DisableNagle="true" InactivityTimeout="10000" OverrideApplication="Game2"> </WebSocketListener> </WebSocketListeners>
最後はApplicationの定義部分。Master/Game2の定義を削除するとともに、ApplicationのDefaultがmasterになっているのをGame1に変更する必要があります。Defaultの変更は258行目、削除するのは259-268,278-286行目です。
<!-- Defines which applications are loaded on start and which of them is used by default. Make sure the default application is defined. --> <!-- Application-folders must be located in the same folder as the bin_win32 folders. The BaseDirectory must include a "bin" folder. --> <Applications Default="Game1"> <Application Name="Master" BaseDirectory="LoadBalancing\Master" Assembly="Photon.LoadBalancing" Type="Photon.LoadBalancing.MasterServer.MasterApplication" ForceAutoRestart="true" WatchFiles="dll;config" ExcludeFiles="log4net.config" > </Application> <Application Name="Game1" BaseDirectory="LoadBalancing\GameServer1" Assembly="Photon.LoadBalancing" Type="Photon.LoadBalancing.GameServer.GameApplication" ForceAutoRestart="true" WatchFiles="dll;config" ExcludeFiles="log4net.config"> </Application> <Application Name="Game2" BaseDirectory="LoadBalancing\GameServer2" Assembly="Photon.LoadBalancing" Type="Photon.LoadBalancing.GameServer.GameApplication" ForceAutoRestart="true" WatchFiles="dll;config" ExcludeFiles="log4net.config"> </Application> <!-- CounterPublisher Application --> <Application Name="CounterPublisher" BaseDirectory="CounterPublisher" Assembly="CounterPublisher" Type="Photon.CounterPublisher.Application" ForceAutoRestart="true" WatchFiles="dll;config" ExcludeFiles="log4net.config"> </Application> </Applications>
PhotonServer.configの編集は以上となります。
Photon.LoadBalancing.dll.configの編集
続いてはアプリケーション固有の設定を変更していきます。
設定ファイルは下記の通りです。
(server-sdk)¥deploy¥Loadbalancing¥GameServer1¥bin¥Photon.LoadBalancing.dll.config
最初はMaster Serverの指定です。Master ServerのIPアドレスを記載してください。変更するのは13行目です。
<!-- Set to the IP Address of the Photon instance where your Master application is running. --> <setting name="MasterIPAddress" serializeAs="String"> <value>192.168.1.1</value> </setting>
もう一つはGame ServerとしてアナウンスするIPアドレスの指定。Game Serverが直接グローバルIPアドレスを持っている場合は、直接記載してもいいですし、空にしておいて自動判定にしておいてもかまいません。ここでは自動判定とします。変更するのは18行目です。
<!-- Leave empty and the the IP address will be looked up dynamically at runtime. --> <setting name="PublicIPAddress" serializeAs="String"> <value></value> </setting>
以上でGame Serverの設定ファイルの変更は以上となります。お疲れ様でした。
Photon Serverの起動
変更が終わったら、Game Serverを起動してみて、正常に起動するか確認してみてください。
正常に起動しない場合は、Master Serverと同じ
(server-sdk)¥deploy¥bin_Win{32|64}¥log
フォルダにログファイルが生成されるので、ログのエラー内容を確認してみてください。
Game ServerがMaster Serverへの登録が完了すると、Master Serverのログに出力されます。
そちらも確認してみてください。
とりあえず動きましたが…
以上で複数台構成で使う場合の設定となります。量は多いですが、やることはさほど複雑でないと思います。
今回は、複数台構成とはいえ、シンプルな環境でのインストールでした。次回はNAPT環境下における設定例などをご紹介していきたいと思います。
Photon Serverは簡単に使えますが、奥も深いソフトウェアです。いろいろご紹介していきたいと思っております。こんなことが知りたい!とかリクエストありましたら、ぜひお知らせください。
コメント
0件のコメント
サインインしてコメントを残してください。