この質問は、以下のスレッドに関連して作成されました: [Unable to continue Multiplayer session (with VOIP) during [Content removed]
いつもお世話になっております。
上記のスレッドのように、ListenServerで実行されるマルチプレイヤーシーンをReplaySystemで録画し、マルチプレイ環境の全員で「ホストが再生するPlayback」を視聴するということを実現したいです。
「ホストが再生するPlayback」ということは、ListenServerのホストであるトレーナー側が再生管理を行い、クライアントであるトレーニー側はカメラ操作のみを受け付ける状態を言います。
上記スレッドではインスタントリプレイでの実現で進んでおりますが、こちらの要件として録画したものは後日再生のため保存しておきたいというものがあるため、MemoryStreamerではなくLocalFileStreamerが望ましいと考えております。
現状、ListenServerでReplaySystemをスタートさせることでDemoNetDriverが立ち上がり、マルチプレイヤーシーンを録画することはできました。
このファイルを各プレイヤーは読み込み、それぞれの画面の上で個別にPlaybackすることもできております。
ドキュメントやソースコードを見る限りDemoNetDriverはマルチプレイを模擬しており、視聴プレイヤーをマルチプレイヤーのClient扱いにしてReplicationによるPlaybackを実現しているようですが、このDemoNetDriverのホストに対してListenServerのJoinのように別のアプリケーションインスタンスが参加することは可能なのでしょうか?
もしくはDemoNetDriverと繋がった視聴プレイヤーがプロキシのように働き、ListenServerのホストになって別のアプリケーションインスタンスへ通常のフローでReplicationすることは可能でしょうか?(ソースを見る限り、DemoNetDriverに接続する時点でClientフラグが立ってServerには成れなさそうな気がしています)
以上、よろしくお願いいたします。
英語圏の方へお繋ぎいただき、そして回答していただきありがとうございます。
要件として目指しているものを考えると難しいことが分かりました。
> Another option could be to have all clients recording their own in-memory replays, with the server then sending RPCs or some other replicated data in order to tell clients when to start/stop playback of these instant/ghost replays.
今回の案件は非常に限られた環境のため、挙げられた参考資料のこちらを参考にし、マルチプレイを使わず単純なUDPで独立したアプリケーションインスタンス群を制御しようと思います。
無理難題でお手数をおかけしましたが、ヒントがいただけて非常に助かりました。ありがとうございました!
(下記のリンク先は、本スレッドを英語に翻訳した英文スレッドですが、Epic Games のサポートチームが内部的に使用するものですので、ユーザーの方に利用していただく必要はございません。サポートは、この日本語スレッドに日本語で表示されることになります。)
[Is it possible to “join” the playback of DemoNetDriver using LocalFileStreamer as in [Content removed]
(以下は、サポート担当の Koumandarakis Alex によるコメントを翻訳したものです。)
ご希望されているような機能は Replay System でサポートされておりません。実装するには、カスタムの作業やエンジンの改変が必要となります。以下の関連するスレッドに有用な情報が掲載されているかもしれません。参考になさってください。
[Playing Replays on Dedicated [Content removed]
また、LocalFileStreamer につきましては、以下の関連するスレッドで詳細な情報が得られます。
[Replays and Instant [Content removed]
[Saving InMemory replay to [Content removed]