Tron Battle (aka Line Racing) multiplayer challenge discussion

We’re currently looking into it.
I’ll update this thread when solved: https://www.codingame.com/forum/t/java-random-error-occurred-during-initialization-of-vm/120354/5

1 Like

Follow-up in 2020: I scrapped the playouts in favor of a Voronoi-based heuristic, along with a few move sampling biases. Still no graph abstractions. After finally correcting a timing bug, my bot is in top 50, and I hope it will stay there. I believe a few more tricks will be needed to compete for top 10, though. Note that there is still one Python player above me on the ranking, who probably knows some tricks.

Everyone talks about Minmax, and I understand what Minmax is, but I have zero idea how to apply it to this problem…

1 Like

pls, what is logic in the “Tron Top 5%” ? i don’t find this ^^

It was a long time ago, but I think it was this link:
https://vks.ai/2016-09-07-ai-challenge-in-78-lines

Hoooo <3 ty :wink:

Try to win this configuration as orange :smiley:

2 Likes

On Tron all games are mirrored so the goal is to not lose this kind of match up when you are red :stuck_out_tongue:
But it’s true that this might affect the true skill ranking -> if an ok bot is matched with a top bot on this setup, it’s likely that it will be 1 win and 1 loss for each…

Somewhere in the top 20 area, we have a bot, which is participating in games, but the owner it not visible in the Leaderboard. It belongs to an account, which was deleted quite a long time ago. Here is an example replay with the bot playing as red: https://www.codingame.com/replay/520462991. And this is his profile: https://www.codingame.com/profile/24c31f572d8ebfe0837f54535e51d9837432451.

I think it is a bit confusing to have a player in games, who does not participate in the (visible) Leaderboard. Is this intentional or should the bot be removed from CG or should the Leaderboard also display the deleted user?

1 Like

We recently removed from the leaderboard deleted accounts but it looks like we forgot to change the code that picks the players for the new battles. It’s a bug.

2 Likes

@TwoSteps or someone from CG! “Tron Top 5%” link on the game page contains the full copy-pastable solution, which can reach gold at least :frowning:
Is it intentional? I believe it would be better to remove either source code from write-up, or link to this write-up from the game page.

you’re right, I’ve removed the link

1 Like

The Perfect Game
(could have been)

1 Like

Hello there! Despite winning against the boss (multiple times), I am stuck in the first place of the same league (Ligue Bois 1 in french, I guess it is named Wood League in english). Any idea why I’m not promoted?

Thanks for your help!

This might be relevant to your issue:

I has been solved! Thanks for your help and the link. However I do not know why it worked, I didn’t start any other game or anything. ¯_(ツ)_/¯

My bot reached rank 8 after a few improvements, but when I improved the handling of forced lines, it began acting nihilistically and often kills itself soon after realizing that another player has a forced win, sometimes even sacrificing a second (and third!) place in the act.

I am planning to implement evaluation based on expected rank in the game, but it makes true sense only if other ranks than the first place give score. I am trying to find information about the scoring rules, but it is not easy. The rules only mention the winning condition of surviving all other players, but I do not trust this to be the whole truth. (After all, the rules also fail to mention that the first turn is 1000 ms instead of 100 ms.)

I would appreciate if someone could enlighten me. If I find the answer(s) somewhere else, I will make sure to share here.

PS: I have skimmed through several community “referees” without getting any wiser. @eulerscheZahl linked to a repository with “leaked”(?) referees from CG, but Tron was not included there. The Hypersonic referee gives a ridiculous amount of points to the last survivor, smaller ridiculous amounts of points for longevity and peanuts for destroying boxes. The purpose is to generate a valid ranking of the players. I doubt the scores given within the game are used for scoring outside the game, but I still suspect that the ranks are used in the TrueSkill calculation that eventually determines ranks in the leagues. I will read up on TrueSkill calculation (especially on CG).

It’s definitely beneficial from a ranking point of view to place as highly as possible even if you don’t win. Final placement is the only thing that matters, the ingame scores are meaningless (other than for ordering).

As I understand it the way rankings are calculated for games with more than 2 players is actually as a series of scaled 1v1 updates. This means after a 4 player game each player gets 3 separate smaller Trueskill updates - winning a 4 player game and winning a 2 player game will give roughly the same overall change (assuming the difference between you and the average opponent levels are the same).

That’s a bit fishy, since the performances are not statistically independent. What is your source for this?

That is also a bit strange, since beating 3 players is more impressive a priori than beating one. However, chance also plays a larger role in games with more than two players, so maybe the skill ratings should not be updated as much in those cases.

Since the ratings of players are unknown in-game, the best evaluation function possible would have to model their prior distributions, the per-state distribution over possible game outcomes and the resulting TrueSkill updates of each result, and calculate at least the expected TrueSkill update of the player whose move it is, ideally also maintaining confidence bounds to guide further tree search… :sweat_smile:

Then again, hardcoding an approximate rating for your own bot could actually tighten the distributions quite a lot. I feel that this train of thought is about to run off a cliff now. It kind of violates the spirit of the game. But if the matchmaking system ensures that most matches are against players of similar ratings, the problem of modeling prior rating distributions can be simplified, and hardcoding the correct fixed point of final rating should no longer pay off as much. On the other hand, the relative in-game performance of players also gives hints about their out-of-game ratings. Hmmm… :nerd_face:

What if each league were much smaller and all players in the league were pitted against each other, paying off the same number of points for each rank among each number of players in every game? Then the ratings/scores would carry meaning only within each league, but the leagues would still serve as a coarse ranking. Of course, it would have to be possible to be displaced to lower leagues by aspiring players (bots).

I am in silver , all change , I didn’t happened to win. What is the best heuristics for this league ?