The past couple of weeks I have been working on the A.I. for our upcoming drone racing game. There are currently two types of drones implemented in the game, and both their movement behaviours are practically complete.
I started off by programming the "Heli drone" behaviour, as that was also the drone I wrote the controls for. The first step was to make the drone move towards a single point, which included moving up when it was above the drone, forward when it was in front, and turn if the point was to the left or right of the drone. When I was satisfied with the accuracy of the drone flying to a preset position, I created a waypoint-system where the drone would fly from one point to the next, and then switching to a new target point upon reaching its destination. This means that the drone can technically fly in an infinite circle, so all that was left to do was make it try to dodge obstacles in its path. It does this by checking both if it is headed towards something, or if there is something blocking the direct path between it and its target.
Afterwards, I had to create the "Jet drone" A.I.. This did not take as much time as the "Heli drone", even though I didn't actually make the controls for it. I ended up not even having to cheat, meaning that the "Jet drone" flies only using simulated user input. It doesn't even need code to dodge obstacles like the other drone, it just needs to reset if stuck.
My first task going forward in this project will be to make the A.I. actually make use of all the power-ups present in the game, providing an actual challenge to the player(s).