플레이어 세부 정보

게임 상태 데이터(완료한 레벨, 경험치, 게임 내 구매 포함)를 Yandex 서버에 저장하거나 내 서버로 전송할 수 있습니다. 사용자의 이름과 같은 Yandex 프로필의 데이터를 사용하여 게임을 개인화할 수도 있습니다.

플레이어 정보

ysdk.player.get_info(
    callback: function,
    options: {
        scopes: boolean|nil,
        signed: boolean|nil
    }
)

callback: function — 호출된 메소드의 콜백입니다. 형태는 다음과 같습니다:

function(self, player: table|nil, signature: string|nil): nil
  • player: table — 플레이어에 대한 정보입니다. 다음과 같은 속성이 포함되어 있습니다:
player = {
    logged_in: boolean,
    unique_id: string,
    name: string,
    photo: {
        small: string,
        medium: string,
        large: string
    }
}

예시

function init_player()
  ysdk.player.get_info(function(self, player)
      if player then
        display_player(self, player)
      else
        ysdk.player.open_auth_dialog(function(self, authorized)
          ysdk.player.get_info(display_player, {})
        end)
      end
    end,
    {})
end

function display_player(player)
  if player then
    print(player.name, signature)
  end
end

사용자 로그인

플레이어가 인증되지 않은 경우, ysdk.player.open_auth_dialog() 메서드를 사용하여 인증 창을 띄울 수 있습니다.

ysdk.player.open_auth_dialog(callback: function)

callback: function — 호출된 메서드의 콜백입니다. 형태는 다음과 같습니다:

function(self, authorized: boolean): nil
  • authorized: boolean — 플레이어가 인증되었는지 여부.

게임 내 데이터

사용자의 게임 내 데이터로 작업하려면 Player 객체 메서드를 사용합니다:

  • ysdk.player.set_data(data, flush) — 사용자 데이터를 저장합니다. 최대 데이터 크기는 200KB를 넘지 않아야 합니다.

    • data: table — 키-값 쌍을 포함합니다.
    • flush: boolean — 데이터 전송 순서를 결정합니다. true로 설정하면 데이터가 즉시 서버로 전송됩니다. false(기본값)로 설정하면 데이터 전송 요청이 큐에 저장되고 나중에 처리됩니다.

이 메서드는 데이터 저장 성공 여부를 나타내는 Promise를 반환합니다.

flush: false로 설정할 경우 반환되는 결과는 데이터가 유효한지만 확인해주며(전송 자체는 큐에 저장되어 추후에 처리됨), 이때 ysdk.player.get_data() 메서드는 실제 서버로 전송되지 않았더라도 마지막에 ysdk.player.set_data()로 설정한 데이터를 반환합니다.

  • ysdk.player.get_data(callback, keys) — 사용자가 저장한 게임 내 데이터를 Yandex 데이터베이스에서 요청합니다.

    • callback: fun(self, data: table<string, any>) — 받아온 사용자 인게임 데이터를 처리할 콜백 함수입니다.
    • keys: table<number, string> — 반환할 키 목록입니다. keys 파라미터가 없으면 사용자의 모든 인게임 데이터를 반환합니다.
  • ysdk.player.set_stats(stats) — 사용자의 수치 데이터를 저장합니다. 데이터 최대 크기는 10KB를 초과할 수 없습니다.

    • stats: table<string, number> — 각 값이 숫자인 키-값 쌍으로 이루어진 테이블입니다.

참고

이 메서드는 자주 변경되는 숫자 값(점수, 경험치, 인게임 화폐 등)에 대해 ysdk.player.set_data() 대신 사용하세요.

  • ysdk.player.increment_stats(increments) — 사용자의 게임 내 데이터를 변경합니다. 데이터의 최대 크기는 10KB를 초과할 수 없습니다.
    • increments: table<string, number> — 각 값이 숫자여야 하는 키-값 쌍을 포함하는 객체입니다.
  • ysdk.player.get_stats(callback, keys) — 사용자의 숫자형 데이터를 가져와 Yandex 데이터베이스에 저장된 정보를 반환합니다.
  • callback: fun(self, data: table<string, number>|nil) — 가져온 사용자 숫자형 데이터를 다루기 위한 처리 함수입니다.
  • keys: string[] — 반환할 키들의 목록입니다. keys 파라미터가 없으면, 해당 메서드는 사용자의 모든 게임 내 데이터를 반환합니다.

사용자 식별자

ysdk.player.get_ids_per_game(callback: function)

callback: function — 콜백으로 호출된 메서드입니다. 형태는 다음과 같습니다:

function(self, ids: {appID: number, userID: string}[]): nil
  • ids — 해당 개발자의 모든 게임에서 사용자가 명시적으로 개인정보 제공에 동의한 경우의 사용자 식별자입니다. 다음과 같은 속성을 포함합니다:
    • app_id: string — 애플리케이션 식별자.
    • user_id: string — 사용자 식별자.

예시

function log_ids()
  ysdk.player.get_ids_per_game(function(self, ids)
    for _, value in ipairs(ids) do
      print(value.app_id, value.user_id)
    end
  end)
end

저장소