Alpha - Suggestions, Active bugs, Notes

Hi Team, Contestants,

About this topic
I figured I would add a topic here where I leave some notes, track bugs, and maybe suggest some upgrades with my reasoning, Adding these thoughts early on so that we dont need to have to mess with ideas too late in the challenge.

Possible observed Bugs
Strange Queue Behavior
Some rounds (around three times per match randomly) some matches none at all, the engine skips a turn and queues extend

Possible Cause (Seems random): Tested zookeeper and sometimes he isnt even clsoe to animals
Current fix: Comparing actual move change to posted move, assuming the queue has spiraled, skipping a turn.
**Stabalizes my bot in a turn.

Suggestions (Balance and Features)
A) More Zookeepers (Maybe spawn more every 200 ticks, )
B) Powerup (Blockade) //Turns space you are on into a area that cant be passed (by zookeepers and/or other animals)
C) Trap (Stops a animal for a few 5 turns when passing through a space) (Could be dropped by zookeepers every 20 ticks) (Each Zookeeper would drop 50 traps in a match )

1 Like

Observation Tick Glitch:

I observed:
zooscape-engine | [19:05:24 INF] Game tick 477, Duration = 197 / 150, Duty Cycle = 1.3133333333333332
zooscape-engine | [19:05:24 DBG] Received hub invocation: InvocationMessage { InvocationId: “”, Target: “BotCommand”, Arguments: [ Zooscape.Domain.Models.BotCommand ], StreamIds: [ ] }.
zooscape-engine | [19:05:24 DBG] Received hub invocation: InvocationMessage { InvocationId: “”, Target: “BotCommand”, Arguments: [ Zooscape.Domain.Models.BotCommand ], StreamIds: [ ] }.
zooscape-engine | [19:05:24 INF] Command (Right) enqueued for bot (3b2e3130-1a6d-4902-ad5e-261c855bf8c5). Queue length: 1
zooscape-engine | [19:05:24 DBG] Received hub invocation: InvocationMessage { InvocationId: “476”, Target: “BotCommand”, Arguments: [ Zooscape.Domain.Models.BotCommand ], StreamIds: [ ] }.
zooscape-engine | [19:05:24 INF] Command (Up) enqueued for bot (23016710-31c5-4d97-893c-24750e7ce85c). Queue length: 1
zooscape-engine | [19:05:24 INF] Command (Up) enqueued for bot (6316750f-1633-4f97-856a-a1f9fd5a35de). Queue length: 1
zooscape-engine | [19:05:24 DBG] Received hub invocation: InvocationMessage { InvocationId: “”, Target: “BotCommand”, Arguments: [ Zooscape.Domain.Models.BotCommand ], StreamIds: [ ] }.
zooscape-engine | [19:05:24 INF] Command (Left) enqueued for bot (112a0cbe-03c9-4431-9cef-4cd31bc4e56e). Queue length: 1
zooscape-engine | [19:05:24 INF] Game tick 478, Duration = 8 / 150, Duty Cycle = 0.05333333333333334
zooscape-engine | [19:05:24 DBG] Received hub invocation: InvocationMessage { InvocationId: “”, Target: “BotCommand”, Arguments: [ Zooscape.Domain.Models.BotCommand ], StreamIds: [ ] }.
zooscape-engine | [19:05:24 INF] Command (Down) enqueued for bot (6316750f-1633-4f97-856a-a1f9fd5a35de). Queue length: 2
zooscape-engine | [19:05:24 DBG] Received hub invocation: InvocationMessage { InvocationId: “”, Target: “BotCommand”, Arguments: [ Zooscape.Domain.Models.BotCommand ], StreamIds: [ ] }.
zooscape-engine | [19:05:24 INF] Command (Down) enqueued for bot (112a0cbe-03c9-4431-9cef-4cd31bc4e56e). Queue length: 2
zooscape-engine | [19:05:24 DBG] Received hub invocation: InvocationMessage { InvocationId: “”, Target: “BotCommand”, Arguments: [ Zooscape.Domain.Models.BotCommand ], StreamIds: [ ] }.
zooscape-engine | [19:05:24 INF] Command (Up) enqueued for bot (3b2e3130-1a6d-4902-ad5e-261c855bf8c5). Queue length: 2

So tick 477 seems to skip processing moves for a turn
And suddenly immediately after all bots have a queue of 2,

I do not have more information on this yet, I trimmed my output to only focus on where I have irregularities,

My own output:
Alpha has Awakened 475
Best Move:4
Alpha has Awakened 476
Best Move:4
Alpha has Awakened 477
Best Move:1
Alpha has Awakened 478
CORRECTION SET ON TICK478
PM 1 MX 31 MY 41
TM 4 TX 30 TY 41
Best Move:3
PM ASSUMED UNCHANGED FOR NEXT TURN
Alpha has Awakened 479
Best Move:4
Alpha has Awakened 480
Best Move:4
Alpha has Awakened 481

As mentioned, my temporary solution was to just correct my AI, skip my turn when the engine does.
I see it happening 2 or 3 times per game,

Map behaviour seems normal, My average tickrate on this is 7 ms or so, so nothing that can force a timeout, it also appears to affect all bots on the same tick

Thanks Willie, those are some awesome suggestions for powerups. We have some ideas for powerups in mind already and will certainly add these to our pool. Also, we have specifically designed the game engine in a way that will enable adding more zookeepers so that is also on our radar.

I’ll see if I can make sense of this strange queue behaviour you’re mentioning although nothing pops to mind based on your description here. Do let us know if you are able to narrow it down or find a way to reproduce the problem.

OK, so here we can already see something problematic. The duty cycle is greater than 1 for this game tick, which means it took longer to process than the duration of the clock tick. So yeah, I haven’t investigated why/how exactly that translates to skipped processing of moves but it makes sense that hiccups will be encountered if the duty cycle exceeds 10%.

This is definitely something we should investigate and fix, either by making the processing more efficient or by extending the clock timer. Thanks, for the scrutiny, I think this already points out an improvement we can make.

1 Like

I’ve noticed some weird behavior, cannot confirm yet as I also disabled game engine logs, but if 2 players stand on top of each other and make moves at the same time to the same tile, they both get the pellet score, but plus side it confuses the crap out of the zookeeper… imagine a monkey riding on the zebra playing racing stripes

3 Likes

ezgif-44943561c9d72d
Weird behaviour here as well. Like the zookeeper can eat the player. Seems to only happen when player and zookeeper is at that spot (zookeeper spawn)

Any update on the “engine lagging” issue? Also done a similar approach to Willie to skip the turn to avoid building up a queue. But the Zookeeper still moves which leads to a capture every now & then

This is for running locally (not sure if that might affect anything)