Good tutorials for those topics aren’t so easy to find. What links would a experienced programmer suggest I look into?
Check my youtube tutorials, link is on my signature. I will cover extensively all 3 elements on your topic.
However, you may want to be more specific when you talk about AI. AI is a very wide term that can drastically change from game to game. For instance, Chess AI is vastly different from FPS AI or RTS AI.
In my tutorial series I will cover turn-based RPG AI, which has almost nothing to do with movement around a scene, but everything to do with laying out basic combat strategies and updating those strategies according to what the player does (sort of a simplified minmax AI tree).
Depending on the type of game you’re going to make, my AI tutorials may be totally useless to you (since it won’t be providing lessons on path-finding, cover based shooting etc). Whether you take something useful out of it it’s up to you.
You tutorials are great thank you so much for this knowledge!
Honestly, AI is a huge area. You can’t fully know AI, you can start with Path-finding, and work from there. AI is pretty much logic for gameplay objects to make them appear as if they are doing things autonomously. Even in pathfinding, there’s a lot to learn, people just think A* is pathfinding, which is totally incorrect.
Pathfinding, then learn how to optimize your search space with hierarchical pathfinding, then throw in cover points, maybe add some flocking? Blackboard system for intelligent communication between npcs etc… List goes on.
My advice is, don’t be overwhelmed by it all, just start with simple AI… A lot of gameplay logic is AI actually. For level management, don’t worry just yet about coding it the right way, just try to get the concept of structuring your level data so that you can:
Start a level by simply calling a StartLevel( levelNumber ); // Handle’s all the loading of level data
and Finish a level by calling a LevelComplete()
Just by that alone you’ll see all the ways you can improve that: For example, Are there common level data elements shared among other levels? If so, can you structure it such that when you UnloadLevel, you only unload the items that were specific to that level?
If you don’t mind c/c++ … for gameplay tutorials, visit gamedev.net.