Hey everyone. TLDR: With the Python Starter Bot, “SendPlayerAction” messages are being ignored (it’s sparse, but annoying).
I have smashed my head at this for the past two days and have just come up with no solution:
I’ve only tested the python bot, but even with release 1.3 I’m still running into this issue and it’s making predictability a pain.
I’ve recently resorted to starting from scratch with the python bot and adding as little code as possible to reproduce the problem.
I decided to create the thread to see if anyone else has encountered these issues or if perhaps I’m just missing something.
Hi @Sekramo13, thank you for the post and welcome to the Entelect Challenge.
At what frequency does your bot send actions to the runner and could you please provide an example action which is being sent? Please also note that only the first action per tick (Between game state publishes) will be accepted and the rest will be ignored.
So I’ve changed the “busy loop” of the python bot to only send an action if the gamestate[0][“world”][“currentTick”] is larger than the last one received i.e. After receiving a new gamestate message, in the while loop I’ll pickup that the new gamestate doesn’t match the old one, do a quick prediction (it takes less than 10ms right now, so I don’t think it’s a timing issue), then send the playAction.
As I mentioned the message being ignored is really sparse. Like only 1 or 2 messages are ignored the entire game.
I can post my “logs” here (I print out my predictions for the next player object and what it actually was), it’s where I first saw that it was using my previous playerAction (specifically the heading) and not the latest one.
… but I don’t know if that actually proves anything
My only other thought: I assumed the a received message acts the same as a interrupt, so I don’t have to worry about what the effects of reading the gamestate in the busy loop while the “ReceiveGameState” message updates the same gamestate. At worst this should mean that I just have to wait for the next iteration of the loop to find the difference.
I would suggest adding a log to console just after receiving the game state and also after sending an action, if you see more than one action passed through between game states, only the first will be used and the rest will be ignored.
If this is still an issue please send the logs via email to challenge@entelect.co.za for further investigation.