iT邦幫忙

2021 iThome 鐵人賽

DAY 29
0

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

上一篇
Day28 Apex 模擬配對實作
下一篇
Day30 Open-Match 使用與參賽心得
系列文
徵坦補! 新手可! Open-Match 配對框架30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言