플레이어 세부 정보
게임 상태 데이터(완료한 레벨, 경험치, 게임 내 구매 포함)를 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