OR  Zero-K Name:    Password:   

Handicap mechanism

6 posts, 366 views
Post comment
Filter:    Player:  

9 months ago
An opinion poll - is handicap in matchmaking too strong?

To be clear, while I do enjoy playing handicapped games in either direction, I generally feel super dead vs lower ELO players (especially when they get >15% handicap bonus), while being able to reliably defeat players I have no business fighting against (unless they do some sort of super silly cheese like mace rush where eco does not matter). Neither of these cases are entirely enjoyable.

I feel that the better player when facing someone with 20-25% metal bonus has nearly very little chance of actually winning a straight up game. Due to exponential nature of ZK economy, the 20% early game bonus translates into a massive advantage very quickly, and gives the newbie opponent way too much opportunity to just solve any tactical problem with more units. Even holding >70% of the map does not help the higher ELO player, since overdrive combines with metal boost, which results in absolutely broken mid/late game dynamics, where if the handicapped player can get OD going it is essentially a win button. Naturally, cheese and well-timed fac switches can still work, but that only works up to a certain rank.

I would suggest that the better way to handle handicap would be as a fixed income of 5-15 m/s (depending on skill gap), that just magically gets deposited to the player's account. This way there is a boost for the lower skilled player to survive the early game, but this boost does not translate into being able to just throw units at the problems on the map in the midgame.

Another option may be to just tone down the handicap curve, though I am not sure that would ever address the fundamental problem. Possibly, not applying handicap boost to overdrive might do the trick as well.

Suggestions welcome.
+1 / -0

9 months ago
The numbers at least need tweaking. The function that determines handicap can be found here: https://github.com/ZeroK-RTS/Zero-K/blob/master/LuaRules/Gadgets/unit_econ_mult.lua#L51

It should probably vary based on average elo, as I expect the same handicap to have a greater effect at games with higher skill. Newer players probably won't know how to exploit the economic edge as effectively.

I would like to stick with a multiplier for the moment. Firstly, the code is already written, but secondly, a full multiplier is neat and deals with a lot of edge cases. Handicap keeps build ratios even by multiplies metal, energy and BP. For example, a factory will always consume 10-spot-worth of base metal extraction and 5 Solars. The goal here was for handicap to have a minimal impact on openings and early game economy balance (walk time still a factor though).

I am also not sure whether the advantage growing for the unfavoured player is a bug or a feature. The mid-late game is more complicated so perhaps it makes sense to widen the advantage. And encouraging the favoured to stall the game out to the mid game (where handicap has less impact) seems like it could lead to a stagnant game. The lategame advantage could certainly be too large, but I would like to try simply tweaking the multipliers first.
+0 / -0

9 months ago
I've just played a game vs AUrankmankarse and I think it felt about right. He made mistakes and I could barely win in the end, but it was pretty close anyway. http://zero-k.info/Battles/Detail/1731170. His handicap value was 1.1, and it felt quite ok. If he'd get 1.15 I am pretty sure it would have been impossible to win. His ELO at the moment was 1894 and mine at 2308. So, for lower ELO of 1800 current multipliers seem ok. I feel that the main problem is in this function: https://github.com/ZeroK-RTS/Zero-K/blob/27ccf4f91e68c4591a469b6e4924f0c6fc54c53c/LuaRules/Gadgets/unit_econ_mult.lua#L36 as it has some fairly arbitrary numbers in it. Specifically, it starts applying a very different curve after 2000 ELO which may be the root cause of the bonus income problem. Just making all these functions into one smooth curve would fix a lot of the issues.
+0 / -0

9 months ago
The curve is smooth. I had ChatGPT turn it into a plot:

The axes are the elo of the players. The heat is the handicap.

GetWinChanceThresholdMod smoothly increases the gap required to go up handicap thresholds based on the rating of the lower rated player. Perhaps it just doesn't do it fast enough? Here is what a tweak looks like (in Python since that is what ChatGPT used for plotting).

def GetWinChanceThresholdMod(first, second):
    lowerElo = min(first, second)
    if lowerElo < 1500:
        return 1, 0
    elif lowerElo < 2000:
        prog = (lowerElo - 1500) / 500
        return 0.6 + 0.4 * (1 - prog), -0.02 * prog
    if lowerElo < 2500:
        prog = (lowerElo - 2000) / 500
        return 0.6, -0.02 - 0.05 * prog
    return 0.6, -0.07
+0 / -0

8 months ago

Rating gap required to get each handicap. Handicaps are applied when rating gap exceeds a line. A rating gap below all the lines (which is generated as a handicap game by the MM) has a handicap of 1.1.
+0 / -0
8 months ago
It's kinda fun to introduce people to matched play by giving them an edge against stronger players, but at the same time it is teaching them bad habits. Almost every game I play against a handicap player they start by spamming riots which is not a early game strategy that gets you anywhere in normal play.
+1 / -0