계절별 순위표
이 자습서에서는 순위표의 버전 관리 개념을 설명합니다. 지정된 순위표의 다른 버전을 사용하려는 경우가 여러 가지 있습니다. 예를 들어 월별 토너먼트 모드가 있는 게임에서 순위표의 구조는 동일하게 유지되지만, 특히 경쟁이 치열한 게임에서 플레이어가 변경되는 가능성이 가장 높습니다.
기본 순위표 만들기의 예제를 계속 진행합니다. 우리의 아케이드 게임이 지금 매우 인기가 있다고 상상해보십시오. 따라서 "산의 꼭대기"라는 새로운 모드가 도입되었습니다. 매월 게임에는 모든 플레이어가 참가할 수 있는 토너먼트가 있습니다. 상위 100위 안에든 기본 메뉴의 특별한 순위표에 표시되므로 모든 사람이 게임에서 누가 최고인지 볼 수 있습니다.
버전 관리를 위한 순위표 정의 만들기
이전 예제에서는 순위표 정의를 만들 때 버전 관리를 위한 매개 변수의 중요성에 대한 힌트가 VersionConfiguration
있었습니다. 여기서는 사용 방법 및 작동 방식을 자세히 설명합니다.
public static async Task CreateLeaderboardDefinitionAsync(PlayFabAuthenticationContext context, string leaderboardName)
{
PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
CreateLeaderboardDefinitionRequest leaderboardDefinitionRequest = new CreateLeaderboardDefinitionRequest()
{
AuthenticationContext = context,
Name = leaderboardName,
SizeLimit = 1000,
EntityType = "title_player_account",
VersionConfiguration = new VersionConfiguration()
{
MaxQueryableVersions = 12,
ResetInterval = ResetInterval.Month,
},
Columns = new List<LeaderboardColumn>()
{
new LeaderboardColumn()
{
Name = "arcadeScoreTournament",
SortDirection = LeaderboardSortDirection.Descending,
}
}
};
PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> createLbDefinitionResult = await leaderboardsAPI.CreateLeaderboardDefinitionAsync(leaderboardDefinitionRequest);
}
기본 순위표와 비교했을 때 이 예제의 기본 차이점은 매개 변수입니다VersionConfiguration
. 이 매개 변수를 사용하면 쿼리할 수 있는 동일한 순위표의 버전 수를 지정하는 설정을 정의 MaxQueryableVersions
할 수 있습니다. 이 경우 12개 버전을 쿼리하도록 설정하여 12개의 최신 순위표를 쿼리할 수 있습니다. 매개 변수는 ResetInterval
다시 설정 프로세스가 발생하는 빈도를 정의합니다. 이 작업에는 이전과 동일한 구성이 있지만 비어 있는 순위표를 만드는 작업이 포함되며, 순위표 정의를 만들 때 N = N + 1과 함께 버전 매개 변수가 다음과 같이 변경됩니다.
예를 들어 순위표에 100개의 항목이 있는 버전 매개 변수가 2인 순위표가 있다고 가정해 보겠습니다. 이제 해당 순위표의 버전을 늘리면 버전 매개 변수가 3과 같고 비어 있는 새 순위표가 됩니다. 한편 이전 순위표는 쿼리할 시스템에 남아 있습니다.
는 ResetInterval
여러 가지 방법으로 작동할 수 있습니다. 이 예제에서는 월별이지만 개발자의 요구에 따라 변경할 수 있습니다. 이 경우 순위표가 구성된 순간부터 매월 자동으로 다시 설정됩니다. 다음과 같은 초기화 전략을 지원합니다.
- Day
- Hour
- Manual
- Month
- Week
사용 가능한 모든 구성에 대한 자세한 내용은 API 설명서를 검사. API 참조 순위표 만들기
순위표 버전 증가
이 새로운 구성을 사용하면 토너먼트 모드에 대해 동일한 순위표의 여러 버전을 사용할 수 있습니다. 하지만 문제로 인해 순위표를 수동으로 재설정하고 토너먼트를 통해 시작해야 한다면 어떻게 될까요? 이러한 경우 API를 사용하여 수동 재설정을 수행할 수 있습니다. 다음은 SDK를 사용하는 예제입니다.
public static async Task ResetLeaderboards(PlayFabAuthenticationContext context, string leaderboardName)
{
PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
IncrementLeaderboardVersionRequest resetLeaderboardRequest = new IncrementLeaderboardVersionRequest()
{
AuthenticationContext = context,
Name = leaderboardName,
};
PlayFabResult<PlayFab.LeaderboardsModels.IncrementLeaderboardVersionResponse> resetLeaderboardResponse = await leaderboardsAPI.IncrementLeaderboardVersionAsync(resetLeaderboardRequest);
}
이전 버전 쿼리
이제 이전 버전의 순위표를 쿼리해야 하는 경우 모든 GetLeaderboards API에서 사용할 수 있는 매개 변수를 사용할 version
수 있습니다.
다음은 SDK를 사용하는 예제입니다.
public static async Task<List<EntityLeaderboardEntry>> GetLeaderboard(PlayFabAuthenticationContext context, string leaderboardName)
{
PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
GetEntityLeaderboardRequest getLbRequest = new GetEntityLeaderboardRequest()
{
LeaderboardName = leaderboardName,
StartingPosition = 1,
PageSize = 20,
AuthenticationContext = context,
Version = 1
};
PlayFabResult<GetEntityLeaderboardResponse> lbResponse = await leaderboardsAPI.GetLeaderboardAsync(getLbRequest);
return lbResponse.Result.Rankings;
}
이제 순위표의 버전 관리와 관련된 모든 문제를 처리하도록 설정되었습니다. 여기서 중요한 측면은 서비스 내에서 스토리지를 사용하기 때문에 버전으로 유지하기로 결정한 순위표 정의의 수가 계량된다는 것입니다. 자세한 내용은 여기를 참조하세요.
결론
이 자습서에서는 다음 작업을 수행하는 방법을 알아보았습니다.
- 오른쪽 재설정 전략을 사용하여 순위표를 만듭니다.
- 순위표의 버전을 증분합니다.
- 이전 버전의 순위표를 쿼리합니다.