Game runner error?

Hey guys.

I downloaded the new game runner (1.1.3) and it is working fine. But when I did some calibration I found this error. It seems like the furthest missile hits the first attack unit first and the closes missile hits the furthest attack unit of those highlighted. I am guessing this is a mistake?

2 Likes

This is normal behavior. The game-engine will run through the list of missiles, and one at a time it will move them through all their position changes which might hit buildings and remove the missile.

Since the farthest missile will move 2 cells, it will hit the right A building (if that missile was first in the list), before processing the other missile. Because each missile’s closest target is dependent on any destructions caused by other missiles, there are a lot of permutations for this to occur in.

I think this is a problem too. I can see how the current way the game engine moves the missiles makes it this way, but it means that bots can’t predict what missiles are going to do without keeping track of extra information - in this case I think the order that the missiles were created.

Wouldn’t it be much more intuitive if the missiles all be moved one step (in whatever order), then moved their second step? Otherwise you get situations like this where missiles seem like they’re speeding up and slowing down.

In other words, if at the moment it’s doing something like:

for each missile in missile_list:
    for each step in max_steps:
        move missile one step

But would work better as:

for each step in max_steps:
    for each missile in missile_list:
        move missile one step
2 Likes

I also looked at the game runner and understand how it works. But I agree with @Malman. It seems counterintuitive that the one missile overtakes the other missile as it travels, when they both have the same speed. Until the game changes and the missiles move at different speeds, the second option @Malman presented seems more logical.

I also agree with @Malman - having the rules depend on the order of the missiles instead of position is counter-intuitive. Another alternative is to always move the closest missile first, which should give the same results as moving them one step at a time.

I believe I’ve found another bug with the missile rules - see these two rounds:

Player A Health=80, Energy=177, Score=1886
Player B Health=75, Energy=30, Score=1506
[0E0][1A0][2A0][3 0][4 >][5 >][6 0][7 0][7D0][6 0][5 0][4 0][3 >][2 >][1 0][0E0]
[0E1][1A1][2A1][3 1][4 1][5 1][6 1][7 1][7d1][6 >][5 >][4 1][3 1][2 1][1 1][0 1]
[0E2][1A2][2A2][3 2][4 2][5 2][6 2][7 >][7 >][6 2][5 2][4 2][3 2][2 2][1 2][0 >]
[0E3][1A3][2A3][3 3][4 3][5 >][6 3][7 3][7 3][6 3][5 >][4 3][3 3][2 3][1 3][0 3]
[0E4][1A4][2A4][3 >][4 >][5 4][6 4][7 4][7 4][6 4][5 4][4 4][3 4][2 4][1 4][0 4]
[0E5][1A5][2A5][3 5][4 5][5 5][6 5][7 5][7 5][6 5][5 5][4 5][3 5][2 5][1 5][0 5]
[0E6][1A6][2A6][3 6][4 6][5 6][6 >][7 >][7D6][6 6][5 6][4 6][3 6][2 6][1 6][0 6]
[< 7][< 7][2 7][3 7][4 7][5 >][6 7][< 7][< >][6 7][5 7][4 7][3 7][2 7][1 7][0E7]

Player A Health=65, Energy=203, Score=2079
Player B Health=65, Energy=8, Score=1749
[0E0][1A0][2A0][3 0][4 0][5 0][6 >][7 >][7D0][6 0][5 0][4 0][3 0][2 0][1 >][0 0]
[0E1][1A1][2A1][3 >][4 >][5 1][6 1][7 1][7d1][6 1][5 1][4 >][3 >][2 1][1 1][0 1]
[0E2][1A2][2A2][3 2][4 2][5 2][6 2][7 2][7d2][6 >][5 >][4 2][3 2][2 2][1 2][0 2]
[0E3][1A3][2A3][3 3][4 >][5 3][6 3][7 >][7 3][6 3][5 3][4 3][3 >][2 3][1 3][0 3]
[0E4][1A4][2A4][3 4][4 4][5 >][6 >][7 4][7 4][6 4][5 4][4 4][3 4][2 4][1 4][0 4]
[0E5][1A5][2A5][3 >][4 >][5 5][6 5][7 5][7 5][6 5][5 5][4 5][3 5][2 5][1 5][0 5]
[0E6][1A6][2A6][3 6][4 6][5 6][6 6][7 6][7 6][6 6][5 6][4 6][3 6][2 6][1 6][0 6]
[0 7][1 7][2 7][3 7][4 7][< 7][< 7][7 >][7 7][6 7][5 >][4 7][3 7][2 7][1 7][0E7]

Player B has two missiles that hit A, but A took 15 damage. Similarly, A has one missile that hit B, but B took 10 damage.

It appears that if a missile was in the last column, it deals 10 damage instead of 5. If the missile was in the second-to-last column, it deals the correct 5 damage.

Good logic there, we will look into modifying the processing to follow a more consistent method.

@rkistner Good catch there, the missile probably moves 2 cells into the “home base”

You can follow progress here:

@pierre.roux Sorry, I was wrong on the “double damage” issue - I think I was running against version 1.1.2 of the engine without realising.

1 Like

No worries :smile: I ran some setups with missiles pre-placed on the game-engine project, and couldn’t get the same results as your print-outs.

It does make sense that 1.1.2 did that after increasing the missile speed…not all edge cases were accounted for :blush:

Thanks for looking into it, @pierre.roux - will make a lot more sense this way. Do you know if it will be fixed for Round 1?

Also (and I ask this carefully, because I do want the fix to be in Round 1), considering all the last minute changes and bug fixes (as well as all the problems people are having uploading and running bots), has anyone on the dev team given any thought to postponing Round 1, maybe until next Sunday, to give people some time to test their bots on the fixed game engine, as well as to iron out the bugs in the upload/running process?

We won’t be delaying the first tournament due to this, as that will delay a lot of plans following this tournament. Remember that this isn’t the deadline, this is merely a warm-up for the main tournament in September :wink:

Fair enough, thanks again for the info.

Will this missile fix make it into this weekend’s tournament, though?

Sadly not, this fix hasn’t gone through as much testing as 1.1.3

The plan is to run the tournament on the 1.1.3 version, since we know that it is stable (referring to hidden bugs like these). The missile-order fix will definitely be added to the next release