[解決済み] ゲームにおけるリプレイの概念的な仕組みについて教えてください。
2022-05-04 16:47:05
質問
リプレイがゲームにどのように実装されるのか、ちょっと気になりました。
当初は、ゲーム内で行われたすべてのプレイヤー/aiのアクションをコマンドリストとして記録し、ゲームを「再プレイ」してエンジンに通常通りレンダリングさせるだけだと考えていました。しかし、FPS/RTSゲームのリプレイを見てみると、パーティクルやグラフィック/オーディオのグリッチといったものまで、注意深く調べると一貫性があります(そして、それらのグリッチは一般的に で が一貫している)。
では、どのように実現しているのでしょうか。カメラアングルが固定されたゲームでは、シーン全体のすべてのフレームをストリームに書き込んで保存し、そのストリームを再生するだけかもしれませんが、一時停止したりカメラを動かしたりできるゲームではそれでは不十分なようです。シーン内のすべてのものの位置を、すべての時点で保存しなければならないのです(違うか)。パーティクルのようなものでは、大量のデータをプッシュすることになり、プレイ中のゲームのパフォーマンスに大きな影響を与えるように思われます。
どのように解決するのか?
最初のお考えは正しかったと思います。 リプレイを作成するには、ユーザーから受け取ったすべての入力(それを受け取ったフレーム番号も含む)と、任意の乱数ジェネレータの初期シードを保存します。 ゲームをリプレイするには、保存したシードを使用してPRNGをリセットし、ゲームエンジンに(フレーム番号に同期した)同じ入力シーケンスを送ります。 多くのゲームでは、フレーム間の経過時間に基づいてゲームの状態が更新されるため、各フレームの長さも保存する必要がある場合があります。
関連
-
[解決済み] シングルトン・パターンの欠点やデメリットは何ですか?[クローズド]
-
[解決済み】クラスの命名 - すべてを"<WhatEver>Manager "と呼ぶのを避けるには?[クローズド]
-
[解決済み】関数型プログラミングはGoFデザインパターンに取って代わるか?
-
[解決済み】インターフェイスを作成するタイミングはどのように判断するのでしょうか?
-
[解決済み】MVCにおけるビジネスロジック【終了しました
-
[解決済み] [Builder Design パターンと Factory Design パターンの違いは何ですか?[クローズド]。
-
[解決済み] コード内のスイッチをなくす方法【非公開
-
[解決済み] シェルスクリプトのデザインパターンやベストプラクティス [終了しました]。
-
[解決済み] BridgeパターンとAdapterパターンの違い
-
[解決済み] ServiceLocatorはアンチパターンか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 静的クラスとシングルトンパターンの違い?
-
[解決済み] デザインパターンについて。シングルトンはいつ使うべきですか?
-
[解決済み】クラスの命名 - すべてを"<WhatEver>Manager "と呼ぶのを避けるには?[クローズド]
-
[解決済み】リレーショナルデータベースデザインパターン?[クローズド]
-
[解決済み】ファサードデザインパターンとは何ですか?
-
[解決済み] [Builder Design パターンと Factory Design パターンの違いは何ですか?[クローズド]。
-
[解決済み] テンプレート方式とストラテジーパターンの違いは何ですか?
-
[解決済み] コード内のスイッチをなくす方法【非公開
-
[解決済み] クロスカットの懸念事項の例
-
[解決済み] リポジトリとサービスの違い?