咨询邮箱 咨询邮箱:1947790376@qq.com 咨询热线 咨询热线:0371-56752222 微博 微信
游戏服务器的无缝地图的架构详解
发表日期:2017-12-26    来源:帝通科技http://www.9dm.cn    浏览次数:
魔兽世界的中无缝地图,想必大家印象深刻,整个世界的移动没有像以往的游戏一样,在切换场景的时候需要 loading 等待,而是直接行走过去,体验流畅。
现在采用无缝地图的游戏大地图多数采用的是 9 宫格的样式来处理,由于地图没有魔兽世界那么大,所以采用单台服务器多进程处理即可。
不过类似魔兽世界这种大世界地图,必须考虑 2 个问题:
多个地图节点如何无缝拼接,特别是当地图节点比较多的时候,如何保证无缝拼接。
 游戏服务器的无缝连接地图实现方法
如何支持动态分布,有些区域人多,有些区域人少,保证服务器资源利用的最大化。
 
为了解决这个问题,比较以往按照地图来切割游戏而言,无缝世界并不存在一块地图上面的人有且只由一台服务器处理了。
此时需要一组服务器来处理,每台 Node 服务器用来管理一块地图区域,由 NodeMaster(NM)来为他们提供总体管理,更高层次的 World 则提供大陆级别的管理服务。
 
一个 Node 所负责的区域,地理上没必要连接在一起,可以统一交给一个 Node 去管理,而这些区块在地理上并没有联系在一起的必要性。
一个 Node 到底管理哪些区块,可以根据游戏实时运行的负载情况,定时维护的时候进行更改 NodeMaster 上面的配置。
对象的无缝迁移
 
玩家 A、B、C 分别代表 3 种不同的状态,以及不同的迁移方式。
我们分别来看:
玩家 A:玩家 A 在 Node1 地图服务器上,由 Node1 控制,如果迁移到 node2 上,需要将其数据复制到 Node2 上,然后从 Node1 移除。
 
玩家 B:玩家 B 在 Node1 和 Node2 中间,此时由 Node1 和 Node2 维护,若是从 Node1 行走到 Node2 的过程中,会向 1 请求,同时向 2 请求,待全部移动过去了再移除。
 
玩家 C:玩家 C 在 Node2 地图服务器上,由 Node2 控制,如果迁移到 Node1 上,需要将其数据复制到 Node1 上,然后从 Node2 移除。
 
具体魔兽世界服务器的分析,篇幅过多,我们以后再聊。
房间服务器(游戏大厅)
房间类玩法和 MMORPG 有很大的不同,在于其在线广播单元的不确定性和广播数量很小。而且需要匹配一台房间服务器让少数人进入一个服务器。
这一类游戏最重要的是其“游戏大厅”的承载量,每个“游戏房间”受逻辑所限,需要维持和广播的玩家数据是有限的,但是“游戏大厅”需要维持相当高的在线用户数。
所以一般来说,这种游戏还是需要做“分服”的。典型的游戏就是《英雄联盟》这一类游戏了。
而“游戏大厅”里面最有挑战性的任务,就是“自动匹配”玩家进入一个“游戏房间”,这需要对所有在线玩家做搜索和过滤。
玩家先登录“大厅服务器”,然后选择组队游戏的功能,服务器会通知参与的所有游戏客户端,新开一条连接到房间服务器上,这样所有参与的用户就能在房间服务器里进行游戏交互了。
 
以上就是目前游戏服务器的演化进程,由于所涉及的内容太多,关于服务器的相关网络 IO 以及内存模型都没有介绍,以后有机会再具体讲讲这一部分。
 

本文链接:http://www.9dm.cn/industry/335.html转载请注明。
标签:游戏服务器,无缝地图,游戏主机


上一篇:三代游戏服务器的发展历程 下一篇:帝通高性能游戏服务器的购买方法和促销