Managed World

Techno-babble from yet another babbler RSS 2.0
# Saturday, May 28, 2005

** Disclaimer: This is not meant to be a complete Design Spec. It is meant to provide the read with enough information to follow along with all tutorials. **

Game Description

The game we will develop in this article is a simple, two-player, “Combat”-like game called, well, “Tanks!“ (Combat was that old Atari game, you remember? There was one mode on it that was two tanks trying to kill each other. Yeah, that is the mode we will be building this game (think of it as a 3d version of that Combat mode)). As you’ll see, the layout of the game is not that complicated. The meat of the game takes place within the boundaries of a simple arena. Each different arean will have several “targets” that you can run over to get upgrades that last just for that round, or to earn money in order to buy upgrades after each round. So, you have to make a decision, go for upgrades, go for money, or go for destroying your opponent.

A round is won by being the first player to kill your opponent three times. After each round, both players can upgrade their ship depending on how much money they have earned during the round. Once all upgrades are confirmed, the next round starts. The first player to win three rounds, wins the match. Once a match is finished, the players are presented with a match review screen that will show the breakout of the match (i.e. money spent on upgrades, damage inflicted, # of direct hits, etc.).

There are basically two modes the game can be played in: single player mode, and multiplayer mode. If the player is playing a single player game, they will be playing against the computer. All in all, there are only four screens and two modal forms in the entire game: Main Menu, Vehicle Choice, In-Game, Vehicle Upgrade, Match Review, and Best Scores. The state transition between the various screens is pretty simple and, I hope, self explanatory:

ScreenState

Development

The development of this game will be basically done in two stages. First is a prototyping stage. In this stage, all graphics will be “programmer” graphics (and usually will just be solid-color primitives). This will allow us to focus on the design and functionality of the game. The last stage will be a “Makeup” stage. This is the stage where we will upgrade our graphics, add our eye-candy, tweak the AI, etc.

This series of articles will be done with a focus on object-oriented design. Periodically, there will be references made to existing Design Patters from the Gang of Four. When this is done, a brief explanation of why will be provided as well as a link to learn more. Although we could just throw the game together and call it good, I think it is important to understand how to properly design the game so that future projects will be easier to do. Obviously, since this is not a book, there will be concessions on what we can and can't talk about. As much as I would like to emphasize proper design, I believe it is also important to keep these articles nice and light so anyone reasonably comfortable with OOP can understand them.

In Closing

Overall, “Tanks!“ is quite a simple game. The goal of these articles (and of building the game) is not to learn how to program a blockbuster. The true goal is to learn how to write cohesive, testable, and maintainable code by using a conceptually-simple game as a context in which to learn. Also, as you will notice (it is no secret), this game will be developed using C# and Managed DirectX, although I like to think the architectural lessons learned can be applied to any development platform.

As an aside, why not call these articles "Tanks!" instead of "BooM!"? Well, BooM is the actual game engine that we will be developing. Tanks is the windows application that will sit on top of our BooM class library. I hope that through this process we can accomplish two things. First, develop a game, of course. Second, develop the underlying technology in such a way to be re-usable on future projects.

If anyone has comments on the writing style of the articles, or comments for future enhancements to the game, please feel free to contact me at the email listed.  

Prerequisites

It is assumed that you have a strong understanding of OOP principles and a general knowledge of Patterns. Everywhere that a pattern is used, there will be a link to provide you with more information to learn about the pattern. Two patterns books that I highly recommend for any serious developer are:

Design Patterns - by the Gang of Four

 

Patterns of Enterprise Application Architecture - by Martin Fowler

 #       Comments [3]

Contact

Email Me Send mail to the author(s)

Calendar

<May 2005>
SunMonTueWedThuFriSat
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

About this site

Jason Olson's thoughts on Programming, Games, Music and Life in General

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2008
Jason Olson

Sign In
All Content © 2008, Jason Olson
Theme based on 'Business' created by Christoph De Baene (delarou)