GameFramework解析:开篇

zhuanlan.zhihu.com花桑深圳市腾讯计算机系统有限公司 游戏开发工程师

框架简介

官方博客: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

个人Demo

动图封面

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

目录

个人总结

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

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

最后

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

查看原网页: zhuanlan.zhihu.com