为什么要开始Game Framework系列笔记

自从开始工作以后,我慢慢从小白进阶为了萌新,我也自己写过类似于事件模块,资源加载模块等可以放在框架内的模块,同时我也逐渐意识到,早就存在了对我来说某种意义上的“标准答案”,在我进一步瞎琢磨和研究之前,我认为先爬上巨人的肩膀是很有必要的一件事,闭门造车不可取。

从何开始

Game Framework是一个已经维护迭代了8年左右的游戏框架,它包含了游戏游戏开发过程中各种常用的模块。资源加载,ui,事件,文件,日志等,如果一头扎进去随便挑一个模块开始理解的话,我认为效率会比较差。所以让我们先从宏观的视角看看这个框架。

首先来到https://gameframework.cn/E神为我们贴心准备的小网站。

快速过一遍2019年的四篇教程

抛开具体的导入项目和开始使用的操作加上自己的理解,我可以提炼出以下信息

1.GF UGF Unity的关系

【第一章】开启 Game Framework 之旅 - 第1张  | Game Framework
GF概览图

通过图可以看到GF的逻辑是完全独立于Unity的,UGF依赖GF结合unity本身的库形成一个封装,UGF是我们开发游戏的直接使用部分。

2.贯穿全场的关键模块

1.引用池

为了降低因大量产生类对象而导致的内存分配,设计了引用池的概念,来将用完的对象清理并缓存起来,供后续使用。
可以理解到引用池和对象池产生的作用是类似的,但是在实现上有略微的不同。最终产生的效果都是让游戏运行过程中内存状态更加的稳定,同时减少gc操作带来的性能消耗。对于Unity来说大部分情况下,稳赚不赔。为什么这么说可以参考http://www.maodaodao.top/unitygc/

2.事件

形象一点说事件就是是代码各模块之间的通讯机制,如果用了事件,每个模块都有了一个手机,模块和模块之间有什么事情手机微信发条消息就好,如果之前说好了就按照消息干,没说好就当没看见也没事。这样大大降低各模块之间的耦合度。毕竟如果不用事件机制,一个模块让另一个模块干事情但是另一个模块没准备好可是会报错的。

3.资源

很多模块的运转都要依托于资源的加载,产品流水线,肯定要有原料上履带啊。

4.对象池

和引用池的作用类似,实现方式略有区别和机制略有区别。

5.任务

6.文件

7.有限状态机

3.走在通读Game Framework路上的小结

GF框架中,资源可以说是核心模块。整个框架的实现呈现出总分的结构,如资源模块是由资源加载器,资源初始化器,对象池,文件模块,任务模块等结合起来综合实现,文件模块本身又可以继续细分。

在管理好资源之后(有了基本的资源管理策略之后),偏向业务功能的模块的实现如UI,声音,场景管理等,对于GF层框架来说就是实现不同的数据(资源)管理需求,我们只需要对特定的业务功能定制相对应的业务所需要的数据管理行为即可。之后配合Unity的库,在UGF层用GF层管理的数据呈现具体的效果。

因为大部分逻辑独立于Unity,GF注定是Unity版本适应能力极强的框架。


记录历程,整理思路,共享知识,分享思维。