昨天晚上,跨服赛第三次外部测试圆满完成,整个比赛期间没有出现任何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呢?

看到大家说“满意”,看到玩家玩的开心,想想这半年来的辛苦,两行热泪……没有流出来。

跨服功能和跨服比赛测试正常相关推荐

  1. 微信多客服功能怎么使用?

    企业微信公众号的同质化越来越严重,单纯靠内容取胜已经越来越难,而服务的优劣成为影响企业成功的重要因素.想要将微信公众号打造成优秀的客户服务工具,就需要用到微信多客服功能,那么具体怎么使用呢? 网页版微 ...

  2. 币须知道 |马云又抢占了一块高地,蚂蚁金服区块链跨境汇款正式落地,2018世界杯板块排名涨幅第一...

    您的 转发 和吐槽是我们前进的动力 今日要闻 监管要闻 ·银行屡次质疑区块链,真创新还是假参与? ·浙江省副省长:应普及区块链等热点产品及服务的体验与应用 ·桂林市副市长:愿为区块链在桂林的发展提供良 ...

  3. 九阴真经服务器一直维护,《九阴真经》全区服维护 修复跨服卡buff

    原标题:<九阴真经>全区服维护 修复跨服卡buff 尊敬的玩家: <九阴真经>全区全服于7月28日8:00-10:00停机进行更新维护工作本次维护后版本号将由1.0.1.585 ...

  4. 纯干货:分享一些跨境电商客服经常会用到的话术(含中英文)

    纯干货:分享一些跨境电商客服经常会用到的话术(含中英文) 跨境电商同国内的电商平台一样,是将国内的产品卖到国外去赚取信息差,只不过客服面对的是国外的客户,仍旧需要为客户解决一系列服务问题. 让前来咨询 ...

  5. 跨境电商客服回复话术

    跨境电商同国内的电商平台一样,是将国内的产品卖到国外去赚取信息差,只不过客服面对的是国外的客户,仍旧需要为客户解决一系列服务问题. ​ 前言 跨境电商同国内的电商平台一样,是将国内的产品卖到国外去赚取 ...

  6. csgo客服端文件与比赛服务器,B5全新客户端功能大揭秘 自定义比赛功能篇

    B5对战平台从创立伊始便立志成为国内专业的CS:GO对战平台,因此B5签约了国内众多职业战队也举办了很多CS:GO比赛,不管是职业玩家还是民间大神都可以在B5对战平台找到自己的归宿.然而有很多玩家和裁 ...

  7. Java实现微信公众号客服功能和本地联调

    Java实现微信公众号客服功能 微信公众平台设置 生产环境 公众号 设置 [开发]–> [基本配置]–> [服务器配置] 注: a.服务器地址(URL) 是开发者用来接收微信消息和事件的接 ...

  8. 微信小程序开发中调用button组件添加微信客服功能

    个人比较喜欢这个解决方案,原因一是由腾讯官方运营,比较稳定.二是确实很方便啊,直接用微信回复就好了.核心代码就一行,如下 <button open-type="contact" ...

  9. 微信在线客服功能开发问题记录

    由于负责公司语音客服系统开发.本着拓展客服系统功能,完善客服系统生态的原则.需要开发在线客服系统.首先对接的就是微信公众号关注用户的在线客服功能. 在微信测试平台http://mp.weixin.qq ...

最新文章

  1. 服务器中的地震仪,MOM2005+SP1部署指南(MOM2005系列之一)
  2. xp工作组计算机打不开,XP“网上邻居”、“查看工作组计算机”打不开及无法访问局...
  3. document的createElement方法创建具有指定标签的DOM对象
  4. python教程:封装、多态、反射
  5. android 设计qq界面,[考试求助]仿照腾讯QQ应用软件,编写Android程序,登录界面设计...
  6. html5 ul下的li重叠解决,html – 如何仅在嵌套的ul中悬停当前的li?
  7. 标签select选择框通过js来选择默认值;代码示例
  8. 终结者:借助ViewPager实现Fragment左右滑动
  9. jodconverter+ pdfbox 实现 office文档转pdf(openoffice实现),并提取pdf为缩略图、预览图
  10. java 64位 32位_32位和64位的java程序可以通用吗
  11. python控制51单片机的红绿灯_基于51单片机的交通灯控制设计
  12. html 中英文字体自动调节,网页CSS字体/网页常用中英文字体(带字体预览)
  13. SiT9386:AEC-Q100认证汽车级差分振荡器1-220MHz任意频率
  14. 玩客云 装java_玩客云内置 eMMC 存储刷入 armbian
  15. IOS清理缓存的几种方法
  16. android 手机内存64实际不到,手机拥有64G,为何用了不到1G,就显示内存不足?是谁在搞鬼?...
  17. 经历121,市场情绪极度恐慌,美联储加息对我们有什么影响,币圈人又该何去何从?
  18. 微信小程序微商城(五):动态API实现商品详情页(下)
  19. 手把手教你备份 nvidia jetson agx xavier 系统(亲测有效、超详细)
  20. tmux | 使用手册 (cheat sheet)

热门文章

  1. MySQL——MySQL的flush
  2. java 免登录_最简单、稳定的免密登录
  3. 短域名生成java_腾讯短链接url生成接口/腾讯短网址在线生成/新浪微博短链接生成器的分享...
  4. 【flask】 flask
  5. 监控摄像头清晰度(分辨率)介绍
  6. 纯css锚点跳转过渡效果 - 神奇的scroll-behavior属性
  7. 顺序表的定义及基本操作
  8. 如何下载网页中的图片
  9. RAID5和RAID10在磁盘读写选择对比
  10. CVPR小样本检测:蒸馏上下文助力小样本检测(代码已开源)