We want to implement simple tournament system to our game, and here are the requirements for that tournament:
- There is 24-hour period when players can enter the tournament
- When entering a tournament player will be put into a group of 199 other players
- After joining the players have 24 hours to improve their score
- After the tournament ends we reward players depended on their rank
I have tried to think of the best way to implement this feature using PlayFab, but every time I think I have found a way, I run into a problem. I will list all the ways I have thought so far and what is the problem with them.
1) Update tournament statistic
- Every player would be in the same leaderboard ( we don't want that )
- Will eventually always have cheaters on top
- Would reset the same time for everybody
2) Shared group data
- This would be too many players accessing that data at the same time
- The data is neither sharded nor cached so accessing the whole list is not optimal
- Deciding what group player gets is not easy, when you have 200 join requests happening simultaneously
- There might be overflow happening for groups
3) Friend list ( with statistic )
- Every friend would have to be added 1 at a time (making it hundreds of API calls / user)
- It might be impossible to add facebook friends or steam friends to the same tournaments
- We would have to remove the friends when tournament ends (hundreds of API calls / user again)
- Would reset the same time for everybody
4) Matchmaking
- We would have to implement Photon to the game
- Would be extreme amount of work to make it happen
5) Unique statistic for 200 players
- There is limitation of 300 statistic name (so wouldn't work for over 60 000 players)
- Deciding what statistic player gets is not easy
- There might be overflow happening for groups
So as we can see all the possible solutions I came up with have few or more problems that prevent us from using that as a solution. What would PlayFab recommend us to use to achieve this kind of tournament we want? It would be lovely to use all the features already made for PlayFab leaderboards.
We just want to show the player the top 5 players and something like 10 players around him during the tournament. We can even let the player decide their reward rank, because most players who find a way to hack this will hack our game anyway.
It is also really important that we can split our players into groups of 100-200 and limit the time for those groups to be exactly 24hours.