Giao thức postMessage
Trang này dành cho ai muốn tự viết SDK – ví dụ plugin cho Unity, Godot hay engine riêng – thay vì dùng file gamehub-sdk.js. Nếu game là HTML/JavaScript, cứ dùng SDK có sẵn.
Định dạng tin nhắn
Game và hub nói chuyện qua window.postMessage. Mọi tin nhắn có dạng:
js
{ source: "gamehub", v: 1, type: "GAME_START", payload: {} }- Game gửi lên trang cha:
window.parent.postMessage(message, "*") - Hub gửi xuống khung game; game lắng nghe sự kiện
messagetrênwindowvà bỏ qua tin không cósource: "gamehub"
Các loại tin nhắn
| Chiều | type | payload |
|---|---|---|
| game → hub | READY | { sdkVersion } |
| hub → game | INIT | { protocolVersion, standalone, locale, player, canSubmitScore } |
| game → hub | GAME_START | {} |
| game → hub | GAME_OVER | { score, leaderboard } |
| game → hub | AD_REQUEST | { requestId, kind: "rewarded" | "interstitial" } |
| hub → game | SCORE_RESULT | { saved, code, message, score?, best?, rank?, isNewBest? } |
| hub → game | AD_RESULT | { requestId, shown, rewarded, reason? } |
| hub → game | PAUSE / RESUME | {} |
Trình tự
- Game tải xong → gửi
READY - Hub trả
INIT(và gửi lạiINITmỗi khi người chơi đăng nhập hoặc đổi ngôn ngữ) - Người chơi bắt đầu ván → game gửi
GAME_START - Hết ván → game gửi
GAME_OVER→ hub trảSCORE_RESULT
Nếu game không nằm trong khung (mở trực tiếp), hoặc sau 3 giây không nhận được INIT, SDK có sẵn coi như game chạy độc lập và trả về standalone: true. SDK tự viết nên làm tương tự.
Phiên bản giao thức
Trường v là phiên bản giao thức, hiện là 1. Phiên bản tăng khi có thay đổi không tương thích; hub tiếp tục hỗ trợ game dùng phiên bản cũ.
