框架学习初始化
架构是一个约定,一个规则,一个大家都懂得遵守的共识。 那这是什么样的约定、什么样的规则、什么样的共识呢?
个人理解的框架: 资源管理、网络通信(协议)、UI框架、事件系统、场景管理、热更新 等一些服务于业务的底层架构
- 做了那么久的业务开发,感觉到了瓶颈,需要学习一点更高级的东西,才能进步!!
- 工作一段时间,需要整理一下,把别人的东西,融入自己的知识体系,才能化为己用。
- 接下来一段时间,我要把现在游戏的框架抽象出来,整理出一套简洁的框架,供大家和自己学习使用。
框架概述
- 消息管理(C#使用委托,Lua层实现事件系统)
- 网络层框架(Socket + Protobuf )
- 资源管理(Unity 5.x 的 AssetBundle 方案)
- 热更新
- UI框架(UGUI + MVC)
- 表格数据(Lua表)
- 多语言
- 一键生成、定时构建(jenkins)
框架细节
消息管理
- 为什么要有消息系统呢?
解耦合
- 举个例子,比如原始时代,你要告诉隔壁老王,下雨了该收衣服了,你就要跑到隔壁,拿到老王这个对象,才能当面告诉他,让他处理;
- 现在,有了手机,就可以不管老王长啥样?你可以发个消息告诉他,他手机收到这个消息,就可以做对应处理(收衣服)了。
资源管理:
包括资源加载/卸载,音频、模型、纹理等
有了规范就可以做工具检查,从源头到打包
- 资源导入检查(AssetPostprocessor)
- 资源打包检查
国际化/本地化:
很多游戏都会有海外版,国内版,各个国家的版本,如何进行切换/翻译?(我的框架未来会提供)。
日志模块:
我的框架未来会提供错误日志。
数据设计:
书中指的是设计数据库表。在游戏框架中是指提供给客户端使用的数据结构定义, 包括何种结构定义玩家的数据信息,策划表结构的定义等等。 好的数据结构定义 + 烂的代码质量 » 坏的数据结构定义 + 好的代码质量。
安全性:
资源如何加密,如何防破解,防反编译,安全数据检查,服务器验证等等。
可伸缩性:
可伸缩性是指满足未来需求的能力,包括程序的可扩展性,用户量增长时系统的策略等等。
互用性:
如果预计这个系统会与其他软件或硬件共享数据或资源,架构应该描述如何完成这一任务。
容错性:
举个例子:当界面跳转时,系统不可以接受输入(我的框架不提供)。