---
metadata:
  - name: generator
    content: Diplodoc Platform v5.57.3
alternate:
  - https://yandex.com/dev/games/doc/en/sdk/defold/player-data.md
  - https://yandex.com/dev/games/doc/hi/sdk/defold/player-data.md
  - https://yandex.com/dev/games/doc/ko/sdk/defold/player-data.md
  - https://yandex.com/dev/games/doc/ru/sdk/defold/player-data.md
  - https://yandex.com/dev/games/doc/tr/sdk/defold/player-data.md
  - https://yandex.com/dev/games/doc/vi/sdk/defold/player-data.md
  - https://yandex.com/dev/games/doc/zh/sdk/defold/player-data.md
  - href: ko/sdk/defold/player-data.md
    type: text/markdown
    title: Markdown version
  - href: ../../llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.com/dev/games/doc/ko/llms.txt

# 플레이어 세부 정보

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

## 플레이어 정보

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

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

```lua
function(self, player: table|nil, signature: string|nil): nil
```

- `player: table` — 플레이어에 대한 정보입니다. 다음과 같은 속성이 포함되어 있습니다:

```lua
player = {
    logged_in: boolean,
    unique_id: string,
    name: string,
    photo: {
        small: string,
        medium: string,
        large: string
    }
}
```

**예시**

```lua
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
```

## 사용자 로그인 {#auth}

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

```lua
ysdk.player.open_auth_dialog(callback: function)
```

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

```lua
function(self, authorized: boolean): nil
```

- `authorized: boolean` — 플레이어가 인증되었는지 여부.

## 게임 내 데이터

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

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

    - `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>` — 각 값이 숫자인 키-값 쌍으로 이루어진 테이블입니다.

{% note info "참고" %}

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

{% endnote %}

- `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 파라미터가 없으면, 해당 메서드는 사용자의 모든 게임 내 데이터를 반환합니다.

## 사용자 식별자

```lua
ysdk.player.get_ids_per_game(callback: function)
```

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

```lua
function(self, ids: {appID: number, userID: string}[]): nil
```

- `ids` — 해당 개발자의 모든 게임에서 사용자가 명시적으로 개인정보 제공에 동의한 경우의 사용자 식별자입니다. 다음과 같은 속성을 포함합니다:
    - `app_id: string` — 애플리케이션 식별자.
    - `user_id: string` — 사용자 식별자.

**예시**

```lua
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
```

---


<!-- source: ko/_includes/button-git-defold.md -->
<a href="https://github.com/yandex-games-plugins/defold">
  <span class="button">저장소</span>
</a>
<!-- endsource: ko/_includes/button-git-defold.md -->
