UDN
Search public documentation:

ReplicationWeaponsJP
English Translation
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 ホーム > ネットワーク & レプリケーション > 武器におけるレプリケーション

武器におけるレプリケーション


武器発砲に関する概要


「Unreal Engine 3」では、武器発砲のロジックはつぎのようになっています。

クライアント (複数も)

  1. ローカルのクライアントのコントローラが Weapon (武器) 内にある StartFire() を呼び出します。
  2. サーバーバージョンの Weapon に対して ServerStartFire() を呼び出すように依頼するとともに、クライアントバージョンの BeginFire() も呼び出すように依頼します。
  3. クライアントバージョンの InventoryManager (インベントリ マネージャ) 内にある pending (処理待ち) 発砲の配列でバイトをセットします。
  4. クライアントバージョンの武器が「アクティブ」なステートにある場合は、クライアントバージョンの武器を適切な発砲ステートに送ります。

サーバー

  1. サーバーがクライアントによって ServerStartFire() を呼び出すように依頼されるか、StartFire() が権限のあるアクタによって呼び出されます。サーバーバージョンの BeginFire() を呼び出します。
  2. サーバーバージョンの InventoryManager (インベントリ マネージャ) 内にある pending (処理待ち) 発砲の配列でバイトをセットします。
  3. サーバーバージョンの武器が「アクティブ」なステートにある場合は、サーバーバージョンの武器を適切な発砲ステートに送ります。

WeaponReplicationTree.jpg

武器発砲停止に関する概要


「Unreal Engine 3」では、武器発砲停止のロジックはつぎのようになっています。

クライアント (複数も)

  1. ローカルのクライアントのコントローラが Weapon 内にある StopFire() を呼び出します。
  2. サーバーバージョンの Weapon に対して ServerStopFire() を呼び出すように依頼するとともに、クライアントバージョンの EndFire() も呼び出すように依頼します。
  3. クライアントバージョンの InventoryManager (インベントリ マネージャ) 内にある pending (処理待ち) 発砲の配列でバイトをクリアします。
  4. クライアント上で武器の発砲を停止します。

サーバー

  1. サーバーがクライアントによって ServerStopFire() を呼び出すように依頼されるか、StopFire() が権限のあるアクタによって呼び出されます。サーバーバージョンの EndFire() を呼び出します。
  2. サーバーバージョンの InventoryManager (インベントリ マネージャ) 内にある pending (処理待ち) 発砲の配列でバイトをクリアします。
  3. サーバー上で武器の発砲を停止します。

Weapon のプロパティ


  • bOnlyRelevantToOwner (オーナー関連に限定) - 武器のレプリケーションがオーナーにだけ関連するため、TRUE にセットします。 他のプレイヤーが使用している武器の状態をプレイヤーが知らなければならない場合はそれほど多くありません。
  • bReplicateInstigator (レプリケート インスティゲーター) - Instigator (インスティゲーター : 起因となるもの) 変数は、シミュレーションが正確であるために一定である必要があるため、TRUE にセットします。
  • bOnlyDirtyReplication (ダーティなレプリケーション限定) - 武器はあらゆるもの (変更されたものもされていなものも) を更新する必要があるため、FALSE にセットします。
  • RemoteRole (遠隔役割) - クライアントが当該アクタをシミュレートできなければならないため、ROLE_SimulatedProxy にセットします

結論


マルチプレイヤーのゲームでは、プレイヤーの武器が 2 つの異なるバージョンとして存在します。一方のバージョンはサーバー上に存在し、他方のバージョンはクライアント上に存在します。レプリケーションによってこれら 2 つのバージョンが維持され、サーバー上で起きていることをクライアントが適切にシミュレートできるようになります。このレプリケーションパターンは、武器について機能しますが、他のあらゆる場合に機能するとは限らないため、注意が必要です。ただし、このレプリケーションパターンが役立つ場合は他にも多数あります。たとえば、mana (マナ) が必要となるスキルなどです。