This document is about: FUSION 2
SWITCH TO

ネットワーク状況のシミュレーション

概要

ローカルでネットワークコードをテストする場合は、常に実際の環境(または実際より遅延やロスが大きい環境)でテストすることが望ましいです。優れたネットワークゲームの設計には、プレイヤー間の矛盾や時間差をどのように隠すかに、多くの時間が費やされます。実際に近い環境でテストすることにより、ネットワークコードにおける実際のプレイヤー体験を把握することができます。

そのためには、実際のインターネット接続環境でテストを実行するか、ローカルでビルドやテストができるような開発パイプラインを整備する必要があります。

Fusionには、ネットワーク状況をシミュレーションする機能が組み込まれており、fusion.dllのデバッグ版で使用することができます。リリース版のDLLを使用している場合は、Clumsy for Windowsのような外部ソフトウェアを使用してください。

組み込みのネットワーク状況機能

Network Conditions Foldout
Network Project ConfigのNetwork Conditionsオプション

組み込みのNetwork Conditionsは、Delay(遅延)とLossの発振器・乱数生成器の組み合わせで動作します。発振器によって、DelayとLossの値が時間と共に変化するシミュレーションや、断続的な輻輳のような非常に悪条件のシミュレーションが可能になります。最小値と最大値を一致させれば、値が変動しない固定値でのテストも可能です。

機能の有効化

  1. NetworkProjectConfig(UnityのメニューのFusion > Network Project Config)を開きます
  2. Network Conditionsという名前の項目を探します(項目が見つからない場合、リリース版のfusion.dllを使用している可能性が高いです。UnityのメニューのFusion > Toggle Debug Dllsから、デバッグ版のDLLに切り替えてください。注意: 変更を反映するために、Unityエディターの再起動が必要な場合があります。)
  3. Enabledを設定して、ネットワーク状況のシミュレーションを有効/無効にします

設定

Network Conditions
人工的な遅延やロスを加えるネットワーク状況設定

Network Conditions

  • Enabled:ネットワーク状況のシミュレーションが有効かどうか
  • Delay ShapeDelayMinDelayMax間の波形パターン
  • Delay MinDelayShapeで返される、パケット遅延の最小値
  • Delay MaxDelayShapeで返される、パケット遅延の最大値
  • Delay PeriodDelayShapeの周期(秒単位)
  • Delay Threshold:しきい値未満の値は0(DelayShapeは0から1で振動)になり、DelayMinが返されます
  • Additional JitterDelayShapeの値に、0からAdditionalJitterの乱数値が追加されます
  • Loss Chance ShapeLossChanceMinLossChanceMax間の波形パターン
  • Loss Chance MinLossChanceShapeで発生する、パケット損失率の最小値(0 = 損失率0%、1 = 損失率100%)
  • Loss Chance MaxLossChanceShapeで発生する、パケット損失率の最大値(0 = 損失率0%、1 = 損失率100%)
  • Loss Chance Threshold:しきい値未満の値は0(LossChanceShapeは0から1で振動)になり、LossChanceMinが返されます
  • Loss Chance PeriodLossChanceShapeの周期(秒単位)
  • Additional LossLossChanceShapeで発生した損失率に、0からAdditionalLossの(正規化された)乱数値が追加されます

ホストモード / サーバーモード

組み込みのNetwork Conditionsは、各ピアでは、指定した値の半分が適用されます。この値は、サーバーとクライアントの両方で適用されるため、結果的に遅延する値は設定とほぼ同じになります。つまり、200msの遅延は、以下のようになります。

  • サーバーは、パケットを約100ms遅延させる
  • クライアントも、パケットを約100ms遅延させる

共有モード

共有モードでは、クライアントは常にPhotonのゲームサーバーにオンラインで接続します。ローカルクライアントでも実際のプレイ環境と同じ体験になるため、テスト時にネットワーク状況をシミュレーションする必要はありません。

ただし、現在の接続状況よりも悪い状況をシミュレーションするために、遅延やロスを追加したいこともあります。共有モードでは、クライアントのみで遅延とロスが適用されるため、設定値の半分しか実際に適用されないことに注意してください。そのため、共有モードでテストする場合は、設定値を2倍にしてください。さらに共有モードでは、オンラインで接続していることで既に自然に発生している遅延に、設定値が追加される形になります。

サードパーティーのソフトウェア

リリース版のfusion.dllを使用している場合でも、ネットワークトラフィックの遅延や障害を発生させるサードパーティー製アプリを使用して、ネットワーク状況をシミュレーションすることが可能です。

Windowsでは、Clumsyが、ネットワーク状況をシミュレーションする最も一般的なサードパーティー製アプリになります。

Clumsy User Interface
Clumsyのユーザーインターフェースと設定

フィルタリング文字列のudp and outboundは、ほとんどのユースケースで機能します。仕様の詳細は、Clumsyのドキュメントをご覧ください。
注意: 使用中のポートとIPアドレスを把握しておく必要があります。

Back to top