This document is about: FUSION 2
SWITCH TO

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

概要

ローカルでテストする場合には常に、現実的な状況または現実よりも遅延やロスが発生した状況下でのネットワークコードのテストが好ましいです。優れたネットワークゲーム設計の難しさの多くは、プレイヤー間の矛盾や時差をどのように隠すかという点にあります。これにより、コードベースで生まれる実際のプレイヤー体験を把握できます。

このため、テストは実際のインターネット接続で実行するか、または開発パイプラインでローカルでのビルドやテストが必要な場合にはシミュレーションを実行する必要があります。

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

組み込みのネットワーク状態

network conditions foldout
ネットワークプロジェクトConfig内のネットワーク状態オプション

組み込みのネットワーク状態は、Delay(遅延)とLossの発振器とランダム値ジェネレーターの組み合わせで動作します。これらの発振器は(断続的な輻輳のような非常に悪いインターネット条件のシミュレーションを可能にするために)時間の経過とともに変化する値を使用してDelayとLossのシミュレーションを可能にします。発振よりも固定値を優先するには、MinとMaxの値を一致させます。

ネットワーク状態の有効化

  1. NetworkProjectConfig (UnityメニューではFusion > Network Project Config)を開きます。
  2. 「ネットワーク状態」という名前の見開きを探します。
  • 見開きが見えていない場合、プロジェクトはおそらく_release_ fusion.dllを使用しています。この場合は、Unityメニュー Fusion > Toggle Debug Dllsでデバッグdllに切り替えてください。__注:__変更を有効化するには、Unity Editorの再起動が必要な場合があります。
  1. Enabledをトグルし、ネットワーク状態のシミュレーションを有効または無効にしてください。

設定

network conditions
人工的な遅延やロスのためのネットワーク状態設定。

ネットワーク状態

  • Enabled: 不利なネットワーク状態がシミュレーションされている場合。
  • Delay Shape: DelayMinDelayMaxの値を振動させるために使用されるパターン。
  • Delay Min: DelayShape発振器から返されるパケット遅延の最小値。
  • Delay Max: DelayShape発振器から返されるパケット遅延の最大値。
  • Delay Period: 発振器の周期(遅延が振動するレート、秒単位)。
  • Delay Threshold: DelayShapeは0から1の間で振動します。このしきい値未満の値はゼロに減少し、DelayMinと等しい値が生成されます。
  • Additional Jitter: DelayShape発振器からの遅延値が決定された後、0からAdditionalJitterまでの追加のランダム値が遅延時間に追加されます。
  • Loss Chance Shape: LossChanceMinLossChanceMaxの値を振動させるために使用されるパターン。
  • Loss Chance Min: LossChanceShape発振器が生成する損失率の最低値。0 = 0% の損失の確率。1 = 100% の損失の確率。
  • Loss Chance Max: `発振器が生成する損失率の最高値。0 = 0% の損失の確率。1 = 100% の損失の確率。
  • Loss Chance Threshold: LossChanceShapeの波は0から1の間を振動します。このしきい値未満の値はゼロに減少し、LossChanceMinと等しい値が生成されます。
  • Loss Chance Period: LossChanceShape発振器の周期 (遅延が振動するレート、秒単位)。
  • Additional Loss: LossChanceShape発振器によって損失率の値が生成された後、0からAdditionalLossまでの追加のランダム値が(正規化された)損失率に追加されます。

ホストおよびサーバーモード

組み込みのネットワーク状態は、各ピアで指定された値の1/2を生成します。サーバーとクライアントの両方がこれらの値を適用し、結果として遅延の合計が設定とほぼ等しくなります。つまり、200msの遅延は以下のようになります:

  • サーバーはパケットを約100ms保持し、
  • クライアントは自身のパケットを約100ms保持します。

共有モード

共有モードでは、クライアントは常にPhotonゲームサーバーにオンライン接続します。共有モードでテストする場合、ローカルクライアントは実際のオンラインプレイを見ているためネットワーク条件をシミュレートする必要はありません。

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

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

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

Windowsでは、不利なネットワーク状況のシミュレーションに使用するサードパーティーアプリとしてClumsyがもっとも一般的に推奨されます。

clumsy user interface
Clumsyのユーザーインターフェースと設定

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

Back to top