《僵尸榨汁机》产品是基于 Zombie Catchers上的二次开发,整个项目开发周期在4个月左右,从2015年10月到2016年1月,团队成员7人。
对于一款休闲游戏的修改,这个人员配置和周期应该是不差了,但是整个开发过程是困难重重。首先公司当时的业务重心不在这个项目上,各方面资源投入有限;其次主程因为个人原因,在项目刚开始开发阶段就离开了公司,新来的小朋友完全不在状态;另外之前完成的一个项目顺风顺水,所以个人对于这个项目有些轻敌。
因此项目开始阶段,开发进度非常缓慢,让人一筹莫展,每天都感到很焦虑。后来在10月中的时候,进行了一次项目团队重组,补充了精干人力,总算有了明显的起色。但是为了补上之前拉下的进度,每天都加班,有很长一段时间都是工作到11点12点,甚至更晚。
从这个项目上得到的血和泪的教训,不得不让我去好好整理思路,重新思考产品开发过程中的关键因素。很多问题可能会具有普遍性,事后诸葛亮般的提了很多应对措施和建议,希望以后能够少趟一些这样的坑。
产品主要里程碑和修改内容
时间点 | 主要里程碑 |
---|---|
2015年8月 | 合同签署,收到代码交付 |
2015年10月 | 人员变化,团队重组 |
2015年11月 | 调整项目计划,重新确定上线日期 |
2016年1月12日 | iOS上线 |
2016年1月15日 | 获得App Store首页推荐 |
修改内容:
游戏原先的核心玩法、美术、音乐音效已经非常不错,所以修改内容集中在提高留存、增加付费、本地化这3块。
对于僵尸战斗:增加沼泽地图BOSS和BOSS飞碟,目的是增加游戏的玩法,避免玩法过于单一,给玩家带来疲劳感,提高留存;增加了HP,调整僵尸攻击力,调整了道具和服装效果,从而给付费增加了空间。这块修改从玩家反馈来看,是非常成功的。
为了增加长线留存,增加了僵尸养成系统、僵尸工厂系统,玩家可以养成自己的僵尸,升级发展僵尸工厂;对应的增加了召唤僵尸功能,作为一个大的付费点。但是从实际效果来看,这块并不成功,后续的连载中会进行针对性分析。
本地化,主要是语言和各类SDK的替换,比如广告SDK,微信代替Facebook等。(版号规定之后,所有图片字都需要替换,这个简直没法活了……)
项目开发,总计代码近5万行;开发人均生产效率为200行/日;发现有效bug总计392个;每千行代码发现bug数为8个。开发效率还不错,但是bug偏多,这和团队重组后,没有太多时间研读代码有直接关系。
项目过程中主要问题和风险
01 项目初期预估
遇到问题:
- 项目初期,由于没有专职的人全心全意在项目上,对项目难度和工作量,缺乏有效的评估,导致整个项目初始计划的过于乐观;
- 结果在后续项目实施中,进度严重落后于计划,非常被动,不得不简化和删减了很多内容;
- 实现新功能的技术方案,拖到项目上线前期,发现并不可行,只能匆忙调整技术方案,并延期上线。
应对措施:
- 项目立项前或者实际执行前,应该有技术专家,对于项目难度和工作量做出合理估计;
- 对于难度较高的功能,尽早进行方案的试验,验证方案是否可行;
- 把大功能拆成低耦合的小功能点,降低实现上的风险;
- 对于需要的资源,要竭力去争取。
02 外包质量监控
遇到问题:
- 原主程离职后兼职做外包,导致交付的质量和时间点都难以控制。
应对措施:
- 尽量使用全职员工,外包需要定期检查交付物和质量;
- 一旦发生问题,需要提前考虑备份方案;
- 人员稳定对于小项目至关重要。
03 产品缺乏试商用
遇到问题:
- 为了赶苹果推荐位,内部测试后就直接上线,导致大量使用问题。
应对措施:
- 加强内部测试人力和周期,尽量动员所有公司员工进行测试;
- 选择一个小的区域,如港澳台地区,进行试商用(Soft Launch);
- 也可以使用邀请码方式或者TestFlight方式进行封闭测试;
- 确保在正式上线前,有足够的用户进行了较长时间的使用,数据都已调优。
04 第三方SDK更新
遇到问题:
- 友商广告SDK更新后,莫名出现无广告卡死、广告无法关闭的问题,导致用户的很多差评。
应对措施:
- 不要急着更新第三方的SDK,需要对方有成功案例,并稳定运行一个月以上再进行更新;
- 国内SDK质量参差不齐,尽量选择大厂或者海外厂商的SDK。
05 单机版的破解
遇到问题:
- 上线初期版本是单机版,破解和修改时间的问题在iOS也较多,远远超过我们的想象;
- 存档没有联网保存,可能引起玩家存档丢失,从而导致不少差评。
应对措施:
- 弱联网功能是单机游戏的必须要求,不管iOS还是安卓。本地加密,长期来看,还是有被破解的风险;
- 弱联网功能应当尽早实现,避免在产品运营中进行联网改造。因为网络、手机、操作系统各方面原因,非常容易出问题;
- 需要开发一个相对通用的后台,甚至自己的SDK,为后续游戏做好准备。(功能需求不高的话,可以考虑BaaS平台)
如何提高测试的质量?
01 墨菲定律
- 任何事都没有表面看起来那么简单;
- 所有的事都会比你预计的时间长;
- 会出错的事总会出错;
- 如果你担心某种情况发生,那么它就更有可能发生。
那么对于一个软件:任何可能出bug的地方都会出bug!
这不是在开玩笑,以我十多年软件行业的经验,这绝对是一个真理。
我们来看一下《僵尸榨汁机》初期的一些问题:
02 测试质量的提高
质量意识:
- 质量是所有人的责任,不只是测试或者开发的责任,要加强对工作完成(Definition of Done)的共同理解;
- 任何代码修改,哪怕是修改已有bug,哪怕只改了1行代码,都可能引起新bug;
- 任何交付前,都必须经过完整测试,哪怕时间再紧;
测试执行:
- 测试工作需要尽早开始准备,甚至可以和开发并行;
- 考虑不同的条件组合,尽量提高测试覆盖度;
- 重要的测试用例,可以进行多次测试,便于发现偶发性问题;
- 有效利用网上的工具,提高测试覆盖度,增强软件兼容性,例如:云测Testin,腾讯WeTest等;
- 定义好回归测试(Regression Test),及早发现重大问题;
- 开发有助于进行测试的功能或者小工具,提高测试效率。
测试管理:
- 将测试工作分为不同级别,例如单元测试、集成测试等,合理分配好测试工作;
- 使用工具进行bug跟踪和管理,责任明确到人,任何修改都必须进入系统进行跟踪,例如:禅道,JIRA等;
- 联合开发对于测试中的重大问题进行分析,使用“5 Why” 方法,寻找根本原因,帮助提高开发的质量;
- 对于上线后的重大问题进行分析,使用“5 Why” 方法,寻找根本原因,提高测试质量,持续改进。
人员配置:
- 很多中小团队,都会忽视对测试人员的配置,觉得随便找人玩一玩就可以了,结果导致很多问题都无法有效测试到;
- 测试人员必须专职,足够耐心和细致,非常熟悉游戏的各个细节;
- 自动化测试环境目前比较缺乏,如果需要实现敏捷开发,提高交付效率,增加测试人员势在必行;
- 看一下《梦幻西游手游》团队构成,23%的人是QA!
03 测试驱动(Test Driven)
- 尽早得到市场和玩家的反馈,从而指导游戏的设计和开发;
- 持续跟踪游戏数据指标,结合版本内容进行数据分析,总结规律;
- 运用A/B测试和灰度发布,进行小规模的用户测试和对比;
- 策划和设计,要考虑功能是否好实现、是否好测试,好的质量是设计出来的;
- 建立持续集成和自动化测试环境,进行每日构建(Daily build)。
写在最后
质量是产品的生命,需要通过开发和测试来保证。产品的质量是用户体验的必备要求,试问经常莫名闪退的游戏,你还会玩吗?
另外一点,工作中最重要的是考虑如何提高效率,而不是一味提高劳动强度(加班)。在工作过程中,要不断去学习和总结,提高自身的能力,并且掌握合理的方法,才能事半功倍,做出更高质量的产品!