JSJitsu / hero-starter

Hero code needed to play the game.
https://jsfight.club
39 stars 128 forks source link

Balancing issue #29

Open zladuric opened 7 years ago

zladuric commented 7 years ago

Hello, I've noticed that the first player wins in majority of the cases, all other things being equal. I've downloaded the script and tried to run a few test battles with various settings, adding mines to random places etc, adding more heroes and similar. As long as we're down to the same hero types, the first team on the move wins out majority of the cases. If I randomize the mines and wells but still use the equal heroes, we get consistent result (you either win them all or lose them all.

That sounds like an unfair advantage to the team who moves first. Is there something else I'm missing here? How is the first move decided in "real" battles? What else can we do regarding this?

Asuza commented 7 years ago

After reviewing the code that plans games, it looks like the first person to get pulled from the database would be the first to go. Games are maxed at 24 players, so the 25th person would be first in the next game, and so on. You can review the specifics in the ai-battle-engine repo if you'd like.

@natedsaint and I both want the game to be as balanced and fair as possible, and while I don't have an immediate solution, I'm hopeful we can figure something out. If you have any ideas on it, please feel free to suggest them.

zladuric commented 7 years ago

Well the simplest thing would be to just randomize the teams before each game? Not that it would fix the same-conditions-first-player-wins problem, but it'd solve it for repeating the same stuff day after day, right? If I get to spend some time on this, I might look into creating a PR for that. Thanks in any case.

natedsaint commented 7 years ago

Let's keep this open and discuss it here, close this if the PR gets through. I think you're right, there's a decided advantage here, but I think we might be able to make things more fair.

We could potentially randomize not only the team who starts first but also give the team who goes second an advantage, maybe giving them two team turns right after the first turn? But that might not make things equal, we'd have to do some rapid local tests and look at the numbers. I'm down with trying some stuff!