AI (Q7)
Lab 2: Better Spatial Partitioning
I enhance my spatial partitioning scheme to not only go from a 2D Uniform Grid to a 3D Uniform Grid, but to also include layers so collisions can be tested against on only necessary layers, and debug functionality to render the grids and display only specific layers.
Lab 3: Empty World Editor
The beginning of something cool... A world editor that will save out object data for reading in by my game engine so objects can be placed conveniently without tyipng code.
Lab 4: World Editor Object Placing
Using raycasting, I place objects down in 3D space. Here you see a clever use of this.
Lab 4: World Editor Object Removal
Again with raycasting, I select objects to delete, change their tint color on hover, and remove them on click.
Lab 4: World Editor Object Translation
By adding math to my game engine, I translate objects with translation arrows rather than keyboard controls.
Lab 4: World Editor Object Scaling
Still using math, I scale objects with scaling arrows rather than keyboard controls.
Lab 4: World Editor Object Rotation
With more math, I rotate objects with rotation arrows rather than keyboard controls. I didn't have a 3D model for curvy arrows.
Lab 5: World Editor Node Visiblity Check
A star nodes are placed in the world, and raycasts are used to check for valid paths between the nodes. These paths are saved out to a file for loading in the game so paths do not have to be calculated during the execution of the game.
Lab 5: World Editor Node Removal
Unwanted node paths can be removed to allow for one-way node movement (such as going down a ledge and not back up)
Lab 6: World Editor Fly To AStar Nodes
For any arbitrary world created with the world editor, it can be loaded into the game, and the spawned dragons will fly to the nearest AStar Pathing Node
Lab 6: World Editor AStar Path Following
Once on a node, dragons will use AStar pathfinding to navigate between the nodes to reach their desired destination efficiently.
Lab 6: World Editor AStar Paths Only
Just a fun debug feature, using my layers and partitioning debug functionality, we can show only the paths the dragons are following.
Lab 7: Pursuit
Here dragons use the Pursuit Steering Behavior to follow the player.
Lab 7: Wandering
Here dragons use the Wandering Steering Behavior to move randomly without jittering all over the place.
Lab 7: Evasion
Here dragons use the Evasion Steering Behavior to avoid the player with ease.
Lab 7: Flocking
Here dragons use a combination of Cohesion Alignment and Separation to flock!
Lab 7: Offset Pursuit
Here I make use of the Offset Pursuit Steering Behavior to make a dragon out of dragons! Yes, it will work for other models.
For Fun: Dense Fractal Galaxy
Here I expanded upon the instanced rendering functionality of my engine, in a desperate attempt to optimzie it, and demonstrated this using a galaxy of spheres using my fractal shader.
For Fun: Fractal Dragon
Here I make a dragon out of thousands of fractal spheres, using instanced rendering again, for fun - not as an assignment.
For Fun: Fractal Galaxy
Here is another galaxy of fractal spheres created for fun, with instanced rendering.
For Fun: Fractal Galaxy Helix
A more vertical Fractal Galaxy made for fun with instanced rendering.
For Fun: Fractal Galaxy Spiral
Yet another Fractal Galaxy made for fun with instanced rendering.
PreviousNextProject Tech/Algorithms
GLSL (OpenGL Shading Language
Extended Details
The AI course was yet another course that made use of the game engine created in previous courses. This course came after the Computer Graphics course, so I was able to maintain some of the optimizations and utility features created in that course.
For the AI course, we began by better preparing our engines to handle game AI. First, we were required to add spatial partitioning. I had already done this going above and beyond for another course, so the instructor insisted I upgrade my partitioning scheme. I did this and it did improve the performance of my engine significantly. After this, we wrote a world editor, which I went above and beyond on, finding it fun to create powerful a game development tool for my engine.
Only after engine enhancements did we get to implementing AI techniques. We were given the freedom to implement several, of which I chose ones I thought were the most interesting. In particular, I am a fan of the Offset Pursuit technique that I used to make a dragon out of dragons, Flocking, which looks great with dragons, and Forage, which is also fun to look at as the dragons will consume the world I created.
Project Credits