Description
For our team project in CSC-476 - Real Time Computer Graphics we created a turn based strategic first person shooter.
The game is played with two players who take turns moving their units and trying to shoot the other team. The turn starts with an overhead view of the battlefield, where the current team's player can select one of their units. Once selected, the player takes control of the unit and has 15 seconds to move and take a shot with their weapon. If the player runs out of time or shoots their weapon, the turn will change to the next player. A player must cycle through all of their units before a previously used one will be available again. We made this decision so players would be forced to use all of their units. Once a player has defeated all of the enemy team's units, the player wins.
Mini User's Guide
When the game begins, the player will be shown a quick intro to the controls of the game. To dismiss this dialog, click anywhere on the screen. The game starts with player 1's turn. To select a unit, click them with the mouse. Available units are indicated by a white circle beneath them. Once the player has taken control of the selected unit,they can move around with the W, A, S, and D, jump with the space bar, and fire their weapon with a left click. The shot will go to where the crosshair in the center of the screen is pointing. Around the battlefield are a variety of pickups. The spinning boxes with plus signs are a health powerup, which will give the unit and additional health point. Health points are indicated by the number of boxes above the units head. The gold spinning weapons are shotguns and transform the unit's weapon into one that fires five projectiles in a spread. The game will switch between the turns of the two players and end when one of the teams has no units left.
Screenshots
Animations
Camera zoom when selecting a player
Collecting a health powerup and shooting -- 1
Collecting a health powerup and shooting -- 2
Idle animation
Shotgun shot and unit death
Picking up a Shotgun
Environmental Mapping and Skybox
Resources we Utilized
Technologies implemented by us
- A camera/view that changes
- The camera goes from an overhead view to first person view. The camera is free to move around while in first person.
- A nice complex environment with characters that navigate and interact with that environment
- Characters move around the battlefield when possessed and can jump around on the terrain, collect objects, and shoot other players.
- Characters in the game were modeled hierarchically which allowed for hierarchical animation.
- Some form of collision detection and response using a spatial data-structure
- Some of the collision detection done using a unifrom spatial subdivision created when the map is generated.
- Shadows
- Shadow mapping from a single light source implemented similarly to how it was done in the shadow mapping workshop.
- Hierarchical view frustum culling or appropriate occlusion culling
- View frustum culling implemented via looping through game objects and testing if they are in view done similarly to VFC workshop.
- Two specialized rendering techniques
- Environment mapping and normal mapping were implemented in our game.
- Level creation tool
- Our game reads in a picture representing our map and generates the terrain using the color values of grids
- Sophisticated HUD
- Our hud was implemented through a variety of methods. Billboards are used to show the controls at the beginning of the game, and to show whose turn it is. Blocks above the robots represent their health points. White circles under the robots represent if they are available to use or not. A shrinking bar on the left side of the screen in first person view shows how much time is left in the players turn.
- Complex pathing
- The camera system for our game utilizes linear interpolation to move from the overhead view into first person view. The camera also is able to track game objects. The tracking feature was used to follow game objects such as bullets when they were fired by the player.
- Shading
- Motion blur is done using an FBO. Motion blur happens when a bullet is fired
- Game effects
- Particle effects are shown when one of the units dies. These were created by saving an array of textures to the GPU and iterating through the textures after each render call.