Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Beat my tank through strategy and programming (github.com/huangyz0918)
60 points by huangyz0918 on Oct 18, 2018 | hide | past | favorite | 20 comments

I get that the idea is to have an ever-improving champion, and I like the idea, but it's not going to work out that way in practice. The best way to defeat the current champion will be to exploit it in some way, which will usually lead to irregular, but very specific, behaviour of the challenger.

Then, when challenger becomes the champion it's behaviour will be useless and the next challenger will either beat it easily, or will do the same and the cycle will repeat.

To protect against this, the challenger should have to beat all previous champions, not just the current champion.

In order words, Bulbasaur > Squirtle > Charmander > Bulbasaur

In other words, Scissors > Paper > Rock > Scissors

I prefer my version :-)

I think you're probably right--but it's worth noting that it depends on the "space of tank behaviors". It's an open question whether there exists a tank that "strongly dominates" other tank strategies.

One way to deal with this could be to have a system similar to ELO in chess, so each tank gets a ranking. This is compromise between having to defeat "champion level tanks", and having to defeat champion level tanks more often than not!

I’ve never actually seen such a competition where all previous champions must be defeated. Sounds like a much more robust system- any examples of such?

Algorithm selection in computer science. Current champion in sorting seems to be Timsort[1].

[1] https://en.wikipedia.org/wiki/Timsort

There was a similar poker competition but it died out pretty quick: https://github.com/mdp/JsPoker

World records in sporting events work this way. Perhaps it is obvious, but I consider it similar. The one diffrenece is of course that they don't compete directly as in this case.

In my limited experience with other programming games, it is rare for one AI to defeat another AI 100% of the time. So for a submitter, the claim their own red tank is stronger than the blue tank should be qualified with a 3 out of 4 wins or similar criteria.

You could solve that problem pretty easily by requiring the next champion to have to have defeated each of the previous winners

As suggested in the post you replied to.

Implement the previous challengers as regression tests!

Brings back fond memories of Core War (https://en.m.wikipedia.org/wiki/Core_War).

This reminds me of AI Wars, which I fellow I knew 20 years ago used to play.


To name one more nostalgic programming game: RoboWar on the Mac (later ported):


Corewar is still the granddaddy of them all though, as has already been pointed out here.

At one time, there was a huge list of programming games posted on the 'net. This was a good idea and should be revived.

If you are viewing this on mobile you can go to the README.md file to see some text with pictures:


The game physics look very inspired by Robocode[1]. Great work! I wonder if months of work could yield similar results to what was seen there, with neural networks and dodging and prediction of enemies.

1. https://robocode.sf.net

I need to figure out how to turn this into an openAI gym so I can train my DQN on it. I just finished running the code from Deep Reinforcement Learning - Hands on for Pong, and it's pretty cool...

A strange game. The only winning move is not to play. How about a nice game of chess?

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact