메인 콘텐츠로 건너뛰기
캐릭터 데이터는 현재 유저가 소유한 캐릭터에 붙는 값입니다. 캐릭터 레벨, 장비, 스탯, 로드아웃처럼 캐릭터마다 달라지는 데이터에 사용합니다. 대표 캐릭터는 프로필 노출이나 기본 편의 호출의 기준으로만 사용합니다. 여러 캐릭터를 직접 선택해서 플레이하는 게임은 characterId를 명시하는 메서드를 사용하면 대표 캐릭터를 매번 바꾸지 않아도 됩니다. 계정 전체에 붙는 재화, 업적, 설정은 데이터 관리의 유저 데이터에 저장하세요.

준비

  1. Console에서 캐릭터 데이터 테이블을 만듭니다.
  2. 필요한 필드와 타입을 정의합니다.
  3. 유저가 로그인하고 저장 대상 캐릭터 ID를 알고 있는 상태에서 SDK를 호출합니다.

저장

대표 캐릭터에 저장하려면 기존 편의 메서드를 사용합니다.
await player.SaveCharacterData(
    "character_status",
    new { level = 12, power = 3400 }
);
특정 캐릭터에 저장하려면 캐릭터 ID를 명시합니다.
var character = await player.CreateCharacter(name: "Ari");

await player.SaveCharacterDataForCharacter(
    character.Id,
    "character_status",
    new { level = 12, power = 3400 }
);
저장 payload는 Console에서 정의한 필드와 타입에 맞아야 합니다. 정의되지 않은 필드나 타입이 맞지 않는 값은 서버 오류로 거부됩니다. 정확한 JSON 문자열이나 JsonData 객체를 직접 전달할 수도 있습니다.
var data = HyperX.Json.JsonMapper.ToObject("{\"level\":12,\"power\":3400}");
await player.SaveCharacterDataForCharacter(character.Id, "character_status", data);

불러오기

대표 캐릭터 데이터:
var status = await player.GetCharacterData("character_status");

if (status.Exists)
{
    int level = (int)status.Data["level"];
    int power = (int)status.Data["power"];
}
특정 캐릭터 데이터:
var status = await player.GetCharacterDataForCharacter(
    character.Id,
    "character_status"
);
반환 값에는 데이터 존재 여부, 스키마 버전, JSON payload가 포함됩니다.

운영 팁

  • 캐릭터 선택 UI는 선택한 캐릭터 ID를 보관하고, 저장/조회 시 SaveCharacterDataForCharacter, GetCharacterDataForCharacter에 전달합니다.
  • 대표 캐릭터는 친구/검색/프로필에서 보여줄 캐릭터가 필요할 때만 갱신합니다.
  • 게임 클라이언트가 임의 필드를 추가하지 않도록 Console 스키마와 클라이언트 모델을 함께 관리합니다.
  • 조건 검색이 필요한 랭킹/매칭 지표는 캐릭터 데이터 대신 랭킹, 그룹, 게임 로그 같은 목적별 기능에 저장하는 편이 좋습니다.