Etkinlikler

Oyunun Duraklatılması ve Devam Ettirilmesi Olayları

game_api_pause ve game_api_resume olayları ile platform, oyunun duraklatılması ya da devam ettirilmesi gerektiğini bildirir. Bu olaylar, platformumuzla entegrasyon sürecini kolaylaştırır ve moderasyon gerekliliklerine uyumu sağlar (1.3 ve 4.7 maddeleri).

Duraklatma ve devam ettirme olaylarını destekleyen oyunlar, ek dış platformlarda dağıtım için uygun olabilir.

game_api_pause ve game_api_resume Olayları

Bu olaylar, şunları takip etmenize yardımcı olur:

  • Tam ekran veya ödüllü reklamların gösterilmesi ve kapatılması;
  • Satın alma penceresinin açılması ve kapatılması;
  • Tarayıcı sekmeleri arasındaki geçişler;
  • Tarayıcı penceresinin küçültülmesi ve büyütülmesi.

Bu olaylar, oyun içi etkinliklerin işaretlenmesi yöntemleri ile tutarlıdır. game_api_pause olayı tetiklendiğinde, GameplayAPI.stop() metodu çağrılır, game_api_resume olayı tetiklendiğinde ise GameplayAPI.start() metodu çağrılır.

Eğer oyun, GameplayAPI.stop() metodu kullanılarak zaten durdurulmuşsa (örneğin, oyuncu menüyü açtığında) ve ardından game_api_pause olayı gerçekleşirse, sonraki game_api_resume olayında GameplayAPI.start() metodu çağrılmayacaktır. Bu, oyunun mevcut durumunun oyun içi etkinlik işaretlemelerinin mantığını bozmadan korunmasını sağlar.

Yandex Oyunlar SDK'sındaki on() ve off() metodlarını kullanarak olaylara abone olun ve abonelikten çıkın.

Örnek

const pauseCallback = () => {
    pauseGame(); // Oyun döngüsünü ve müziği durduran fonksiyonunuz.
    console.log('GAME PAUSED');
};

ysdk.on('game_api_pause', pauseCallback); // 'game_api_pause' olaylarına abone olma.
ysdk.off('game_api_pause', pauseCallback); // 'game_api_pause' olaylarından çıkma.
const resumeCallback = () => {
    resumeGame(); // Oyun döngüsünü ve müziği yeniden başlatan fonksiyonunuz.
    console.log('GAME RESUMED');
};

ysdk.on('game_api_resume', resumeCallback ); // 'game_api_resume' olaylarına abone olma.
ysdk.off('game_api_resume', resumeCallback ); // 'game_api_resume' olaylarından çıkma.

 

Oyun başlangıcında tam ekran reklam

Önemli

Platform, tüm oyunlarda otomatik olarak başlangıçta tam ekran reklam gösterir.

ysdk.adv.showFullscreenAdv() üzerinden çağrılan reklam bloklarının aksine, başlangıç reklamlarının doğrudan callback fonksiyonları yoktur. Doğru şekilde işlemek için game_api_pause ve game_api_resume olaylarını takip edin:

  1. game_api_pause aldığınızda oyun sesini kapatın ve oyunu duraklatın.
  2. game_api_resume olayını bekleyin ve oyunu devam ettirin.

Özellikle ses ve oyun mekaniğinin hemen başladığı oyunlar için bu oldukça önemlidir.

Başlangıç reklamı işleme örneği

let gameStarted = false;
let isPaused = false;

// Oyun başlatma fonksiyonu.
function initGame() {
    // Duraklatma ve devam etme olaylarına abone ol.
    ysdk.on('game_api_pause', handlePause);
    ysdk.on('game_api_resume', handleResume);

    // Duraklatılmış durumda olup olmadığımızı kontrol et.
    // Eğer öyleyse, oyunu başlatmadan önce resume beklenir.
    if (!isPaused) {
        startGame();
    }
}

function handlePause() {
    isPaused = true;
    // Sesi ve oyun mekaniğini durdur.
    console.log('GAME PAUSED - waiting for resume');
}

function handleResume() {
    isPaused = false;

    // Eğer oyun henüz başlamadıysa, başlat.
    if (!gameStarted) {
        startGame();
    } else {
        // Sesi ve oyun mekaniğini devam ettir.
    }

    console.log('GAME RESUMED');
}

function startGame() {
    gameStarted = true;

    // Ses başlatma.
    // Oyun döngüsünü başlat.
    console.log('GAME STARTED');
}

// Oyun başlatmayı tetikle.
initGame();

Diğer olaylar

Kullanıcının uygulama ile etkileşiminde ortaya çıkan diğer olayları da takip edebilirsiniz.

enum ESdkEventName {
    EXIT = 'EXIT',
    HISTORY_BACK = 'HISTORY_BACK',
    ACCOUNT_SELECTION_DIALOG_OPENED = 'ACCOUNT_SELECTION_DIALOG_OPENED',
    ACCOUNT_SELECTION_DIALOG_CLOSED = 'ACCOUNT_SELECTION_DIALOG_CLOSED',
}

ysdk = {
    EVENTS: {
        EXIT: ESdkEventName.EXIT,
        HISTORY_BACK: ESdkEventName.HISTORY_BACK,
        ACCOUNT_SELECTION_DIALOG_OPENED: ESdkEventName.ACCOUNT_SELECTION_DIALOG_OPENED,
        ACCOUNT_SELECTION_DIALOG_CLOSED: ESdkEventName.ACCOUNT_SELECTION_DIALOG_CLOSED,
    },

    dispatchEvent(eventName: ESdkEventName, detail?: object): Promise<unknown> {},

    on(eventName: ESdkEventName, listener: Function): () => void {}
};

HISTORY_BACK olayı

Dikkat

Bu olay, oyunun televizyonda çalıştırıldığı durumda mevcuttur.

Back düğmesine basılmasını izlemek için şu yöntemi kullanın:

ysdk.on(ysdk.EVENTS.HISTORY_BACK, () => {
    // Kullanıcıya özel oyun iletişim penceresinin gösterilmesi
    // oyundan çıkışı onayla, dahili ayarlara git, mağazaya git vb.
});

EXIT olayı

Kullanıcı Back'e tıkladıktan sonra açılan özel diyalog penceresinde oturumu kapatmayı onayladıysa, oyun bir oturum kapatma olayı göndermelidir. Bunu yapmak için aşağıdaki yöntemi kullanın:

ysdk.dispatchEvent(ysdk.EVENTS.EXIT);

Oyun hesabı seçim diyaloğu

Platform, hem giriş yapmış hem de yapmamış oyuncuların oyun ilerlemesini kaydeder. Kullanıcı önce giriş yapmadan oynayabilir, sonra hesabına giriş yapabilir. Bu durumda iki farklı ilerleme olacaktır: biri giriş yapılmış, diğeri yapılmamış. Platform, oyun süresi, son giriş tarihi gibi parametrelere göre kayıtları karşılaştırabileceği ve hangi ilerlemenin kullanılacağını seçebileceği bir diyalog penceresi gösterir.

Eğer oyuncu verilerini sık senkronize ediyorsanız veya oyun ilerlemesini kendi sunucunuzda saklıyorsanız, diyalog penceresinde hesap seçiminden sonra ilerleme değişimini takip edin.

SDK'da bunun için iki olay vardır:

  • ACCOUNT_SELECTION_DIALOG_OPENED — diyaloğun açılması.
  • ACCOUNT_SELECTION_DIALOG_CLOSED — diyaloğun kapanması.

Diyalog açıldığında oyuncu verilerinin düzenli senkronizasyonunu duraklatabilirsiniz. Kapatıldığında ise ana menüye dönebilir veya oyunu yeniden başlatıp oyuncu nesnesini tekrar isteyebilirsiniz.

Örnek

// Hesap seçim diyaloğu açılma olayına abone ol.
ysdk.on(ysdk.EVENTS.ACCOUNT_SELECTION_DIALOG_OPENED, () => {
    // Oyuncu veri senkronizasyonunu duraklat.
});

// Hesap seçim diyaloğu kapanma olayına abone ol.
ysdk.on(ysdk.EVENTS.ACCOUNT_SELECTION_DIALOG_CLOSED, async () => {
    // Oyunun ana menüsüne dön veya sayfayı yeniden yükle.
    // ...

    // Oyuncu verilerini tekrar iste.
    const player = await ysdk.getPlayer();
    const data = await player.getData();
});

Not

Destek ekibi, hazır oyunu Yandex Oyun platformuna yerleştirmenize yardımcı olur. Geliştirme ve test etme konularındaki uygulamalı sorulara ise diğer geliştiriciler Discord Topluluğu yanıt verir.

Yandex Games SDK kullanırken sorunla karşılaşırsanız veya sorunuz varsa, lütfen destek ekibiyle iletişime geçin:

Sohbete yaz