私の問題はかなり複雑で、潜在的に不可能ですが、ここに行きます:
C++ を使用して、現在、私のゲーム プロジェクト用のユニバーサル サーバー エンジンに取り組んでいます。エンジンのすべての部分が起動後に動的にロードされるため、ユニバーサル。これで、ゲーム オブジェクトもベース オブジェクトから継承され、「シミュレート」関数がオーバーロードされます。そうすれば、すべてのオブジェクトが固有の動作を持ち、解釈された lua スクリプト ファイルよりもはるかに高速な「C++ スクリプト」と呼ばれる処理を実行できます。また、よりダイナミックです。(「動的リンクを忘れてください、それは正気ではありません」のように、C++の「スクリプト」部分を殺すような解決策はしないでください。私は大きなボクセルマップを扱っているので、このパフォーマンスの向上は完全に必要です)
私の問題:
それは確かにたくさんの.dll / .soファイルであり、それらを単純なアーカイブにパックしたかったので、上記のソースコードでzlibを使用し、おそらくすべてをテクスチャとサウンドとともに小さな「オブジェクトパッケージ」にパックできます。現在、Windows DLL API と Linux SO API では、メモリ アドレスから dll/so ファイルを読み込むことができません。それらのファイルは数百から数千あり、ロード時間が大幅に増加するため、これらのファイルをファイルシステムに解凍して一時的に保存する必要はありません。また、ブーストのような外部依存関係には興味がありません。
だからここに私の質問があります:
実際のパスを使用してメモリ内に仮想ファイルを作成するためのクロスプラットフォームの方法はありますか? そうすれば、HDD の遅い IO 速度を回避できます。
それとも、最新のオペレーティング システムのファイル バッファは、これらのファイルをすべてディスクに書き込めないほど高速でインテリジェントであるため、一時ファイルを使用することはそれほど大したことではないのでしょうか? (実際、Linux は仮想ファイル システムをサポートしていますが、Windows はサポートしていません...)
皆さんが私を助けてくれることを願っています:)