今天我們要藉由官方所提供的 Demo,來介紹幾個關鍵實體與流程的運作。再開始本篇 Demo 安裝前,請確認已參照前一天的核心安裝步驟,把 Open-Match 部署完成。
當前版本核心須包含:
~ 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
建立獨立 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
本範例由三個部件模擬配對流程
創造假玩家產生配對請求,並且每個假玩家會經過以下狀態:
接收假玩家產生的配對請求,並且執行配對指派
進行符合該遊戲邏輯的配對處理,在本次 demo 中僅簡單實作,兩人即配對成功的條件。(特別注意一下,不知道為什麼官方並沒有把 demo 用到的 MMF 放在 demo 資料夾下,你可以在 examples/functions/golang/soloduel/mmf/ 下找到它)
以下三個名詞為我們在配對會使用到的物件,並且會在 demo code 與核心接口反覆出現
以下三個部件,則為使用 Open-Match 配對框架,所需實作的部分
下圖我們可以發現,Client 所產生的 tickets,是發送到 Open-Match 的核心程式接收,再經由我們自行實作的 Director 取出後配對。MMF 也同樣是經由 Director 向核心詢問後取出,可以將 MMF 服務視為調用 callback func 的方式。最後 Director 才將完成配對後的 Assignment 回傳給 Client,完成一次配對生命週期。