İçeriğe geç
NUGANUGA
Giriş yap

NUGANUGA Web SDK

Oyunun https://play.nuganuga.com üzerinde korumalı bir iframe içinde çalışır. SDK, platforma açılan tek kanaldır — kimlik doğrulama, sıralama, paylaşım, reklam veya analitiği asla kendin yazmazsın.

1. SDK’yı yükle

Her zaman tam olarak bu mutlak yoldan. Dağıtımı ve sürümlemeyi platform yapar.

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

2. Dört çağrı

const ctx = await Nuga.ready();       // platformu bekle
await Nuga.game.start();              // oyuncu gerçekten bir tura başladığında
await Nuga.score.submit({ score });    // tur başına tam olarak bir sayısal skor
await Nuga.game.finish();             // platform sonuç ekranını çizer

Kendi sonuç ekranını, tekrar düğmeni, paylaş düğmeni veya sıralamanı çizme — platform bunları finish() sonrasında her oyun için aynı şekilde çizer.

3. Geri kalan her şey

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. Bildirim dosyası

Paketinin kökündeki nuga.json:

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

Sıralama türleri: HIGH_SCORE, LOW_SCORE, LOW_TIME, HIGH_TIME, CUSTOM. Kategoriler: REACTION, TIMING, ACCURACY, MEMORY, PUZZLE, LUCK, ARCADE.

5. Korumalı alan kuralları

Statik doğrulama, bunlardan herhangi birini çiğneyen paketi oyuncuya ulaşmadan reddeder:

Başlangıç kitini indir

6. Skorlar doğrulanır

Her tura sunucu tarafında bir oturum verilir. Oyunun oturum jetonunu asla görmez — platform kabuğu onu tutar ve senin adına gönderir — sunucu da skoru, gerçek süreyle ve bildirimde belirtilen sınırlarla karşılaştırdıktan sonra sıralamaya alır.

Daha iyisini yapabilirsin. Rastgeleliği sunucunun verdiği tohumdan üret ve gerçekte ne olduğunu kaydet; sunucu turu bildirdiğin sayıya güvenmek yerine olaylarından yeniden hesaplar. Kaydının desteklemediği bir skor doğrudan reddedilir.

const rng = Nuga.random();          // sunucu tohumlu — Math.random() aksine yeniden üretilebilir
const target = rng.int(0, 8);

Nuga.replay.record('hit', 172);     // skorla ilgili tek bir sonuç, tur başına en fazla 400

Açmak için mekaniği nuga.json içinde bildir. Bildirmezsen oyunun yine sıralamaya girer, sadece süre ve sınır kontrolleriyle.

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

7. Yayına al

Paketin kökünü (klasörü değil) sıkıştır ve Üretici Konsolu’ndan yükle. Statik doğrulama, derleme, çalışma zamanı, duyarlılık, oynanış ve güvenlik testleri otomatik çalışır; hepsi geçince yayımlama açılır.