이벤트

게임 일시 중지 및 재개 이벤트

game_api_pausegame_api_resume 이벤트를 사용하여 플랫폼은 게임을 일시 중지하거나 재개해야 함을 게임에 알립니다. 이 이벤트들은 당사 플랫폼과의 통합 과정을 단순화하고 모더레이션 요구사항(1.34.7항목)을 준수하는 데 도움이 됩니다.

게임 일시 중지 및 재개 이벤트를 지원하는 게임은 외부 플랫폼에 추가로 배포될 수 있습니다.

game_api_pause 및 game_api_resume 이벤트

이 이벤트는 다음을 추적하는 데 도움이 됩니다:

  • 전체 화면 또는 리워드 광고의 표시 및 닫기;
  • 구매 창의 열기 및 닫기;
  • 브라우저 탭 전환;
  • 브라우저 창의 최소화 및 최대화.

이 이벤트는 게임플레이 마크업 메서드와 일치합니다. game_api_pause가 발생하면 GameplayAPI.stop() 메서드가 호출되고, game_api_resume가 발생하면 GameplayAPI.start()가 호출됩니다.

게임이 이미 GameplayAPI.stop() 메서드를 사용하여 중지된 상태였다면(예: 플레이어가 메뉴를 열었을 때) 그리고 그 후에 game_api_pause 이벤트가 발생하면, 이어지는 game_api_resume 이벤트에서는 GameplayAPI.start() 메서드가 호출되지 않습니다. 이를 통해 게임플레이 마크업의 논리를 깨트리지 않고 게임의 현재 상태를 유지할 수 있습니다.

이벤트 구독 및 구독 해제를 위해 Yandex Games SDK의 on()off() 메서드를 사용하세요.

예시

const pauseCallback = () => {
    pauseGame(); // 게임 루프와 음악을 멈추는 함수입니다.
    console.log('GAME PAUSED');
};

ysdk.on('game_api_pause', pauseCallback); // 'game_api_pause' 이벤트를 구독합니다.
ysdk.off('game_api_pause', pauseCallback); // 'game_api_pause' 이벤트 구독을 취소합니다.
const resumeCallback = () => {
    resumeGame(); // 게임 루프와 음악을 다시 시작하는 함수입니다.
    console.log('GAME RESUMED');
};

ysdk.on('game_api_resume', resumeCallback ); // 'game_api_resume' 이벤트를 구독합니다.
ysdk.off('game_api_resume', resumeCallback ); // 'game_api_resume' 이벤트 구독을 취소합니다.

 

게임 시작 시 전체 화면 광고

경고

플랫폼은 모든 게임 시작 시 자동으로 전체 화면 광고를 표시합니다.

ysdk.adv.showFullscreenAdv()를 통해 게임이 호출하는 광고 블록과 달리, 시작 광고에는 직접적인 콜백 함수가 없습니다. 이를 올바르게 처리하려면 game_api_pausegame_api_resume 이벤트를 모니터링하세요:

  1. game_api_pause 수신 시 게임 사운드를 끄고 게임플레이를 일시정지하세요.
  2. game_api_resume 이벤트를 기다린 후 게임을 재개하세요.

사운드와 게임플레이가 즉시 시작되는 게임의 경우 이 작업이 특히 중요합니다.

시작 광고 처리 예시

let gameStarted = false;
let isPaused = false;

// 게임 초기화 함수.
function initGame() {
    // 일시정지 및 재개 이벤트 구독.
    ysdk.on('game_api_pause', handlePause);
    ysdk.on('game_api_resume', handleResume);

    // 일시정지 상태가 아닌 경우 게임 시작.
    if (!isPaused) {
        startGame();
    }
}

function handlePause() {
    isPaused = true;
    // 사운드 및 게임플레이 중지.
    console.log('GAME PAUSED - waiting for resume');
}

function handleResume() {
    isPaused = false;

    // 게임이 아직 시작되지 않았다면 시작.
    if (!gameStarted) {
        startGame();
    } else {
        // 사운드 및 게임플레이 재개.
    }

    console.log('GAME RESUMED');
}

function startGame() {
    gameStarted = true;

    // 사운드 초기화.
    // 게임 루프 시작.
    console.log('GAME STARTED');
}

// 게임 초기화 실행.
initGame();

기타 이벤트

사용자가 애플리케이션과 상호작용할 때 발생하는 다른 이벤트도 모니터링할 수 있습니다.

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 이벤트

알림

이 이벤트는 게임이 TV에서 실행될 경우에만 사용할 수 있습니다.

뒤로 버튼 클릭을 추적하려면 다음 방법을 사용합니다.

ysdk.on(ysdk.EVENTS.HISTORY_BACK, () => {
    // 사용자에게 사용자 지정 게임 대화 상자를 표시하여 게임 종료 확인 옵션
    // 게임 종료, 내부 설정, 상점 등으로 이동하는 것을 확인합니다
});

EXIT 이벤트

사용자가 뒤로를 클릭한 후 열리는 사용자 지정 대화 상자에서 게임 종료를 확인하면 게임에서 종료 이벤트를 보내야 합니다. 이렇게 하려면 다음 방법을 사용합니다.

ysdk.dispatchEvent(ysdk.EVENTS.EXIT);

게임 계정 선택 대화상자

플랫폼은 인증된 사용자와 비인증 사용자의 게임 진행 상황을 모두 저장합니다. 사용자는 먼저 인증 없이 플레이한 후 계정에 로그인할 수 있습니다. 이 경우 두 가지 다른 진행 상황이 생성됩니다: 하나는 로그인 상태, 다른 하나는 비로그인 상태입니다. 플랫폼은 사용자가 게임 시간, 마지막 로그인 날짜 등의 매개변수로 저장된 데이터를 비교하고 사용할 진행 상황을 선택할 수 있는 대화상자를 표시합니다.

플레이어 데이터를 자주 동기화하거나 게임 진행 상황을 자체 서버에 저장하는 경우, 대화상자에서 계정 선택 후 진행 상황 변경을 모니터링하세요.

SDK에는 이를 위한 두 가지 이벤트가 있습니다:

  • ACCOUNT_SELECTION_DIALOG_OPENED — 대화상자 열림.
  • ACCOUNT_SELECTION_DIALOG_CLOSED — 대화상자 닫힘.

대화상자가 열릴 때 플레이어 데이터의 정기적인 동기화를 일시중지할 수 있습니다. 대화상자가 닫힐 때 — 메인 메뉴로 이동하거나 게임을 다시 시작하고 플레이어 객체를 새로 요청하세요.

예시

// 계정 선택 대화상자 열림 이벤트 구독.
ysdk.on(ysdk.EVENTS.ACCOUNT_SELECTION_DIALOG_OPENED, () => {
    // 플레이어 데이터 동기화 일시중지.
});

// 계정 선택 대화상자 닫힘 이벤트 구독.
ysdk.on(ysdk.EVENTS.ACCOUNT_SELECTION_DIALOG_CLOSED, async () => {
    // 게임 메인 메뉴로 이동하거나 페이지 새로고침.
    // ...

    // 플레이어 데이터 재요청.
    const player = await ysdk.getPlayer();
    const data = await player.getData();
});

참고

지원팀은 완성된 게임을 Yandex Games에 게시하는 데 도움을 드릴 수 있습니다. 개발이나 테스트에 대해 궁금한 점이 있다면, Discord 채널에서 질문해 주세요.

지원 서비스는 얀덱스 게임에서 완성 된 게임을 게시 할 수 있습니다. 개발 또는 테스트에 대한 질문이 있는 경우

Yandex Games SDK 사용과 관련하여 문제가 발생하거나 질문이 있는 경우 다음 방법으로 지원팀에 문의하세요.

채팅 상담