QuickMatch
QuickMatch is proposed feature for lobbies/springdownloader.
Motivation: it can take very long to get the game you like and while waiting in one battle room you might actually miss other game. Also waiting in game room is not optimal, conditions can change after you ready up, it can rehost, change map etc.
Purpose of this system is to make finding game you like very easy
End user experience
End user specifies:
- attributes of the game and how important they are (scale -10 - 10), negative values means he does not want his game to has such attribute. They will be presented visually as red-green slider.
- deadline by which the game should start
Server combines wishes of people to generate greatest satisfaction and when good combinations are found, game is auto started.
There is no need to enter any battle, click host etc.
Attributes
- 1v1
- FFA
- player count > x
- mod == x
- map == x
- small map
- big map
- land map
- water map
- mixed map
- flat map
- hilly map
- "speed" map
(Possible to use springinfo classifications for hilly/wet/etc, or just read attributes from the map directly?)
Examples
Lichos config:
- player count>=8 +10
- player count<4 -10
- FFA +4
- map = tabula +2
- map = thrones +2
- mod = ca +10
- mod = xta +4
- mod = this +7
How can it work
System will calculate max points you can reach. It has to eliminate mutually exclusive values (this is hardest part, if its a problem can be user defined :)
System will then calculate "points" of possible games for each player, and if it exceeds player's minimum value, it will let him join. Player's minimum value will start at maximum possible points and it will slowly fall to reach 0 at player's deadline.
Because its computationally expensive to consider all possible mods and maps and teamsetups (ffa vs teamgame), system will only consider "preferential" values. That is if someone prefers tabula, it will check combinations with map tabula. If someone prefers CA it will add CA to list of mods to check.
Social interaction
Some people oppose similar system because it might reduce social interaction. To fix there will be common chat room for people waiting for quick match. You will see list of other waiting players and they will be colored according to how well you match together. (If I have S44 +10 and someone else has S44 -10, we will see each other red, if we both have S44 +10, we will see each other green).
Server will process list of people each time user is added/removed from wait list or his attributes changed and also each minute (with decreasing thresholds).
Development phases
Milestone 0 - prerequisites
- fix map startpoints gathering in SD system
- provide web interface for SD system and give system admins these rights:
- select/define prefered boxes for map and team mode (ffa/team count) for maps - if not set, default values will be gathered from typical use on springies
Milestone 1 - non-lobby
- create server that will process the requests and try to figure out best games. Server will also generate script and spawn dedicated server to host games.
- add simple module to SD that will connect to server and let user define his preferences and then start spring when game selected
Milestone 2 - lobby interface
- server will join lobby to act as bot there and provide simple interface for lobbies
- lobbies will set user's preference by PMing some well defined string to lobby bot and recieve request to start game through PM from that bot.
- qm bot will also relay chat from non-lobby clients to some channel and back
Milestone 3 - full lobby integration
- extend server so that it creates actual battle rooms in lobby and puts "guest" accounts to such game to represent people who are using quickmatch. This means that non-quick match people can join quick match game.
- server must then create candidate games even before enough people are avialable and wait a bit to give non-qm people to join
- create chat relay between candidate games and qm wait room
Discussion
- Saktoth: Great for when we have a playerbase.
- Licho: nah, its meant for low playerbase. why would it need big one??
- Saktoth: There is only ever enough players for one game at a time. You'll only ever be matched to that game. Its equivalent to just sitting in that room. Unless you include BA, in which case everyone with BA + other games in preferences will always be matched into games with the large BA playerbase, especially as their deadline ticks down. Worst would be if you want to play a large CA game, and a small CA game starts without you because it decided that it didnt meet your preferences. Then you will wait around, no game will fit your requirements because half the playerbase is tied up.
- Licho: of course it will support BA. But i suspect most people wont give BA much high preferences. And regarding small/big game you will start big game as soon as their small game ends. System can also be smarter and predict a bit. It could be something very simple. If player A threshold is met with huge margin but player B will get to threshold in short time, or just demands more people, wait a bit till both can play.
Variant 2 - keep it simple admin hax
- user has list of "games" available - like "BA big game", "BA small game", "CA ffa"
- user can enable any number of games - list with checkboxes
- for each game variant there is special autohost running - system auto shuffles people around those autohosts and readies them
Implementation
- server in this cases acts as lobby bot with level2 admin rights - as such it can fake client commands and make client join game, ready up, whatever it wants
- user can simply PM the bot !play 1,2,3 to enable quickmatch mode - but lobbies should implement proper interface of course
Challenges
- server has to predict a bit- it has to estimate how long it will take for some game to finish (from average time per game on map and from number of people who left/died)
- there can be problem with missing maps/mods - lobbies should integrate with SD.
Possible end user interface
- multiple choice game list: ba, ca, xta, s44, ...
- multiple choice size list: 1v1, small team, big team, ffa
- extras list, each option with on/off/dontcare combo: ladder, planetwars, speedmetal, ..