杰赛科技股票代码:002544
资本市场,诚信为本
通信网络建设 智能专网信息化 信息网络建设 云计算与大数据 电子电路设计与制造 其他业务
您当前所在的位置: 首页 - 解决方案 - 杰赛技术 - 正文
浅谈MMORPG游戏服务器设计

 
    MMORPG是英文“Massive Multiplayer Online Role Playing Game”的缩写,意为“大型多人在线角色扮演游戏”,是电脑游戏中网络游戏的一种。
    不同MMORPG的背景设定差异很大,但游戏方法却大同小异,基本上都是玩家创建虚拟角色,玩家角色在游戏中和其他玩家创建的角色以及服务器控制的角色(NPC等)进行互动。MMORPG玩家可以在游戏世界中打怪、做任务、或者和其他玩家PK等。
    这类游戏的一个简单的设计思路就是把数据处理放在服务器上,客户端通过图形化处理来占线数据结果。
 
 
    在这里连接服务器接收客户端的连接,然后再由该连接服务器根据不同的需要,把游戏消息转发给其它相应的服务器(逻辑和地图服务器)也因为它是客户端直接连接的对象,它同时也负担了验证客户身份的工作,也可以当作登陆服务器。
    地图服务器是为玩家提供虚拟世界的服务器。在这个服务器里主要是进行数据广播。例如一个玩家从A点移动到B点,那么要让其他玩家也知道这个玩家从A点移动到了B点。
    逻辑服务器为玩家提供NPC等逻辑处理服务。在这个服务器里主要处理玩家自己的数据。例如玩家从商店购买一瓶药等;不过在实际应用的过程中,游戏服务器肯定不会向上面说的那么简单,比如计费可能会很复杂不能简单放进逻辑服务器里,比如玩家聊天可能需要大范围的广播也可能只对一个人说;这时我们就要考虑修改我们的设计,一般来说我们尽量遵循增量开发的思路,就是说我们通过在原来基础上进行增加来满足需要。

 
 
    但是有时候这样可能也不行,比如实际用户量非常大,单一的服务器无法完成工作,这时候我们就要考虑用服务器组来完成工作。例如地图服务器,可以根据需要,把游戏里所有的地域进行划分,划分为N个区域,然后让这一个区域里发生的事件都用一个特定的服务器进行处理。这样做的目的是减少一个服务器所承担的计算量,把整个系统组成一个分布式的网络。
    不过这样做的同时会造成一个麻烦:当一位玩家从区域1,移动到区域2。这个时候,就必须先在服务器1里把玩家删除,然后再在区域2里加入玩家。同时需要由服务器1向服务器2转移玩家的数据信息(因为服务器组在工作的时候,玩家的信息只能保存在当前所在区域的服务器里),也就是说一旦玩家发生服务器间区域移动,服务器端就不可避免的造成数据通讯。因为这种移动并不是有规律的,玩家所在的服务器都有可能到达其它服务器。这样,如果服务器组里有N台地图服务器,那么,每个服务器都可能向其它N-1台服务器产生连接,总共就可能产生N×N个连接。如此数量连接如果只是使用普通的socket设计,就很有可能会给服务器通讯间的各种问题所困扰,为此,在商业网络游戏的服务器之间,通常都使用成熟的第三方的通讯中间件,如ACE, ICE等作为网络连接的传输层输层。


 
    当然实际设计中我们可能要考虑的问题要复杂的多,真正设计一款MMORPG的服务器也不可能在这么短短的一篇文章中讲述清楚,以上只是简单介绍了一个MMORPG的服务器设计思路。
 

(技术中心  刘元进)
 
dsaf