It's been a while, and so I'll start with "I'VE TOTALLY BEEN DOING WORK I SWEAR!". But really, that's just the surface excuse, the truth is I can't find much to blog about. However, today I come to thee with a topic of discussion. My implementation of A* in the bot from my last blog post, Stray Cat. Well, Stray Cat's spiritual successor, Aerosmith, Aerosmith's repository can be found on my Github here.
Aerosmith's primary purpose is to pathfind using the A* algorithm (example above) to navigate around a closed off maze in order to find and destroy another AI with similar actions. Put simply, A* will attempt to find the shortest path from the starting node (blue squares) to the finishing node, avoiding walls (black squares) along the way. The way this is done is by searching through the adjacent nodes available to the bot, calculating which one is most suitable for the path, and then tells the bot which node is most suitable from the node the bot is standing on. The algorithm will do all off this in advance, and so the only thing that the bot needs to do is look at the most suitable node and travel to it. Boy when it's watered down like that it almost seems simple to implement.
To be honest I kind of underestimated this task, all of my classmates did, and that kind of sucks because we couldn't fight our bots because we didn't have proper logic implemented. But now that I have an idea of what it's like to implement basic pathfinding on a 2-dimensional plane I'm pretty excited to see what I might be able to do with it. For future projects it'll come in handy, no doubt. However, because I can only really complete small projects, it's best to hold off on trying to do it in a 3-dimensional grid for now.