こんなTweetがあった
リプレイ保存の仕組みって、コントローラー情報を直接メインループで見るんじゃんなくて、プレイヤークラス的なのを作ってそこからメインループにコマンド送るようにしておけば、コマンドデータを保存するだけでプレイを再現できるようになるから。
— いたのくまんぼう・Unity入門書発売中 (@Kumanbow) 2018年5月20日
これ乱数について質問があったので補足。
— いたのくまんぼう・Unity入門書発売中 (@Kumanbow) 2018年5月21日
敵の動きとかゲームに関わるところはシードから生成する再現性のある乱数を使います。そうすればシードとコマンドデータでゲームプレイを再現可能です。
あと、演出などエフェクトで使う様に別にもう一つ乱数持っておくと色々取り回しが楽です。
仮想のプレイヤークラスからコマンド情報を送信すると同じプレイを再現出来るって話です。
これってWebテストフレームワークの文脈で行くとSeleniumも同じようなことやっているなーという気持ちになり。
いわゆる一般的な業務システムとゲームシステム(主にクライアント側)って結構各々独自の進化をしてきたんですが、だんだん同じ道を歩いている部分があり、そこの垣根や重なる部分が絶対あるはずで、そこを歩み寄れたり、お互いの長所を取り込めたら幸せなことがあるんじゃないかなと思ったりした。
雑記として今日書きたかったことはそんな感じです。