Lab::Portfolio
Pogo Racer
This was my final project for Dr. Sinzinger's CS4395 Intro to Graphics course. The point of the game is to get the fastest lap-time, which is posted in a high-score table. It features shaders, fractal terrain, .obj model loading, procedural textures, a high-score table, intro screen, lap detection, and lighting. It was written in C++ with OpenGL for rendering and GLEW for handling shaders under windows.PogoRacer (source-code)
Kanji Majyo
This was my solo project for Dr. Sinzinger's CS4397 Intro to Game Development course. The goal is to defeat enemies using your mastery of Kanji (Japanese Characters). Gameplay goes like this: you are presented with a word, say "ichi", you then draw the characer in the center space (it helps to have a Wacom tablet for this). If you get it right, you have the option to "continue" or "push". If you press "continue" you go on to the next character, but if you "push" you have to type in a word (in romaji) that uses that character, so jyuuichi (eleven) would work. You get double points for this, you can then push further, by doing this you have to write the word you used in Kanji on the board, for every character in the word you get two points toward damage to the enemy character. For the boss battle you will have to push a lot since he has 40 hit-points. I did the programming, scanning, and initial character designs. Jessi Barr took the character designs and inked them, which helped a lot in the scanning process. The final program was written in entirely in Java, with an early prototype using C++ w/SDL.KanjiMajyo (executable .jar)
CDC 2050
This was our final project in Dr. Sinzinger's CS4391 Intro to Game Development course. The point of the game is to kill the tumor located in the brain at the end of the level. Along the way you will be attacked by tumor cells and infected blood cells. The group was me, Matt Fountain, and John Friar. Matt did the models, John did the level design, and I did the graphics and gameplay programming. The game was written in XNA over the course of about a month.(Requires the XNA Redistributable to play)
CDC 2050 (source-code)
Mega Hovertank Wars
This was my final project at Texas Tech for Senior Project Design. The point of the game was to test the limits of next-generation web-standards, notably WebGL, WebSockets and HTML5. You join a game and then shoot other tanks with large spinning cubes until only one person remains. The game is networked so you are playing against other players through your browser, though that browser seems to be only Firefox 3.7a (Minefield) at the moment. The team was Timothy Poon (Networking, PHP Guru-ing), Trevor McKeehan (Networking, QA Testing), Richard Mauldin (UI, QA Testing), and myself (Graphics, UI). Initially I wanted to get to Beta within a month and do extensive user testing to get the gameplay right, but the graphics side was plagued with troubles and I ended up having to port the Canvas-2D based engine to WebGL two weeks before the project was due. It ended well though, and testing it was a lot of fun.A Powerpoint Presentation I gave on the rendering code.
(I'll post the source-code soon, hopefully I can get a server running so you can see the game for yourself)
I did this as a proof-of-concept over the Christmas break. The hope was to make a 3D engine in Canvas2D, though that turned out to be more difficult than I had anticipated.
This was an optimized version of the engine, I split off the math routines into a seperate file and while the first engine was array-based, I switched to objects to improve performance. Polygon-sorting issues plagued development, and everytime I thought I had the problem solved, two more errors would pop up to take its place. I eventually had to give up on Canvas2D due to the lack of a Z-Buffer.
This is the final build using WebGL, the code was initially ported over the course of about four days. I did an experimental engine after the port, to see how texturing would look, but I was left with a tradeoff of loading times versus quality, eventually I chose to go with quasi-procedural textures (gradients basically). The experimental engine (Build-X) did have better shader integration and object-orientation, so I took those parts from it and merged it with the original port. The code came out fairly clean and fast, and combined with the networking code without a hitch.