写在前面
本专栏内容均为学堂在线慕课《3D游戏引擎架构设计基础》中的内容。个人将其转化成文字和图片的版本(个人更加喜欢文字版本的教程,阅读速度更快很多),方便查阅。
原课程链接:3D游戏引擎架构设计基础。
资源管理
资源管理概述
游戏资源的组织和管理。其目的是有效地组织和管理各类游戏资源,即在合适的时候快速准确地提供给游戏程序使用。其中,资源组织是指根据各类资源的特性和使用方式,设计资源数据的内存结构;资源管理是指抽象并定义统一的资源处理方式,如:资源加载和卸载、资源调度等。
资源管理过程图如下:
游戏资源管理:
-
文件管理:包括文件加载与卸载,文件解析,文件格式转换,文件资源打包,文件资源传输等过程。
-
内存管理:包括内存分配,访问保证,内存释放等功能:
-
状态管理:一般地,一个游戏资源不会再内存中重复存储,以节省内存,根据资源状态,决定加载和使用等操作;通过状态转换图,管理资源加载或卸载的操作。资源状态有:未定义、已定义、未加载、已加载、正使用等。资源状态转换图示例:
-
调度算法:原则是尽可能少地移动资源数据,当不得不移动时,根据一定的条件决定移动策略。常用的调度算法包括:对资源优先级排列、LRU算法、根据当前操作决定最可能使用的资源等。
-
多线程处理
资源管理实例
OGRE资源管理
其中主要类的类图如下:
上述三个核心类的关系图如下:
OGRE资源生命周期的时序图如下:
Panda3D资源管理
Panda3D资源管理主要类模块:
Panda3D异步资源加载器类图:
Panda3D异步加载时序图: