Filesystems 虚拟文件系统
大多数游戏都会将其资源(模型、纹理等)打包到特殊文件中(例如,Quake 3中的.pk3文件)。显然,这些文件以某种方式被“挂载”,并被当作独立的文件系统使用 我想知道这是如何实现的。到目前为止,我提出的唯一策略是将偏移量大小信息放在文件头中,然后内存映射文件并访问资源,就像它们是独立的写保护内存块一样 我想知道我的策略是否可行,是否有更好的选择Filesystems 虚拟文件系统,filesystems,memory-mapped-files,Filesystems,Memory Mapped Files,大多数游戏都会将其资源(模型、纹理等)打包到特殊文件中(例如,Quake 3中的.pk3文件)。显然,这些文件以某种方式被“挂载”,并被当作独立的文件系统使用 我想知道这是如何实现的。到目前为止,我提出的唯一策略是将偏移量大小信息放在文件头中,然后内存映射文件并访问资源,就像它们是独立的写保护内存块一样 我想知道我的策略是否可行,是否有更好的选择 谢谢 你的策略很合理;事实上,它完全类似于文件系统驱动程序对原始块设备所做的操作。您在实施过程中遇到了哪些问题 你的方法听起来很合理。基本上,您将拥有
谢谢 你的策略很合理;事实上,它完全类似于文件系统驱动程序对原始块设备所做的操作。您在实施过程中遇到了哪些问题 你的方法听起来很合理。基本上,您将拥有一个包含(可选)元数据的ISAM文件。您可以根据标准(内容类型、使用频率、使用位置等)将文件拆分为多个部分(“目录”),并为每个部分提供单独的索引/目录。如果允许将节作为内容类型,则可以嵌套它们并以一致的方式处理它们
如果您的需求是相当基本的,您可以考虑简单地使用zip/TAR文件作为容器。无论如何,查看这些代码可能是一个很好的开始。
我不能说地震3的确切格式,但有几种方法可以满足您的需要:一些复合文件实现、数据库和虚拟文件系统具有基于页面的结构(“页面”类似于FAT或NTFS中的扇区或群集),其中文件可以分散在存储中 我现在没有任何明显的问题,只是想确定我的方向是正确的。我想你搜索类似的boxedapp。@MastAvalons+1谢谢!它帮助了我。