Chuyển tới nội dung
NUGANUGA
Đăng nhập

SDK Web NUGANUGA

Trò chơi của bạn chạy trong iframe cách ly tại https://play.nuganuga.com. SDK là kênh duy nhất tới nền tảng — bạn không bao giờ phải tự làm xác thực, xếp hạng, chia sẻ, quảng cáo hay phân tích.

1. Nạp SDK

Luôn dùng đúng đường dẫn tuyệt đối này. Nền tảng lo việc phân phối và phiên bản.

<script src="/sdk/nuga-sdk.js"></script>
<script src="./game.js"></script>

2. Bốn lệnh gọi

const ctx = await Nuga.ready();       // chờ nền tảng
await Nuga.game.start();              // khi người chơi thực sự bắt đầu một lượt
await Nuga.score.submit({ score });    // đúng một điểm số dạng số cho mỗi lượt
await Nuga.game.finish();             // nền tảng vẽ màn hình kết quả

Đừng tự vẽ màn hình kết quả, nút chơi lại, nút chia sẻ hay bảng xếp hạng — nền tảng vẽ chúng sau finish(), giống hệt nhau cho mọi trò chơi.

3. Mọi thứ khác

Nuga.game.getContext();
Nuga.player.get();
Nuga.challenge.get();
Nuga.storage.get(key);
Nuga.storage.set(key, value);
Nuga.audio.setMuted(true);
Nuga.locale.get();               // 'en' | 'ko' | ...
Nuga.event.track('level_up', { level: 3 });
Nuga.on('pause', () => pauseLoop());

4. Tệp kê khai

nuga.json ở thư mục gốc của gói:

{
  "schemaVersion": 1,
  "name": "Reaction Hunter",
  "slug": "reaction-hunter",
  "description": "Click 10 targets as fast as possible.",
  "rule": "Tap every target as fast as you can.",
  "category": "REACTION",
  "orientation": "PORTRAIT",
  "duration": { "min": 5, "max": 30 },
  "input": ["POINTER", "TOUCH"],
  "ranking": { "type": "LOW_TIME", "unit": "ms" },
  "entry": "index.html",
  "locales": {
    "ko": { "name": "리액션 헌터", "description": "10개의 타겟을 빠르게 클릭하세요." }
  }
}

Kiểu xếp hạng: HIGH_SCORE, LOW_SCORE, LOW_TIME, HIGH_TIME, CUSTOM. Thể loại: REACTION, TIMING, ACCURACY, MEMORY, PUZZLE, LUCK, ARCADE.

5. Quy tắc vùng cách ly

Kiểm tra tĩnh sẽ từ chối gói vi phạm bất kỳ điều nào dưới đây, trước khi nó tới tay người chơi:

Tải bộ khởi đầu

6. Điểm số được xác minh

Mỗi lượt chơi được cấp một phiên phía máy chủ. Trò chơi của bạn không bao giờ thấy mã phiên — lớp vỏ nền tảng giữ nó và gửi thay bạn — và máy chủ đối chiếu điểm với thời lượng thực tế cùng giới hạn khai báo trong tệp kê khai trước khi đưa lên bảng xếp hạng.

Bạn có thể làm tốt hơn. Lấy tính ngẫu nhiên từ hạt giống do máy chủ cấp và ghi lại những gì thực sự đã xảy ra: máy chủ sẽ tính lại lượt chơi từ các sự kiện của bạn thay vì tin vào con số. Điểm mà bản ghi không chứng minh được sẽ bị từ chối thẳng.

const rng = Nuga.random();          // gieo hạt từ máy chủ — tái lập được, khác với Math.random()
const target = rng.int(0, 8);

Nuga.replay.record('hit', 172);     // một kết quả liên quan tới điểm, tối đa 400 mỗi lượt

Khai báo cơ chế trong nuga.json để bật tính năng này. Không khai báo thì trò chơi vẫn lên bảng xếp hạng, chỉ với kiểm tra thời lượng và giới hạn.

"verification": { "kind": "REPLAY_V1", "mechanic": "REACTION",
                   "params": { "rounds": 5 } }

7. Phát hành

Nén thư mục gốc của gói (không phải thư mục bao ngoài) rồi tải lên trong bảng điều khiển nhà sáng tạo. Kiểm tra tĩnh, dựng, cùng các bộ kiểm thử runtime, đáp ứng, lối chơi và bảo mật đều chạy tự động; nút xuất bản mở khi tất cả đều đạt.