Hi there, I thought I would try my hand at putting a few ideas online. These are ideas that I really want to talk about but don't seem to find the time to talk about. They might also be concepts that I do get to talk about from time to time, but don't get to go into as much depth as I would like. I imagine this will often look at game design, but I might go into other topics too.
MMO Endgame Quest System
For this post I’m designing an end game MMO Quest System for players to get 4 epic items. For this I will use Warframe as my example, but this could be applied to any long term game with a focus on rewards and player retention such as World of Warcraft or Destiny 2. I’m designing this so that the average player can gather all 4 epic items in about 3 months, but the system is designed to be expandable with more items or over different periods of time.
To be clear this is not something that is only available for 3 months, but rather something that would always be in the game but take about 3 months on average to gather all 4. This is so that the content exists for future players along with being something that can be returned to and build on.
Overview
At the start of each week, a weekly quest will open up. By completing this quest, players will be given a rare or epic item. By completing repeatable and daily quests players will earn “reward points”. When they complete the weekly quest these points will be used to calculate the drop chance of getting an epic. These points are then spent and built back up over the next week.
Repeatable - The player can repeat this quest as often as they like, it grants a small amount of reward points. Rewards a random common item.
Daily - Refreshes each day. Can be completed once each day, it grants a moderate amount of reward points. Rewards a random rare item.
Weekly - Refreshes each week. Can be completed once each week, it grants a large amount of reward points. Resets the players currently held reward points. Change to reward one of the 4 epics, or a random item (ideally higher value than the daily reward).
The goal is to get players playing together and to log in daily, while still letting players who get all their gaming done in a day or 2 each week a reasonable chance at getting rewards. Additionally, this allows for hardcore players to increase their chances of getting an epic drop.
Each of these quests would give a predetermined amount of reward points (shown in the image below). And uses a logarithmic function (diminishing returns) to stop players from reaching 100% epic drop chance. Additionally, this puts a soft cap on how effective the repeatable quest is, while still allowing players to use repeatables to catch up if they miss a day or complete them for bonus points when they have free time.
*Formula: Epic Drop Chance = Reward Points / (100 + Reward Points)
*The dev team also has access to a special “Repeatable Event Bonus Value” that the repeatable objective reward is multiplied against to be used for events.
The Core System
With the numbers to the right completing only the weekly objective results in a 16.7% chance of getting an epic drop while a player doing 7 dailies and the weekly has a 50% chance. This is done to encourage players to create a routine and log in regularly.
We can use this data to forecast if players will have found an epic drop over any period of time. This shows that over a month the majority of players will have at least 1 epic.
*It is worth noting that these percentages are not your odds of getting an epic on a particular week but rather how likely a player is to have received an epic in that amount of time. So when you look at 4 weeks it doesn’t mean the player has a 90+% chance on their next drop but rather it is a 90% chance that by the end of week 4 they will have received at least 1 epic drop.
Adding in Bad Luck Protection
Bad Luck Protection is important in a system like this because when you have millions of players all participating in something with RNG some players are going to draw the short straw. This ensures that while some players can still get lucky and get each epic quickly less fortunate players don’t need to wait years to get a drop.
In our case this is done by applying bad luck protection that increases the drop chance of epics for each time the player has completed the weekly quest without getting an epic drop. This resets after the player receives an epic drop from the weekly quest.
*Formula: Drop Chance = (1-(((1 - RewardPointsDropChance * (1 + DefaultBadLuckProtection)))^AttemptedWeeksSinceEpicDrop))
To the right you can see the comparison with and without bad luck protection. It plays no role on the first week (right after getting an epic, or the first weekly quest completion), but has a subtle nudge in the players favor without devaluing the repeatable and daily rewards.
If we wanted to take this a step further we might even add a threshold behind the scenes so that if the player is above a particular preset drop chance we round that to 100%. This is typically done when the percentage chance is player facing (though the rounding is not shown to the player), an example of this is used in Xcom to help player hit chance depending on the set difficulty.
Bad Luck Protection on which Epics Drop
Lastly we are applying Bad Luck Protection to reduce the chance of getting a repeat epic drop when do you manage to get one. This is done by counting how many times the player has received a particular epic reward, reducing its drop chance then redistributing the removed chance to the other rewards in the loot table. This formula gets very complicated very quickly, don’t worry there isn’t a quiz.
*Formula: This Epic Drop Chance = (If ChanceOfNextDrop < 0, ChanceOfNextDrop = 0, else (ChanceOfNextDrop = ( ((1 / NumberOfEpicsInLootTable) - (NumberOfTimesThePlayerHasReceivedThisEpic * RepeatDropProtectionRate)) + ( (RepeatDropProtectionRate * (TotalNumberOfEpicsThePlayerHasReceived - NumberOfTimesThePlayerHasReceivedThisEpicFromThisLootTable)) / (NumberOfEpicsInLootTable - 1) )) ) )
* Note that in the sheet linked below there is a bug where an epic can drop below a 0% chance to drop and thus increase the chance of other items to drop to compensate. This is a problem with how google sheets handles things that I can’t find a fix for. Ideally if an item would reach a below a 0% chance to drop it would set it to 0 while still allowing the others to compensate as normal.
Try it yourself
You can view and tinker with the spreadsheet here. Teal areas are editable so that you can play with values, calculate drop rates for different players, change the likelihood of getting each epic depending on what epics you have already gotten, and see the likelihood of getting an epic over different periods of time. This can be scaled to accommodate larger loot tables, over any amount of time.
If I were to expand on this I think the next phase would be to adjust values based on objective completion times along with developing the gameplay and story of each objective.