Currently, Ball Race uses the following payout system:
In addition to this table, courses that are harder get a small multiplier. (x1.3 maximum for very hard courses)
As we can clearly see here, the most amount of units come from getting 1st, 2nd, and 3rd places. Thus, I call this a rank-based payout model, as it significantly favors players who are able to get first 3 places within a given game.
Current model’s limitations
I think the current rank-based payout model has several limitations:
“Given the opportunity, players will optimize the fun out of a game.” I believe, Ball Race has most fun when playing with a lot of people with different skill level. However, the current payout model:
- Incentivizes players to play with those who are less skilled, so they get better rank, thus more units
- Incentivizes players to play in 3-player groups, because (1) 3 players are the minimal requirements for getting rank rewards, (2) they are always in the top 3, and (3) the chance of them getting the first place is much higher with less competing people
- Since getting 4th place yields the same amount of units as getting 5th place and so on, many players start to “actively collecting melons” (= go around just to get melons) instead of finishing the course as fast as possible once they are behind. This is sometimes very unpleasant to spectate. The payout system should encourage players to go as fast as they can, instead of encouraging them to slow down and making others wait forever.
- It does not provide proportional award to courses that takes significantly more effort to finish. For example, just finishing a level in Midori should be much harder than getting a first place in a GLXY level with 2 other rookies. The current system does not consider that.
Given these limitations, I propose that a new payout system is added to replace or accompany the old rank-based system.
Basically, I suggest that players get rewarded based on how well they do globally. That is, after each level, the time that player got is compared with time of every other attempts (include both passed & failed attempts) made by other players in that level. Then, based on this relative ranking, a percentile is generated. According to that percentile number, an reward of units is given. This relationship between percentile and units awarded does not have to be linear. For example, getting a 50th percentile time may give 200 units, a 15th percentile time may give 500 units, while a 5th percentile time may give 1000 units.
This proposal addresses all three limitations mentioned before:
- Players will no longer try to play with less people or people that are less skilled, since their unit rewards are no longer/less based on their performance against other players within the same game.
- Getting to the goal faster always gives a better percentile, which means at no point, players should just stop trying to go fast.
- Courses that are significantly harder will inevitably have much more failed attempts. Which means, merely finishing the course will guarantee a much better percentile, and thus more units.
In addition to these “fixes”, this proposal also provides some additional benefits:
- Players will be able to immediately know how well they do globally after each attempt, instead only knowing the absolute ranking after getting a personal best.
- Provides a sense of achievement when getting a really good time but a little bit worse than the personal best. (“Ah! That was in the 2nd percentile! It knew it was going to be good when I merely made in that cycle”)
- Getting less frustrated when losing to some pro, as players will be able to understand how well they are actually doing.
I do understand that recording every single attempted ever made in Ball Race will be expensive (computation-wise and storage-wise). To mediate that, I think a compromising solution is to only record last 10,000 attempts in each level. As new records come in, instead of adding them to the database, they update existing rows. (For example, attempt 20,238 will be put in row 238) This way, there will only be 10,000 rows at any time in a table.
As a bonus to this rolling record system, when the developers makes small changes to the map, it will not require wiping the data - as new attempts coming in, the old, somewhat outdated records will be gradually replaced. Nevertheless, large changes/reworks do need to wipe all attempts data.
Please read my reply here for more information regarding technical feasibility.
Other time based payout model suggestions (And why I think mine is better)
There are some other suggestions made prior to this post. They both suggest giving rewards for beating a preset cutoff time:
I think having a fixed time that players will have to beat to get additional units have 3 issues that do not exist in my proposal:
- Does not actually fix the limitations 2 and 3 I mentioned before. (players will give up once the designed time is passed & does not award more for just finishing those hard levels)
- The cutoff time is hard to determine and difficult to maintain as maps getting changed/reworked
- Having a cutoff time makes shortcuts either mandatory (if shortcuts are considered when determining the cutoff time) or overpowered (if shortcuts are not considered when determining the cutoff time).
I really like Ball Race in Tower Unite. However, I do think my suggestion will make Ball Race better. Please consider it. Thanks for reading.
For more detailed reasoning for this proposal, you can read my reply here.
P.S. Also, English is not my first language, so I apologize for any mistakes.