手游服务器技术的选择

最近一直在考虑我们项目服务器的问题,目前有三个可用的方案: 

1. 之前我们做端游MMORPG的一套服务器技术;

2. 使用Photon引擎(www.exitgames.com);

3. 使用erlang,重头做;



之前自己一直致力于客户端技术,对服务器技术的了解停留在脚本和数据库开发,对底层技术了解得不是很够,也趁这个时间学习了一下。

我们的项目是一个3d动作游戏,会有多人打副本的玩法,对即时性要求比较高。


最早因为考虑到手游项目系统没有MMORPG那么复杂,而自己也不擅长服务器引擎技术,就考虑用商业引擎Photon,这个引擎2011年被九城代理过大概一年的时间,但最后估计是因为卖不动而撤销了。

Photon引擎本身是很 强大和灵活的,它提供了所谓的高性能服务器技术,原因在于:其一,使用了windows下高性能的完成端口。其二,网络底层全部使用UDP协议,增加了另一种RUDP(可靠的UDP)技术,就是用UDP实现了一套类似于TCP的可靠数据传输。每一个发包都可以设置为可信和不可信的。不可信的就是普通的UDP协议,这个用来发送角色的位置和状态信息是十分高效的,编码也简单。其它诸如聊天的信息就要切换为可信的UDP。引擎也提供了TCP协议支持,以供那些不支持UDP的应用使用(比如flash和unity web player等)。目前也支持了HTTP、WebSockets。

在逻辑层,也已经用脚本开发了房间 、大厅、MMO等基础架构,省掉开发者很多事。

最有价值的是,这个公司在全球4个地区架设了云服务器,上面部署了一套基于负载均衡技术的服务器程序,用户只需要下载免费的客户端开发库,然后购买所需要的许可,就可以快速开发出各种实时通讯的网络对战类游戏。如果我们只考虑战斗部分,服务器方面基本上已经不需要任何开发!


但用这个引擎也有一些问题:

1. 服务器启动后需要连接一个验证用户许可的服务器。这个服务器是在国外的,目前我朝的网络情况,经常让人心碎,哪天连不上了 ,服务器就启动不了。

2. 这个引擎的脚本是C#,因此要在windows服务器上运行,这跟国内的主流情况太不协调,如果再国内运营游戏,会出哪些问题目前是未知的。如果要做海外运营,恐怕还需要另外为windows系统购买授权。

3. 如果使用云服务器,它只能处理实时战斗的部分,因为云服务器上的程序是无法修改的,那么其它如角色信息保存,商城等系统还得另外做服务器来处理。不过这些非即时通讯可以用简单的技术来做,比如就用php做后台,做短链接处理。

4. 这是商业引擎,是要花钱购买许可的。他的价格是按连接数来卖的(国外利用纯技术赚钱真是容易啊)。当然目前看来这个引擎性价比很高,价格很便宜。


后来也有朋友建议使用erlang,据说能快速构建服务器,但这个语言编程思想差异太大,而且即时性也不是很好,所以也就放弃了这个方案。


最后就是使用之前端游那套技术了,但那是完全用TCP协议,位置和状态同步部分极度麻烦(当年我们的老大用那个作为硕士论文,写了几十页纸,那种执着的态度和坚定的眼神,估计答辩老师都哭了),虽然后来有同事加入了一个更智能的算法(叫Dead Reckoning),但我总觉得有简单问题复杂化的趋向。而且因为Photon的一些影响,我会认为TCP的通信效率比较低,特别是在网路状况不太好的情况下,会产生不稳定的通信。上层系统都是针对当时那个端游开发的,和Photon引擎比,抽象度和灵活度都不够,如果要用作其它类型的游戏需要清理掉很多内容。


最后综合考虑了一下,因为我们的开发期还是比较长的,所以决定还是先尝试自己重做一套,融合两套技术的优点:使用RUDP技术,运行在linux下,直接开发64位的。网络底层用C++实现,脚本使用lua。上层就为目前的项目量身定做一个。yes,we can!

     


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值