PlayerJuggler
Intelligent match making with player juggler
Player jugglers aims to decrease waiting times for games and make people play the game type they prefer with players of similar skill level.
- this system only works on 4 autohosts: TEAMS, 1v1, COOP and Planetwars. Any other autohost is not affected by juggler!
- juggler is not moving SpringLobby or Tasclient users atm (until SL implements !join)
- you can only be moved if
- your battle is not running
- if you joined a battle and are not spec in lobby
- you can be moved to
- game you like better than current one (at any time)
- game you like same as current one (if moving you makes the other game possible player-wise without breaking the current one)
- game you like less than current one but not NEVER (if your current game is not possible due to lack of players)
How to use?
- set your game preferences on home page
- join managed autohost (with star) of type you would like to play now
Applies to
Rules described will work only for managed autohost series (with stars), not for autohosts spawned on demand (create game).
Only players who are not set as spectators can be moved.
Technical
Battle categories
- FFA, min 4 players
- coop (chickens), min 4 players
- 1v1, min 2 players, max 2
- planetwars, min 6 players
- teams, min 6 players
Player preferences
- each player can set preference for each battle category. Best=+3, Like=+2, Ok=+1, never=0. Default is like all. Preferences are set on the home page and can be changed at any moment.
Juggler
Bin creation
Juggler looks at all existing battles which are not in game and have players present. It categorizes them (ffa,coop etc).
It makes bin from every non-running game that has players. If there is no bin in the category, it craetes bin from empty battle of same category.
If there are people in the running battle, it assumes they are in biggest bin of the same battle category.
Player pools
- Juggler manipulates people from managed hosts who are not playing (even those who are actively speccing but are unspecced in lobby).
For every bin, priority list of players is consturcted.
- players priority for a bin is his preference + 0.5 if he manually joined it
- never priority is never set
- if game is unsuitable for the player, priority isnt set (game is pw and level <2, or if game is 1v1 and elo difference >250
Bins that dont have enough people in priority list to make a game are removed from consideration.
Filling
System now goes through priorities starting from highest and in each cycle it does this:
Jugglers goes through bins that are not full in the direction:
1v1, ffa, pw, teams, chickens
For each bin it walks through people from bin's priority list of the current priority level sorted by elo closeness to current bin's elo and picks first that:
- is not already in another bin
- or considered bin has not enough players and player's current bin has more than 1 extra player above min limit and preference for the considered battle is same or higher than his current one.
Repeat the pass until no people were moved.
Do the same for other priorities.
Destroy bin
- find first bin that has players < min
Destroy the bin - freeing the players.
Reset assignment information and repeat all passes.
Repeat whole cycle until no bin is destroyed.
Finally execute the actual move of players.
