Home

Projects

Platformer

JavaScript

I decided to take a break from a more complicated 3D game to work on this project which I could complete in one sitting. It features custom physics, animations, and game logic. It's simple to understand this game, but it's a little tricky to beat the one and only level featured.

Color Ramp Polynomial Generator

Lua

A color ramp can be represented as a 1 by n pixel texture. This texture displays an arbitrary gradient. This program enables the creation of color ramps using smooth polynomial functions that fit a set of given points.

Triangle Renderer

Lua

This is an example of a program I find myself writing often. It's a testament to my interest in vector graphics and creating the simplest program that can generate arbitrary images out of triangles. It features hypermininal implicit user interface.

Museum Particular

JavaScript

A recurring creative impulse for me is virtual museums. I enjoy the serenity of a crafted space with a variety of inspiring artifacts. This project unfortunately does not feature any artworks, but does show a way of generating a 3D interior with physics based on a text map.

Gitwalk

Python

This is a trivially simple program that provides a unique foothold into git. It allows you to quickly view the earliest commits in a repository by converting an intuitive index (0 for the first commit, 1 for the second, etc.) into git commit hashes.

Destination

JavaScript

The name "Destination" is a reference to the Source engine. This project is an exercise in supplying the essentials for a first person 3D game. It features an emphasis for procedurally generated environments, as well as including physics and rendering. The motivation for this project was to create something that resembled the Source engine but with a open source and web-first approach. Obviously it did not get that far (yet).

Project 01

C

An experimental game I made in C language using Raylib. It presents a stark set of rooms which each have their own special premise. The game features baked lighting using Blender, and an in-house physics technique I call Room-Portal Physics. The first room has a C port of a procedural animation I wrote in Python called "Fading Memories", which I wrote during a lunch break while working at Wasatch Photonics. I wrote more about Room-Portal Physics in a Codepen post called "floorplan physics".

New Wave Minidesk

C

Here are unstructured thoughts about human computer interaction, desktops, and programming as a first class action on the computer. We consider a graphics language which minimizes the number of input tokens needed to produce an interactive graphical program, as wells as an close-to-metal ecosystem for hosting and editing such programs. The motivation is to make graphics programming fun again. (Think about the time of BASIC and the Commodore 64.)

Custom Gamepad Driver

Python

This is a rudamentary Xbox 360 / Gamepad driver. It interprets input, displays ASCII art, and controls the mouse.

1

Qplex

C

The idea behind this project was to create an interpreted graphics layer that could be used in a variety of software ecosystems. Specifically I was interested in creating applications that could run on iOS through the Pythonista app and on desktop in the web browser.

Codepad

Python

Inspired by Fantasy Consoles such as the TIC-80, this project is a simple library for creating and running programs in a text-based environment.

Music Tool

C++

This C++ program allows the user to play samples using the keyboard.

3GW

C

Short for 3D Game Worlds, this project collects some key libraries for making first person 3D games. It includes a physics engine, a renderer, and a game loop. This project is related to "Destination" except it is written in C instead of JavaScript.

LIB3D

Python

LIB3D is a 3d graphic library for the Pythonista iOS App. It provides a gateway for producing 3D games from a mobile phone--as the Pythoista provides a gateway for programming on such devices.

2

Walk Around

HTML

Compiled to run in the browser using Emscripten, I wrote this during a trip to Atlanta, Georgia. It's a simple first person 3D game that allows the player to walk around and use keys to unlock areas. This is the hosted javascript transpilation of the game. I'm not sure where the original C code is, but it has a lot of funny tricks. There's no engine. All of the physics is "faked".

The City Of Osiris

HTML

I worked on this game while studying at North Carolina State University. It uses PuzzleScript to create a top-down 2D puzzle adventure game.

Untitled Game Of June 3

Lua

This is a platformer game that includes lasers and interactive objects and doors. It is styled in pure monochrome. It comes with 9 experimental levels. With no README, I leave it as an exercise for the reader to determine how to run this and play the different levels.

Untitled Game Of 2020.01.11

Unityscript

This first person 3D environment was built inspired by the styling of the game Antichamber. It uses an outline renderer to make a minimal world come to life.

Stephanie

Lua

This platformer game is an experiment with conditional collision logic. The player can choose which surfaces they will walk on. It was going to be a story-driven game about the title protagonist, but I never got around to finishing it.

T9Decoder

JavaScript

This is a simple program that converts a T9-style text message into a readable string. T9 comes from flip phones where you had to press a number key to get a letter.

Sketches In Late Javascript

JavaScript

This is a collection of sketches I wrote during a flight to Paris in late 2019. They are all written in vanilla JavaScript. This was inspired by the trailer for the game Beginner's Guide as well as the book G.E.B. by Douglas Hofstadter.

CSC 333 History Of AI

Lua

A comical interactive history of AI, spanning from perceptrons to neural networks and beyond.

Javascript Game Template

JavaScript

A lot of my game template code is about providing physics and rendering for game, but what about where the game actually lives? This project is about creating a page that presents a game in the browser. It includes a space for game instructions, a full screen button, and a programmable config for defining the page.

Ncknge

C

A graphics rendering and game environment for the terminal written in C. It supports textures and rotations as well as state management. It comes with several demos and is designed to function within a standard ANSI terminal.

Word God

C

This is a Python rewrite of an app called Doodle God where you can create new words by combining existing words. For example you may start with the elements Fire and Water to create Steam. This repo comes with a format for building your own rules for word creation.

Crumb

Python

Crumb is my programming langauge where any string of characters is a valid graphical program. Once I invented this, I created searchForInterestingness.py which randomly generates Crumb programs and then evaluates them to see if they are interesting.

Shape Trace

TypeScript

Code based on a thing I saw on reddit.

Infamous Geometry

TypeScript

A visual/numerical proof resolving a geometrical paradox which occurs when hand-drawing this particular shape.

Teaspoon

Python

This is yet another attempt to make a minimal interpreted graphics layer which can run in a variety of platforms. Here my goal was to make a langauge that is both easy to use and easy to implement--while providing graphics support.

Rotation Proof

HTML

This explains how to rotate points in arbitrary space by understanding some trigonometric identities.

Basic Chords

JavaScript

A piano that plays chords instead of notes

1

The Min Series

TypeScript

A series of small interactive experiments written for the browser.

Complex Gallery

JavaScript

A miniature museum of complex functions with a handy javascript renderer. This is another project that I originally wrote on my phone in Python, but then ported to a different language. A complex number has a real and imaginary part, and when passed through a complex function these values may change. Because of the way colors blend, we can use them to visualize these components. I use BLUE for positive real parts, YELLOW for negative real parts. RED for positive imaginary parts and CYAN for negative imaginary parts. Try entering some basic functions like `z`, `z+1`, `z+1` to gain an intuition for what is happening. Then enter some more complicated functions to gain a visual profile for the structure of the function.

1

Portals Demo Scene

HTML

This demo does not work in most browsers anymore, but the repo contains screenshots of the World Portal System for Unity and the demo scenes I constructed.

Emojitate

HTML

This lighthearted program is something of a desk toy. It provides a 3D rotation affect on random emojis that are drawn on screen with the mouse.

Game Of Walls

JavaScript

This was my first program to gain some popularity on Codepen. It demonstrates procedural world generation in an unconventional way, using the md5 hash function--perhaps reviving this function somewhat as it has fallen out of cryptographic favor. The world is infinite and can be modified by the player.