Day29 总结篇

Open-Match 配对框架为了可以弹性调整部署规模,使用了微服务架构并结合 kubernetes 部署,同时提供了水平拓展与高可用的特性。而在这样的设计下,衍生的问题是产生更多的接口,与不好追踪的资料流程,故此在系列文接近尾声的时候,让我们来回顾一下 Open-Match 的全貌,以及我们在设计配对系统时,可以用来辅助我们工具。

架构流程解析

还记得我们在 Day2 便看过的官网架构图,经过了几次的实作我们可以更加了解,各个 service 所使用的物件(浅蓝色部分),以及 service 之间沟通的主要接口(黄色部份),并且以单一次配对为视角,观察配对的请求产生,与请求产生後的流程互动。

  1. 玩家发起游戏请求
  2. 向核心发出配对请求
  3. Director 捞取配对
  4. Backend 触发 MMF
  5. 捞取配对池
  6. Backend 触发 evaluator
  7. 选择分数最适合的配对
  8. Director 将 matched 分配至指定 game server (DGS)
  9. 玩家获得配对回应
  10. 连线至指定 server

附注) Platform 与 Payer Data 取出的资讯,可能是由对战纪录与结果,分析出来的数值,协助系统参考数值做出更好的配对,虽说本身不属於配对系统的一环,但其中使用的资料与配对系统息息相关。

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

如何修改官方范例

目前提供的范例或许不是那麽多,你想加入一些自己的范例的话,可以参考看看我的作法 (based golang)

  1. 修改 demo client & director
  2. 加入自己的 mmf
  3. 调整 Dockerfile
  4. Build and push demo image
    CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o demo-first-match ./cmd/demo-first-match/
    mv ./demo-first-match cmd/demo-first-match/
    docker build ./cmd/demo-first-match -t {YOUR_REGISTRY}/open-match:apex
    docker push {YOUR_REGISTRY}/open-match:apex
    
  5. Build and push demo mmf
    CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o matchfunction ./examples/functions/golang/apex/
    mv ./matchfunction ./examples/functions/golang/apex
    docker build ./examples/functions/golang/apex -t {YOUR_REGISTRY}/mmf:apex
    docker push {YOUR_REGISTRY}/mmf:apex
    
  6. 更换 yaml 使用的 image
    containers:
          - name: om-demo
            image: "{YOUR_REGISTRY}/open-match:apex"
    
    ...
    
    containers:
          - name: om-function
            image: "{YOUR_REGISTRY}/mmf:apex"
    

相关工具

分类 工具 目录
部署 helm Day18, Day19
监控 grafana Day15, Day16, Day17
网路 istio Day21, Day23
UUID snowflake code
评分系统 Elo, MMR Day26

<<:  APP 开发 组别

>>:  开发过程必备除错基本知识 - 内部模组与架构

【Docker】01 安装与入门

1. 基本概念 image: 映像档。只能读取。可以从网路下载或是自己建立。 container: ...

重构原本的内容(golang)(Day22)

此次主要修正内容是将在定义资料库的内容移动到pq的schema中,以及将两个model都套用之前的设...

Day 20:「资料拿来我就帮你改」- Vue 基础观念及常用语法

嘿~昨天的内容还行吗? 「兔兔,昨天突然就接收到大量语法!」 齁,这个我就要说声不好意思~ 原本是...

Day05 - 让轮子依随机速度转动并渐慢停下来

今天更新了轮子让玩家点击页面时轮子会转动,而转速利用 Math.log(t) 达到先快後慢的渐慢效果...

[day3]进入程序开发阶段-测试前准备

程序语言与开发工具 先简单列出这次这次铁人赛预期使用的程序语言与开发工具: 程序开发语言: 前端: ...