昨天晚上,跨服赛第三次外部测试圆满完成,整个比赛期间没有出现任何BUG,大家都比较满意,所以说这个功能暂时可以告一段落了,写下这篇文章记录过程的艰辛。
这个功能,策划提需求是在今年(2014)有3月份,真正我这边开始做应该是在3月底~4月初,当时富驰还在,服务端有我们两个,加上主程大Boss,算3个人,客户端有森哥一个人,当然这个功能客户端几乎没什么工作量的,都在服务端。
最开始定方案的时候,主程是打算我这边整理跨服框架,富驰处理业务层的东西,后来富驰转岗去其他部门了,业务层的也都变成我做了,所以也直接导致了这个功能Delay近3个月。
先说说框架部分:
核心架构使用的是以前DK的DBS和DBC,这是跨服功能的核心,也是主程以前的作品,这些都是08的工程,DBC要移到VC6上去才可以使用,所以最开始做的事情就是移植这个工程,其中的过程现在想想仍心有余悸,各种编译问题,工程问题,以及很多VC6不支持的08新特性,这些工作我用一个字形容:“脏”,当时做的时候就觉得这简直是IT界最脏的工作了,跟清洗下水道一样脏,你想想啊,一行代码不写,就是在那整理工程,解决各种编译问题。但是等到做完这个的时候,我已经不那么认为了,这个活虽然脏,但是一点也不比写代码容易,甚至我觉得比写代码更难,做这个可以有效的锻炼解决问题的能力,就是说以后遇到什么难题,不会畏惧了,会更好的迎难而上。
最近刚好也看到一篇文章,作者说:“一个好的程序员,不是看他看了多少书,而是看他做过什么”,我想补充一句,“还要看他解决过什么问题”,像这次移植这么大的工程,也算是解决一个大问题了吧,现在想想很为自己自豪。当然也不能说自己有多厉害,还是主程厉害,很多问题几乎都是他帮忙解决的,他不但技术好,经验丰富,而且解决问题的能力异常的强大,现在对他是五体投地了。以前对他有过一些误解,在做完这个功能之后完全都没有了。
移植完DBC之后,就是对DBS的改造了,因为DBS是主程的作品,所以他很清楚如何做,告诉我怎么做之后,我直接执行就行了。饶是如此,我还是改错了,在早期这个问题还不明显,后来版本发布出去给玩家后,效率非常低,完全无法发挥DBS多线程的优势。主程检查代码后发现是我改错了,而且错的很离谱。我仔细看了代码的逻辑后知道错在哪里,把它改正就可以了,一起改的还有增加了DB池,等等,也都是主程提的方案,我只是实施罢了,没什么好说的。
这个做完还要解决所有游服之间通讯的问题,这个没什么好说的,必须要有一台中转服务器做消息的转发,这个的实现完全是我自主“设计”并实现的,设计加上引号是因为其实并没有什么设计,代码非常简单,就是游服做为客户端连接到,中转做服务端,做一个消息的收发而已,这部分用到的核心模块就是网络方面的了,代码都是现成的,直接拿来用即可。说到这,我又想起了最近看的一篇文章(代码之美某篇序),大意就是说现在的代码库越来越多了,几乎所有的需求都已经有人写好了,程序员所要做的就是把代码组装起来,实现需求方提出的需求。我做中转服务器完全就是代码的组装,而不是原创。不过作者也说了,能组装到一起,那也是能力,聊以自慰:)。
中转服务器(TS)做完,就要做中转客户端喽(TC),这个就没有单独的写一个工程什么了,就是一个类,负责和中转服务器通讯,嵌入到游服的某个模块内,这个也没什么难度。
-------------------------
上面说的都是框架层的支持,下面要说说跨服业务了,跨服业务的设计,是和主程讨论着来的,最早的设计构想,流程图等等,这些当时讨论了很久才最终确定方案,当然主程只是提供大的方向,具体的细节还是由我来做,最后这个流程实现出来后,基本上没有大的问题,小的BUG修修补补的,也就可以用了。(因为涉及公司机密,细节就不描述了)
上面就是跨服功能到底做了什么了……
-------------------------------------------
策划提出的需求,还有一个跨服比赛,这个对我来说也是第一次。以前没做过比赛,大概花了一个月的时间编码完成的,QA测试,改BUG,这些都过了有7~8轮吧(花了一个月时间),被主程狂批,但最后也算圆满完成。本来吧,这个比赛应该是由富驰做的,但他转走之后,这项工作也交给我了,我也是年轻气盛,没想太多就接了,现在如果让我再选,我一定不会接,因为接了这个后,意味着所有的工作都卡在我身上了,这个单肯定会Delay,试着,如果做比赛这两个月,交给森哥,我专心维护跨服框架,绝对不会Delay3个月这久,最多一个月了不起了吧,可能都不用Delay。我的失误,导致了整个项目的延期,这是很严重的事故,被项管投诉到部门长那里,搞的主程也很生气。
主程说:“不是你做的事情多,别人就会认同你”,的确,把比赛也接过来,我是忙成狗,但是没人管我忙成什么,也没人在乎我有多少个周末在公司加班,有多少个晚上是12点以后才下班,人家只在乎你能不能按时完成项目的计划,如果没有完成,那就是你不行,就要投诉你。我算是明白这个道理了,确实是这样的。不过就我本人来说,通过做这个比赛系统,多少增加了一些编码的经验,对我的成长是有好处的,至于项目造成了损失,我只能说抱歉,虽然是个双输的局,但我个人来说是有进步的 :)
----------------------------------------
随着三测的圆满完成,这个功能也就结束了,当看到昨天晚上100多个玩家在赛场内互相PK时,真是非常的有成就感,更何况这些玩家都是超级大R呢?
看到大家说“满意”,看到玩家玩的开心,想想这半年来的辛苦,两行热泪……没有流出来。