$TIDE Seashell Formulas

This document describes the generalistic formulas to allocate Seashells (Points) to individual users of TideFlow participating in free games and wager games. Seashells will later be converted into $TIDE tokens.

Participation in free and wager games is tracked separately
  • Silver Seashells
    • Awarded for free games
    • Reward currency for social tasks
  • Gold Seashells
    • Exclusively earned for playing wager games

This ensures an effective airdrop allocation to players. Players of wager games will be adequately rewarded, preventing dilution by free-to-play users.

Determining Seashells Per Game

Initially we have to define the total number of seashells available for distribution in a single multiplayer game.

At its simplest, the total number of seashells within a single lobby is calculated as such:

Total Seashells in game =Total number of players General Boost Community Boost Wager Boost\text{Total Seashells in game =Total number of players General Boost Community Boost Wager Boost}

General Boost: Note that the “General Boost” is set at 100% across all community sizes. This is in order to give two Seashells/player as a base rate.

Community Boost: Scale with the number of players that join one single game to incentivize larger communities.

Wager Boost (only in wager games): Scales with the wager each participant in a game bets by that incentivizing communities or games with larger wagers.

This simplified logic can further be expressed in the following way.

Let:
SHTotal=Total amount of seashells available for distribution in a single (multiplayer) gameSH_{Total} = \text{Total amount of seashells available for distribution in a single (multiplayer) game}N=Total number of players in a single (multiplayer) gameN = \text{Total number of players in a single (multiplayer) game}Boostb=The individual boost to incentivize large multiplier games according to the following tableBoost_{b} = \text{The individual boost to incentivize large multiplier games according to the following table}
SHTotal=f(N)=N(1+b=0BBoostb)SH_{Total} = f(N) = N * \left( 1 + \displaystyle\sum_{b=0}^{B} Boost_b \right)

In a simplified example where only a base boost as well as a community boost is applied is shown in the following table:

Or visually:

Further expanding the above formula with a wager boost lead to a slightly more complicated table:

NBase BoostLarge Game BoostSHTotalSH_{Total}
1100%0%2
10100%0%20
25100%0%50
50100%0%100
100100%100%300
150100%100%450
200100%100%600
250100%200%1000
500100%200%2000
1000100%500%7000

Or visually:

Further expanding the above formula with a wager boost lead to a slightly more complicated table:

NBase BoostLarge Game BoostWagerWager Boost
1100%0%10%
10100%0%100%
25100%0%250%
50100%0%500%
100100%100%100100%
150100%100%150100%
200100%100%200100%
250100%200%250200%
500100%200%500200%
1000100%500%1000500%

This again leads to a two dimensional grid of total seashells to be distributed in a single game:

N / Wager11025501001502002505001000
12222333447
1020202020303030404070
2550505050757575100100175
50100100100100150150150200200350
100300300300300400400400500500800
1504504504504506006006007507501200
200600600600600800800800100010001600
2501000100010001000125012501250150015002250
5002000200020002000250025002500300030004500
100070007000700070008000800080009000900012000

We can put the above also into a graphical representation:

Calculating Seashells Per Player

Now that the total amount of seashells available for distribution per game has been defined, we can break it down to a single player.

Let:
N=total number of players in a single (multiplayer) gameN = \text{total number of players in a single (multiplayer) game}ni=the individual single player in a single (multiplayer) gamen_{i} = \text{the individual single player in a single (multiplayer) game}
Therefore:
N=ni=1N1N = \displaystyle\sum_{n_i=1}^{N} 1

To determine the number of seashells distributed to an individual single player we need to rank the player's performance against the other players.

Let:
Ranki=Rank of an individual player among all other players in the gameRank_{i} = \text{Rank of an individual player among all other players in the game}
The ranking has to be based on a metric which we will call:
KPIi=Performance of an individual player i among all other players in the gameKPI_{i} = \text{Performance of an individual player i among all other players in the game}

Where KPI may be based on a Success Score or Return Measure (ROI) suitable for ranking the players individual performance.

Each player is then ranked based on the KPI relative to all other participants in the match. The following illustrates such a distribution:

The individual performance will then be rewarded by boosting seashells available for distribution for players that scored in the top percentiles while the majority (the belly of the distribution) will get a small reward and the bottom tail may or may not receive a marginal reward.

This increase is currently set to always incentivize players to compete in order to climb as far up the P&L ladder as possible. An idle playstyle, where aiming for the middle of the leaderboard is rendered inefficient from an economic and pointnomic perspective

Taking above into consideration one can easily draft a rewards table assuming a game with SHTotal=1000SH_{Total} = 1000

CommentPercentileSeashell AllocationSeashells
Maximum100%30%300
95%25%250
90%20%200
75%10%100
Median50%5%50
25%4%40
10%3%30
5%2%20
Minimum0%1%10

Or visually:

The number of seashells available for distribution in a specific percentile then needs to be shared among all players that scored in the same percentile.

Furthermore, if there should be no player scoring in a particular percentile the seashells allocated to that percentile are held in an overflow. This overflow is eventually proportionally distributed relative to the base seashell allocation, to the percentiles with players. By doing so one ensures that players in higher percentiles always receive more than those in lower percentiles.

CommentPercentileScoreAllocationSeashellsNumber of Players in PercentileActual DistributionActual Distribution per Player in Percentile
Maximum100%1630%901120120
95%15.4525%75000
90%14.920%6018080
75%13.2510%305408
Median50%10.55%1538200.53
25%7.754%1244160.36
10%6.13%97121.71
5%5.552%6284
Minimum0%51%3242
Overflow75TRUE
Nominator225

One can now easily define the generalistic formula for the individual user.

Let
Pp=p Percentile e.g. P10%=10% PercentileP_{p} = p \text{ Percentile e.g. } P_{10\%} = 10 \text{\% Percentile}Np=The number of players scoring in a specific percentile pN_{p} = \text{The number of players scoring in a specific percentile } pO=Overflow=pP Seashells allocated to a percentile p where Np=0O = Overflow = {\displaystyle\sum_{p}^{P}} \text{ Seashells allocated to a percentile p where } N_{p} = 0NOM=Nominator=pP Seashells allocated to a percentile p where Np0NOM = Nominator = {\displaystyle\sum_{p}^{P}} \text{ Seashells allocated to a percentile p where } N_{p} \neq 0SHp=Basis Seashells allocated to a percentile p=AllocationSHTotalSH_{p} = \text{Basis Seashells allocated to a percentile } p = Allocation * SH_{Total}SHAp=Actual Seashells allocated to a percentile p=SHp+OSHpNOMSHA_{p} = \text{Actual Seashells allocated to a percentile } p = SH_{p} + O * \frac{SH_p}{NOM}
Therefore, the Seashells allocated to an individual player i scoring in percentile p is:
Dp,i=SHApNpD_{p,i} = \frac{SHA_p}{N_p}