使用cocos2dx+lua改造《剑魂之刃》的经验总结

来源:互联网 发布:张国荣容貌 知乎 编辑:程序博客网 时间:2024/05/05 01:17

做智能机以来,一直都是使用的自研引擎。直到今年7月到10月中旬,我带领公司的前端团队,负责改造了同一公司旗下另一家子公司的《剑魂之刃》,对cocos2dx也有了一定的接触。

我所在的璧途科技,是北京极品无限旗下的研发子公司,今年年初发布了一款自研引擎+lua开发的卡牌游戏《我叫火影》,虽然由于版权等原因,收入并不高。但我们这个项目的研发速度和灵活度等,达到了一个较高的高度。

《剑魂之刃》是极品无限旗下研发子公司灵动时空,使用cocos2d c++开发的arpg游戏,在年初被昆仑万维代理并拿下了一笔非常高的代理和预付款。后期上线渠道太多,由于需要整包更新,更新周期非常长流失高。于是极品无限让我们负责将游戏改造为lua版本。



技术选择的考虑

一开始我提议仅作少量改造,不改变语言,使用动态加载c++库的方式,实现对代码和资源的更新。这样改动和风险都比较小,可以极大的节省国内android渠道的适配工作量。但可能高层和剑魂团队认为还是一步到位比较好,所以就否定了我的提议。

当时极品无限旗下有3个团队在使用lua开发,我们使用自研引擎+自研编辑器+lua,产品已上线,另两个团队分别使用cocos2d+cocosbuilder和cocos2d+cocostudio,但无线上产品验证。我们考察发现cocostudio团队的使用发现,cocostudio在工程较大后,电脑变的非常卡,故否定了cocostudio方案。

最后,极品无限高层和剑魂团队要求我们使用较为通用的cocos2dx引擎,且一步到位,使用当时最新的cocos2dx 3.1稳定版和cocosbuilder编辑器。



项目开始前我的思考

我毕竟是璧途科技的股东和员工,对这个向极品无限和灵动时空输送资源的项目,我自然是反对的,但基于整个公司考虑也不得不接受,带领我们的前端研发团队主导这个项目的改造。

我们作为配合团队,在技术选择上必须服从剑魂现有研发团队的方向,所以我们一直使用的自研引擎,基本上无法被选择,这一点我们不应该坚持。

我认为剑魂研发团队的工程实力不强,在开发上必须坚持引擎化,必须使用ui编辑器,否则工作量将会使我们难以在短时间内完成。所以我坚持否定了剑魂团队提议的代码翻译方案。

关于cocos2dx版本,我倾向于使用现有团队正在使用的2.2.x版本,但剑魂团队要求一步到位使用3.x,对我们来说都差不多,这一点没有太过于坚持。

我认为cocos2dx引擎不完善,主要是基于对国内引擎研发的积淀少,引擎历史太短且行业浮躁等判断。所以坚持将cocos2dx深度定制化,修改其中的BUG和不便于工程化开发的地方。

我认为不应考虑升级引擎版本,cocos2dx作为2d引擎,其功能已经覆盖了几乎所有2d技术,同时基于上一个判断,升级引擎将导致较多的未知问题。



项目结束后我的思考

我在编辑器上的坚持是正确的,剑魂之刃c++版本有36万行游戏逻辑代码,多数是在写界面,以及少量的重复冗余。改造后仅有5万行lua代码。剑魂团队原有的设计结构较为混乱,且无任何注释,即使翻译也是一个非常大的任务。

cocos2dx版本上应该坚持2.2.x方案,使用3.x版本后,API改动太大,导致一些模块无法直接使用现有团队的代码。

cocos2dx 3.x版本使用的c++ 11和auto release机制等,虽然看起来很高大上,但实际上问题非常大。c++ 11语法导致开发人员极大的不适应,auto release导致内存泄露无法使用重载new函数或vld等工具定位。

认为cocos2dx引擎不完美需要定制的想法也是正确的,cocos2dx的事件机制一直难以理解,于是改成了基于node树分发的机制。3.x版本使用的系统字体显示异常,于是直接修改成了外挂ttf字库。



团队成员的思考

之前有一种思路,认为可以多用实习生和新人,特别是实习生,工资低,没有法律风险。这次的改造的研发团队中,初期就是4名正式员工,4名实习生。看起来8个程序员也是浩浩荡荡的大团队了,但包括我在内,只有2个5年经验的程序员。

实习生和新人的职业态度上是不稳定的,其中一名今年招聘的员工在10月离职考研,4名来自北邮的研究生中有1人似乎根本不想做技术,配合非常消极。

同时,不管是有经验的还是新人程序员,来自名校的优势是非常明显的,初始团队的8人全部来自重点大学,6人毕业或在读于北邮。这些人做不好程序员的原因只有一个,就是他们自己不想。一般而言,这些人的学习能力和基础明显强于之前带过的二本院校的毕业生。

团队太多新人,在工作上是很不利的,每天会有大量时间用于培训和解决一些由于经验缺乏写出来的奇怪问题。从商业成本考虑,新人更便宜,但我非常不赞同这种一两个有经验的带着一大群小孩干活的模式,宁愿团队规模更小一点。实际上我认为一个中核手机网游,合作成熟的三四个前端开发就差不多了。

策划的入门门槛比程序员要低很多,团队配属了一个二本在读的实习生作为UI策划,主要负责用编辑器制作UI界面。这种执行层面的策划工作门槛很低,比要作执行的程序员低太多了。



团队组织的思考

扁平化的组织对于快节奏的游戏开发是比较合适的,但也是有一些问题,特别是跨组织合作的时候。我没有来自母公司的任何title和职位,所以剑魂原团队很多时候并不信任我,我给的建议也基本不采纳。后期大量原剑魂团队的研发人员进入团队后,也不遵守我定下的开发规范,导致开发质量严重下降。

所以我暂时认为扁平化的组织结构适合扩张不剧烈,有一定合作基础的团队,内部能看到的工作业绩和能力,可以促成团队的合作层级和分工,同时又保持团队结构的简洁。但在跨部门,跨公司的合作时,应在title上明确,这样可以减少不必要的争议,遇到问题可以找到明确的负责人。

之前我们项目由极品无限的运营部门合作时,他们给我打的标签是“打wp包的”(有一段时间只有我会wp相关技术),于是他们android和ios的技术问题,就不会来找我,会直接找到璧途科技的老板,然后老板再来找我问。而如果我是“客户端技术总监”,这类明显不应该麻烦老板的技术细节,就可以不用多此一举。

0 0
原创粉丝点击