CloudNativeGame / kruise-game-open-match-director

Opensource cloudnative game matching service for openkruisegame.
Apache License 2.0
20 stars 3 forks source link

The Game Match Solution for Multi-Clusters(Multi-Regions) #10

Open chrisliu1995 opened 6 months ago

chrisliu1995 commented 6 months ago

背景需求

为了尽可能降低网络延迟并优化玩家体验,大型多人在线对战(PvP)游戏经常采取在全球范围内部署服务器的做法。这种布局确保了玩家可以连接到地理位置邻近的节点,以获得更流畅的游戏过程。然而,为了丰富游戏的趣味性,在网络延迟允许的前提下,来自世界各地的玩家也应有机会加入到同一场对战中。这就将游戏内的匹配逻辑带入了一个全新的复杂性层级。 以往,OKG的director系统各自独立运行于每个服务器集群之中,专注于处理本地集群的匹配要求,同时仅限于指派各自集群内的服务器资源。不难看出,这种单一集群的模式由于局限于特定区域,无法满足跨区域游戏匹配需求,阻碍了全球化玩家互动的潜能。 如今要想跨越这个障碍,就必须对现有的游戏匹配架构进行全方位的更新,创建一个能够在全球范围内高效匹配玩家的模型。这种全域匹配系统的引进,不仅能够提供更好的玩家游戏体验,还能促进不同文化背景的玩家之间的交流,为游戏带来更加广泛的国际影响力。

架构设计

方案架构图如下图所示

image

匹配过程如下:

  1. 玩家客户端访问各地Ping Server,获取即时延迟数据。
  2. 将各地延迟数据作为ticket属性,向Host集群的Open Match发起请求,进入匹配队列。
  3. Host集群中Director将生成与地域有关的Profile,并解析生成的Match、寻找对应地域的可用房间服,获取其地址并返回。

Director改造设计

为满足上述架构,kruise-game-open-match-director(OKG Director)需要进行全地域化改造:

新增启动参数

-- slave-clusters

profile命名规范

master集群访问slave集群资源

从集群(图中的region B、C所在集群)的kubeconfig以主集群open match同命名空间下的secret形式部署,主集群拿到从集群的访问权限。

symsimmy commented 6 months ago

@chrisliu1995

  1. ping server是否是和openkruise game一起部署,还是可选组件?
  2. ping server是采用什么网络协议?
  3. 为了获取各地的延迟数据,客户端需要支持哪些工作?
chrisliu1995 commented 6 months ago

@chrisliu1995

  1. ping server是否是和openkruise game一起部署,还是可选组件?
  2. ping server是采用什么网络协议?
  3. 为了获取各地的延迟数据,客户端需要支持哪些工作?

ping server可单独部署,支持upd / http。客户端访问ping server获取延迟数据后,筛选出符合备选条件的地域集群名称,在创建ticket时作为参数传入。

本设计中主要关注director的设计逻辑,ping server的需求我们接下来可一并讨论。