X-Craft

X-Craft is a 2D, top down cooperative game where two players take control of a boat in order to defeat enemies. One player takes the role of the driver. Their job is to steer the boat and manage the ship's energy. The other player takes the roll of the gunner and manages all of the ships weapon systems. This game was created entirely in C++.

Role

Technical Director

Graphics Programmer

Programmer

Team Size

Seven

Tools / Languages

C++

OpenGL

Json

Git

Visual Studio

Contributions

Designed and created 2 OpenGL graphics pipelines

Established a core engine architecture for managing a game engine and game objects

Formulated a space management system for rendering multiple game displays in a single frame

Developed a shader to render top down water to a screen

Other Team Members

Gabe Miller - Producer, Programmer

Zach Dolph - Audio Programmer, Programmer

Calvin Hughes - Lead Artist, Game Director

Jonathan Williams - Level Designer

Lars Aarhus - Lead Sound Designer

Sukayana Ratanotayanon - Graphics Programmer

Graphics Pipeline

While working on this game, my primary contribution was the graphics pipeline I created to render the game. You may have noticed that I said I created two graphics pipelines in the table above. It's true, I actually did create two, but the first was so incredibly terrible that I needed to go back and refactor it from the ground up. Here, I will briefly describe the final results of the system and how they work under the hood.

- Currently Under Construction -

Water Technology

This project was the first project that I used custom shaders in. One of these was the water shader used in the game. Though it is not very complex, I worked on a few features in order to give the water a stylized look that can be changed with ease.

There were a few goals that I had to meet when creating this shader. It had to match the art style of the game fairly well, represent a water surface, and scroll across the screen to accurately represent the motion experienced by the player's ship

Below, there is a download link to the shader's source files and two links to gifs that show the results produced by the water shader. The bulk of the shader code is in water.frag. This file has also been fully commented to provide an in depth explanation of the shader and how it works.

Looking Back

I do not think that X-Craft turned out to be the best game that I had the pleasure of working on, but I am definitely proud of it. Before X-Craft, I had only made games in pre-built engines and Visual Basic. X-Craft, however, was the first game that I worked on from the ground up in C++ with seven other talented teammates. Before starting this project, I didn't know what glGenBuffers(1, &vbo) meant or what it was supposed to do. I had no idea why matrix transformations could move graphics on the screen. I wasn't even fully comfortable with typing and entering git push origin [branch_name]. Now I have that aliased because it was too many keystrokes. Unlike any other project, this is the project that took me from a noobie programmer to a decent computer scientist who isn't affraid to get messy with some code.