游戏引擎的虚拟文件系统

💡 原文中文,约3000字,阅读约需7分钟。
📝

内容提要

该文章介绍了游戏引擎中使用的虚拟文件系统(VFS)的设计和实现,讨论了编辑器对VFS的修改需求,提出了解决方案。文章还介绍了VFS的自举问题和版本管理机制,以及Ltask多任务框架和Fileserver工具的使用。

🎯

关键要点

  • 游戏引擎主要用 Lua 开发,包含游戏资源和代码。
  • 虚拟文件系统(VFS)设计用于将开发机文件映射到手机设备,并支持版本管理。
  • 自举问题涉及更新机制和自恢复机制,因特殊环境导致实现复杂。
  • 更新问题通过重新打包和发布 app 或在内存中更新 VFS 解决。
  • VFS 设计为只读,目录结构使用 Merkle tree 实现版本管理。
  • 编辑器需求打破了 VFS 只读的假设,需要修改本地文件。
  • 开发了两个版本的 VFS 模块以适应不同需求,导致行为不一致。
  • 编辑器的修改操作不必直接写入文件系统,依赖于内存中的资源管理。
  • 资源模块依赖 VFS 路径而非 VFS 系统本身,避免了对文件系统的直接修改。
  • fileserver 为 C 端提供数据,需将自身代码快照存储在 cache 中以支持离线工作。
➡️

继续阅读