Wednesday, April 28, 2010

AFRL (Air Force Research Lab) Game Lab

For the past year I have been heading the game lab at the AFRL in Mesa, Arizona. We have been building a few games for training as well as modifying some existing simulations to work with our games. I can't talk too much about the project, but I will explain a little.

Essentially, the lab has 4 different games that can play together in the same scenario. I needed to create processes to generate the same terrain, models, and animations for each game. So, someone in the flight simulator can fire a missile and can kill someone in the UAV simulator. It is a pretty neat system that is being used for many different training applications. The great thing about our networking system is that you can plug in our games alongside full fledged flight sims or real planes and do training exercises. It is pretty neat to see the graphical representation of a real plane show up in your sim, and to see him bomb your target.

Because we have this capability, it is important that our terrain matches real life. So, all of our terrain is generated from NASA elevation data for the world. Our test area is in the mountains north of Nellis Air Force Base right now.


iPhone development

When I got my iPhone, my personal project interests switched to iPhone development. I have two projects currently. Learning Objective-C wasn't too bad, and OpenGL ES is mostly the same as regular OpenGL.
My first game is a DOTA clone, as of right now I have a start menu, a map that can be zoomed or scrolled, and a player that will move along the map to where you touch.
My second game is called Tumbleweed, and I made it in the 3 hour drive going to Christmas at my parents. My brother was riding in the car, so I had him make some sprites for me. It was a fun challenge. You play as a tumbleweed trying to keep tumbling. The levels are auto generated and you dodge things like fences and cacti. Difficulty increase as you go. It was pretty fun to make this game then load it onto the iPhone and let my nephews play it when we arrived. Yay rapid prototyping.

Monday, September 15, 2008

Gnome Arena

I am currently working on my senior project. This is a pc game based on DirectX. As a team we are building the game engine from scratch. The following is a simple game overview from our game doc:

Gnome Arena is a third person adventure game for the PC. The player controls a gnome character who is a member of a team that competes in nationwide tournaments versus other gnome teams. Being small creatures, the gnomes entertain themselves with their national pastime, battling in the arena. Arena battles consist of two teams of gnomes competing to be the first team to take down a giant opponent. These giants can be anything from a giant animal, to a gnome constructed robot. These events are attended by huge crowds, and overseen by the local governor, similar to Caesar at a Coliseum event.

Each tournament will allow the player to guide his or her team against an ai controlled team or another player. Using various weapons and gadgets specific to their team, they will attempt to attack and take down the huge monster before the other team can do it. They will have the option to use many different tools to either attack the monster or the other team to attain their objective.

Here is a screenshot of the current build:


All assets are place holder right now. On this project, I am in charge of design, physics, rendering, and gameplay. I will also be implementing scripting and multithreading as part of the graphics engine. To give you an idea of what I am going for, below are two concept art samples that fit my vision for the game.























Monday, February 11, 2008

PaperTankDS

PaperTankDS was the first half of my mid-program project. I wanted to become familiar with coding for a console and was intrigued by the unique arm9 + arm7 architecture that the Nintendo DS has. So for my first project I presented Paper Tank as an idea for our team to create. It was selected by my team, so I took over as the team leader.

PaperTankDS replicates the paper and pen game that I often played in school. You divide a paper in half and each person draws a set number of tanks on his side. The players then take turns drawing a shot on his or her side and folding the paper over to see if the mark translates to a hit on the opponent's side. You continue taking turns until one player has no more tanks.
We replicated this experience on the DS, even down to the detail of folding the paper to take a shot. In PaperTankDS, you can mark your shot on your side, then fold the DS in half and open it to reveal the shot on your enemy's side. Testing showed that players didn't want to always use this mechanic, so we allowed the up key to also take a shot. My nephews really enjoyed the folding aspect of the game.

We implemented an AI for the player to compete with. The AI will take shots, trying not to make them too close to each other in order to reveal areas that haven't been revealed yet. On easy, the AI has the same size of view around each shot that the player has, so if a shot is close to a tank, the AI will attempt to kill that tank. Sometimes the AI will overcorrect, and miss again, and sometimes the AI will hit the tank.
I also worked on implementing the menu system and stat tracking system. Players can see how many games they have played, how many tanks they have hit, and their win and loss record. This game is currently reviewed at http://fromthegutter.org/?p=611 if you would like to see initial reaction to our beta version.
Writing this game helped me learn how to convert graphics files to be used as sprites and how to map these to the different video banks of the Nintendo DS. I also learned how to manage the limited 128kb of memory that the DS has for 2D sprites to avoid running out of space as the user placed over one hundred different shots on their screen.



Direct X Brick Breaker



This game was part of my Direct X class. It is a simple brick breaker clone done in Direct X.

This included background music and sound effects as well as simple collision. The bricks are removed as they are hit and a spinning tiger.x model is revealed.

This used basic sprites, lighting, materials and shading.


Design Logic (Code Generator/Visual Programming Language)

Design Logic is the first major project that I have worked on. It is written using C#. Design Logic lets the user create a flowchart of a program and will then generate code in C#, C++, or Java that is then compiled and run. The user can also choose to debug the program and will be able to step through each process. Devry University is currently using this for beginning software development courses as part of a beta testing program. Full use of the release version in all Devry campuses is planned for November, 2008.

My role with Design Logic began as an intern for Engineering & Programming Solutions. The last major features were still being implemented. I did general bug fixes and implemented small interface changes as well as familiarizing myself with the program as a whole.

I took over as lead developer for Design Logic with all major features in a beta state except for one, multiple methods. This was my task, to implement the use of methods or functions that can be called from within main. I implemented this feature from the graphic interface down to designing the way the code for methods would be generated. Design Logic can now use methods like the calculate pay method used in the flowchart above. The method looks like this:


We had weekly meetings with about 8 or 9 professors from different Devry campuses across the country who were beta testing the software. From these meetings I brought problems to the team for discussion in our weekly team meetings. I managed a team of about 8 developers and 3 people in documentation.

We used a versioning system to keep track of changes and a bug/task tracking system to keep everyone on task and to make sure that we were able to meet deadlines for our publisher, Pearson. I worked with new members of our team to help them learn the program and fix bugs that were assigned to them.

I also reviewed all code changes submitted by the team and made sure that they were implemented without breaking any other aspects of the code. Design Logic has given me a view of how to work in a team and work successfully with other developers to meet deadlines for a project and create a very powerful tool.

Here is the code generated by the program in C# for the above flowchart.