Bỏ qua, tới nội dung chính
LiveBridgeLiveBridge

Manifest và kiểm tra

Các trường của manifest.json (có JSON Schema), mã lỗi kiểm tra và cách sửa.

manifest.json

JSON Schema: https://livebridge.vn/schemas/game-manifest.json. Quy tắc:

  • id: giống id game đã tạo, ^[a-z0-9-]{3,40}$, không đổi sau khi tạo; không dùng từ dành riêng (admin, api, app, www, sdk, dev, developers, games, static, cdn, mail, livebridge, test) hay id game có sẵn.
  • version: x.y.z, phải lớn hơn bản đang chạy.
  • name, summary, description: mỗi cái có cả vi và en, không rỗng, không từ không phù hợp.
  • platform: "web". connection: { "needsApp": false, "sendUsername": true, "sendAvatar": true } (needsApp luôn false).
  • entry: đường dẫn file HTML chính từ gốc thư mục (phân biệt hoa thường). Game tải lên dùng entry, không dùng url.
  • cover: ảnh bìa 16:9 (ví dụ 1280x720) có trong thư mục. screenshots: tối đa 8 ảnh. tags: tối đa 5.
  • connectOrigins: danh sách nơi game được phép gọi mạng, dạng https://host hoặc wss://host (chữ thường, không có đường dẫn, không dấu *). Mặc định [].
  • actions: các hành động game làm được, mỗi cái { id, name, name_vi, description, description_vi }. defaultGiftMapping: ánh xạ gợi ý, mỗi dòng có hoặc giftName hoặc minDiamonds (kèm maxDiamonds tuỳ chọn), cộng actionId phải có trong actions.

Checklist trước khi tải lên (mã lỗi và cách sửa)

check và upload in lỗi dạng [mã] (trường) kèm "Cách sửa". Cách sửa thường gặp:

  • zip_invalid: nén lại bằng zip thường (không mật khẩu, không rar/7z). CLI tự nén nên hiếm gặp.
  • zip_too_big: game giải nén quá 50 MB. Nén ảnh/âm thanh, xoá file thừa, hoặc tải tài nguyên lớn từ CDN.
  • zip_too_many_files: hơn 2.000 file. Gộp JS/CSS, ghép ảnh thành sprite sheet.
  • zip_path_escape: đường dẫn có .., \ hoặc bắt đầu bằng /. Đổi tên file.
  • zip_symlink: có liên kết tượng trưng. Thay bằng file thật.
  • zip_duplicate: hai file chỉ khác nhau chữ hoa/thường. Đổi tên.
  • manifest_missing: không có manifest.json ở gốc thư mục.
  • manifest_invalid: một trường sai. Đọc tên trường trong lỗi, sửa theo JSON Schema.
  • version_not_newer: version chưa lớn hơn bản đang chạy. Tăng lên.
  • version_exists: số phiên bản này đã được tải lên. Tăng version.
  • entry_missing: entry không trỏ tới file có thật. Sửa đường dẫn (phân biệt hoa thường).
  • cover_missing: thiếu ảnh bìa (hoặc ảnh trong screenshots). Thêm file hoặc sửa đường dẫn.
  • file_type_forbidden: chỉ cho phép html htm js mjs css json png jpg jpeg gif webp avif svg ico mp3 ogg wav m4a mp4 webm woff woff2 ttf otf wasm txt map. Xoá file khác.
  • words_blocked: tên/tóm tắt/mô tả có từ không phù hợp. Viết lại.
  • url_not_https, url_unreachable: dành cho game external_web (tải lên từ web, không qua CLI).
  • smoke_timeout: trang không phản hồi trong 20 giây. Tìm vòng lặp vô hạn hoặc tác vụ nặng lúc tải.
  • smoke_js_error: có lỗi JavaScript khi chạy thử. Mở ?t=lbg_dev, xem Console, sửa lỗi.
  • smoke_sdk_not_connected: SDK không kết nối. Nạp https://livebridge.vn/sdk/livebridge.js và gọi new LiveBridgeGame({...}) ngay khi tải trang.
  • smoke_load_failed: không mở được entry. Kiểm tra entry và file tồn tại.
  • smoke_infra: lỗi phía hệ thống kiểm tra. Tải lại cùng phiên bản sau vài phút, không cần đổi version.
  • sdk_missing (chỉ CLI, chỉ cảnh báo): chưa có file .html nào nạp /sdk/livebridge.js.

Giới hạn: tối đa 10 game mỗi nhà phát triển, 20 lần tải lên mỗi ngày, hệ thống giữ file của 5 phiên bản mới nhất.

Cách đọc một lỗi kiểm tra

Mỗi lỗi có mã, trường (nếu có), một câu mô tả và một câu "Cách sửa" bằng tiếng Việt và tiếng Anh. Làm theo thứ tự: (1) sửa lỗi đầu tiên bằng đúng "Cách sửa"; (2) chạy lại check; (3) lặp lại. Nếu nhà phát triển dán cho bạn đoạn bắt đầu bằng LiveBridge upload check failed for <game> v<version>: (nút Sao chép lỗi cho AI trên web hoặc đoạn cuối của check), đó chính là danh sách lỗi: sửa từng mục.