imGoban
Go Playing Software
github
C++
Two computers play against each other on a 19x19 board.
Cross-Platform desktop application for playing the board game Go. This is one of my
currently active projects I've continued to develop. Supports any grid size
greater than 6x6. Go playing programs, such as GnuGo, can be attached using the custom
implementation of the Go Text Protocol.
The application is written in C++ using my Adelie2D game library. Planned features include local networked play, GUI controls to replace the current config files, and a move branch navigator.
The application is written in C++ using my Adelie2D game library. Planned features include local networked play, GUI controls to replace the current config files, and a move branch navigator.
imRayCaster
3D RayCaster in CUDA
A simple scene rendered using assets ripped from Wolfenstein 3D.
A pretty simple project which implements a ray casting 3D rendering in CUDA.
Rendering is done to an OpenGL texture so results can be displayed in real time, allowing
the user to navigate the scene. The project could have been written in OpenGL shaders alone,
but I wanted the opportunity to experiment with working in CUDA.
Currently supports basic features such as tile based walls, floor, and ceiling. A skybox can be included and displayed via omitted or transparent ceiling tiles. Similarly a lower ground layer can be included for omitted or transparent floor tiles, allowing for water or lava effects.
Currently supports basic features such as tile based walls, floor, and ceiling. A skybox can be included and displayed via omitted or transparent ceiling tiles. Similarly a lower ground layer can be included for omitted or transparent floor tiles, allowing for water or lava effects.
Barvis
Music Visualizer for UNIX Status Bars
Barvis used as a background behind the yabar linux status bar.
Many applications can be used to add a music visualizer to your desktop wallpaper,
but I wanted something that would work well when confined to just a narrow system status
bar. Barvis reads the output audio of your system using GStreamer and then creates a simple
visualizer effect in OpenGL shaders.
Currently the project requires a separate status bar application to be run on top with a transparent background, but future updates could replace that need, creating an entire OpenGL powered toolbar. Nearer term plans include color configuration through a users XResources file as well as additional built in visualizer styles.
Currently the project requires a separate status bar application to be run on top with a transparent background, but future updates could replace that need, creating an entire OpenGL powered toolbar. Nearer term plans include color configuration through a users XResources file as well as additional built in visualizer styles.
imRTCL
GPU Ray Tracer
A set of spheres rendered in real time with simulated soft shadows and reflections
using the blinn-phong lighting.
A fairly simple Ray Tracer built to run in Real Time using a high performance GPU.
An empty texture is created using OpenGL and passed to OpenCL. The Ray Tracer code is
handled by an OpenCL kernel which outputs to the OpenGL texture to be displayed to the
screen once the render is complete.
Currently supports basic materials (diffuse, specular, and reflection) and rendering a number of different primitives including spheres, planes, and triangles. 3D meshes can be loaded as a set of triangles to be rendered, though anything but the simplest of models will be too expensive to run in real time.
Currently supports basic materials (diffuse, specular, and reflection) and rendering a number of different primitives including spheres, planes, and triangles. 3D meshes can be loaded as a set of triangles to be rendered, though anything but the simplest of models will be too expensive to run in real time.
im3D
3D Renderer in Pure C
A textured model rendered using im3D.
This 3D renderer implements the triangle rasterization technique, replicating
the work that an API such as OpenGL or DirectX would do for you on the GPU.
Unlike imRTCL, this project runs entirely in software on the CPU.
One of the goals of this project was to minimize the dependencies needed, creating as simple (to compile) of a renderer as possible. To that end, the project is written in pure C, provides its own .obj model importer, and can be compiled on almost any system out of the box with only a modern C compiler. The project uses the excellent stb image importer library, which provides all functionality in single-file headers. OpenMP is also used to speed up the render time on multi-core CPU's.
One of the goals of this project was to minimize the dependencies needed, creating as simple (to compile) of a renderer as possible. To that end, the project is written in pure C, provides its own .obj model importer, and can be compiled on almost any system out of the box with only a modern C compiler. The project uses the excellent stb image importer library, which provides all functionality in single-file headers. OpenMP is also used to speed up the render time on multi-core CPU's.
Adelie2D
Lightweight Game Library
A simple space invaders game built using the Adelie2D library.
A lightweight personal game library/engine for simple 2d games. I like to do things
from scratch, so this project serves to collect many useful and reusable features
to accelerate the development of personal games and projects.
It is built using the Allegro library which provides a simple 2D rendering layer on top of OpenGL, as well as platform independent input. Adelie2D expands upon this by including resource management, scene and object management, animations, and some basic math. Features are usually expanded as needed for other projects, with imGoban currently driving the majority of new features.
It is built using the Allegro library which provides a simple 2D rendering layer on top of OpenGL, as well as platform independent input. Adelie2D expands upon this by including resource management, scene and object management, animations, and some basic math. Features are usually expanded as needed for other projects, with imGoban currently driving the majority of new features.
Kaiju Smash
Ludum Dare 33 "You are the Monster"
The venerable Kaiju smashes his way to victory.
My entry into Ludum Dare 33 under the theme "You are the Monster," a rather literal
interpretation of the events theme. The user controls a glorious Kaiju as he earns points
by smashing vehicles in 3 lanes of traffic, while dodging incoming
missiles intended for his demise.
As is the nature of the Ludum Dare game jam, all assets and code were completed over a 48 hour time period. The game performed reasonably overall in the competition notably making top 100 out of 2725 for graphics/art.
As is the nature of the Ludum Dare game jam, all assets and code were completed over a 48 hour time period. The game performed reasonably overall in the competition notably making top 100 out of 2725 for graphics/art.
Reclaim
HackISU Mini Game
Java
LibGDX
The peasant farmer seeks to reclaim his gold stolen by the heroes of his world.
Made for my first Hackathon at Iowa State University, Reclaim tells the story of a video
game NPC who had
his gold stolen by heroes. The player sets out with their loyal pitch fork to
explore the world and reclaim their lost treasures.
The project was completed over a single weekend and included a short (yet cheesy) opening and closing cinematic.
The project was completed over a single weekend and included a short (yet cheesy) opening and closing cinematic.
Artillery
Because Tanks are Cool
A tank lets out some of its hatred for small hills.
One of the many unfinished projects in my arsenal, but I'm still very happy with what
I had. Intended as a turn based multiplayer combat simulator, the main gimmick was
the ability to modify the terrain in real time with tanks and mortar troops.
Some features I did get around to implementing included some very simply local networked play, three unique troop choices that could be spawned to aid your leading tank, and an upgrade system to improve canon fire. Upgrades included shots that split in the air, on the ground, bounced, or exploded into fire which burned in an AOE, with split shots being particularly excellent at crippling my real time terrain destruction code.
Some features I did get around to implementing included some very simply local networked play, three unique troop choices that could be spawned to aid your leading tank, and an upgrade system to improve canon fire. Upgrades included shots that split in the air, on the ground, bounced, or exploded into fire which burned in an AOE, with split shots being particularly excellent at crippling my real time terrain destruction code.
Bloom
Ludum Dare 29 "Growth"
Java
LibGDX
Actual gardening is probably more fun.
The first game I ever finished. Horrificly boring, it's only redeeming
qualities were a pleasant art direction and that it worked at all. The goal was to
use rain water to help the tree bloom while simultaneously keeping the tree
from drowning.
Adelie3D
Free Software for All
C++
OpenGL
Bullet Physics
Qt
Well objects are used to stress test the capabilities of the scene editor.
For the longest time my goal was to have a complete and working 3D engine. Although the
project has long since been abandoned, I'm pretty pleased with how close I got and would
like to revisit this goal sometime in the future.
This project predates my formal education, with code not for the faint of heart.
The engine was implemented in pure OpenGL, and provided a simple cross platform editor implemented in Qt. Scene files could be saved from this editor and then loaded into a game which in theory would use the engine. The project supported some scene and resource management, a terrain engine with multiple levels of detail, and some basic lighting effects.
The engine was implemented in pure OpenGL, and provided a simple cross platform editor implemented in Qt. Scene files could be saved from this editor and then loaded into a game which in theory would use the engine. The project supported some scene and resource management, a terrain engine with multiple levels of detail, and some basic lighting effects.
Ink()
You Gotta Start Somewhere
C++
DirectX 9.0c
Bullet Physics
Win32
The editor for the Ink() engine, in this screenshot the brush
tool is used to paint vegetation on terrain.
Notable as the first major project I worked on and the earliest for which
I still have screenshots. The goal was a simple 3D engine
using DirectX 9. I had the basic engine done with a simple editor implemented
before rebooting this project in OpenGL, calling its replacement
Adelie3D.
This is the project that actually taught me C++, with a proper understanding of pointers only clicking a few weeks after having already started.
This is the project that actually taught me C++, with a proper understanding of pointers only clicking a few weeks after having already started.
Inside the dark caves of the Allegory, featuring industry leading water effects
and normal mapping.
I did create a tiny project using this engine, loosely inspired by Plato's Allegory of the Cave.
The project provided a small world for the user to explore displaying the engines
technical prowess in full glory.