私は最近、ゲームでフレームレートのジッターの問題に対処していますが、最適な解決策は、クラシックなFix Your Timestepで Glenn Fiedler(ゲームのGaffer)によって提案されたものだと思われます!記事。
今-私はすでに更新のために固定タイムステップを使用しています。問題は、レンダリングのために提案された補間を行っていないことです。その結果、レンダリングレートが更新レートと一致しない場合、フレームが2倍またはスキップされます。これらは視覚的に顕著です。
それで、ゲームに補間を追加したいと思います-そして、これをサポートするために他の人がどのようにデータとコードを構造化したか知りたいです。
明らかに、レンダラーに関連するゲーム状態情報の2つのコピーを(どこで/どのように)保存する必要があります。
さらに-これはスレッドを追加するのに適した場所のようです。更新スレッドはゲーム状態の3番目のコピーで動作し、他の2つのコピーをレンダリングスレッドの読み取り専用のままにしておくことができると思います。(これはいい考えですか?)
-ゲームの状態の二、三のバージョンを持つことは、パフォーマンスを紹介してできているようですはるかにもっと重要なこと-信頼性と開発者の生産性の問題を、単に1つのバージョンを持つに比べて。ですから、私はこれらの問題を軽減する方法に特に興味があります。
特に注意すべきなのは、ゲームの状態に対するオブジェクトの追加と削除の処理方法の問題です。
最後に、いくつかの状態はレンダリングに直接必要ではないか、異なるバージョン(たとえば、単一の状態を保存するサードパーティの物理エンジン)を追跡するのが難しすぎるようです-そのため、どのように知りたい人々はそのようなシステム内でそのようなデータを処理しました。