Final Project: Burned Dirt

 

CSC 471 - Winter 2004

Instructor: Dr. Wood

Author: Spencer Roberts

 

     My final project:  remake of the ancient computer game Scorched Earth based on the Mac game Dome Wars that was probably the first game I ever played on a computer.  The remake is in full 3d and features the ability to create terrain, and add textures to that terrain.   The game is a simple turn based artillery shooting game that supports up to 10 players.  Last player alive wins.  I did not implement the money system where you can purchase better weapons nor did I implement any sort of AI. The focus of this project was more on terrain generation than the actual game-play.  I was trying to focus on more graphical aspects of the game so that it would be a fitting final graphics project, so I regret that I did not implement many features that I would have liked to have added by this release.

 

 

 

Figure 1: Initial Startup

 

Terrain Generation:

     When the program loads it generates a random 'medium' map and generates a texture to go over it.  Click 'Terrain Generation" to begin this process.  The terrain generation toolbar allows you to change the map size, the display style, the texture style and texture resolution.  You may also either draw onto the terrain or rotate about it with the mouse.  The map sizes: small corresponds to a 16*16 grid of squares, medium - 32*32, large - 64*64.  Note: large maps are 1) difficult to shoot across being so large, and 2) tend to lag.  Display style: wireframe or flat - self explanatory (only used in texture generation all game-play is on filled map).  Texture style is either simple or not simple.  Simple textures are completely generated by the program.  For complex textures the program reads in texture files and uses them as a template for each level.  Texture resolution refers to how many pixels are computed across each square.  Note: Texture resolution must be a power of 2 and for complex textures must be 16 for Large maps, 32 for medium maps,  64 for small maps to keep the aspect ratios of the input textures.  The smooth button smoothes all the terrain by blending the heights at all the points around each square.  It does a very nice job and will automatically recalculate a new texture for this reason it tends to lag. The randomize button generates a random height map for the terrain and then smoothes it once.  The clear function brings the height map down to zero and clears the current texture.

 

Figure 2: Different Views of Randomly Generated Terrain

 

Player setup:

     This should really be a side note and does not denote an image.  To set it up for more than 2 characters click the 'Players' button from the main menu.  You can set the number of players in the spinner-box from 2 to 10.  Then select a color for each player from the drop down boxes.  I was going to add in player names and other customizations but GLUI seemed to crash every time I used an EditText textbox. 

 

Playing:

    To start playing select 'play' from main menu after selecting the texture and players you want.  The players are randomly distributed across the map, never in water unless there is no other choice.  Never within 0.96 units of another player unless there is no other choice.  Player 1 goes first.  The angle to the vertical is referred to as theta, the angle to the horizontal is referred to as phi.  The power of the shot is not proportional to the size of the map, the size or the projectile nor the size of the player.  A 5 power shot will go about half-way across the map of any size there is no upward bound on the power of the shot but if it ever leaves the bounds of the terrain it disappears.  An explosion is created at the point of impact and the ground is dented.  The size of the explosion is proportional to the size of the tank.  The size of the dent is constant.  A tank will follow the ground downwards if it is dented below him.  A tank is only destroyed by a direct hit to the dome of his tank.  The game is played to the last man standing. 

Controls:  'a' - theta(+)  'd' - theta(-)  'w' - phi(+)  's' - phi(-)   'q' - power(+)  'e' - power(-) 

 

Figure 3: Playing Game