已经搬家到新博客 jjyy.guru
继续和大家跟分享游戏技术、编程心得、unity3d、cocos2d、emacs、操作系统
手游框架设计从两个角度出发:
我们为什么需要框架帮助开发呢?首先明确一点:技术是为产品服务的。在我看来,一个好的框架,能够做到快速开发、性能优秀、节省资源、容易学习,我们从两个角度来看。本人毕业后端游工作,后来在手游公司担任主程,目前在鹅厂。这里会特意对比演示过去的(在端游)做法与我改进的做法(在手游),写的都是个人经验之谈,如果有什么不对请指正,希望对大家有帮助。其中例子代码用lua编写。
1.从用户的角度:
这里明确以下性能指标中有要求的几个点:首先是性能,当然是越快越好,那么我们可以通过调整帧率,节省手机电量以及消去发热量,手游对性能要求是不低的。其次是内存,基本要求是不会因为内存用量过度导致闪退,市面上各种低端android机型内存都不高,那么要求就变得更性能一样了,也是越省越好。然后是体积,体积对下载量的影响非常大,不过体积不是越小越好,因为有的玩家就是不玩小体积游戏,这个合适范围就可以了,通常网游限制在100M以内,单机限制在20M以内,要求高的可以用切包的方式压到5M以内。然后是流量,玩久了玩家会察觉出来的,最好用自己的协议通信编码压缩。最后,版本更新应该做到增量更新,玩家在面对全量更新的时候是很痛苦的。
以上这些功能,应该在框架这一层就封装好,对业务开发者隐藏起来。
2.从开发者的角度:
上面说的性能问题,CPU、内存、外存、流量等等问题都被框架解决了,开发者可以只管专注业务的开发,但也可以插入自己的特殊处理。重点是是迭代速度,尽量让开发者专注业务开发,写最少的代码完成最大的工作。我们对开发流程分开耗费时间的步骤,这里有条粗略的时间线:
策划案->美术->界面开发--+
+->数据表-+ |
+->协议->开发功能->发布测试->debug->上线
这里可以看到从想法到实现中间经历了多个步骤,如果我们可以把这些都打平,真正地把哪些不属于业务的工作在框架层面就把它解决。那么我们就能获得最快的开发速度。比如我经常看到有些项目中自己写一套数据表的Parse来解析不同的数据,这就是典型不属于业务的工作,应该自动化把各式各样的数据自动解析。核心思想是贯彻自动化,借助脚本把真理保持在单点,并且自动进行推导到系统每一处,这样我们每次修改或者开发功能,只需要改最小的部分就可以了。更重要的是,这样做能够让代码遵循语意,写出来的代码能够轻松读懂。下面每个涉及到开发的都一个个详细来说。