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:
game_api_pause
aldığınızda oyun sesini kapatın ve oyunu duraklatın.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: