生命週期上報
遊戲在運營商 iframe 裡跑起來之後,用 @moosehq/game-client-sdk 的 GameBridge 把它的生命週期上報給運營商的 shell。這和取得 session token是兩回事——GameBridge 完全不需要 session token,它只負責把遊戲的生命週期上報給 shell:
ts
import { GameBridge } from '@moosehq/game-client-sdk'
const bridge = new GameBridge()
bridge.notifyGameLoaded(currentBalanceMinor)
// BET_START/BET_END 是兩階段的結果揭曉,而不是兩個獨立的網路時刻——伺服端的下注/結算呼叫
// 通常會在一次回應裡結算整局(包含任何派彩),所以只在結果已經確定、你即將開始揭曉它的時候
// 才呼叫 BET_START:
const result = await submitBet(betAmountMinor) // 你自己的伺服端接入(見 ./server-integration)
if (result.declined) {
bridge.notifyBetEnd('declined', betAmountMinor, result.balanceMinor)
bridge.notifyBalanceExhausted()
} else {
bridge.notifyBetStart(betAmountMinor, result.balanceMinor - betAmountMinor) // 這筆下注扣款後、派彩套用前
await playReveal(result) // 你自己的揭曉動畫(如果有的話)——純粹是表現層
bridge.notifyBetEnd(result.outcome, betAmountMinor, result.balanceMinor, result.winAmountMinor)
}
// 玩家點選了遊戲內的"返回大廳"控制元件:
bridge.notifyExitGame()GameBridge 的建構函式還接受 target(預設為 window.parent),可以用來覆寫訊息的傳送目標——主要用於測試;正常執行在運營商 iframe 裡的遊戲應該直接用預設值即可。
生命週期上報和機器人偵測訊號是兩回事——那是另一個獨立的 SDK 進入點(@moosehq/game-client-sdk/behavior-reporter),有自己專屬的指南。
完整參考
每個匯出型別和方法簽名(包含 shell 端實現監聽器所依據的 protocol 模組)詳見 @moosehq/game-client-sdk 參考文件。