- Projects -

Oasis in Curses Prototype

First prototype of a turn-based RPG where you program your team with a visual constraint-based language. Made with a custom 3D engine written from scratch in C++ and D3D11. Inspired by Final Fantasy, Monster Hunter, and the engineering game genre, this is a short but challenging adventure for players who like to figure things out the hard way.

Download on itch.io

Magic Coffee Shop

A point-and-click short story about a regular guy named Garry. His first job as a witch's intern is to pick up coffee. Made with the Godot game engine.

Download on itch.io

Battle Pong

A 2-player homebrew game for the Nintendo Entertainment System. Multiple balls, super meter, and charging up your paddle add fighting-game-inspired mechanics to classic Pong. The goal is to introduce mind-games and various play styles — pressuring your opponent, playing defensively, or scoring a goal by doing the unexpected. Play in any NES emulator.

B - move quickly
Forward+A - shoot a ball (costs 2 meter)
Backward+A - place a deflector (costs 1 meter)

Download ROM (40KB)
Last updated: February 11th, 2018

Input Display List

Customizable on-screen display for controller inputs. Designed for live-streaming fighting games or analyzing your execution.

View on Github

Keyboard Recorder

Records and plays back key sequences. I made this application to work around lack of quick input recording for practice in arcade fighting games/emulators.

View on Github

- Code -

Joystick Input Examples

This guide aims to provide everything you need to know about implementing joystick input in PC games. It covers Multimedia Joystick, DirectInput, RawInput, XInput, Joydev, Evdev, and direct Playstation controller I/O with explanations and small example programs for each.

Read on Github

- Articles -

Programmer's Guide to Gamma Correction

If you're rendering graphics with lighting calculations, you should understand gamma correction. This guide covers what you need to know to get correct lighting when working with sRGB images.

Read on Medium

Compile Times of Single-Translation-Unit-Builds

Making a single-translation-unit-build is a method of speeding up compile times in C and C++ programs. This article explains how to implement this method, provides examples of regular build times and single-translation-unit-build times, and analyzes the differences.

Read on Medium

Math for Transforming 3D Geometry

An introduction to useful math for any type of work with 3D graphics. Topics include vectors, complex numbers, quaternions, and matrices. This is a written form of a presentation I most recently gave for Boise State University's IEEE student chapter.

Read on Medium