GameFramework解析:开篇

框架简介

官方博客:https://gameframework.cn
Github地址:https://github.com/EllanJiang/GameFramework/

下面是GameFramework官方简介的缩略版,更具体的可以去到上面GameFramework的GitHub地址README看~

GameFramework 是一个基于 Unity 引擎的游戏框架,主要对游戏开发过程中常用模块进行了封装,很大程度地规范开发过程、加快开发速度并保证产品质量。
在最新的 Game Framework 版本中,包含以下 19 个内置模块,后续我们还将开发更多的扩展模块供开发者使用。

1.全局配置 (Config)
2.数据结点 (Data Node)
3.数据表 (Data Table)
4.调试器 (Debugger)
5.下载 (Download)
6.实体 (Entity)
7.事件 (Event)
8.文件系统 (File System)
9.有限状态机 (FSM)
10.本地化 (Localization)
11.网络 (Network)
12.对象池 (Object Pool)
13.流程 (Procedure)
14.资源 (Resource)
15.场景 (Scene)
16.配置 (Setting)
17.声音 (Sound)
18.界面 (UI)
19.Web请求 (Web Request)

框架组成


框架主要分为两个部分,一部分为GameFramework(简称GF),一部分为Unity GameFramework(简称UGF)。简单地说,框架各模块的主要实现都在GF中,且GF完全不依赖Unity。而依赖于Unity的实现则在UGF部分,如GameObject,AssetBundle,Editor相关内容。具体游戏逻辑直接跟UGF对接。

官方Demo

https://github.com/EllanJiang/StarForce

个人Demo

https://github.com/DrFlower/TowerDefense-GameFramework-Demo
笔者用GF实现的一个塔防游戏Demo,比官方Demo内容更多一些,游戏内有多种炮塔,多种敌人,多个关卡,程序上使用到了GF大部分的模块,并对所有资源进行打包配置,设置了正确的分包信息、文件系统,游戏内可按关卡分包下载,详见README。

个人总结

  • 框架实现了多个通用模块,满足各类型游戏的大部分通用框架需求
  • GF很好地演示了框架应该以怎样的方式与引擎解耦,以及以怎样的方式与具体的各类方案解耦(如UI上框架与ugui、ngui等方案解耦,本地配置储存上与用XML或Json方案解耦)
  • 演示了对象池该如何在框架层贯穿整个游戏,以防止对象游离,保证所有对象在框架管理下(笔者经历的项目常常要在一些组件里去对接对象池,如模型加载组件,甚至到业务层去对接对象池,在版本快速迭代,大量堆叠业务的情况下,很难保证不出错)
  • 很好地利用了Unity对编辑器扩展友好的优势,对框架内各个模块的数据、实时运行状态进行了可视化,极大地方便了调试工作(如查某个对象池有没有如期地回收对象,只需要在Inspector面板看动态数据即可,不需要断点,Log相关数据来判断)
  • 资源管理作为客户端框架核心之一,GF对此提供了非常强大的支持,其功能性完全不输于其他开源的独立的资源管理方案
  • 框架内置功能强大的Debugger
  • 代码清晰优雅,鲁棒性好,学习价值高

作者Ellan做事风格非常低调,属于实干派,几乎没见过在Github和官方博客外的地方宣传过框架,多年持续维护更新,框架实际是提炼于知名商业项目,但E大从来不会拿项目来给框架背书,可谓实实在在的开源贡献者。虽然框架文档十分匮乏(说好的文档一咕再咕),新人上手相对困难,但GF依然靠着过硬的代码质量,吸引到很多游戏开发者来使用和学习,我愿称之为游戏开发者的第一款框架。

本系列文章,笔者会对GF里的部分模块进行解析,欢迎交流~

目录

最后

个人原创,未经授权,谢绝转载!