GAME PROGRAMMING DEGREE OBJECTIVES
1. Implement multiple completed games, including 3D games, using common tools, languages, and software for web, console, PC, or mobile platforms.
Brick Breaker
Written in Python in a week. (Runs anywhere Python can, like web browsers, Windows, Linux, and macOS)
MAZECUBED
3D Maze game made in Unreal Engine 4.27. (Runs Windows, and Linux, Could run on macOS, but no builds).
Collect The Coin
Written in Python. (Runs anywhere Python can, Windows, Linux, and macOS, except for web browsers due to performance issues)
Long Titled Ninja Game
A top-down 3d shooter in Unity. (Runs on Windows, and Linux. Could run on macOS, but no builds)
2. Design, develop, and implement the architecture and infrastructure needed to support a complete game project.
Collect The Coin
Built with the Pygame framework, it’s a side-scrolling platformer made from scratch.
Pytris
Built with the Pygame framework, from scratch, to be as modular as possible.
Peggle Clone
I’ve built this Peggle clone with independence in mind. No object has a direct dependence on another object. I’ve made everything in this project independent by leveraging a few of Godot’s features. All pegs in any scene add themself to a group when they get instantiated. When the main game script gets instantiated, it grabs the group the pegs added themself to and operates on the pegs accordingly.
3. Implement and analyze fundamental data structures and algorithms associated with game applications supporting gameplay mechanics.
Pytris
Pytris implements the parent-child owner model by storing child objects in a list. One data structure I’ve implemented for maximum independence is an observer object, which is an object that holds a list of functions that are all executed when the observer gets notified; I’ve implemented mine using Godot’s naming conventions. Pytris also utilizes multiple easing functions that move the main menu screen to reveal the options menu.
Project Wardog
In Project Wardog, I implemented two data types and a few supporting types. The more complex data type of the two was the SimpleDialog tree, which utilized node classes to store each possible interaction type, like irritated, offers, and conclusion responses. The other data type I implemented is the BookLike class. It directly interacts with Ren’Py’s scripting language to hide and unhide screens inside a list passed into the constructor based on the current index.
4. Use software development processes to analyze a project problem, and to design, build, and test a corresponding software solution.
Project Wardog
Project Wardog had writers who weren’t comfortable making commits to the game’s repo. To make their lives easier, I wrote a Python script that would take a CSV file, one which gets generated by Google Sheets, that contains variable names and the corresponding strings, and parses it into a single Python script that gets imported into the game, where its data can be used throughout the code by any programmer.
Tales From Teren: The Approaching Rot
The framework that Tales From Teren is built on uses a very limited custom language. To get around many of the issues I had, like having functions that you can’t pass variables into, I modeled out a system that allows you to store variables in global memory, exactly like how CPUs do it at a low level.
5. Demonstrate development skills using multiple programming languages, development environments, and platforms, including advanced and/or experimental topics in game programming.
Tales From Teren: The Approaching Rot
TFTTAR is a web-based visual novel that needs to run on desktop and mobile browsers and uses the ChoiceScript framework. ChoiceScript uses its own interpreted language that is very restrictive because non-programmers are the intended target. Due to these restrictions, I had to use JavaScript to implement some features the designers required; this included making custom BBCode tags and hacking the framework to allow for a button that takes you to a codex at any point in the game.
Pytris
Pytris contains one of the more complex engines I’ve written in Python. It has Godot-like signals, immediate mode GUI objects, global data, and high framerates for an interpreted language.
Peggle Clone
I’ve built my Peggle clone project in Godot 4.2, which is slowly gaining more support in the games industry. The game uses Godot’s features like groups, signals, Autoloads, etc, to make every scene portable. Godot allows you to use multiple languages, but for simplicity, I used GDscript, an interpreted language endemic to Godot. Wherever possible, I’ve specified the type of any variable; this allows the game to run slightly faster, as Godot doesn’t have to interpret what the type may be.
6. Establish collaboration, mentorship, and professional leadership skills by working with other disciplines to deliver highly polished and completed projects.
Tales From Teren: The Approaching Rot
I was the main developer for Tales From Teren for its first semester and implemented many features that the designers, writers, and artists needed, some of which never made it into the project.
Biomines
I worked as a programming advisor for the first semester of
Biomines. I advised how the repos should be set up, including file structure, how the project settings should be, and more.