そのような大規模ゲームには、違うアプローチが必要になります。それを提供するために私たちが作成したのがレプリケーション グラフ プラグインです。レプリケーション グラフは、大規模なマルチプレイヤー ゲームにもうまく対応できます。その理由は、冗長な作業を減らし、常に再計算するのではなくデータをキャッシュすることによって、サーバー側の CPU 問題を緩和できるからです。このことは、一つには、そのアクタがゲームにおいて何をするのか、他のアクタとどのような関係性をもっているのかに応じてアクタの扱い方を変えることによって可能になりました。そして、それとともに、複数のアクタ、複数のクライアントによって使えるデータ、さらには複数のフレームにまたがって使えるデータを保存することによって実現することができました。

レプリケーション グラフ プラグインによって、ネットワーク レプリケーションをカスタマイズすることが可能になり、従来のレプリケーション戦略では実現不可能な大規模マルチプレイヤー ゲームの制作が可能になる。
レプリケーション グラフはどのように機能するのか
The レプリケーション グラフには、一連のレプリケーション グラフ ノードが含まれています。このノードによって、必要に応じて各クライアントにレプリケートすべきアクタのリストが作成されます。これらのノードは、持続的なオブジェクトであるため、複数のフレームにまたがってデータを保持が可能であり、また、クライアント接続間で共有されることが可能です。ノードは、各フレームにおいて各接続のために各アクタを評価するのではなく、比較的小さなデータを使います。このような、持続的で、共有可能なデータセットを使うため、レプリケーション グラフ システムは、クライアントのためのレプリケーション リストをすばやく作成することができるとともに、大規模マルチプレイヤーゲームに十分に対応することが可能です。
このシステムでは、接続とアクタにとってより一貫性のあるデータ構造が提供されているため、関連するデータを抜き出し、パイプラインの次の段階にすばやく移行させることが可能です。
レプリケーション グラフ プラグインがあれば、アクタをどのクライアント接続にレプリケートすべきか判定することができます。それにより、いつ、どのようにアクタ チャンネルを開くか、それらのチャンネルのアクタをいつレプリケートすべきか、いつそれらのチャンネルを閉じるべきか、ということに関してカスタマイズすることが可能になります。ひいては、生産性を向上させ、余計なものを除去できることになります。
レプリケーション グラフのノード

フォートナイトのレプリケーション グラフのレイアウト概要
レプリケーション グラフのノードは、さまざまなタスクを処理するために分割されており、ゲームがどのように動作するかという固有の情報を使って書くことができるものです。ノードの中には、プレイヤーの状態を記録するリストを保持するものもあれば、常に関連性のあるレプリケーションを記録するもの等があります。これらのタスクを異なるノードに分けることによって、レプリケートされる必要があるものを効率よく整理し、オーバーヘッドを除去することが可能です。たとえば、Grid Spatialization 2D というノードは、ワールドを複数のグリッドセルに分割し、各セルから見えるアクタのリストを保持します。この機能によって、クライアントは各アクタの距離チェックをする必要がなくなります。現在占められているグリッドセルをルックアップして、可視的になっているアクタのリストをコピーするだけで済むからです。適切なノードでアクタを登録することによって、ゲームにおける役割に最も理にかなったやり方で、アクタをレプリケートすべきかどうかの判定が可能になります。
結び
ワールドには、100 人 (以上) のクライアントが接続していて、数千ものアクタが配置されている ― そのようなゲームを制作するのであれば、レプリケーション グラフ システムを使うことによって、かつてないほど効果的な最適化への道が開け、オンライン上でスムースに動作する大規模マルチプレイヤーゲームの制作が可能になります。
このプラグインは、現在アーリーアクセスの状態にあります。将来、API の小規模な変更が行われる可能性があるためです。このシステムは、大規模なゲームを制作している上級ユーザーのみを想定しています。しかしながら、コードは安定していて、多くのテストに耐え、フォートナイト バトルロイヤルの一部として実際に使用されています。直接このシステムを利用したい場合は、ここをクリックして、プロジェクトで有効化する方法についての説明をお読みください。あるいは、ShooterGame サンプル (Epic Games Launcher で入手できます) を参考にしてください。このサンプルには、フォートナイトで使われているレプリケーション グラフと同様のものが同梱されています。
さらに詳細な情報が必要な場合は、Epic の Replication Graph のドキュメンテーションをお読みになるか、以下のライブストリームをご視聴ください。