ゲームを開発している際、様々な問題が発生する。
例えば、ネットの回線問題、サーバー側&クライアント側の問題、ゲーム内のロジック等。
問題が発生した際、どの部分が原因なのかを把握する必要がある。
今回はデバッグとデバッグのためのいくつかの検出方法を紹介。
問題が発生した際、より迅速かつ明確に解決策を示し、より時間の節約ができる目的とする。
本編で紹介する内容:
- Photon Cloud 関連問題
- PUN 開発関連問題
- Debug Console Logging / Logger
- Network Simulation / States
- タイムアウトの原因分析フロー
- 問題発生時、素早い対応をもらうために必要なもの
*Photon Cloud 関連問題
1.PhotonCloudの稼働状況については以下で確認。
https://www.photonengine.com/ja-JP/status
2.「同じ部屋に入れない」場合
その際は、リージョンの確認を行う。PhotonCloudは同じリージョンに接続しないとマッチングできないため。
Photon Server Settings を確認すると
- Fixed Region
- Dev Region
- Best RegionPreference: Reset / Edit WhiteList
ビルドの種類:
- Release Build :
- Fixed Regionに値を入れると優先的に該当リージョンに繋がる
- Best Regionを利用(最適なクラウドへ自動的に接続する)
- Best Regionは、Photon Dashboardで「ホワイトリスト」を設定することも可能。これは、クライアントが設定した特定のリージョンのサーバーにのみ接続できることを意味する。
- Dev Build :
- Development Build 時, Dev Regionの中に設定しているリージョンに繋がる
- もしくは Best Region.
Dev Regionの設定は、迅速な開発とテストを簡単に行えるためにある。特に、特定のリージョンでテストする場合は、Krなどのテストするリージョンを入力するだけ。
これらの3つの設定方法、Fixed Region / Dev Region / Best Regionを組み合わせれば、簡単に開発毎、バージョン毎異なる設定、展開と異なるリージョン毎に使う事ができる。
■Debug Console Logging / Logger
- Network Logging
- PUN Logging
- Support Logger
Network Logging
Photon Libraryが提供するネットワーク接続プロセスと現在のステータスを表示し、Low level(Transport Layer)に関する情報が含まれている。通常はErrorを選択することをお勧めし、問題が発生した際、[Info]を選択すればより多くの情報が確認できる。
PUN Logging
PUNが提供するネットワーク接続プロセスと現在のステータスを表示。通常は[Error Only]を選択し、問題が発生した際、[Full]を選択して全てのPUN接続ログを確認する事をおすすめする。
Support Logger
最も一般的に使用されるデバッグ情報を記録するために使用されている。 Photon関連の問題を追跡するのにとても便利である。例えば、AppId、バージョン、リージョン、サーバーIP、及びコールバック内容はNetwork / PUN Loggingと一緒に表示される。
■Network Simulation / States
Photon → PhotonUnityNetworking → UtilityScripts → Debugging
上記の場所に3つのGUIツールがある :
- Photon Lag Simulation GUI
現在の接続状態を標準値とし、ネットワークが不安定の際にゲームロジックが許容範囲なのか、ゲームがどのような影響を受けるのかをシミュレートするため、リリース前の最適化(エラーの確認、削減)処理をする事ができる。
- Photon Stats GUI
ネットワークパケットによって送信されたBytes / Countなどの統計、予想された送信状況との違いや異常の有無が確認でき、おおよそのネットワークトラフィック(コスト)などを見積もるのに便利。 - States GUI
細かいオプションを提供、インスペクターでenable/disableの設定ができ、ゲーム画面にネットワーク関連の情報やクイック操作の小さな機能が表示できる。
■切断問題の分析手順
- Client Logs/ Server Logsの確認
- SupportLoggerを利用
- 他のプロジェクト、またはPhotonが提供するデモ/サンプルを試す
- 他のサーバーまたはリージョンを試す
- 別のネットワーク接続/通信プロバイダーを試す
- 他のPorts ( 5055 →27001 )を試す
- CRCチェックをする
1.Client Logs / Server Logsの確認
最も行う必要のある最初のチェック項目である。全てのクライアントには、通常、内部状態の変化と問題に関するログ情報を提供するいくつかのコールバック関数がある。この情報を記録する必要があり、問題が発生した際にチェックをすることができる。通常、APIドキュメントには、これらの操作方法とコードの説明がある。セルフホストのサーバーの場合、サーバーのログ情報も確認する必要がある。
2.Support Loggerを利用
「詳細情報記録」を開くと、ネットワーク伝送プロセスを知ることもできる。
3.他のプロジェクト、またはPhotonが提供するデモ/サンプルを試す
Photonの全てのクライアントSDK(PUNなど)には、いくつかのデモ/サンプルが含まれている。Unity Buildを使用して実行可能ファイルを生成、対応プラットフォームにビルドし、Photonのデフォルトの動作モードを理解することができる。デモ/サンプルも機能しない、もしくは失敗する場合は、Photon SDKの問題ではなく、ネットワーク接続(環境)に問題がある可能性がある。
4.他のサーバーまたはリージョンを試す
Photon Cloudを使用すると、Jp、Kr、その他のアジアリージョンに簡単に切り替えることができる。また、Eu / Usに切り替えて、他のリージョンと一貫性のない動作があるかどうかも確認する事ができる。
5.別のネットワーク接続/通信プロバイダーを試す
特定のハードウェアがネットワーク接続障害を引き起こす場合がある。その際、他のWiFi、ルートルーターなどを使用して、元のデバイスを確認するか、他のデバイスが上手く機能するかどうかを確認する。
6.他のPorts ( 5055 →27001)を試す
2018年初めから、Photon Cloudに新しいポート範囲が追加された。つまり、元の5055〜5058の代わりに27000から始まるポートが使える。
一部のクライアントSDKでは、サーバー/クラウドのポート番号を手動で置き換える必要がある 例えば:
-
-
- Name Server のポートは27000(以前5058)
- Master Server のポートは27001(以前5055)
- Game Server のポートは27002(以前5056)
-
7.CRCチェックをする
クライアントとサーバー間の伝送中にパケットロスが発生する場合がある。特にネットワークが混雑している場合は、その可能性が高くなる。
Photonの各パッケージにはオプションのCRCチェックがあり、処理にCPU時間が必要なため、デフォルトでは無効にしている。クライアントでCRCチェックが有効になっていると、サーバー/クラウドもパケットの送信時にCRCが自動的に動作する。
CRC Checks の方法
loadBalancingClient.LoadBalancingPeer.CrcEnabled = true;
クライアント側で追跡し、CRCチェックを有効にした後にパケットロスの数を確認することもできる。使用方法:
var packetLossByCRC = LoadBalancingPeer.PacketLossByCrc;
■まとめ:
上記は、デバッグ、ネットワークシミュレーション、および一般的に使用される検出方法と手順の一部である。これらの方法やツールを活用し、開発に費やす時間を減らしてより重要なことにもっと時間を使えればと思う。
コメント
0件のコメント
サインインしてコメントを残してください。