Difference between revisions of "Matchmaking rules"
From Gladiabots Wiki
(→Ghosts) |
|||
(11 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | == | + | == Ghosts == |
− | + | Every time you play a multiplayer match, the team you deployed 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: | |
− | + | <span style="color: red">Rules in red only apply to ranked matches</span> | |
− | + | ||
− | + | <span style="color: blue">Rules in blue only apply to unranked matches</span> | |
− | + | ||
− | # | + | # A new ghost is created with your ghost composition and AIs, your current league score (elo) and your XP level |
− | # | + | # The system lists the 200 most recent ghosts (only keeping the most recent ghost for each player) matching those conditions: |
− | #* | + | #* <span style="color: red">League score between <your score -100> and <your score +100></span> |
− | + | #* <span style="color: red">The score of the ghost is not lower than his original score minus 50 points</span>. Say a ghost was deployed at 1800. If the ghost goes down to under 1750 it gets disabled. | |
− | # | + | # Then it removes from this list the ghosts of players you already met during the last 30 minutes |
− | + | ||
# At this point, there are 2 possible cases: | # At this point, there are 2 possible cases: | ||
− | #* | + | #* Case 1 = the ghost list is empty: |
− | #** Sort the | + | #*# <span style="color: red">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</span> |
− | #**# | + | #*# <span style="color: blue">Your match is pending until someone else joins it</span> |
− | #**# | + | #* Case 2 = there are some ghosts remaining: |
− | #**# | + | #** Sort the list using these rules (ordered by priority): |
− | #**# | + | #**# Ghosts from pending matches first |
− | #**# | + | #**# <span style="color: red">Ghosts from the closest league first</span> |
− | #** | + | #**# <span style="color: blue">Ghosts with closest score first</span> |
− | #* | + | #**# Ghosts of players using a different IP first (anti-cheat measure) |
− | + | #**# Ghosts of players met the furthest in the past first (never met = the furthest possible) | |
− | + | #**# <span style="color: red">Ghosts with the closest league score first</span>. <br />This list has 50% chances to keep "closest scores that are lower than the deploying player first", say the deploying player has a score of 1500, then only ghosts equal or under 1500 are picked, this even if a opponent has better ghosts in range. The remaining 50% chances are used to keep "closest scores that are higher than the deploying player first". | |
− | + | #**# 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 |
Latest revision as of 11:19, 16 November 2019
Ghosts
Every time you play a multiplayer match, the team you deployed 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
- A new ghost is created with your ghost composition and AIs, your current league score (elo) and your XP level
- 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 minus 50 points. Say a ghost was deployed at 1800. If the ghost goes down to under 1750 it gets disabled.
- Then it removes from this list the ghosts of players you already met during the last 30 minutes
- At this point, there are 2 possible cases:
- Case 1 = the ghost list is empty:
- 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
- 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):
- Ghosts from pending matches first
- Ghosts from the closest league first
- Ghosts with closest score first
- Ghosts of players using a different IP first (anti-cheat measure)
- Ghosts of players met the furthest in the past first (never met = the furthest possible)
- Ghosts with the closest league score first.
This list has 50% chances to keep "closest scores that are lower than the deploying player first", say the deploying player has a score of 1500, then only ghosts equal or under 1500 are picked, this even if a opponent has better ghosts in range. The remaining 50% chances are used to keep "closest scores that are higher than the deploying player first". - Most recent ghosts first
- Keep the 10 first of the sorted list (10 "best" ghosts)
- Then pick one of them randomly and join it
- Sort the list using these rules (ordered by priority):
- Case 1 = the ghost list is empty:
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