emotionサイトトップ >
UE(アンリアルエンジン)備忘録 >リプレイシステムがクッソ面倒
想像はしていたけどリプレイシステムがクッソ面倒。
レコーディングシステムというのが一応用意されていて、各アクターの情報を記録して、リプレイモードを作ってその記録されたデータを使って再現するというもの。
データ記録にはDemoNetDriverやシーケンサーレコーダーを使用する。
昔グランツーリスモ1をBleem!というエミュレーターでプレイして、リプレイをすると動作がバグる事がありました。
単純にユーザー入力情報を記録して、リプレイモードではその入力情報を使って再現させていたのですが、PC上で動作させる事でフレームレートが異なっていたりでタイミングがズレてまともにリプレイが再現出来ないという現象が発生していました。
それを見てリプレイというシステムの仕組みをなんとなく理解はしていましたけど、これが結構大変。
市販のゲームでリプレイを早戻しした場合に、逆再生中にエフェクトが発生したなったり、順再生中に発生したエフェクトが残ったままになる事を確認出来ますが、リプレイシステムの仕組み上色々と難しいのでそういう所は妥協するしか無いんでしょうね。
それから膨大なデータを記録しているので、メモリにも気を使う必要があります。
だからレースゲームでもリプレイ記録が出来る上限が10分とか制限されているんですよね。
マジで最適なリプレイシステムを考えるのにもう3日ぐらい考えていて全然進んでいませんw
ゲーム制作ってマジで難しいですよね。
DemoNetDriverを使用したら簡単に実装出来ましたw
ただ、公式リファレンスが分かり難くて初見刹し過ぎます。
一度実装して動作するレベルまで持っていけてから、リファレンスの内容がちょっと分かるようになります。
ただ 疑似ローカルサーバーみたいな感じでリプレイしているので、基本的にマルチプレイゲームを作成するような調整が必要。
動的にスポーンするアクターはレプリケートしなければならないし、Owner No Seeはレプリケートされないのでリプレイ中に切り替えるにはどうすればいいのやら・・・とにかく資料が無さ過ぎて手探りで調べる事が多い。
結論。
自前で入力情報を記録して、リプレイ時に記録した入力情報で再現させる方が痒いところに手が届く。
面倒だけど現状ではそうするしか無い・・・というかDemoNetDriverの情報もドキュメントのあまりにも無さ過ぎて、「あれをしたい」と思った時に何も出来なくてお手上げになります。
自前で作成したシステムなら、やりたい事を実現する際に確実に作成出来ますからね。
- 関連記事