Portfolio

NOTE: In addition to the projects listed here, you can find various small and experimental projects on my Github account.

HungryHipp.us

June 2016 - August 2016

To play, visit http://HungryHipp.us/host on your computer, then open http://HungryHipp.us on your phone.

Source code available on GitHub

A modern adaptation of the classic tabletop game Hungry Hungry Hippos. Put the main display up on a computer or television, and then have each player visit the main site on their phone. Tap as fast as you can to gain points, but don't let your hippo eat a poison marble!

A kingly hippo deserves a crown.

HungryHipp.us is a game I made with a few of my coworkers while working at Scientific Games. Every year, the company puts on an internal art showcase, and this project was our submission for the 2017 showcase. The game is an online multiplayer game inspired by Hungry Hungry Hippos, intended for festival play. The game is to be on display in the Scientific Games lobby until August 2018, where anybody can walk up and play any time they way.

This is second such multiplayer game that I've built, but the first where I've built so much of the underlying tech myself. It's built as a web app, with a server hosted on AWS. The backend is written in Rust using the Rocket framework. The client code is written in JavaScript using Vue.js and GSAP. Most of the code for the game was written by me, including a continuous build and deployment process that allowed me to constantly release and test the game as I built it.

As a fan of the Rust programming language, this was also an exciting opportunity for me to test Rust out for game development. While the experience was a little unusual for me (having never built a web server before), I found Rust to be a great fit for game development, and I hope to be able to built more games with it in the future.

You can read the more comprehensive post mortem here on my blog.

SG Universe

January 2016 - present

SG Universe Site

The SG Universe product suite features multiple platforms that empower land-based casinos to increase engagement with their players at home, on-the-go, and during each visit to the casino floor.

Some of the games on offer.

At Scientific Games I was part of the development of the next generation of online social casinos. Our product bridged the gap between traditional land-based casinos and the social casinos you might play on Facebook or your mobile device. Being part of this project was full of new experiences for me.

When I was hired, I was brought on because of my experience with Unity. The mobile application was built with Unity, but it quickly became clear that the existing application was riddled with technical debt and that it would be difficult to incrementally fix problems. Fortunately, we had the rare opportunity to rebuild the app using a fresh tech stack, and so while I was there we started rebuilding the app from scratch. The experience provided me with chances to learn more about software development. In particular, we've had the opportunity to build important things like test automation and built automation into our process from the beginning, which proved to be hugely beneficial. In doing this work, we also had a great opportunity to examine our development practices and processes, and that has given me a lot of insight into what impact process has on a software project.

Overall, I grew a lot as a developer while working with the SG Universe team. In particular, I learned a lot about effective management of a development team, and how to balance the needs of the business with the needs of the development team. I believe that my job as a software developer involves more than just writing code, and my work at Scientific Games gave me valuable experience with all the aspects of software development.

Project Highrise

June 2015 - December 2015

Available on Steam

Worked as a contractor for SomaSim

Your job as the architect and developer is to build world-famous skyscrapers that will be the envy of the entire city, masterpieces of art and engineering. But a skyscraper is more than just steel and glass, it’s an intricate ecosystem, full of people that live and work in the building. They become a complex machine that needs your steady hand to keep it running smoothly and efficiently.

See that beautiful skyline? That's all me.

Project Highrise is the first commercial game I worked on where I feel that I made large, tangible contributions to the game. While Mortal Kombat X is technically the first commercial game that I'm credited as working on, I worked at NetherRealm Studios in their engineering department, and as such my work wasn't directly on the game itself. With SomaSim, though, I was the only programmer besides the co-owner of the company. While I was only able to work with them for a short time, while I was there I got to work on various parts of the game, such as implementing UI functionality and building AI behaviors.

The task I enjoyed the most was building a system to generate random skylines. I was given a number of building pieces by the team's artist, and using those I created a system that would randomly generate a visually pleasing skyline by placing buildings of varying height at various positions in the background. I had to ensure that the backdrop didn't have any large clumps or gaps between buildings, which required that I research different noise patterns and tweak them to get consistent results. In order to create a better sense of depth I wrote a custom shader that fades the building as they go further back, simulating a haze. Doing this as a custom shader also had the advantage of allowing all buildings in the backdrop to share a single material, which allows Unity to draw the entire skyline in one draw.

Gunboard

June 2015 - November 2015

Worked with Chris Wade and Mariah Hale

Grab your board and hit the rails. If any of those pesky robots give you any trouble your board turns into a GUN so you can blast them away!

It's a gun and a board!

Gunboard was our project for the Indie City Student Fellowship run by the Indie City Co-Op in Chicago. The co-op is a co-working space for indie developers that don't have an office of their own, and for the 2015 summer they did a 3 month fellowship with current and recently graduated game development students. At the end of the allotted time for the fellowship we decided to take an extra month to polish the game for a soft release at the end of September 2015. If we have positive reception we'll continue development once the rest of the team has graduated and has time to work on the project again.

Gunship (Rust)

February 2015 - Present

Custom game engine written in Rust. Everything is done from scratch with no external libraries.

GitHub Repository

Gunship is a custom game engine developed with the intention of getting more experience with the low-level aspects of game development. It includes a custom rendering engine and platform extractions, and has no external dependencies beyond platform bindings.

Gun physics

After working on the C++ version of Gunship I realized that using Ogre and SDL2 was robbing me of valuable experience with important engine systems. At the same time I was learning about real-time 3D rendering with OpenGL and I was just being introduced to the Rust language, so I decided to start fresh with Gunship, this time doing everything myself. Since then I've built up a simple foundation on which to continue development. The engine runs on Windows using custom abstractions over the win32 api, has a custom renderer using OpenGL, and can load COLLADA files exported from Maya. The image above demonstrates multi-pass lighting in the OpenGL renderer. Gunship uses no 3rd party libraries except for ones providing Rust bindings to the platform libraries like WinAPI and OpenGL.

For my final quarter at DePaul University I will be doing an independent study in which I dive into Gunship's rendering engine. I hope to learn a lot about writing performant rendering code that can be used to create spectacular visuals.

Gunship (C++)

April 2014 - June 2015

Custom game engine written in C++ using Ogre 3D for rendering and SDL2 for platform abstractions.

GitHub Repository

Gunship is an experimental game engine being created as part of my education in the DePaul University game development program. In developing it I explored the low-level systems that are fundamental to allowing games to work. The focus of Gunship is on performance and optimization.

Gunship

The C++ version of Gunship was my first attempt at writing a custom game engine. By offloading all of the rendering and scene management work onto Ogre I was able to focus on building the more gameplay-facing systems. A large amount of effort was put into developing an Entity-Component-System framework that would facilitate performant engine and gameplay code.

This project gave me valuable experience with software architecture, working on performance and optimization, and working in a self-directed way on large software projects. Ultimately though I decided to stop working on the C++ version of Gunship so that I could remove all dependencies on 3rd party libraries. The current version of Gunship is being written entirely from scratch in Rust.

Godlands

January 2015 - June 2015

Made with Unity3D

Worked with Chris Wade, Zac Gross, Tasha Pepper, Wyatt Zink, and Parker Murphy

Development Blog

In Godlands you take the role of a protector god over the spirits of humans. Your job is to find lost souls and give them bodies, and then protect and raise the little creatures until they can take care of themselves. You live in the shadow of an ancient ruins which you must explore every day in order to fulfill the needs of your children.

Godlands

Godlands was my team's capstone project for the DePaul University game development program. I'm working primarily as a systems and tools developer, with the majority of my effort during the going into creating a robust movement system to ensure smooth platforming gameplay. I built a behavior tree library and editor to allow us to build complex AI behaviors. I'm also the team's producer, which means I am in charge of arranging group meetings, ensuring that everyone knows what works they need to do, and corresponding with our various external advisors.

Mortal Kombat X

March 2014 - December 2014

Built on Unreal Engine 3

Worked in the Kore Tech engine team at NetherRealm Studios as an Associate Software Engineer.

Mortal Kombat X

I did a 9 month student internship with NetherRealm studio's engine team. During this time I got to work on both the engine and the production pipeline to speed up the development process and fix points of pain for artists and other developers. This means that on top of doing bug fixes and adding features to the engine and editor, I worked on creating tools that were used to speed up the build process and provide more information to the dev team. During my time at NetherRealm I got to work in C++, Python, and even Perl.

Here is a screen capture from the MKX Mobile release that credits me as an Associate Software Engineer:

Proof!

Boss Rush

September - November 2014

Made with Unity3D

Worked with Adam Grahm, Dillon Wallace, Ryan Smith, Westin Grube, Andre Gracias, and Blake Truitt

Development Blog

Boss Rush is a top-down, twin-stick shooter with one arena and one boss. Armed with your trusty assault rifle, fend of exploding bomb-bots as you drive the massive Spider Tank back from your home world. Collect a variety of powerful weapons and pickups to keep yourself alive and defend your home from the metal invaders.

Boss Rush

Most recently I completed a ten week project for my GAM 392 course. I was on a team of seven which consisted of two programmers besides myself, one modeler, one level designer, and two designers. My teammates and I put in a lot of hours into the project and I'm extremely satisfied with the end result.

This is the biggest project I've worked on so far, and it was a big learning experience for me in many ways. The only games I had taken from conception to final release were done in 48 hours, so 10 weeks was a lot of time and meant planning out features well in advance. I started out as producer for the team in hopes of getting some experience outside of programming, but I also fell into the role of overall project lead, which was a new experience for me. We were a seven person team and rarely had time to meet outside of class, which meant online communication and coordination of efforts. I chose to host our code on GitHub partially for the integrated issue tracking service that it provides, and we used Slack for team communication.

Boss Rush

Boss Rush

A Series of Leaky Tubes

August 2014 (Ludum Dare #30)

Made with Unity3D

Worked with Zac Gross and Chris Wade

GitHub Repo

The year is 2093. Super cool hackers fight back against the corrupt government by skating through the series of tubes that is the internet, breaking into government offices and leaking important documents. They must work fast and pick up hours on the internet to stay online for as long as possible.

A Series of Leaky Tubes

At the time this was made I still didn't have much experience with Unity so I can't claim to have made as many contributions to the project as my teammates. It was also my first time with Chris, who's wicked good when working in Unity and is an all-around cool dude.

Shortly before the competition Zac had pulled out his old PS2 dance pad and got it working with his PC, so we decided to use it for for the game jam. What we wound up with is a cross between DDR and an endless runner, where you use the dance pad to navigate a procedurally generated world. Single presses change your direction and combinations allowed you to pick up items. The final product was surprisingly fun. It needs a lot of polish, but there's a good idea at the core and I could see us revisiting it for a future project.

aVoid

January 2014 (Global Game Jam 2014)

Made with Unity3D

Worked with Zac Gross, Alex Smith, and Matt Something

You are alone in an infinite hedge maze. There is no indication of how you got there or where you need to go. In the distance you see a glowing beacon of light stretching into the sky. What do you do?

The beautiful title screen

Between trying to get my liberal studies courses out of the way and working on courses for my major, I didn't have any game dev courses Freshman year, so my next attempt at making a game wasn't until early Sophomore when Global Game Jam 2014 came around. This wound up being a number of firsts for me: First time participating in a game jam, first time working in Unity, and finally, finally, the first game I have a playable record of.

aVoid itself isn't very good. There's no gameplay, no story, and almost nothing going on. The most interesting aspect it had was the atmosphere, which comes entirely from the visual and audio design, which I had no hand in.

I hadn't had much time in advance to familiarize myself with Unity or C#, and so wound up spending a good chunk of the time doing that when I could have been working on the game. Zac also was short on experience, though he was able to carry the team through most of the development process. The original idea was also to have the hedge maze be procedurally generated, and so I spent about 16 hours working on the maze generator before we realized that it wasn't going to be done in time.

Not so great.

Miscellaneous Projects

Curse

May - June 2014

Made with Iridel

Worked with Joseph Dailey, Ruth Williams, and Giovani Mota

A game done for my GAM 245 (Game Development II) course. I wish I had made a video of it because it was pretty solid for having been made in about four weeks in a custom game engine.

Uncross the Wires

December 2012 - March 2013

Written in Java using LWJGL and Slick2D

Worked with Zac Gross and Katherine O'Connor

This was my first game with Zac and my first attempt at making games in college. We didn't get very far, mostly due to a lack of time to devote to the project. However, the core mechanic was nice and simple, and is something I'll likely return to for a game jam or the like.

No images for this one because we're freaking idiots, but the source code is up on GitHub, whatever that's worth.

Unnamed Robot Game

Late 2011? (Senior Year of High School)

Written in Java with no additional libraries

My first attempt at making games in Java. This was at the very beginning of my programming career and, not surprisingly, I didn't get very far. That said, I still think it's noteworthy because, despite I lack of knowledge, experience, or external libraries that would simplify the task, I managed to put together a simple game loop that allowed you to place buildings and have units navigate around a simple map.

This was also before I knew anything about version control or GitHub. I used dropbox to sync my files between school and home, and at some point deleted the game in order to free up space.

Snake

My game development history began almost as soon as I began learning to program, with implementing the classic game Snake on my calculator. My first time programming language (if you're feeling generous enough to call it that) was TI-BASIC, and having no games on my calculator was all the impetus I needed to make one of my own.

Unfortunately, my calculator got reset at some point so no records of the game remain.