Hearthstone hero-power-only battle simulator. This is a work in progress as I am still building a GUI for it.
Mobile game – spinoff of the puzzle game 2048 powered by the Unity physics engine. This is also a work in progress, as I’m still trying to find the fun in the design.
Multithreaded application for generating stats for Dungeons & Dragons 5th edition characters in large batches, and recording the stats of the highest and lowest rolled. Or, in other words, how to roll a 10 billion characters in 30 minutes to convince my Dungeon Master that my character actually has the base stats [17, 18, 18, 18, 18, 18].
Interpreter for the Brainfuck programming language, and transpiler for a language I invented called “Mind Blown” that converts it to Brainfuck.
Recursive Tic Tac Toe implementation, for the second attempt at making my game X’s and O’s and Black Holes. Output from this version is the second group of images on that page.
Tic Tac Toe Board (CPP | HPP)
Recursive Extension of that Board (CPP | HPP)
Getting back to fundamentals, I spent some time doing basic data structures in C++.
Double Linked List
Bar Crawl: A Night to Forget was the game developed to finish off my capstone project for my B.S. in Computer Science: Computer Game Design. I served as the lead designer for this project, and made the final call for all design decisions. I also worked with the producer to create and assign tasks and keep the scrum board up to date, with the developer to create a clean and extensible code architecture (it was built in Unity 2D), and with our lead artist to make sure the art was produced on schedule and it all matched stylistically. We got a late start on the project as this only happened because the “It’s Not the End of the World” project was cut (see below), so we had to do this in about 13 weeks. By the end of the project, I was overseeing 7 programmers (not including myself), 5 artists, one musician, and one voice actress. I also programmed in the scene transitions, most of the user interface, and I was often the first person to add a new feature, and I would lay down some skeleton code that would be handed off to another team member to expand upon. Bar Crawl: A Night to Forget was entered in the 2014 IndieCade festival and the UC Santa Cruz Sammy Awards. It is available on Google Play and the iOS App Store for free, and has a website as well.
As part of my game engines class, we made a level in UDK as well as a weapon mod using wotgreal. Below is a video showing them both. The level is named Counter-Clockwise, as it is two large rooms connected by two hallways, with triggers to open a door in one hallway that closes the door in the other, as such you can only move through it in a counter-clockwise direction. Also demonstrated in the video is our weapon, the Fibonacci Bomb. It is a modification of the shock rifle. We modified the alt-fire to shoot a bouncing electric ball, in clusters according to the fibonacci sequence. For example, the first two shots are just a single projectile, but then it shoots 2, 3, 5, 8, 13, 21, and finally 34 projectiles at once. The bouncing has been modified so that there is some variation, that way the cluster gets more and more spread out the more it bounces. The weapon is absolutely deadly in tight hallways.
Leprechaun Tears was the name of the game engine we developed in our Game Engines class, named solely so we can make the bad joke that our game is powered by leprechaun tears. In this project, I was responsible for the overall architecture of the engine and mini-golf game that it was running, as well as all of the rendering, while my partner Kyle did the physics and file I/O. Near the end, we began work on a procedural mini-golf course. I took inspiration from my It’s Not the End of the World terrain generator and tried to make it perlin noise based, however it didn’t come out as fancy as we would have liked due to having only one week to work on it, and that week was also the final push for our Bar Crawl project above. Attached is the source code (with visual studio solution) and a video showing a few levels. For the source code, wrote most (or all) of every file except for Ball.cpp.
It’s Not the End of the World was a game started for my senior capstone project. I served as lead developer for this project. I designed up the architecture of the game, and designed the skeleton whenever a new feature was about to be introduced that my team mates would fill in with more specific code later. My greatest personal achievement out of this project was my procedural terrain generator based on Perlin Noise. The mesh generator and the desert generator are linked as a sample of my coding abilities.
Note: weird green and purple lines in the images are Unity artifacts. They did not render in-game. Also, the lighting is a little off as these are not in-game shots. They are zoomed out views, and the light is from a point light that followed the player around. The speckles are trees, rocks, and other decorative objects that made the terrain seem more realistic.
Samples of terrain generated by some of the code linked above:
Shortly after starting school at UC Santa Cruz, I started playing Dungeons & Dragons. Between late 2010 and early 2014, I have written and been the game master of 4 separate campaigns. They have taught me a great deal about game design in general, as well as how to judge player reactions and anticipate what they want, as well as how to adapt quickly based on how players react or what they want to do.
Included here is an example of my graphics programming abilities. This particular project was programmed in C++ using OpenGL and GLUT. The terrain is generated from a height map and diffuse texture that were provided by the professor, but the snowmen are being generated using GLUT function calls; it uses no pre-built models. This is not a demonstration of artistic ability, just of coding.
Wednesday was a text-based adventure game I did with a friend of mine, programmed in Inform 7. You fill the shoes of Gregory, an office worker with a mundane job in an absurdist universe. Navigate Gregory through his totally insane office as he tries to get his bosses to sign off on his new proposal. For this project I provided much of the code, helped restructure certain bits of code to fit in better with the story, and oversaw all playtesting. You can play it in its entirety at the link above. Note: on that link, I am credited as Phoenix, and my friend is Trask Nari.
As a personal project, I re-created the maps from Pokemon Red/Blue and Gold/Silver in Minecraft. There were a number of design challenges associated with moving a two dimensional map into three dimensions, as well as making each city feel unique with their own style of houses, paths, and street lights while still capturing the original atmosphere. There was the additional challenge of making buildings and caves interesting on the interior due to the impossible spaces created by the outside being smaller than the inside. Doing this project helped me realize how much I love doing level design. My rendition of Pokemon Red/Blue was even featured as part of a series by two well known “Let’s Players” on YouTube: Trask Nari and Puddle. A quick demonstration of the Pokemon Gold/Silver map is below. Please do not judge my video editing skills, just the level design.
Angry Nerds was my Sophomore game project for an introductory game programming class. We were given the option of doing an educational game, and I designed a game inspired by Angry Birds to teach classical mechanics. The story was very minimal; you were a peasant in the land of Reddit and the evil king Lamar Smith passed the Stop Online Peasants Act, and you had to go destroy his castles with Death Star-like flaws in order to restore internet freedom to the land. It was a parody of SOPA (Stop Online Piracy Act) that was a huge deal during the time this was in development. For this game, I was the lead designer and developer, and programmed all state management and menus. It was a fun take on learning classical mechanics that appealed to people that hated physics pencil and paper homework but needed help grasping the math.
If the player was ever wrong, the game told them how they were wrong so they could correct.
It became obvious if the player had done a miscalculation before they even fired so they could get it on the first try.
We introduced problems by the main character exposing the critical flaw in each castle.
Sample of the game screen. It gave immediate feedback if you were at least in the right ballpark with your calculations.
Simple and culturally relevant (at least it was at the time)