我的问题非常复杂,可能是不可能的,但我们开始吧:
使用 C++,我目前正在为我的游戏项目开发通用服务器引擎。通用,因为引擎的每一部分都会在启动后动态加载。现在,游戏对象也将从基础对象继承并具有重载的“模拟”功能。这样,每个对象都会有它特定的行为,我可以做一些我称之为“C++ 脚本”的事情,这比解释的 lua 脚本文件快得多。它也更加动态。(请不要使用会杀死 c++“脚本”部分的解决方案,例如“忘记动态链接,这太疯狂了”。这种性能提升是完全必要的,因为我正在使用大型体素贴图)
我的问题:
这确实是很多.dll/ .so 文件,我想将它们打包到一个简单的存档中,这样我就可以在所述源代码上使用 zlib,并且可能将所有内容与纹理和声音一起打包在小的“对象包”中。现在 Windows DLL API 和 Linux SO API 不允许我从内存地址加载 dll/so 文件,这很可惜。(我就在那儿,还是可以绕过它?:))我不不想解压缩并将这些文件临时保存在文件系统上,因为它们有成百上千个,这会大大增加加载时间。此外,我对更多的外部依赖项(如 boost)不感兴趣。
所以这是我的问题:
是否有跨平台方法在内存中创建具有真实路径的虚拟文件?这样我就可以绕过 HDD 的慢 IO 速度。
或者使用临时文件真的没什么大不了的,因为现代操作系统的文件缓冲区足够快/足够智能,不会将所有这些文件写入磁盘?(其实Linux支持虚拟文件系统,但是windows不...)
我希望你们能在那里帮助我:)