School Projects/Portfolio

Object-Oriented Space Invaders

An overall project for my SE456: Architecture of Video Games class. The class was supposed to create the classic Space Invaders arcade game from scratch using object-oriented design patterns. The entire code base was written in C# using an existing game engine called Azul that was made in DePaul. This was probably the biggest project that I have ever done solo.

Here are some of the things that I have done for the project:

-Used a wide variety of object-oriented design patterns for creating the systems of the game such as singletons, object-pooling, observers, commands, strategy, factory, etc.
-Programed a wide assortment of managers that dealt with managing user input, texture files, image files, video game sprites, and game objects
-The whole project ended up containing over 170 C# classes
-Wrote a technical design document communicating how the systems work in the game and the logic for using them

Technical design document can be found here.

Optimized Particle System

Made in November 2015

A final project for my CSC461: Optimized C++ class. The class was given a particle system that had serious performance issues. We were assigned to find ways within the code to make it more optimized and perform better.

What I have done:
-Split the data structures within the program into Hot/Cold data structures to increase the likelihood of cache hits
-Removed an STL list within the program and use a doubly-linked list already implemented in the program
-Used return value optimization (RVO) with the overloaded operators for the math operations
-Removed unnecessary calls to functions that did nothing for the program (i.e. unnecessary Matrix calls)
-Changed most of the parameters in functions that pass in a pointer to instead pass in a reference
-Used the SSE2 instruction set (SIMD) for faster vector math operations related to matrices and vectors
-Moved OpenGL draw calls out of certain loops that improved performance
-Moved a lot of object construction out of major functions that were called in a loop to only make their construction only happen once if there data is constant and not changing (i.e. Particle Data, Matrix, Vector construction)

Link to source code

Demo Video is below: (Note: the times for drawing are a lot higher because of the video recording software I was using)

Survival Zombie 

Made in January 2014-June 2014

A game that some DePaul students and I are creating for our final senior year capstone project. We are given two semesters to first thoroughly plan out our game idea and then try to create the game completely from scratch incorporating the ideas/mechanics we came up with. The main idea of our game is that you play as the only single zombie trying to escape while being chased by hordes of wanna-be zombie hunting neckbeard nerds. The main focus of our game is the satirization of popular zombie culture. The game was developed in Unity3D using C#.

So far as to what I have done:
-Implemented player movement
-Helped in programming our player chasing mechanic
-Incorporated the hunger system mechanic for our game
-Particle effects for Zedna getting hit
-Particle effects for Zedna eating Civilian NPCs
-Particle effects for the spray bottle stealth mechanic
-Helped with trying to debug the Neckbeard/Civilian wandering AI
-Programmed in the sounds for the game
-Programmed various animations into the game
-Programmed in the cut scenes for our game (Intro/Outro cut scenes, in-game cut scenes)
-Programmed the scripted events in the game
-General bug fixing

Here is the address to our development blog to find out more:

http://survivalzombiegame.blogspot.com/

The link to the final build can be found here:

https://www.dropbox.com/s/k1zfeffy31ojxh5/SurvivalZombieTHEOmegaFinal.zip?dl=0

The eating mechanic for our game

The eating mechanic for our game

The Main Menu for our game

The Main Menu for our game

When the player's hunger meter gets low enough, the NPCs in the game turn into brains to tell the player they must eat more.

When the player’s hunger meter gets low enough, the NPCs in the game turn into brains to tell the player they must eat more.

CIX

Made in January 2014

A game that I and other DePaul students made in the Global Game Jam 2014 at DePaul University in 24 hours!

The game was made in Unity3D

From our Game Jam website:
“In this 2.5D Action Brawler set in Greco-Roman times, the player gives the NPCs masks to determine their identities – thus giving the user the power to identify enemies / helpful characters themselves, but everything is not always what it seems. Also if you can figure out our name, you are literally too amazing for description.”

Project can be found here: http://globalgamejam.org/2014/games/cix

What I have done:

-Programmed some of the basic AI movement
-Programmed in a camera shake feature when the player collides with an NPC
-Programmed in the win/lose conditions
-Programmed in a shop keep that gives the player an item when they interact with the faceless NPC
-Programmed in the Main Menu, Credits, Win, and Lose Screens

Gameplay footage 1

Gameplay footage 1

Displaying the throwing mask mechanic at a faceless NPC to make the player distinguish if the NPC is friend or foe

Displaying the throwing mask mechanic at a faceless NPC to make the player distinguish if the NPC is friend or foe

Azul Open Source Game Engine

From October 2012-June 2014

An opensource game engine currently in development that is meant to replace the existing game engine(s) in DePaul’s Game Development academic curriculum to make it easier for Game Development students to learn about the Game Development process without the technical hurdles and in a much more precise clearer way.

What I have contributed so far:
-Researching C/C++ programming techniques to help develop systems for our game engine
-Helped in trying to develop coding standards in using our engine

Omega Race X Networked

Made in June 2013

This was a final project for GAM 390 Multiplayer Game Development. My partner and I were given the task of making a game that was designed to be played by two players on one machine into making the game be played by two players on two separate networked machines. The game was written in C# using Microsoft’s XNA framework.

What I have done:
-Make the game be Data Driven (Set up queues of data that are meant to be sent over the network wire)
-Helped in creating/joining a network session (game lobby)
-Make a selection screen where the user can choose from multiple network sessions and select one to join
-Helped in sending/receiving network packets through the Data Driven queues
-Worked on simulating  the other connected user having a slow internet connection and try to correct that by doing Network Prediction

Sweet Dreams

Made in June 2013

A group project created for GAM 392 Game Modification Workshop. We were given ten weeks to create a game from scratch using Unity 3D. The game is a simple 2.5D platformer where the player plays as a teddy bear as he tries to collect lights while avoiding various traps to make a child wake up from a nightmare. I was the only programmer for the team hence I programmed all of the game’s mechanics (movement, collecting the lights, moving platforms, scoring, etc.)

What I have done:
-Programmed the player movement controls
-Programmed the collision detection for the game
-Imported and programmed in the animations for the game
-The scoring system for the game
-The Game flow system in-between game scenes
-The main Game Controller that keeps track of all events that happens in the game

Space Hunter

Made in June 2012

A final group project created for GAM 374 Fundamentals of Game Programming I. The game is basically a thinking man’s version of Asteroids. The player plays as a treasure hunter in space shooting debris and trying to collect the treasure that comes out of them. However, sometimes when the player shoots at an asteroid, it spawns a torpedo that tries to home into the player killing them. The player can shoot at the torpedo or move to the other side of the game map where the torpedo loses its tracking on the player. The game was created using Joe Linhoff’s QE Game Engine written in C++.

What I have done:
-Programmed the collision detection for the game
-Player controls
-Quality Assurance and testing for the game

The ingame Menu screen.

The ingame Menu screen.

The gameplay

The gameplay

More gameplay

More gameplay

Leave a comment