Man Vs. Wild: The Game (X360, PS3, Wii)

I participated in this project through MSU's Telecommunications Game Design Specialization Senior Capstone Project.

Scientifically Proven Entertainment used our class as a rapid prototype development team. We created different mechanics for different situations, Bear Grylls typically finds himself in, during episodes of the Man Vs. Wild TV show.

This was indespensible game development experience. A major lesson learned was that not every implemented concept is worthy of inclusion in the final game and that only after implementing it was it possible to decide. It also emphasized the need for effective and efficient communication between team members working with a large team.

Boeing Sparse Virtual Texturing (SVT)

This project orginated from MSU's Computer Science Senior Capstone Project. An SVT is a high resolution mip-mapped image format that efficiently lays out data on hard disk. This application was written in C++ and OpenGL using OpenSceneGraph (OSG).

Our plug-in reads in an XML file that defines geo-coordinate locations for each SVT supplied as well as embedded shader code that allows each XML to blend textures in a custom configuration.

In this project, I designed the classes required in order to extend the existing functionality. I worked with another team member to write the shader code that applies these textures to arbitrary objects. Our implementation requires a pre-render image for each SVT, supplied by the XML, in order to ascertain which texture coordinates are visible to the viewer. I wrote the shader code to do this by leveraging multi-sampling capabilities and rendered these samples into a frame buffer object to be processed by the CPU.

Embedded shader code is a powerful tool provided by this software and I designed its implementation. When embedded shader code is detected, preprocessor commands are used to compile a separate version of the shader to optimize performance. In this version, I defined an array of texture coordinates populated with correct information before the function call containing custom shader code. This array is then available in the custom shader code through TEXCOORDS and can use the supplied macro TEXTURES(i) to sample the i-th texture using the i-th texture coordinate.

Writing portable GLSL code is a challenge because Nvidia graphics cards support Cg and properly interpret deprecated commands whereas ATI's compiler is very strict about precision and use of deprecated commands. I did the extra work to test on both platforms and insure portability between either graphics card hardware.

This project received the 2010 Chrysler Praxis Award, which is presented to the most technical computer science project.

View project video here

embedded shader demo
dynamic image texturing
high res screenshot

Cash Derby

Cash Derby is easily the most entertaining game I've been a part of so far. This game is so fun because players are pitted against one another to collect as much money as possible. We created multiple levels and mechancis to keep replayability high with this game. I worked on a little bit of everything in this game as I was in a leadership position.

I coded most of the networking functionality and some of the in-game GUI. Some of the tricky network problems were initializing games, instantiating money bags after collisions, destroying money bags after being picked up, and collisions between cars themselves. Many of the issues I had stemmed from inexperience in coding networked games but this experience has taught me many of the basics and my next multiplayer game will be substantially more optimized and I'd be more willing to implement more advanced game mechanics.

It may be necessary to port-forward port 25002 in order to view available servers.

View Relevant Source Code

Play Cash Derby!

jumping the volcano
losing all my money
game of chicken at the coliseum

Welcome To California

For a 4 week project Welcome To California turned out pretty good. There was good balance in gaining water, putting out fires, and using water to increase hydration to create a shield even if it's only temporary. This leads to a solid mix of action and strategy.

We based the game on a hexagonal grid. Each grid has attributes tracking integrity, hydration, and temperature. When the temperature rose to a certain point a fire would be triggered and integrity starts to decrease over time. After integrity drops low enough new models are swapped in to look burnt and charred.

In this game I worked on hexagons finding their neighbors, ponds and lakes acting as a single tile, the pond draining effect, and fire spreading across the landscape. I also did the out-of-game GUI.

View Relevant Source Code

Play Welcome To California!

Forest Escape

This is my first game. The theme is transformation so my group and I decided to make a game where you must transform into other woodland creatures to escape the forest.

In this game I worked on the controls, collisions, transformation effect, and pretty much everything that needed to be programmed.

This game was a disaster because this was the first project, we overscoped it, models had lots of issues that messed with controls in a 2D environment, and I was the only programmer doing any work. I'm only adding it here because of the transformation effect. I implemented it to look like the alien is using technology to transform instead of using a puff of smoke, which would make it look more magical in my opinion.

This effect is achieved by distorting individual vertices of a mesh with perlin noise. The noise increases over time then switches the model, still using lots of noise, then decreases the noise over time until the models' vertices return to their natural positions.

View Relevant Source Code

Play Forest Escape!