순위표를 사용하는 수동 계층
이 자습서에서는 순위표 서비스 내에서 일부 속성을 적용하여 플레이어를 위한 계층 시스템을 만드는 방법을 알아봅니다. 서비스 속성을 기반으로 수동 계층 시스템을 만드는 방법을 이해하려면 예제로 시작하겠습니다. 플레이어가 가능한 한 많은 점수를 획득할 수 있는 시간이 제한된 좀비 살인 게임이 있다고 상상해 보십시오. 다른 전략을 사용하여 더 많은 포인트를 획득할 수 있으며, 피해를 받지 않는 점도 있습니다.
이 예제에서 플레이어는 각 경기의 성과에 따라 경험 포인트를 획득합니다. "구주"의 순위를 가진 상위 플레이어를 식별하는 계층 시스템을 만들고자 하며, 나머지 플레이어들은 브론즈, 실버, 골드, 플래티넘, 다이아몬드와 같은 다양한 계급에 배포될 것입니다.
순위표 만들기
첫 번째 단계는 순위 플레이어에 대한 기본 요소를 포함하는 순위표 정의를 만드는 것입니다. 우리의 좀비 게임에 대 한, 우리는 여러 점수를 사용 하 여 거 야. 다음 예제에서는 C# SDK를 사용하여 순위표 정의를 만드는 방법을 보여줍니다.
public static async Task CreateLeaderboardDefinitionAsync(PlayFabAuthenticationContext context, string leaderboardName)
{
PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
CreateLeaderboardDefinitionRequest leaderboardDefinitionRequest = new CreateLeaderboardDefinitionRequest()
{
AuthenticationContext = context,
Name = leaderboardName,
SizeLimit = 10000,
EntityType = "title_player_account",
VersionConfiguration = new VersionConfiguration()
{
MaxQueryableVersions = 1,
ResetInterval = ResetInterval.Manual,
},
Columns = new List<LeaderboardColumn>()
{
new LeaderboardColumn()
{
Name = "Eliminations",
SortDirection = LeaderboardSortDirection.Descending,
},
new LeaderboardColumn()
{
Name = "SkillPoints",
SortDirection = LeaderboardSortDirection.Descending,
}
new LeaderboardColumn()
{
Name = "Deaths",
SortDirection = LeaderboardSortDirection.Ascending,
}
}
};
PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> createLbDefinitionResult = await leaderboardsAPI.CreateLeaderboardDefinitionAsync(leaderboardDefinitionRequest);
}
여기서는 세 가지 다른 점수로 정의된 순위표가 있습니다. 순위표를 만드는 방법 또는 동률을 깨는 방법에 대한 자세한 내용은 순위표로 더 많은 작업을 수행하는 가이드를 검사.
수동 계층화
순위표를 올바르게 만들면 이제 계층을 만드는 방법을 정의할 수 있습니다. 먼저 플레이어 모집단을 분할하는 방법을 정의해야 합니다. 일반적으로 순위가 높을수록 플레이어 수가 줄어듭니다. 이 개념을 염두에 두고 계층을 정의하는 방법은 다음과 같습니다.
- 브론즈: 플레이어의 0-35%.
- 실버: 플레이어의 35% - 60%.
- 골드: 플레이어의 60% - 80%.
- 플래티넘: 플레이어의 80% - 90%.
- 다이아몬드: 플레이어의 90% - 99.5%.
- 구주: 플레이어의 상위 0.05%.
이 프로세스는 계층 시스템에 대한 수동 접근 방식이므로 플레이어의 배포는 개발자가 적합하게 보는 방식으로 저장되어야 합니다.
데이터를 검색하기 위해 다음 예제를 사용합니다.
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,
};
PlayFabResult<GetEntityLeaderboardResponse> lbResponse = await leaderboardsAPI.GetLeaderboardAsync(getLbRequest);
return lbResponse.Result;
}
이 예제는 순위표에서 데이터를 검색하는 여러 방법 중 하나입니다. 응답의 Result 속성에서 순위표에 현재 있는 행 수를 알려주는 라는 EntryCount
속성을 찾습니다.
이 숫자는 순위표의 최대 행 수를 나타내는 와 다릅니다 SizeLimit
.
플레이어의 계층을 결정하기 위해 순위표 내에서 해당 위치를 가져와 속성으로 EntryCount
나누어 정의된 계층 내에 맞는 위치를 확인합니다.
빠른 예제:
- 최하위 플레이어: 10,000명 중 8500명 에 위치한 플레이어는 인구의 85% 이내이며 브론즈 계층에 속합니다.
- 미들 플레이어: 10,000명 중 3500명 에 배치된 플레이어는 플레이어의 상위 35% 내에 있으며 골드 계층에 속합니다.
- 탑 플레이어: 10,000명 중 50명 에 배치된 플레이어는 플레이어의 상위 0.5% 이내이며 "구주"가 됩니다.
결론
이 자습서에서는 다음 작업을 수행하는 방법을 알아보았습니다.
- 순위표를 만듭니다.
- 순위표에서 데이터를 쿼리하는 방법을 알아봅니다.
- 백분위수에 따라 수동 계층 배포를 만드는 방법을 알아봅니다.
- 플레이어의 위치 결과를 실제 계층에 매핑하는 방법을 알아봅니다.