Choose your operating system:
Windows
macOS
Linux
Oodle Network は、ネットワーク ストリームの圧縮システムを公開しています。これのプロジェクトへの統合は、他の Oodle ソリューションと比較して少し実践的な作業となるため、パケット キャプチャ、「BaseEngine.ini
」の知識、およびオフラインでのコンプレッサの「トレーニング」が必要となります。また、Oodle Network は、圧縮時間を劇的に早くするためにオフライン トレーニング ステップも使用します。
Oodle Network を設定する
以下は、Oodle Network を使用するために必要な手順の要約です。
Oodle Network プラグインが有効になっていることを確認します。
可能な限り最もリアルなデータを使用して、オンライン ゲームプレイのパケット データをキャプチャします。
コンプレッサをトレーニングし、実行時に使用する辞書ファイルを作成します。
これらのファイルを使用するように Oodle Network を構成します。
これらのファイルがゲームにパッケージ化されていることを確認します。
これらの手順の詳細については、以下のセクションを参照してください。
Oodle Network を有効にする
プラグイン自体はデフォルトで有効になっており、起動ログに次のように記録されているはずです。
LogPluginManager:Mounting plugin OodleNetwork
ただし、ネットワーク ストリームを操作する場合は、このプラグインを使用するように Unreal Engine に指示する必要があります。これを行うには、「BaseEngine.ini
」ファイルの次の 4 つの場所を編集します。
[GameNetDriver PacketHandlerProfileConfig]
+Components=OodleNetworkHandlerComponent
[PendingNetDriver PacketHandlerProfileConfig]
+Components=OodleNetworkHandlerComponent
[DemoNetDriver PacketHandlerProfileConfig]
+Components=OodleNetworkHandlerComponent
[PacketHandlerComponents]
Components=OodleNetworkHandlerComponent
これらの変数により、Unreal Engine はネットワーク ストリームに Oodle Network を使用するようになります。最初の 3 つのエントリは、関連するネット ドライバのコンポーネントを指定します。特定のネット ドライバにコンポーネントが指定されていない場合、Unreal Engine は PacketHandlerComponents
セクションをチェックします。
パケット ハンドラはアクティブな接続でのみ作成されるため、デバッグ時には、実際のクライアントに接続してコードレベルのデバッグを行わないといけない場合があります。
さらに、Oodle Network は、構成のために次の「BaseEngine.ini
」ファイル ブロックを探します。
[OodleNetworkHandlerComponent]
bEnableOodle=true
PacketLogFile=PacketDump
ServerDictionary=
ClientDictionary=
ServerEnableMode=AlwaysEnabled
ClientEnableMode=AlwaysEnabled
設定 |
説明 |
---|---|
bEnableOodle |
false に設定すると、Oodle はデータを圧縮しません。 |
PacketLogFile |
パケットデータをキャプチャ するときに書き出すファイル名のプレフィックスを定義します。 |
ServerDictionary |
トレーニング ステップで作成されたサーバー側の辞書ファイルへのパス。ゲームをパッケージ化するときは、このファイルを含める必要があります。 |
ClientDictionary |
トレーニング ステップで作成されたクライアント側の辞書ファイルへのパス。ゲームをパッケージ化するときは、このファイルを含める必要があります。 |
ServerEnableMode |
メモリに制約のある特定のプラットフォーム向けに、圧縮を条件付きで無効にする方法を提供します。 オプション:
|
ClientEnableMode |
メモリに制約のある特定のプラットフォーム向けに、圧縮を条件付きで無効にする方法を提供します。 オプション:
|
パケット データをキャプチャする
パケット キャプチャは、特別なモードで Oodle Network を有効にしてゲームをプレイすることによって行われます。これらパケット キャプチャの品質は取得する圧縮の品質に影響を与えるため、一般的かつ代表的なプレイをキャプチャする必要があります。
サーバーとして機能している実行ファイルは、次のように -OodleCapturing
を使用して実行する必要があります。
UE4Editor.exe ShooterGame -game **-OodleCapturing** -windowed -log
クライアントは、次のように -OodleCapturing
なしで接続する必要があります。
UE4Editor.exe ShooterGame -game -windowed -log
パケット キャプチャは、プロジェクトと設定のために Saved/Oodle
ディレクトリに書き込まれます。トレーニングに適切かつ代表的なデータセットを作成するには、多くのパケット キャプチャ (50 MB 以上) を収集する必要があります。トレーニングは、ディレクトリ内のすべてのパケット キャプチャを使用して行われます。
トレーニング
Oodle Network トレーナーは、すべてのパケット キャプチャを読み取り、それらから辞書を作成するコマンドレットです。これらの辞書は、サーバーとクライアント間のネットワーク ストリームを圧縮するために使用されます。
次は、トレーナーのコマンドレットを実行するためのコマンドです。
UE4Editor.exe ShooterGame -run=OodleNetworkTrainerCommandlet AutoGenerateDictionaries -CompressionTest
デフォルトの辞書サイズは 4MB ですが、これは -DictionarySize=(size in bytes)
コマンドライン オプションで上書きできます。
トレーナーは、Oodle Network がパケット キャプチャを書き込むのと同じディレクトリからパケット キャプチャを読み取り、結果の辞書を次の「Content/Oodle
」ディレクトリに書き込みます。
Content/Oodle/ShooterGameInput.udic
Content/Oodle/ShooterGameOutput.udic
ログは、生成された辞書で達成された圧縮率を次のようにレポートします。
OodleNetworkHandlerComponentLog:Compression test results:
OodleNetworkHandlerComponentLog: - CompressionTestPackets:380, Size:10428 (~0MB)
OodleNetworkHandlerComponentLog: - Uncompressed:10428 (~0MB), Compressed:6699 (~0MB)
OodleNetworkHandlerComponentLog: - Total Savings:35.759495
この時点で、トレーニングは完了です。
ゲームがかなりの頻度でパッチを変更する場合は、新しいパケット キャプチャで Oodle Network を再トレーニングし、パッチを使用して新しい辞書をリリースする必要があります。
構成する
サーバー側とクライアント側の辞書は、「BaseEngine.ini
」ファイルで次のように指定する必要があります。
ServerDictionary=Content/Oodle/ShooterGameOutput.udic
ClientDictionary=Content/Oodle/ShooterGameInput.udic
構成が完了すると、 stat OodleNetwork
コマンドが使えるようになり、統計が有効になっているゲームでリアルタイム圧縮率を表示できるようになります。
パッケージ化
辞書ファイルは、ターゲット プラットフォームで Oodle Network が有効になっている限り、自動的に追加されます。これを確認するには、pak ファイルの内容を一覧表示し、関連するエントリを次のように検索します。
UnrealPak.exe Path\To\ShooterGame\Saved\StagedBuilds\WindowsNoEditor\ShooterGame\Content\Paks\ShooterGame-WindowsNoEditor.pak -list
...
LogPakFile:Display:"ShooterGame/Content/Maps/ShooterEntry_BuiltData.uasset" offset:326025216, size:735 bytes, sha1:BF611DF661BA7260E086145D328AC09E9E1149FB, compression:None.
LogPakFile:Display:"ShooterGame/Content/Maps/ShooterEntry_BuiltData.uexp" offset:326026004, size:286 bytes, sha1:44DB46D2C5EC43395C2659E97D4B94DCE0064E6A, compression:Oodle.
LogPakFile:Display:"ShooterGame/Content/Oodle/ShooterGameInput.udic" offset:326027264, size:46416 bytes, sha1:95EE01894C1E72CD12105652186515573E42C3FE, compression:Oodle.
LogPakFile:Display:"ShooterGame/Content/Oodle/ShooterGameOutput.udic" offset:326074368, size:24339 bytes, sha1:EE0602B1263815475FE75BA5D953D7A7963CAF71, compression:Oodle.
LogPakFile:Display:"ShooterGame/Content/ShaderArchive-Global-PCD3D_SM5.ushaderbytecode" offset:326100992, size:5427343 bytes, sha1:129EED3E7BB14E54ACEB72F4A5D813CD1F8E5FA6, compression:None.
...
暗号化キーの取得中にエラーが発生した場合は、このテストで -skipencryption
を使用してパッケージ化してみてください。