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.