Lewati ke konten
NUGANUGA
Masuk

SDK Web NUGANUGA

Gimmu berjalan di iframe tersandbox pada https://play.nuganuga.com. SDK adalah satu-satunya kanal ke platform — kamu tidak pernah membuat sendiri autentikasi, peringkat, berbagi, iklan, atau analitik.

1. Muat SDK

Selalu dari path absolut ini persis. Platform yang menyajikan dan memversikannya.

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

2. Empat pemanggilan

const ctx = await Nuga.ready();       // tunggu platform
await Nuga.game.start();              // saat pemain benar-benar memulai permainan
await Nuga.score.submit({ score });    // tepat satu skor angka per permainan
await Nuga.game.finish();             // platform menggambar layar hasil

Jangan menggambar layar hasil, tombol ulang, tombol bagikan, atau papan peringkat sendiri — platform menggambarnya setelah finish(), sama untuk setiap gim.

3. Selebihnya

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. Manifes

nuga.json di root paketmu:

{
  "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개의 타겟을 빠르게 클릭하세요." }
  }
}

Jenis peringkat: HIGH_SCORE, LOW_SCORE, LOW_TIME, HIGH_TIME, CUSTOM. Kategori: REACTION, TIMING, ACCURACY, MEMORY, PUZZLE, LUCK, ARCADE.

5. Aturan sandbox

Validasi statis menolak paket yang melanggar salah satunya, sebelum sampai ke pemain:

Unduh starter kit

6. Skor diverifikasi

Setiap permainan mendapat sesi di sisi server. Gimmu tidak pernah melihat token sesi — cangkang platform yang menyimpannya dan mengirim atas namamu — dan server mencocokkan skor dengan durasi sebenarnya serta batas yang dinyatakan di manifes sebelum masuk papan peringkat.

Kamu bisa lebih baik lagi. Ambil keacakan dari benih yang diberikan server dan catat apa yang benar-benar terjadi: server akan menghitung ulang permainan dari kejadianmu alih-alih memercayai angkanya. Klaim yang tidak didukung rekamanmu langsung ditolak.

const rng = Nuga.random();          // berbenih dari server — dapat diulang, tidak seperti Math.random()
const target = rng.int(0, 8);

Nuga.replay.record('hit', 172);     // satu hasil yang relevan dengan skor, maksimal 400 per permainan

Deklarasikan mekaniknya di nuga.json untuk mengaktifkannya. Tanpa itu gimmu tetap masuk peringkat, hanya dengan pemeriksaan durasi dan batas.

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

7. Terbitkan

Kompres root paket (bukan foldernya) lalu unggah di Konsol Kreator. Validasi statis, build, serta rangkaian runtime, responsif, gameplay, dan keamanan berjalan otomatis; penerbitan terbuka begitu semuanya lulus.