Opened 8 years ago

Last modified 6 weeks ago

#3951 new defect

Host quitting rated games

Reported by: elexis Owned by:
Priority: Must Have Milestone: Backlog
Component: Multiplayer lobby Keywords: beta
Cc: Andy Alt Patch:

Description (last modified by Andy Alt)

Often players on the lobby quit the game in order to avoid getting a negative rating.

A simple and strict approach would be to reduce the rating if the server disappears, even if it was a power blackout or a crash.

A less strict approach would be to detect the shutdown. Both clicking on the exit button and closing the game with Alt+F4 (sending the exit signal) can be catched in the destructor of the CNetServerWorker() for example (maybe we can find a nicer place). The host quitting the server could send a packet to the lobby that he just quit a rated game. This means abuse can also be tracked, allowing more accounts to be banned.

Change History (4)

comment:1 by elexis, 8 years ago

Description: modified (diff)

Notice there might be a good reason to kill a rated game. For example the game might be unplayable due to network lag or the game taking too long. The players could accept a draw (vote) which wouldn't change the rating (#2512). Otherwise the lagger / absent party would be declared to be defeated.

Also if we only punish the host for quitting a rated game, then the clients can still quit to avoid a rating (and we shouldn't trust the host if he says that that guy left).

Instead we could limit rated games to games hosted by Wfg on a dedicated server using #3556. The server would be able to verify who goes absent or lagged too much for too long and inform the lobby bot to adapt the rating.

comment:2 by scythetwirler, 7 years ago

Keywords: beta added

comment:3 by Andy Alt, 6 years ago

Cc: Andy Alt added
Description: modified (diff)

comment:4 by Dunedan, 6 weeks ago

I thought quite a while about this problem, especially as the vast majority of rating disputes comes from players quitting rated games. Solving this would make a lot of players happy.

One of the main problems right now is that pyrogenesis only sends messages related to ratings to EcheLOn once a game ends, so if we don't receive a rating report from one of the two players, we don't know if a player quit a rated game or if the other player sent a counterfeit rating report.

To solve that I propose that pyrogenesis sends an additional "game start" message, including all game settings, upon starting a rated game to EcheLOn and delays starting the game until it receives a message from EcheLOn telling it to do so. EcheLOn will only send such a message if it receives "game start" messages with identical settings from all players. Otherwise it'll return an error message, allowing pyrogenesis to cancel the game. By doing so we know even before a game starts if it's supposed to be rated or not and that all players agreed on the given game settings.

If one of the players quits the rated game while it's running, without giving his client a chance to send the rating report, we can detect that in EcheLOn, by waiting a few hours for a rating report from all players and if we don't receive one from a player awarding a win to the other player. That would allow us to punish players quitting rated games automatically without the need for human intervention.

Non-host players losing the connection during a game and reconnecting won't be negatively affected by this, however if that happens to the host, the game ends and he'll be considered to have lost. From my perspective that's fine as the host of a rated game should ensure a stable environment for the match anyway.

Handling draws would be good too, but is IMO out-of-scope of this issue.

Note: See TracTickets for help on using tickets.