現時点では、私はゲームパッドの状態を構造体に記録し、これを状態のリストに格納してビデオゲームの期間の入力を記録するシステムを持っています。パッドの完全な状態は1フレームあたり192ビットを占めますが、これは少し無駄です。例えば、パッド上のアナログトリガが押されていない場合でも、記憶装置にはそれぞれ32ビットアップがかかります。だから明らかに私はいくつかのスペースを節約しようとしています。メモリを浪費するのを避ける方法
これをNULLに設定しようとしましたが、マッチの終わりにシステムが保存するバイナリファイルのサイズには影響しません。
特定の値を記録または保存するだけで、データ構造の整合性を保持する必要がある場合は、どのような方法がありますか?
編集:
解決策が見つかりました。一種の以前は、構造体のSystem.Nullableで標準のfloatをオーバーライドしてNULLに値を設定しようとしました。私の考えは、構造体のNULL値にこれを設定するとはるかに小さいシリアル化されます。私はNULLが4bitsとして記録されているという印象を受けています。もっとそうかもしれない、それはおそらくそうである。とにかく、私が以前に持っていたコードは、はっきりと明白な欠陥を持っていたので、私は戻ってそれをもう一度修正しました。今私ははるかに小さなリプレイを得ているし、正確さも同じように思えるので、私はNULLトリッキーが何かを適切にやっていると仮定するつもりです。
私が定期的に書いた問題は、バイナリファイルを保存していることです。 Appendモードを使用してファイルに書き込むことはできますが、正しく再生されません。最初の書き込みが発生した時点で停止し、それ以降は何も再生しません。また、添付ファイルが巨大であることがわかりました。これはまだ進行中の作業です。私はちょうど一度に1つずつねじれを打ち抜こうとしています。 –
リプレイ機能のようなものは面倒な作業です。なぜなら、最も細い間違いが他のものを邪魔するからです。ストリームに問題があり、ディスク上にデータを書き込む場合は、データストリームをメタデータとデバッグ情報でインターリーブして、問題の検出に役立ちます。そのストリームに何を入れるのか非常に熱心であれば、データ量は非常に速くなりますが、60 FPSですが、その速度でゲーム入力ループを実行する必要がありますか?しばしば、低い周波数でのバッファリングされた入力アプローチは、良い結果と同じ結果をもたらしますが、コストは低くなります。 –
現時点で私が作っているシステムは、実際に私が論文のためにまとめている概念の証明です。私が分で持っている録音方法はうまくいきますが、明らかに主題に関して作られ議論される改善があります。残念ながら、少なくともゲームの観点からは、リプレイのための入力録音はあまりありません。私が見つけたのはむしろあいまいなので、暗闇の中で乱暴に刺されています。私はゲームのアップデートのスピードを減らす一見を持っているでしょう。アイデアをありがとう。 –