2016总结

Posted by 武龙飞 on February 22, 2017

欲言又止:

每年的年终总结是要在新年之前发表在博客上,今年的年终总结拖到现在完成,我也是服自己。这里要感谢我的高中好友万学清同学,在我去年微信发表的有关年终总结的朋友圈下,催促我完成2016的总结。先前写博客,写总结更多是希望其他人了解自己,希望自己写的文章有更多的访问量和评价。随着时间的洗礼,逐渐的明白了,博客主要是写给自己看的,对自身日常所思所想,以及一些常用资料的记录。为啥博客写的少了,一方面发现自己想写的东西,网上已经有了更好的。另一方面就是懒,对自己的所思所想,以及收集到的好文章都放到Evernote,并没有二次加工分享出来。但我认为写作和分享本身是另外一种高质量的思考和学习。

创业维艰:

当前岁月最重要的事情就是工作了。从2014年的年度总结里就提到我在开发一款叫《山口山战记》的手游。在2016年终于开花结果,虽然说在金钱上几乎没有大的回报,但是在游戏群,贴吧,看到玩家在游戏里获取到的乐趣,是开发人员最开心不过的事情。

游戏在开发中并不是一帆风顺,项目组走了很多弯路。在刚测试的时候我们服务器使用的缓存组件memcache丢失数据,导致游戏在首次测试的时候,出现过玩家丢档,玩家数据错乱情况。后来在贺老板的努力下,服务器最大的隐患解决了。还记着当时为了排查这个问题,构造了很多测试用例去查找这个问题。最后问题定位在连接池这块。通过此事,对于第三方组件我的理解改变了。虽说现成模块可以快速实现原型,但对于这种商业级的项目,还是需要对整个项目用到的边边角角有深入理解,在开发中多一份安心,才可以发挥的游刃有余。

2016的农历年我没有回家过年,当时很重要的一个因素是因为游戏需要开发服务器计算模块,这个事情的难度在于给相同的参数,服务器和客户端必须计算完全一致。在立项的时候并没有这种需求。由于我们的服务器端是python写的。我和小黄同学商量后,认为用python写,服务器好部署一些,正好那段时间学习了python,也想练练手,于是我就将客户端技能逻辑用python 重写了一遍,小黄同学负责将战斗逻辑移植过来。一切看似非常顺利,当整个功能完成之后,到测试阶段,发现计算结果很不准。分析原因如下:

  1. 我们自己并没有Unity的源码,所以很多Unity API 函数和我们自己实现的函数,计算结果不一致。
  2. 跨平台浮点数问题,由于不同的硬件,操作系统,编程语言,计算结果会有差异
  3. 两边代码不一致,客户端和服务器不共用代码,有遗漏
  4. 编程语言之间的差异。例如我们遇到的一个问题关于角色谁先释放技能。实现方式是通过英雄和敌人的距离判断,当两个角色距离敌人的距离相同,这时通过距离排序就非常危险,因为对于这种情况不进行特殊处理,不同语言的排序函数给出的结果也不一样。

后来一狠心将这部分模块的代码全部删除。分析讨论得出结论,服务器和客户端共用代码才是正道。一开始我们想用windows服务器来单独跑这个服务,直接用Unity编译出Windows版本就好了,可现实很残酷。Unity编译出来的版本必然对图形显卡有最低的要求,通过和运维同学沟通,知道没有服务器提供带显卡的服务器,这个想法只能搁置了。看来还是要做代码和显示分离,当时项目并没有这样的需求,所以渲染层的抽象程度不是很高。方向定好了,就开始实现。在解决完多线程操作数据导致的bug,浮点数这些问题后,项目中最难的事情算是解决了。这个模块的实现也没有让我们失望,很多玩家玩的很开心。

五月六日,《山口山战记》正式上线。由于是正式上线版本,我特意将版本号调到了,1.0.36,这也算这款产品的小故事。当日上线的是收费榜,很快游戏就窜到了第一名,当天收入据说是破了龙图所有产品的首日收入记录。那天整个项目组都非常开心,很多人发了图晒朋友圈,确实自己的产品这么成功谁不开心呢。想起了当时开发的《疯狂烈鸟》上线后,很快就排到IOS免费榜第一时高兴的心情。那时的我连IOS设备都没有,听九天讲他每天要去微博,IOS排行榜实时关注游戏的评论,以及排名,大家都觉着很夸张。当《山口山战记》上线后,我变成了昔日的九天,去贴吧,微博,IOS排行榜时刻关注大家的评论,遇到的问题。更有甚者,自己也买了游戏,和玩家一起玩。话说我是IOS第一个下载游戏不足为过。截止我写这篇总结,游戏已经到了1.0.53版本。虽说物质上没有得到很好的回报,可是我一点都不后悔,做游戏的一辈子能做成功几个游戏?

游戏上线后,在后续的运营过程中出现过一些问题。影响很深的一次是,版本已经发布到了外网,还没有正式上线。这时组内成员发现天赋系统的UI打开会导致游戏闪退,但内网没有问题。查找问题根源,原来我在合并代码的时候,代码自动合并了,但是资源没有提交上去,这是个未来的功能。这时我羞愧的恨不得找个地缝钻进去。我们的项目经理没有埋怨我,而是了解这个失误会对产品带来那些风险,了解清楚现况后,他决定撤掉这个版本。这意味着很多宣传工作,运营工作都白做了,还会导致产品发布到玩家手里延期。这时组内相关成员帮助了整个项目组,想到了通过修改新手引导参数的手段屏蔽这个功能。很快测试通过,发布后补丁及时掩盖了问题。通过这件事情后,我们团队及时总结了经验教训,改善了发布流程。后面再也没出现这类问题。

对于游戏开发人员,外挂绝对令大家闻虎色变。我们项目在开发前期就做了一些关于程序安全的工作。比如对代码二次加密,内存变量隐藏,协议包加密,数据表格加密。可是外挂人员还是修改了我们攻击的函数,这对一个战斗计算放在客户端的游戏是致命的。我们和外挂人员斗智斗勇,但总是处于下风。后来发现只有服务器验证计算结果,加上后台数据的智能分析,才是打击外挂人员的最有效的方式。通过这套系统,加上强大的gm工具,总算是彻底的解决了挖掘外挂作弊人员的难题。

游戏刚上线只有三个渠道,IOS,Android混服,应用宝。发布补丁需要配置后台文件,更新服务器代码。这几项工作都属于重复性很高,但非常繁琐的事情,而且千万不能错。最尴尬的是当发布文件如果出错,千千万万的玩家就会报错。因此我每次都会检查很多遍,保证没有错误,可是人在做大量重复,复杂的工作的时候,总是有大意的时候。在发生几次错误后,我坚定必须要用工具实现这些功能。工具实现后,后面的工作就是简单的敲几个命令,然后玩会游戏,所有事情都完成了,还保证不会出错。生活立马变的快乐惬意了。这也让我深刻理解到,能通过计算机做的事情,一定要交给程序做。人总是有疏忽犯错的时候,但机器不会。

天天向上:

游戏在线上运营,每天都有很多繁杂的事情。我时刻都没有忘记:“以提升自身能力的工作,才是健康可持续的工作”。对于组内的技术建设,每周坚持写周报,整个一年没有漏过一次周报。周报的结构如下: 周报总结——>工作内容总结 组内大事——>项目大事,公司大事,组内成员大事 成员周报:

  • 工作内容
  • 下周计划
  • 叽叽歪歪——>见闻,分享,建议 通过周报形式,组内成员及时互相了解工作,生活,学习情况。对于周报这件事,对于我们技术团队是非常正确有利的事情。

为了给大家指出明确发展方向,我自己添加了Unity技术树。让大家结合自身情况,查漏补缺,很好的发展自身技术。当然我们的传统习惯Code Review也是认真履行的。

开心时刻:

在媳妇的带领下(本人很宅,很懒),对公司附近的房子了解后,贷款买了一套小房子。由于是装修好的房子,也不需要自己花心思装修(甚合我意)。选购好家具,家电,就入住自己的小窝。有了自己的房子,对生活质量有了更高的需求。买了很好的智能路由器,以及自己的服务器,把家里的网络打造成了畅游网络的天堂。媳妇还买了书架,我的几大箱书终于也有了自己的窝。有了自己房子,自己不在是毫不相关的过客,有了很好的归属感。

有朋自远方来不亦乐乎,@志成的到访,非常开心。那天真是糊涂,没有备好酒。我俩就用家里的日本清酒喝了一阵。第二天和志成一起逛了市中心,爬了岳麓山。在西北餐馆吃饭,少喝了一点啤酒,过的很开心。十一放假,姐夫携妻子到访,一起吃了很多美食,逛了很多商场。最开心的是一起在游乐场玩,当时玩跳楼机,看着不咋害怕,当被机器拖到几十米高空,被阵阵凉风吹着,恐惧感开始增加,当自由落体时,连我这种胆子比较大的都吓的尖叫。再也不想玩第二次,这也算是增加了一点人生经验。后面一起玩碰碰车,唤起儿时和表弟第一次玩碰碰车的美好回忆。

年前,表弟和妹妹的孩子相继出生。由衷的感到高兴,当看到小孩子萌萌的视频,整个心都被融化了。生命的传承就这样发生了。自己成了叔叔和舅舅。

心花怒放:

在2016年给我最大惊喜属于Wings战队TI6夺冠。还记着那天凌晨五点总决赛开始,没有定闹铃我自动4点50就醒了。对于有拖延症的人,很难瞬间起床,那天我毫不犹豫起床,蹑手蹑脚到客厅打开电脑开始看比赛,其实正式比赛6点多才开始。其它强队都有自己的绝活,这些绝活英雄的集合称作英雄池,Wings战队的绝活英雄被称作英雄海。因为对于外人来说,不清楚Wings到底有多少套阵容,我想Wings战队自己也搞不清楚自己到底有多厉害。Wings诠释了天道酬勤,努力不一定会得到回报,但是不努力必然得不到任何回报,感谢Wings带来精彩的比赛,护国神翼扬我国威。

一整年来,另一个让我倍感惊喜的事是AlphaGo战胜了人类九段围棋大师李世石。当时看了很多分析,大家都预测AlphaGo不是李世石对手。当AlphaGo赢了之后,大家开始关注自己会不会被替代?人工智能纪元是否开启?做为程序员我是盼望人工智能快速发展,一方面是希望大量的非创造性工作被机器人代替,让人类解放出来做更多创造性的工作。另一方面想让人工智能辅助人类探索智慧的极限。

今年我最喜欢的游戏莫属皇室战争了,在加拿大上线当天,花费15块在淘宝买了一个加拿大区账号,完了大半年,一直是我最喜欢的游戏。这游戏考察兵种搭配,运气,操作,计谋,是我喜欢的游戏类型。

略有小成:

这一年里最大的成就必然是《山口山战记》取的较好的成绩。作为年度优秀员工我是不会轻易告诉别人的,哈哈。在腾讯GAD发表了一篇关于Unity性能优化的文章,获得了三等奖,也算是本年的一项小成就。

继往开来:

年龄也不小了,今年最想做的事情就是结婚。再就是发力做下一款成功的游戏,来弥补在《山口山战记》没有得到的物质回报。新的一年加油。