Matchmaking rules

From Gladiabots Wiki
Jump to: navigation, search

Ghosts

Every time you deploy a team, it becomes a "ghost" that will be used by the matchmaking system. When a match result is known, the league score delta is applied to both the participating ghosts and the player(s) that manually created/joined the match. This way, ghosts score evolves depending on the opponents they meet. The more a ghost "plays", the more accurate its score is.

Matchmaking

Here's what happens when you start a new game:

Rules in red only apply to ranked matches

Rules in blue only apply to unranked matches

  1. A new ghost is created with your ghost composition and AIs, your current league score (elo) and your XP level
  2. The system lists the 200 most recent ghosts (only keeping the most recent ghost for each player) matching those conditions:
    • League score between <your score -100> and <your score +100>
    • The score of the ghost is not lower than his original score
  3. Then it removes from this list the ghosts of players you already met during the last 30 minutes
  4. At this point, there are 2 possible cases:
    • Case 1 = the ghost list is empty:
        1. Retry with -200/+200, -300/+300 and -400/+400 score ranges until it finds at least one valid ghost, else match is pending until someone else joins it
        2. Your match is pending until someone else joins it
    • Case 2 = there are some ghosts remaining:
      • Sort the list using these rules (ordered by priority):
        1. Ghosts from pending matches first
        2. Ghosts from the closest league first
        3. Ghosts with closest XP level first
        4. Ghosts of players using a different IP first (anti-cheat measure)
        5. Ghosts of players met the furthest in the past first (never met = the furthest possible)
        6. Ghosts with the closest league score first
        7. Most recent ghosts first
      • Keep the 10 first of the sorted list (10 "best" ghosts)
      • Then pick one of them randomly and join it

Example

Here's an example of the ghost system in action: (asuming the ghost list is initialy empty, all players are in the same league with a similar league score and a different IPs)

T = 0h00mn > P1 deploys G1
no ghost available, match is pending
ghost list: G1
T = 0h01mn > P2 deploys G2
matched against G1 (P1 will see the "new" flag on the match)
ghost list: G1, G2
T = 0h02mn > P3 deploys G3
matched against G2 (most recent ghost)
ghost list: G1, G2, G3
T = 0h03mn > P3 deploys G3b
matched against G1 (most recent ghost not already met in the last 30mn)
ghost list: G1, G2, G3, G3b
T = 0h04mn > P3 deploys G3c
no ghost available (fought all the available ghosts in the last 30mn), match pending
ghost list: G1, G2, G3, G3b, G3c
T = 0h05mn > P1 deploys G1b
matched against G3c (most recent ghost)
ghost list: G1, G2, G3, G3b, G3c, G1b
T = 0h06mn > P1 deploys G1c
matched against G2 (most recent ghost not already met in the last 30mn)
ghost list: G1, G2, G3, G3b, G3c, G1b, G1c

...

T = 0h40mn > P1 deploys G1d
matched against G3c (most recent ghost, met more than 30mn ago)
ghost list: G1, G2, G3, G3b, G3c, G1b, G1c, G1d