手柄君的小阁

个人私货聚集地

浅谈Ra2ol发展史

我是红警2战网创建人,Clsky。很久之前便接到手柄的邀请来写篇博客,无奈工作缠身。今天难得空闲,谈一下红警2战网的发展。本文仅授权给手柄君的小阁(https://www.bysb.net),禁止转载。

本人是一个红警2忠实粉丝,追其源头可能就是小时候被父亲所影响,以至于至今对其他网络游戏和手游兴趣都不大。在王者吃鸡风靡的今天,能专注与红警2单机、联机和DIY,怕是游戏届的一股清流了。

红警2的对战一直是一个难题。曾经的对战平台有QQ对战平台(现在已更名)、浩方、互动等,通过局域网(网路)对战。当时想要玩一局会出现很多问题,有时候刷不出房间,有时候进去不能退,相信曾经大家都有体会。后来Win7普及,又受到IPX协议的困扰,让我等爱好者苦不堪言,所以那段时间一直在研究网际网路(也就是P2P对战)。经过多方探索,发现有两款开源服务器支持红警2,一个名为“FSGS”,另一个“PVPGN”。

由于本人并非科班计算机出身,全凭爱好,所以遇到了很多问题。那段时间一边研究教程一边问大神,断断续续也弄了一年多。终于有一天,客户端连上了服务器。这个消息对于我是很隆重的,我急忙通知了好朋友陪我一起测试,从早上弄到了晚上,发现有个问题——无法开始游戏,提示”连线至其他玩家”。

又是一段时间的探索,才发现问题出在了路由器。2000年红警2诞生时,没有现在这么复杂的网络设施,所以红警2的网际网路联机只能在独立IP情况下使用,现代社会都是在路由器后,而且IP还是共享的——白费功夫,无法使用。

当然我不能就此放弃,想到了虚拟局域网。我用Softether做服务器,OpenVPN做客户端,勉强能进行游戏,但是配置十分复杂。2015年,我做成了第一版战网,在网上找来了二十多名测试者,算是满足了我两年来的心愿——账号密码登录,建房,大厅,密码,锦标赛,匹配等等基本的网游因素。(不得不佩服Westwood,在2000年便能想到这些网游必备因素,拿到现在也不过时)

2016年初,尤里复仇玩家羊毛,给我传了一款对战平台,CNCNET。这款平台给了我很大的启发,它将P2P发展成服务中心式,通过服务器让路由器后的每位玩家都可以高速参与对局,还可以反作弊。美中不足的是,平台是英文,服务器在国外,国内几乎无法对战。我花了一个月左右进行原理探究,而后便开启战网2.0的开发之旅。

开发必定是艰难的,前面说过本人并非专业程序员,都是在初中之时自学了一些基本编程,而后又了解到易语言,通俗易懂,便一直在使用。第一次做联网程序,一边做客户端一边做服务器,网上查资料,提问社区大神,其中几次放弃,做做停停,最后还真做出来第一版测试平台。急忙拉上群里十多名玩家进行测试,虽然十分钟不到就崩溃了,但是这也为将要放弃的我打上了一针兴奋剂。

后来,改了几个版本,战网的雏形便出来了,但依然仅有十几个玩家。发帖吧,加战队,找玩家,看着玩家数量一步一步上涨,又显现出了一个问题——服务器扛不住。

服务器费用是阶梯式的。最基础的服务器每个月只有80元左右,但只能承载二三十人。随着玩家一步步增多,作为刚毕业的学生承受不来每个月几百块的成本。那段时间多亏玩家们众筹红包,又不定期有匿名玩家向我发大额赞助,使得战网得以延续。随着人数的进一步增加,我最初设计的服务器客户端架构弊端越来越大,几分钟服务器就会崩溃一次,给玩家和我都造成了很大的负担。

2016年中旬,我开始学习成熟的系统架构。我借鉴了KBEngine的算法和架构,又学习了MySQL、线程池,看了很多网游方面的博客和书籍,最终在2016年11月写完了战网3.0版本。这算是战网的里程碑,标志着较为成熟的体系出现,并一直沿用至今。如今,战网已经支持了匹配、好友、战队,房间、大厅、战役,为红警爱好者提供了稳定又和谐的对战环境,也算是完成了我四年前的梦想。在这里我要对四年里支持我的朋友们表示由衷的感谢。

本篇文章写了我开发战网的历程,授权给手柄。后续我会从平台底端一步一步分析,附上部分源代码,并写出开发时遇到的一些坑,希望能给有相同开发想法的读者带来一些启发。

觉得有点意思,资助本站一下吧

查看详细收支和捐款

打开支付宝扫一扫或点此处领红包

  1. 手柄君~ 手柄君~说道:

    由衷地感谢!各方面的(逃

来一发吐槽