黄冬明 QQ:42741662
曾遇到某公司的人力资源问我会不会开发手游服务器。我回答说我会开发手游棋牌服务器。她说:我们公司需要会开发MMORPG服务器的,不是棋牌服务器那种小游戏!我听到这话,心里暗暗不爽。
棋牌游戏服务器是小游戏小儿科吗?
如今,只要是游戏服务器,都求要高并发、高性能、高弹性、分布式设计,无论是MMORPG还是棋牌游戏,或是其他类型的游戏。在这样的要求下,游戏服务器的架构基本是一样的,都由中心服、管理服、网关服(路由服)、逻辑服、数据服等组成,支持服务器热加入。
我们看下典型MMORPG架构,基本上是由中心服、登录服、网关服、逻辑服、数据服、广播服组成,再看下棋牌游戏服的架构,基本上是由中心服、登录服、网关服、房间服、逻辑服、数据服、广播服组成。明眼人看到,棋牌游戏服务器多了一个房间服(游戏场)。
棋牌服务器的房间服用于解决某游戏场的弹性人数和负载均衡问题。有了房间服,游戏场的人数就可以固定或不固定。比如新手场,可能有几百人,也可能有几千人,应该不固定人数。这种情形,如果没有房间服,直接是一个新手场逻辑服,那充其量最多支持四、五百人。有了房间服,它既代表了新手场,但又不需要处理游戏逻辑。它管理新手场的所有逻辑服,在它的管理下,根据人数变化逻辑服可以被动态地自动地增加,而且该游戏场逻辑服组被智能分配人数,从而实现负载均衡。由于房间服不用处理游戏逻辑,它只起代表游戏场和做负载均衡的作用,因此它可以轻松管理成千上万人。而每个逻辑服只需处理二百人左右就可以了,大大降低了逻辑服的要求。而且弹性十足。
由此可见,有了房间服,就可以满足棋牌游戏中各种场次的各种需求,比如千人竞技场、千人定期开赛场等等,实现同一种棋牌玩法、规则的多样性。
说完了棋牌游戏的房间服,我们继续说MMORPG游戏服务器和棋牌游戏服务器的其他方面。有人说MMORPG游戏服务器的实现很复杂,实时性要求很高,因此技术含量高。先说实时性,首先,无论是MMORPG还是棋牌游戏,都要求做到游戏流畅。其次,MMORPG实时性主要体现在人物移动上,要求在同一视野内的所有玩家看到某一玩家移动的过程是同步的。对于这个问题,早有成熟的解决方案,什么预测拉扯,验证同步等。另一个体现是数据的实时性,为了提高实时性,一般采用数据缓冲技术。而数据缓冲带来的进程间数据一致性、内存与DB间的数据一致性问题,需要开发人员掌控清晰的内存模型、线程模型。这个是服务器设计人员的基本功。然后MMORPG的复杂性,首先主要体现在NPC的设计和智能上。在当前,较高的人工智能系统尚不能实现,所以MMORPG中只能做一些简单的智能,并没有被要求一定要实现高的人工智能。其次是战斗系统、任务系统、地图管理等大量的模块和逻辑处理。简而言之,MMORPG服务器设计,在于模块多,逻辑多,代码量大,工作量大。但如果就此说MMORPG游戏服务器的核心技术要比其他种类的游戏服务器多很多,难很多,那倒不见得。游戏服务器的核心技术就是架构的制定和网络引挚,所有的游戏服务器都是如此。
以上简单说明了MMORPG服务器和棋牌服务器的一些知识。本文主要是说手游棋牌服务器,所以继续本文的主旨话题。
游戏服务器目前主要分端游、页游、手游。这三种游戏服务器既有相同点,也有不同的侧重点。特别由于网络环境不同,手游比较明显地区别于端游、页游。这里说的网络环境,是指物理通讯。手游是通过手机无线信号连接网络的,端游、页游是通过家用有线或无线信号连接网络的。端游、页游一旦连接到网络,就很少出现掉线的问题,除非出现严重的网络堵塞。而手游的手机信号有暗角、死角、快速移动等问题导致信号时强时弱极不稳定,所以手游客户端的网速会时快时慢,甚至掉线。针对这种网络环境,如何保证手游的流畅性、稳定性,成了手游服务器开发着重关注的问题。手游棋牌服务器更是如此。主要是在消息结构的制定和优化,断线重入的机制和现场恢复上考虑。要实现在极弱信号导致的极慢的数据传输情况下游戏能继续甚至流畅,就需要每种消息尽可能优化到最少字节组成,这样,服务端和客户端间传递一条完整消息(对话)就容易顺利而快速完成。否则,消息结构不合理、size太大,动不动几百字节甚至几K字节,致使服务端和客户端间传递一条消息,要在手机无线网络通讯中长久地进行接收/校验动作,增大不能接收成功的风险。游戏出现卡、慢,甚至无法进行下去也就不奇怪了。
基于手机无线网络的性状,手机游戏动不动断线就是再正常不过的事了。关键是出现掉线后,客户端重连重入,服务端如何处理。在手游棋牌游戏中,分在房间断线重连和在游戏中断线重连两种情形。在房间断线重连,客户端在线程中再执行登录连接过程即可,玩家不用知道;服务端清理原连接,重新响应登录过程。在游戏中断线重线,客户端重发登录命令后,就可继续发游戏中的命令;服务端清理原连接,重新响应登录过程,还要传递当前游戏现场信息给客户端,客户端根据巧妙恢复游戏现场,处理得好,玩家会感觉不到断线重连了,以为游戏一直在流畅地进行着。
至于棋牌游戏机器人,是棋牌游戏服务器开发少不了的。棋牌游戏机器人也需要具备一定的智能,以使玩家不太容易觉查到是机器人在代玩。
由此看来,棋牌游戏服务器开发同样需要具备深厚的服务器开发知识,如果不是长期在棋牌游戏服务器开发行列深耕的人,也不是轻而易举就能成功开发出商业级别的棋牌游戏服务器的,尤其是手游棋牌游戏服务器。