Projects
-
Tank Frenzy
The starting of my capstone game, this game was designed
and developed as part of a team. This game is a cooperative tank combat
game with an advanced AI. Along with working on a neural network and
networking. I developed a custom file format that we used for exporting, static
and animated models. This part of the project excited me, as I have never
working on something like that before and it proved as a real challenge to
write an exporter for Maya and calculate the transformations for each of
the bones.
This project is still in development and can be followed with my blog or the groups blog (). I have developed several prototypes for this game. One of the prototypes being a neural network replacement for a decision tree, or state based system to handle the high level artificial intelligence. This is approach is risky for implementation in our game but as a masters student I see now being a good time to take this risk. The neural network as I have it acts in revision one works well as a replacement for these base systems. The next revision uses a heuristic to determine learning pattering and adapt the network to change the interaction between the player and the computer. This project is important to me because I feel that a neural network is a powerful tool that can have many uses if used properly and little is understood about how they can be used in games, so this is my attempt to answer some of those questions.
The file format for our static and animated meshes is something that I am proud of. I developed an exporter for Maya and an importer for our rendering pipeline to render static and animated meshes. This file format was developed as we wanted a format that we could load right into our vertex declaration and we wanted some custom information to be exported from Maya to help us place things such as particle effects. -
TimeSlip
Working with three software engineers to build this game I have learned a lot about code design, structure, and development practices that I still use when I develop today. Working with this project I have also learned about the MD2 quake format and the OBJ file format. I work with another student to develop a loader and render for each of these formats. File / Network protocols were of an interest to me for some time and learning about these formats helped me when developing the format for our capstone game.
-
Contaigen
This game was a genetic algorithms based game that was developed for the Dream-Build-Play challenge. The game was designed and developed over a period of five weeks by three people. You are a scientist manipulating the genes of bacteria in attempts to combat the other scientist in the battle of the Petree dish. This game challenged building a game based on artificial intelligent techniques. This was the first XNA game I had developed.
This game proved challenging in coming up with an idea that was based on artificial intelligence. The idea to use genetic algorithms stems from being in a class that talked about A-Life or evolutionary computing. As you may notice one of the things that I am very interested in is developing a system that enables the NPC units to learn and adapt to player styles of play. I feel that games that have a varying level of difficulty are good but I often wish that as I got better the computer player would evolve to meet my standards.
There is some risk in this approach, I do not want a computer player to always match my level as it may become frustrating I would like the computer player to challenge me in my current mode of play without having to exit and start on a higher difficulty setting.
-

Bloxen
The first 3D game I developed, the game was a Lego® based third person shooter. The primary mechanic was to build obstacles and capture the enemy’s flag. I worked on the engine and the networking. As an undergrad I noticed that networking was the up and coming. This game was my first crack as using what I have learned in classes and applying it to a game. The game was played by many students in the lab and could support upto 16 players. The students would often come to me with feed back or ideas to add to the game and I would evolve the game slowly as I had time. Where it stands now is not much different from the project I turned in four years ago.
Working with three software engineers to build this game I have learned a lot about code design, structure, and development practices that I still use when I develop today. Working with this project I have also learned about the MD2 quake format and the OBJ file format. I work with another student to develop a loader and render for each of these formats. File / Network protocols were of an interest to me for some time and learning about these formats helped me when developing the format for our capstone game. -

Ray Tracer
This ray tracer is an on going project. I chose to take the artificial intelligence path through my masters, and many of my friends in the graphics track were building ray tracers. After looking over their shoulder and helping with small problems that creep up. I decided how hard could this be and decided to build one of my own. So here is the picture of that.
After developing several games over the years, I did not find this project to difficult. I started by reading several papers about the concept of how they work. Then developed a simple framework that would enable me to shoot rays from point a to point b and return the color of anything they collide with. I then used what I have learned in games and added simple diffuse lighting then phong lighting. After reading up about where to go from there I implemented refraction, and added a camera that supported depth of field. I have not updated this in some time as I have been busy with my capstone and GDC09 -
Emotional Belief System
This system was developed as an independent study in work with a professor to build an emotion engine based on a parallel Bayesian belief network. The inputs into the system are given by a fuzzy state machine or an interface. The interface I have built allows you to add various emotion states to the Bayesian belief network and the system will compute the end emotion of the character. I represent this emotion as a facial representation using the six iconic emotions.
This project uses a combination of six images that are tweened in the pixel shader to produce the final image. The inputs to the tweening are based on the outputs of the Bayesian belief network. An example of this is, a person who is 80% happy and 15% surprised and 5% angry may have raised lips, and eyebrows with a slightly opened jaw. -
Gesture Recognition Neural Network in C#
This was a project that I developed for an AI in games class. This project uses a neural network that I have built in C# and a simple interface that takes in hand writing from a tablet. This then learns a user’s handwriting and attempts to convert the written letter to a typed letter. This project can also be converted to understand gestures for the WII mote.
-
Evolving Tactical AI for a FPS using adaptive
This project I developed an AI that works off of a line of sight, and sound to find the user in a top down first person shooter style. The player and the computer have not information about the layout of the room they are in. As a player walks around the room for the first time they learn the layout of the room and only then do they know the shortest path from A to B. The computer does the same thing in this game/prototype. The AI starts off with no existing knowledge of the world and as it walks through the map they learn about the walls and eventually know the shortest path from point A to point B the AI uses an adaptive A* algorithm with a restricted knowledge to pathfind.
The AI also only knows about players within sight and will target those players, the method for doing this is simple in this game because there are a restricted number of units and it is fast enough to check for each player in the game if they are within field of view by shooting a ray. Ways to optimize this are to implement a binning system that culls out characters not in the same room or adjacent rooms.