How Are Quests Assigned?
The process we use is the Gale–Shapley (aka deferred acceptance) algorithm, designed to find stable matches between our group of players and a group of quests with limited slots. The resulting assignment which is most fair by giving players the quest they want most and quests the players it wants most. It is optimal for finding a stable solution such that no player would wish to trade "spots" with another player in a way where both players would be happy with the trade.
In this set-up, our players each have a preference (in the form of your preference vote). Similarly, quests will have a preference for players, focused entirely around a pre-determined "target level" the quest prefers players to be close to.
If all quests have room for all player's first choice, then all players will be placed into the appropriate quest. Unfortunately, life isn't always that simple, and a quest will likely have more people wanting to join than slots available. In this case, the players are selected based on a series of tie-breaking strategies to pick who gets priority.
- Players always get quests that are resolving a quest request, obviously, or other case-by-case bases
- Player priority is always most important, so selecting a quest as #1 always get priority over #2
- Target level preference, where the players who are closest to the quest's target level get priority. Players of the target level get priority, then players who are 1 level off from the target are next, followed by players 2 levels off, etc.
- In the event players are equally far from the target level (e.g., a quest has target level 4, and has a level 3 and level 5 sign up) priority is given to the lower level player
- Players of the same level are randomly sorted to avoid any unintentional bias
At this point, the algorithm will have assigned everyone possible to a quest, and the DMs review the spread. A final pass is given to make sure the level spread is as expected.