

MLAgents (Machine Learning AI)
Playable build is here.
​
Scripts can be found here.
​
This project uses a combination of Unity's MLAgents package along with Python to create an environment where a machine learning AI is able to travel through different rooms trying its best to avoid the walls. This was achieved through the use of strong supervision in the form of "bread crumbs" that are in each doorway. These were created in an attempt to speed up the process of the AI trying to figure out how to navigate out of its original room. All three AI use the same brain, which was created by running this same test, and saving what the AI had learned so that on runtime for the demonstration they wouldn't have to relearn how to navigate.


Implemented Steering Behaviors
Click to see the Playable Build.
​
GitHub repo with Scripts.
​
This project is a simple game that utilizes multiple symbolic dynamic steering behaviors where different blocks act differently around the map as the player tries to collect as many little blocks to grow as they can while running from a larger block trying to get them.
​


Tactical Pathfinding
Playable build can be found here.
​
Scripts can be found here.
​
This project utilizes Dijkstra to achieve pathfinding through weighted and directed graphs. The cube travels through the graph trying to make the cost as cheap as possible with each point having a labeled cost value.
​



Ballistics
Playable build here,
(Press spacebar to fire projectiles and A and S to move side to side)
​
Scripts are here.
​
This project utilizes ballistics when launching its projectiles to its target. The firing solution specifically calculates the maximum possible angle it can launch its projectile while still hitting its target, causing the projectile to fly in a large parabola.
​


Procedurally Generated Mazes
Playable build is right here.
(Press E to generate a maze, feel free to press it repeatedly to keep generating the maze.)
(Press R to generate another maze that's connected to the first maze, you may press the button repeatedly to keep regenerating the maze.)
(Press T to generate a third maze that's connected to the second maze, you may press the button repeatedly to keep regenerating the maze)
Once you have the second and third mazes out, you're able to go back and forth pressing R and T to keep building mazes back to back from each other to form an endless string of mazes.
​
Scripts can be found here.
​
This project utilizes some shape grammar techniques to create a procedurally generated maze. However, there are certain aspects of the maze that have set parameters, specifically so that the entrance and exit of the maze will always be on certain walls, and that when you add another maze onto the next one the exit of the previous maze and the entrance of the new maze line up.
​