Tài liệu kỹ thuậtSDK 1.1.0
Hướng dẫn outsource chuẩn · SDK 1.0Tích hợp game với Game Platform
Chỉ dùng một facade GamePortal độc lập provider. Portal sở hữu context production về game, build, player và authentication; game chỉ sở hữu gameplay và gọi các capability đã công bố.
Hỗ trợ:HTML / JavaScriptCocos CreatorUnity WebGL
Tích hợp dành cho developer
01Lấy SDK chính thức
Tải artifact bất biến có version trực tiếp từ Portal này. Đơn vị outsource không cần source repository của Portal và không tự build hoặc đổi tên một SDK không chính thức.
Đặt file standalone tại gameportal/gameportal-sdk.js trong static build. Bộ kit đầy đủ đã chứa file này, type, bridge Cocos/Unity, ví dụ và hướng dẫn bàn giao.
02Chọn chế độ khởi chạy
Security boundary
Không đọc production game ID từ query string, import Nakama, gọi thẳng Portal API hay nhúng session, launch code, device ID, HTTP key hoặc database credential.
03Quick start trong 5 phút
Tải Integration Kit chính thức hoặc gameportal-sdk.js standalone ở trên.
Đặt tại gameportal/gameportal-sdk.js và load trước game code.
Dùng init() khi hosted hoặc mock local tường minh—không tự fallback.
Kiểm tra capability rồi gọi ready → start → gameplay → end.
Hosted / preview
Mock local
04Xác minh trước khi bàn giao
Chạy preflight có sẵn trên ZIP cuối. Công cụ chỉ chạy local, không upload, không cần credential và luôn trả mã ổn định kèm cách sửa.
Sau init, chỉ lấy trạng thái SDK đã redacted. Gửi trạng thái này cùng normalized error code cho operator Portal—không gửi token, session, launch code, device ID hay provider response.
05Lifecycle bắt buộc
init
ready
start
track / gameplay
end
Await mọi bước. analytics.track cần ready; start cần ready; end cần session đang chạy và chỉ best-effort khi unload.
06Các capability SDK
player
storage
leaderboard
game lifecycle
analytics
capabilities
| Kết quả mong đợi | Public player ID ổn định và cờ isAnonymous sau init. |
|---|---|
| Giới hạn / độ tin cậy | Identity SERVER_VALIDATED; không coi đây là login hay lộ provider identity. |
| Khi lỗi | SDK_NOT_READY: await init. Launch lại sau lỗi authentication/bootstrap. |
07Bridge theo engine
HTML / JavaScript
Cocos Creator
Unity WebGL
examples/htmlLoad IIFE bundle và gọi window.GamePortal.
Bridge chỉ chuyển callback/type sang cùng browser facade; không nhận production identity hay tạo SDK thứ hai.
09Lỗi và cách khôi phục
10Checklist trước khi bàn giao build
Source hosted gọi init() không có production identity input.
Mock mode tường minh và không tự chuyển thành hosted mode.
Source/build không có provider import, credential, launch code hay gọi thẳng Portal API.
Player, save qua reload, casual score, custom event và lifecycle đúng thứ tự hoạt động.
Static build dùng relative asset, HTTPS, responsive iframe và không phụ thuộc Portal DOM/cookie.
Bàn giao source, reproducible build, engine version, SDK version và run instructions.
Bàn giao cho operator
11Xuất bản game: quy trình cho người mới
Quy trình bắt đầu sau khi developer outsource bàn giao source và static build. Mọi thay đổi production được thực hiện tại trang chi tiết game, phần Vận hành phát hành.
Tạo game → Tải ZIP → Kiểm định → Preview → Duyệt → Phát hành → Chạy → Xác minh → v2 → Rollback / Thu hồi
Bàn giao từ developer
Operator / admin
Bàn giao source và một static ZIP có thể build lại. Developer tích hợp SDK 1.0 và sửa lỗi compliance; không tự chọn production identity hay gọi API để publish.
Build game HTML, Cocos Creator hoặc Unity WebGL.
Mở index.html local và xác nhận mọi asset dùng đường dẫn tương đối.
Nén nội dung bên trong thư mục build, không nén bọc cả thư mục.
Bàn giao source, ZIP, engine/SDK version, lệnh build và ghi chú kiểm thử.
Cấu trúc ZIP đạt chuẩn
ZIP root
ZIP root phải có index.html và gameportal-manifest.json, không bọc thêm một thư mục. Không chứa credential, source map lộ secret, server binary, symlink, absolute path hay provider SDK.
1. Tạo game
Danh sách game → Tạo game. Lưu public Game ID để hỗ trợ và tra audit.
Trạng thái game: INTEGRATION.
2. Tải build
Mở game → Vận hành phát hành → Build → Tải ZIP. Chờ row được refresh.
UPLOADING → VALIDATING. Không upload lặp khi build đang xử lý.
3. Kiểm định
Chọn Kiểm tra và đọc từng finding. PASS tạo immutable artifact; lỗi sẽ từ chối build.
PASS: READY. Lỗi: REJECTED; sửa source, build lại và upload thành version mới.
4. Preview
Với READY, mở shell Xem trước của Portal. Portal cấp launch PREVIEW dùng một lần trên game origin cô lập; test load, layout, input, gameplay, asset, save cô lập và console/network.
Preview chỉ có Player ID cô lập và Cloud Save theo build. Lifecycle, analytics và leaderboard production không khả dụng, chỉ được kiểm chứng tại Kiểm thử production sau publish.
5. Duyệt độc lập
Một user nội bộ khác xem report và preview, sau đó Duyệt hoặc Từ chối kèm lý do.
READY → APPROVED hoặc REJECTED. Bắt buộc duyệt độc lập; production self-approval trả SELF_APPROVAL_FORBIDDEN.
6. Phát hành
Tại build APPROVED, chọn Phát hành và xác nhận. Portal tạo immutable release và chuyển con trỏ PRODUCTION.
Build không thay đổi; game thành PUBLISHED. RELEASE_CONFLICT: refresh rồi mới thử lại.
7. Chạy và xác minh
Dùng Kiểm thử production cho operator, sau đó copy/mở public URL ổn định /play/{slug}. Xác minh identity, save, lifecycle, analytics, leaderboard và audit.
Player nhận launch context dùng một lần mới; không sao chép/dùng lại. URL public không đổi khi lên v2 hoặc rollback.
8. Phát hành v2
Sửa source, tạo ZIP mới rồi lặp upload → validate → preview → duyệt độc lập → publish.
v1 vẫn bất biến và tồn tại trong lịch sử rollback.
9. Khôi phục
Rollback đưa PRODUCTION về release cũ đủ điều kiện. Chỉ revoke build/release hoặc tắt game khi có sự cố, luôn kèm lý do.
Rollback tiếp tục phục vụ bản tốt; revoke/disable chủ động chặn launch bị ảnh hưởng.
Checklist trước publish
Report PASS và đúng build đã được user khác APPROVE.
Runtime preview cô lập không có lỗi asset/input/console hay finding credential/provider/direct API.
Sau publish, Kiểm thử production chứng minh Player ID, save qua reload, lifecycle, analytics và casual leaderboard trước khi chia sẻ URL public.
Đã ghi version, changelog, engine/SDK version và rollback target.
Publisher đã xác nhận release đang Active.
Xác minh sau publish
Danh sách game hiển thị PUBLISHED và đúng release là Active.
Play mở đúng immutable build trên game origin.
Session mới chạy init → ready → start → end không có console error.
Operational Audit có evidence upload, review, publish và launch liên quan.
Release tốt trước đó vẫn đủ điều kiện rollback.
Rollback hay thu hồi
Dùng Rollback khi có functional regression và muốn tiếp tục phục vụ release cũ đủ điều kiện. Dùng Thu hồi build/release hoặc Tắt game khi bị compromise, vi phạm policy hoặc có nội dung nguy hiểm; đây là emergency control, không phải cách quản lý version thông thường.
Tham chiếu & hỗ trợ
12Game mẫu tham chiếu
Thứ tự đọc đề xuất
game/deck.js → round.js → scoring.js
platform/gameportal-platform.js
platform/create-platform.js
app.js → index.html → styles.css
gameportal-manifest.json → build:memory-match
13Gói thông tin hỗ trợ
Gửi tên/public ID game, SDK version, normalized error code, browser/engine version, mode (hosted preview, production hoặc mock) và bước tái hiện. Không gửi token, launch code, session, device ID hay credential.
integration-kit/QUICKSTART.md · integration-kit/TROUBLESHOOTING.md · docs/SDK_1_0_BOOTSTRAP.md