This week I focussed on my killbot again.
Here’s the good stuff that happened:
Added stat tracking, now pumps out its initialized data and win state. This is the first step to setting up an AI that will set its own stats and behaviours based on the conditions it is playing in. I want to set up an AI that will find out the bot it is playing against and set itself up to best fight against that. I used this to find out what the best stats for my bot were when fighting itself.
As shown above, the best stats were a high bullet damage and medium to low health and speed. In this case, the bot had much higher bullet speed and damage. Its prediction was decent enough so that it could take out its opponent before being dealt fatal damage.
While against another bot the results for wins were similar but less pronounced.
Here’s the bad stuff that happened:
I got hit with a bad case of the heat exhaustions this week, which is a first for me. knocked me flat on my ass for a couple of days too, I couldn’t eat, stay awake and I could barely think straight, it was awful. Here’s my advice; don’t get Heat exhaustion, it really sucks.
So I began building up this thing without actually laying out a plan for it, which meant everything went right into the update. I pulled all of that out into their own functions with little issue, except that I could not find a way to get lines to draw if their code was outside of the update function. Now I could easily finish up the behaviours, and call on different functions whenever they were needed! Here is a list of what I attempted and what happened:
tried to improve upon the ded reckoning through an increase in accuracy (failed)
tried to create simple curve prediction by mirroring its path into the future (failed)
tried to incorporate bullet dodging by changing path when spotting a bullet (failed)
tried to create a function that allowed me to use debug lines anywhere (failed)
These were all made fairly impossible because of my ordering and spaghetti code. The prediction on the weapon is being overridden somewhere and a cannot figure out where so I cannot tell if anything I’m doing is more or less accurate.
The path mirroring into the future mirrors left to right as well as up to down, I need it to only mirror left to right. This is also only useful if the enemy is only moving in a circle that never changes in radius (or is pulling large curves very often).
Dodging is another issue where the function was being overwritten later in the code, which should be reasonably easy to fix, but this problem has only recently occurred to me and prevented my progress on the matter.
I don’t even know with the debug lines, I’m assuming I’m overwriting something somewhere, but I have no way to debug the tool I’m using to debug stuff. All I know is it works in the update function and nowhere else.
So I am pretty sure I will be able to get these issues fixed up in the next couple of days after a little more rest. I’ll clean up my code, attempt to get rid of all the parts overriding the smarter parts, and push in better prediction and bullet dodging. These should be the two behaviours required to beat the other bots.
Wish me luck!