Day4 官方 Demo 说明

今天我们要藉由官方所提供的 Demo,来介绍几个关键实体与流程的运作。再开始本篇 Demo 安装前,请确认已参照前一天的核心安装步骤,把 Open-Match 部署完成。

本日目标

  • 藉由官方所提供的范例部件,模拟 Open-Match 完整对产生流程
  • 说明流程中所使用的部件与基本概念,完成E2E(端点对端点配对测试)

确认已部署 Open-Match 核心

当前版本核心须包含:

  • Open-Match 核心 Deployment, Service, PodSecurityPolicy
  • 核心所需 Redis Deployment
  • IAMs 权限管理所需要的 Role
  • 自动拓展策略所需的 HorizontalPodAutoscaler
  • 预设参数所使用的 ConfigMap
~ kubectl get pod -n open-match

NAME                                       READY   STATUS    RESTARTS   AGE
open-match-backend-5bcfd664dd-g7fhv        1/1     Running   1          3d18h
open-match-evaluator-68b657c9d9-4pcjr      1/1     Running   0          3m15s
open-match-frontend-8478cb9d9b-55kw7       1/1     Running   0          3d18h
open-match-query-8545bbb4d4-phvcb          1/1     Running   2          3d18h
open-match-redis-node-0                    3/3     Running   0          3d18h
open-match-redis-node-1                    3/3     Running   0          3d18h
open-match-swaggerui-6658d4c55b-9dtkw      1/1     Running   0          3d18h
open-match-synchronizer-85b5dc89d8-mtpmc   1/1     Running   1          3d18h

Install Demo

建立独立 namespace 并部署 demo.yaml

kubectl create namespace open-match-demo

kubectl apply --namespace open-match-demo \
  -f https://open-match.dev/install/v1.2.0/yaml/02-open-match-demo.yaml

确认部署结果

kubectl get pod -n open-match-demo

NAME                           READY   STATUS    RESTARTS   AGE
om-demo-57bcbf68f5-cxx6m       0/1     Running   0          20s
om-function-7fd97764cd-4d2ft   1/1     Running   0          20s
om-function-7fd97764cd-cd66h   1/1     Running   0          20s
om-function-7fd97764cd-wksmw   1/1     Running   0          20s

藉由范例所模拟的配对,观察配对流程 http://127.0.0.1:51507

kubectl port-forward --namespace open-match-demo service/om-demo 51507:51507

https://i.imgur.com/AbuZxQO.gif

Demo 内容说明

本范例由三个部件模拟配对流程

Client

创造假玩家产生配对请求,并且每个假玩家会经过以下状态:

  • Sleep 一下模拟大厅等待阶段 (Main meun)
  • 确认条件後送出配对请 (Director 会收到配对请求,这段 demo 并没有在状态上刻意呈现)
  • 等待配对 (Waiting match with ticket ID xxx)
  • Sleep 一下模拟配对後连线状态 (pretend this is playing a match...)

Director

接收假玩家产生的配对请求,并且执行配对指派

  • Director 可以指定包含特定条件的配对池,但由於 demo 内无指定,故会把所有的 tickets (配对请求) 给捞出
  • 将配对的 match (一局)内的 tickets,受予一组相同的随机 IP adress,用以表示被分配到某一台游戏服务器上
  • Sleep 一下模拟游戏进行时间

Match Function

进行符合该游戏逻辑的配对处理,在本次 demo 中仅简单实作,两人即配对成功的条件。(特别注意一下,不知道为什麽官方并没有把 demo 用到的 MMF 放在 demo 资料夹下,你可以在 examples/functions/golang/soloduel/mmf/ 下找到它)

物件名称与时序图说明

以下三个名词为我们在配对会使用到的物件,并且会在 demo code 与核心接口反覆出现

  • Ticket: 一个配对中的最小单位,代表一次配对请求,里面含有配对所需要的条件参数
  • Assignment: 在配发 tickets 至 Open-Match 核心时,服务器用来关联该张 ticket 的 mapping。对 Clinet 来说,是发送 ticket 後等待的结果
  • Match: 一场配对,包含了一群 tickets 与配对条件

以下三个部件,则为使用 Open-Match 配对框架,所需实作的部分

  • Match Function(MMF): 主要配对逻辑需实作於此。在部件中会一一把 tickets 中的条件参数,进行符合该游戏逻辑的配对处理。在本次 demo 中仅简单实作,两人即配对成功的条件
  • Director: 於此关联 tickets 与 game server。将成功配对的 tickets 回覆特定的 Assignment
  • Client: 用以产生满足 Open-Match 所定义的 ticket,把配对参数带给 Open-Match 核心接口

下图我们可以发现,Client 所产生的 tickets,是发送到 Open-Match 的核心程序接收,再经由我们自行实作的 Director 取出後配对。MMF 也同样是经由 Director 向核心询问後取出,可以将 MMF 服务视为调用 callback func 的方式。最後 Director 才将完成配对後的 Assignment 回传给 Client,完成一次配对生命周期。

https://i.imgur.com/KlQjVw8.png

Referance


<<:  [区块链&DAPP介绍 Day4] 第一个智能合约

>>:  Day.4 针对使用者做管理 - 权限管理&资安 (Power)

资讯治理(Data Governance)

数据管理员(Data Steward) 数据管理员是组织中的一个角色,负责利用组织的数据治理流程来...

创建App後半部界面

在已建设的登入界面与App主界面後,今天来建设App的後部分界面,也就是功能主要在的大部分,其中更分...

【Day 29】Deno + Oak 建立 Restful API (2)

接续昨天继续实作 还记得我们昨天在 Controller 里新增的 todo.ts ? expor...

Flutter基础介绍与实作-Day22 旅游笔记的实作(3)

我们今天要接续昨天的划分4个区域开始,我们今天先从北部开始吧! 一样先来建立资料夹 lib/scar...

Youtube Data API 教学 - 那就从播放清单 playlistItems.list

「鲑鱼均,因为一场鲑鱼之乱被主管称为鲑鱼世代,广义来说以年龄和脸蛋分类的话这应该算是一种 KNN 的...