做智能机以来,一直都是使用的自研引擎。直到今年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的技术问题,就不会来找我,会直接找到璧途科技的老板,然后老板再来找我问。而如果我是“客户端技术总监”,这类明显不应该麻烦老板的技术细节,就可以不用多此一举。

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

  1. cocos2d-x lua 学习笔记(1) -- 环境结构

    Cocos2d-x 3.0超过环境的版本号来建立和前Cocos2d-x 2.0 差异较大的版本,从同时Cocos2d-x 3.0项目打包成apkAndroid的应用程序文件,步骤,构建环境有些乏味安德 ...

  2. cocos2d-x lua table数据存储

    cocos2d-x lua table数据存储 version: cocos2d-x 3.6 1. 将table转为json http://blog.csdn.net/songcf_faith/art ...

  3. cocos2d-x lua 学习笔记(1) -- 环境搭建

    Cocos2d-x 3.0以上版本的环境搭建和之前的Cocos2d-x 2.0 版差异较大的,同时从Cocos2d-x 3.0项目打包成apk安卓应用文件,搭建安卓环境的步骤有点繁琐,但搭建一次之后, ...

  4. Cocos2d-x Lua中实例:帧动画使用

    Cocos2d-x Lua中实例:帧动画使用 下面我们通过一个实例介绍一下帧动画的使用,这个实例如下图所示,点击Go按钮开始播放动画,这时候播放按钮标题变为Stop,点击Stop按钮可以停止播放动画. ...

  5. cocos2d-x+lua开发模式下编辑器的选择

    cocos2d-x+lua开发模式下编辑器的选择 原本打算直接用CocosIDE的,毕竟是官方出品,并且支持Android远程调试,windows下的调试也非常方便,调试的信息也非常全,智能提示也不错 ...

  6. 剑魂之刃服务器维护,《剑魂之刃》今日安卓版本更新服务器维护公告

    为提供给各位玩家更全面的游戏体验,丰富剑魂之刃的游戏内容,安卓剑魂之刃全服服务器将于明日(9月11日)14:00-19:00停机维护并进行2.0.0版本的版本更新,给各位玩家造成的不便深表歉意! V2 ...

  7. 剑魂之刃服务器维护,剑魂之刃全服合服停机维护预告

    剑魂之刃全服合服停机维护预告,为优化服务器性能,保证玩家良好的游戏环境和游戏体验,我们计划于7月14日对剑魂之刃全服服务器进行停机维护并对部分服务器进行合服及数据优化操作;全服停机维护时间:7月14日 ...

  8. 剑魂之刃登录显示服务器异常,剑魂之刃新手问题汇总

    今天小编整理了一些新手在剑魂之刃中常遇到的问题并作出解答,希望能对刚加入这个游戏的玩家们有所帮助. 1. 问:剑魂之刃中的体力恢复是怎样计算的? 答:剑魂之刃中的体力值是按照每10分钟回复1点,同时每 ...

  9. 剑魂之刃登录显示服务器异常,《剑魂之刃》更新后链接服务器失败的原因及解决办法...

    <剑魂之刃>刷黄宝石技巧攻略 剑魂之刃如何刷黄宝石呢?在剑魂这款手游中黄宝石是最难获取的一种宝石,很多玩家到满级以后黄宝石也大都使用着低等级的黄宝石.那么我们去哪刷黄宝石呢?混沌之塔,哪有 ...

最新文章

  1. 1、在Centos上安装Grafana
  2. [CLR via C#]5.1 基元类型
  3. C语言-人狼羊菜问题-最容易看懂的解决方法及代码
  4. RabbitMQ创建远程连接用户
  5. Photoshop CC2019软件安装教程
  6. 理解Promise (2)
  7. SSD之硬的不能再硬的硬核解析
  8. 14004.xilinx自动打包image.ub脚本
  9. xml实现删除一个节点
  10. RDS SQL Server死锁(Deadlock)系列之四利用Service Broker事件通知捕获死锁
  11. 分布式定时任务解决方案
  12. 解决服务器密码忘记,查看Xshell中已经保存的密码
  13. 基桩静荷载测试数据分析软件,静荷载基桩检测原理及应用技术
  14. An example machine learning notebook
  15. 【烈日炎炎战后端】SpringMVC(0.5万字)
  16. SpringBoot基于websocket的网页聊天
  17. 杭电OJ-ACM1018 (Big Number)
  18. Meta在西雅图东区又双叒叕买楼了!
  19. 微信小程序---- 获取手机号(微信最新更新)
  20. GD32450i-EVAL学习笔记 18 - USB FS

热门文章

  1. Python反转字典的两种方法
  2. 2018-8-28-win10-uwp-MVVM入门
  3. Java开发工具有哪些
  4. 数值分析中对有效数字的定义
  5. python爬取当当网商品评论
  6. linux ss的使用方法
  7. 每日分享 《一生如寄 人来人往》
  8. 啪啪打脸,国际互联网协会数据泄露
  9. 32x32Booth乘法器
  10. 六、hibernate表与表之间的关系(多对多关系)