Thread history

Fragment of a discussion from User talk:Tmservo
Viewing a history listing
Jump to navigation Jump to search
Time User Activity Comment
No results

First thanks to all for the praise I've recieved on the thread =) I don't think I'm superhuman, but I know that I do approach problems from a different perspective than most people.

I don't think I've discussed much is about the process I go through when I make gains. These are typically from three things:

  1. Adding a new behaviour that has already been shown to improve performance, or creating a new behaviour that might improve performance and then testing it to death over lots of battles to see if it actually helped.
  2. Fixing bugs. Enough said.
  3. Speeding up code to make the skipped turn behaviour more predictable, and add spare CPU/memory capacity for future features

So absolutely, I agree with what JDev has said here: make it work, make it right, make it fast.

One other thing that I have to recommend is to not make ANY assumptions about enemy or bot behaviour. If you do make an assumption, do a bunch of tessts and check that the data supports your assumption. And once your feature is implemented, see if there is any way you can get rid of the assumption and thus take advantage of the cases where it isn't true.

Skilgannon (talk)15:35, 17 December 2013

About making assumptions of opponents, it can be done, but not in the way many people do it. That's where game theory kicks in.

The best assumption you can make is that opponents are also trying to outperform you. You are not the only one trying to climb the ranking. That said, any assumption you make might be used against you. The higher the ranking of a competitor, the stronger this statement becomes.

Most attempts at exploiting opponents weaknesses also open yourself to weaknesses. Skillgannon's approach of not making assumptions is all about not exposing yourself to weaknesses.

A good example is most bots trying to crush anyone behaving like SittingDuck. The best targeting against SittingDuck is Head-On Targeting. But Head-On Targeting is shamefully predictable. Many bots still do it. Look what happened when EnergyDome exploited that.

MN (talk)17:05, 18 December 2013

High ranking bots make all sorts of assumptions really. Guessfactors that are so commonly used as a way to predict the opponant's movement, contain some (loose) assumptions about how the opponant's movement at least vaguely related to where you fired from. Most targeting systems also make the assumption that the opponant acts symmetrically when going backwards versus forwards. Those two assumptions can be quite easily broken, but they're not easily exploitable because breaking them would not make you more unpredictable to those using the incorrect assumptions, it would merely make you more predictable to those who *don't* make the assumptions.

One just has to distinguish between assumptions which are sufficiently safe, and are not sufficiently safe.

Rednaxela (talk)19:13, 18 December 2013

I actually don't feel like GFs make any major assumptions besides clockwise vs counter-clockwise being treated the same. And it would take some actual effort to make that assumption false. The firing angle you use is relative to where you are firing from, regardless of how the enemy moves. And that's the output you need from a targeting algorithm, not the exact location of an enemy.

Voidious (talk)21:12, 18 December 2013

GF assumes symmetric movement, which is safe. Also assumes orbital movement, which is not as safe, but still hard to exploit.

GF combined with statistical targeting, also assumes non-adaptable movement, which is not safe at all. Exploited by all surfers.

MN (talk)21:31, 18 December 2013

How does it assume orbital movement? If you're not staying perpendicular to me, my GF gun is going to crush you even harder.

Voidious (talk)21:36, 18 December 2013