Here's how it works: a player who hasn't played any games yet has an initial rating. For example, 1000 (in Age of Empires, it's 1600). Depending on the results of their games, their rating can either increase or decrease. I don't know the exact formulas for calculating this rating, so I'll just give an example to illustrate the pattern of point distribution.
Situation: StickyFingaz has a rating of 896, and Dubrovin Pavel has a rating of 1112. I enter these numbers into the rating calculation formula, and I get that if I win, my rating will be 921, and Pavel's will be 1087. If Pavel wins, Sticky's rating will be 887, and Pavel's will be 1119. So, if a strong player (Pavel) defeats a weak player (me), his rating won't increase much (by 7 points). But if I somehow manage to defeat Pavel, my rating will increase significantly (by 24).
After the game, both players' ratings change by the same number of points. The maximum number of points that can be lost in a loss is 32, and the minimum number of points gained after a win is 1.
And here's my opinion about the rating system as applied to Heroesworld. Winning against a strong player gives more points than winning against a weak player. So, if you only win against weak players, your rating will increase slowly. In this rating system, there are no bonuses for the number of games played. If Uran or Dudj play few games, it won't affect their rating. A player's rating is not reset seasonally. The season winner can be determined by the largest point increase during the season. It would be better if this rating were calculated as quickly as possible after the games are played.
The formulas for calculating the rating can probably be found by viewing the page in the app using PHP. Also, for those who like to play in teams, a rating can be calculated for team play as well.