I worked with the Unreal blueprint system to create as AI and UI for this 3D penguin-themed racing game.
See the Steam page HERE!


Snowpainters is an arcade racing game where you play as penguins that leave colorful trails behind them in the snow. Players can compete against up to 4 friends and up to 8 AI, strategically changing their color and using trails to gain speed boosts. A plethora of other thematic mechanics, such as a snowman that slows players down and spray paint that forces other players to change. This project was developed with a team of forty, fourteen of which were programmers, in three months of development with three daily hours of work time.


* Role: AI and UI Programmer
* Programming Team Size: 14
* Engine: Unreal Engine 4 (UE4)
* Language: Blueprint
* Development Time: 3 months (3 hour days)


I began the project on the AI team with 2 other members. Together, we developed a behavior tree for allowed each non-player penguin to could choose an optimal path on the track while considering the paths of other AI. The AI was assigned an extended version of the controller that the player used, so the AI had access to all the same mechanics and pickups as the player, utilizing them at optimal times such as when another penguin was within aim. One of my favorite tasks during this project was generating random names and accessorites for penguins that remained consistent throughout multiple races with the same AI.

In later sprints, the AI stabilized enough that I was able to spend my time assisting the UI team. On this team, I helped improve the player HUD, implemented a random pickup wheel, and created a minimap that photographed the map pre-play and displayed icons for all racers mid-play. I also assisted in implementing buttons and sliders to focus, scale, and convey interactivity on the menu, selection, and pause screens.

For a few days, I joined the backend team for performance tests and implemented improvements such as paint trail distance culling.

Overall, I performed with excellent communication and flexibility between various teams, especially since I had no previous experience with Unreal!


For the programming team, nearly everything went well in this project. We split into teams that matched each of our skillsets well, and we were able to split tasks up with minimal dependencies, which created minimal idle time. The different teams achieved each milestone with room to spare. I and my teammates swiftly learned the ropes of an engine that was unfamiliar to the majority of us, and we created a truly impressive final product within the time that we were allotted. One challenge was that UI was left mostly alone until later sprints, which required several members of other teams to ultimately switch to UI for the final sprints. However, we overcame the challenge with few cuts to the originally envisioned mechanics.