ZeroK-RTS / Chobby

Spring RTS Ingame lobby project
15 stars 37 forks source link

Make battle debriefings with fake elo #678

Open DeinFreund opened 5 years ago

DeinFreund commented 5 years ago

The server is going to use a new "fake elo"/ladder elo rating that'll only change after matches. It has limited movement and always matches the result (victory gains elo, loss loses elo). In order to make for a user-understandable rating experience, the result of each match should be properly communicated. The lobby receives a BattleDebriefing that contains all information pertaining to each user's battle result. Please remark if there are missing tags and implement a post-battle pop-up to display a debriefing/progress report.

The current message looks as follows:

BattleDebriefing:
    Dictionary<string, DebriefingUser> DebriefingUsers
    string ChatChannel
    string Message
    int ServerBattleID
    string Url

DebriefingUser:
    int AllyNumber 
    List<DebriefingAward> Awards 
    float EloChange 
    bool IsInVictoryTeam 
    bool IsLevelUp 
    bool IsRankup 
    bool IsRankdown 
    float NewElo 
    float NextRankElo 
    float PrevRankElo 
    string RatingCategory 
    int NewRank 
    int LoseTime 
    int XpChange 
    int NewXp 
    int NextLevelXp 
    int PrevLevelXp 
    int AccountID 

DebriefingAward:
    string Description 
    string Key 
    double? Value 

Rank changes should be detected solely through this message to make sure they are correctly displayed after the corresponding match. See IsRankup or IsRankdown to find out whether to display a rank change message. IsLevelUp behaves similarly for xp changes. No changes to level or rank will occur outside of a BattleDebriefing.

XP progress can be shown as a progress bar with fill ratio animated from (NewXp - XpChange - PrevLevelXp) / (NextLevelXp - PrevLevelXp) to (NewXp - PrevLevelXp) / (NextLevelXp - PrevLevelXp)

Fake elo progress can be shown as a progress bar with fill ratio animated from (NewElo - EloChange - PrevRankElo) / (NextRankElo - PrevRankElo) to (NewElo - EloChange - PrevRankElo) / (NextRankElo - PrevRankElo). It's important to also show the rating category, as the rating change might have not been for the player's better category, thus not actually determining rank. If the battle was not rated for any category, RatingCategory will be set to "Unrated" and NewElo to -1.

DeinFreund commented 5 years ago

The new BattleDebriefing is now implemented on the test server. Here's a sample message:

BattleDebriefing {
  "DebriefingUsers":{
    "DeinSchlumpf":{
      "AllyNumber":1,
      "Awards":[
        {"Description":"Big Purple Heart, Damage received: 3,847",
        "Key":"ouch"},
        {"Description":"Master and Commander, Damaged value: 642",
        "Key":"comm"
        }
      ],
      "EloChange":-50.0,
      "IsInVictoryTeam":false,
      "IsLevelUp":false,
      "IsRankup":false,
      "IsRankdown":false,
      "NewElo":1450.0,
      "NextRankElo":1500.0,
      "PrevRankElo":80.0,
      "NewRank":0,
      "LoseTime":405,
      "XpChange":25,
      "NewXp":3037,
      "NextLevelXp":3840,
      "PrevLevelXp":3300,
      "AccountID":348706},
    "bust":{
      "AllyNumber":0,
      "Awards":[
        {"Description":"Complete Annihilation, Damaged value: 1,451",
        "Key":"pwn"},
        {"Description":"Mineral Prospector, Mexes built: 16",
        "Key":"mex"
        }
      ],
      "EloChange":1.0,
      "IsInVictoryTeam":true,
      "IsLevelUp":false,
      "IsRankup":false,
      "IsRankdown":false,
      "NewElo":1501.0,
      "NextRankElo":1584.0,
      "PrevRankElo":1416.0,
      "NewRank":1,
      "LoseTime":-1,
      "XpChange":50,
      "NewXp":100,
      "NextLevelXp":100,
      "PrevLevelXp":0,
      "AccountID":394956
    }
  },
  "ChatChannel":"debriefing_711371",
  "ServerBattleID":711371,
  "Url":"http://test.zero-k.info/Battles/Detail/711371",
  "RatingCategory":"MatchMaking"
}
sprunk commented 5 years ago
"DeinSchlumpf":{
      "NextRankElo":1500.0,
      "PrevRankElo":80.0,

"bust":{
      "NextRankElo":1584.0,
      "PrevRankElo":1416.0,

The 80 is confusing, is it an actual rating value (as in ultra-lobster), not a diff? If yes, is this because this account is gray? If yes, maybe gray should have some sort of "RankStillCalibrating" : 1?

DeinFreund commented 5 years ago

The exact numbers are wrong, because the test server's database got trashed. PrevRankElo is the elo at which one will lose the current rank, NextRankElo is the elo at which one will gain the next rank. For the highest (7, purple) and lowest (0, grey) rank these values might not make too much sense though.

There's no more calibrating now, just fake elo that behaves as if it is always perfect.

GoogleFrog commented 3 years ago

Sorry, my comment from a few days ago failed to post.

I don't see how this feature helps:

DeinFreund commented 3 years ago

It doesn't have to be a pop-up, it can also be integrated into the debriefing screen somewhere. I just want players to know that games affect their Level and Rank and by how much. If they don't see their rank change, then WHR might as well be hidden for all but the top handful who manually check ladders after each game.

Licho1 commented 3 years ago

Battle debriefing was meant to show you your awards, link to stats on site, level growth etc. It was also made to popup for "debriefing chat". Back when we werent sure we are going for classic rooms.

DeinFreund commented 3 years ago

Actually I think I'd be fine with a close automatism. I want new players to see it and players who are interested in their rating, the others can ignore it as they wish. The rating changes have been changed to the 50/50 elo average now.

GoogleFrog commented 3 years ago

I'm unconvinced that boosting the salience of the fact that you lose rating after half your games is a good thing to do. Why do people need help knowing that their rating and level is affected by games?

DeinFreund commented 3 years ago

Firstly the need to know some rating exists, then they need to know that it decides on their upranks and downranks. Otherwise those rank changes seem to have no direct connection to their performance. The same goes for xp and levelups.

If we don't want to display rating and its changes, then I might as well drop it and stick with raw WHR. It's more accurate and just as random as a rating that you don't see.

Licho1 commented 3 years ago

Yeah I think ranks should go up.. whats the problem with XP rank + awards + modified fake elo/whr ?

GoogleFrog commented 3 years ago

If we don't want to display rating and its changes, then I might as well drop it and stick with raw WHR.

I disagree. There is a lot of room between putting each rank change in the player's face whenever they win or lose a game, and making human-compatible rank completely invisible.

Licho1 commented 3 years ago

Atm people do know that there is a rank system for sure, thats why I was not pushing much for debriefing message. I wanted to push it when we have proper offline stats (wanted to collect full stats for balance reasons too, we had some old web that was doing it so I wanted to remake it and then link it together with the debriefing)

DeinFreund commented 3 years ago

Not even those active on the forums can know that their rating doesn't go down on a loss http://zero-k.info/Forum/Thread/32369 And they will not learn this without actually seeing their rating changes.

The only way to find out right now is to talk to a dev or manually check ladders after every game.

Licho1 commented 3 years ago

Is it important for them to know how it works? Perhaps they only need to know how they stand compared to others.

I don't know how ratings mathematically work in any other game I play, sometimes people say it's "elo" but I have doubts.

DeinFreund commented 3 years ago

If they don't need to know how their rating moves between games, we don't need to put so much effort into making the rating move in a user friendly way.

DeinFreund commented 3 years ago

@GoogleFrog Right now the human rating is completely invisible to the average user (from a lobby view). What is the partial visibility you're proposing?

Licho1 commented 3 years ago

Its supposed to be tied to color of icon. Icon is not supposed to "degrade" for new players.

GoogleFrog commented 3 years ago

What is the partial visibility you're proposing?

Finding rating on the website.