Jump to content

mapkoc

Community Members
  • Posts

    115
  • Joined

  • Last visited

Posts posted by mapkoc

  1. Sorry for hijacking your thread.
    I've always been interested in how were lobby ratings implemented and from your discussion I finally found how.
    I tested both functions and mine definitely is wrong, ratings jump too much with each result.

    scythe's                                                                                   mine

    glicko.png.5eb18b0ca6460000dddfd6e9c8eac53f.pngelo.png.5bf66a26fa6e3b36e9e9e337317fa8e7.png

    Either I made a mistake or RD is really important.
    Test code:

    from random import choice, seed
    r1start = 2101
    r2start = 1200
    r1 = r1start
    r2 = r2start
    seed()
    for x in range(100):
      res = choice([-1, 1])
      r1gain = get_rating_adjustment(r1, r2, 200+x, 20+x, res)
      r2gain = get_rating_adjustment(r2, r1, 20+x, 200+x, -res)
      r1 += r1gain
      r2 += r2gain
      print(str(r1) + " " + str(r2))

     

    • Like 1
  2. Hola,

    here's a function to update ratings based on the Glicko system and using scythe's same signature.

    Since inactive time and rating deviation are not stored, I used the games played to compute the deviation.

    http://www.glicko.net/glicko/glicko.pdf

    http://www.glicko.net/glicko/glicko2.pdf

    import math

    # Rating deviation extrema
    RDmax = 350        
    RDmin = 30

    # Linear mapping
    GPthr = 160.0    # games played threshold
    m = GPthr / (RDmin - RDmax)        # slope

    # Simple Glicko without rating deviation aging
    def get_rating_adjustment(rating, opponent_rating, games_played, opponent_games_played, result):
        r = rating
        rj = opponent_rating
        sj = (result + 1) / 2    # outcome
        

        # Linear mapping of games played to rating deviation
        # instead of RD = min(math.sqrt(RD_{old}^2 + c^2), 350)
        RD = RDmin if games_played > GPthr else m * games_played + RDmax
        RDj = RDmin if opponent_games_played > GPthr else m * opponent_games_played + RDmax
        
        # Rating delta
        q = math.log(10) / 400
        gj = 1 / math.sqrt(1 + 3 * math.pow(q * RDj / math.pi, 2))
        Ej = 1 / (1 + math.pow(10, gj * (rj - r) / 400))
        d2 = 1 / (math.pow(q * gj, 2) * Ej * (1 - Ej))
        value = 1 / RD / RD + 1 / d2
        # RDnew = math.sqrt(1 / value)    # not used for now
        return round(q * gj * (sj - Ej) / value)

  3. Title inspired by rule 7 of terms of use:

    7. Not attempt to artificially adjust any user of the service's rating or any of the statistics which impact it. (Examples of this are, but are not limited to: cheating in ranked games, reverse engineering the service, and taking advantage of other users of the service.)
    8. Allow yourself to be removed from the service if at any time a moderator determines your behavior is not consistent with these rules.

    Some top players (camelius, Phyzic, Boudica, chrstgtr and MorTak that I know of) started resigning immediately rated 1v1s amongst themselves, gaining and losing more than 100 points.

    How does the community feel about this?

     

    • Like 1
  4. Elexis asked me for replays of Danubius, Extinct volcano and Survival of the fittest.

    Danubius: mapkoc vs cenghizkhan (unrated)

    The small map is uncomfortable because the gaia cc is very close. I was trying to block the cc with houses to defend from rams. I think it should be played with low pop to make it harder, 150 was too much. Civs with swordmen have an advantage to kill rams, else go to p2 fast. Covering the whole shore with docks might stop gaia from unloading.

    danub.zip

     

    Extinct volcano: bbleft, soyunmatao, phoenixdesk, temple, Barxten (ffa)

    At minute 20 something water level rises, the biggest armada will win (garrisoned with 10 soldiers).

    volc.zip

     

    Survival of the fittest: bbleft, mapkoc, DsharkS4

    The dynamic changed from a21. Having skirms is important to kill eles but you need fewer. Skirm cav prefered. Having swords (or eles) to kill rams became way more important. Hero can't garrison temple, make priest(s). Capturing bolts good, catas meh.

    This map should be played in 2x, show clock F12, >= large map for more treasures, revealed map optional, low pop not so important now, regicide optional. The first waves are WAY too easy, which is not so good.

    surv.zip

     

    • Like 1
  5. Last few days there has been a proliferation of smurf accounts by some unknown good player(s). Its just anoying when they break team balance.

    Going back to the topic, I caught someone (I guess the same guy) using my name (joined by IP)

    000.thumb.png.b8b849851c944d7360711631489e4d61.png001.thumb.png.527d1e7e4397c998045861132454fff1.png

    Franksy also told me he played 1v1 with someone claiming to be me.

    Also, I think someone faked elexis3 account with rating in a maxtihost (but I can't prove that).

    I think the worst problem with this behaviour is that these idiots are making the victim look bad.

     

    • Like 1
×
×
  • Create New...