Intro

       Real Time Tactics (RTT) is a grid based real time strategy game in which you control a group of warriors, mages, and archers to defeat the enemies.

Game Description

The goal of the game is to eliminate every enemy. This is completed by moving your characters around, in a strategic way, so they can kill the enemies. Each character has their own attack and own special move. The warrior has a basic melee sword attack that deals 1 damage and can only reach 1 tile around him. The warriors special move is that he deals double damage for a certain amount of time. The archer has a basic bow and arrow attack that deals 1 damage and can shoot 4 tiles out. The archers special move enables him to walk twice as fast and dodge the next attack on them. The mage has a magic attack that hits an enemy within 4 tiles and then also effects every enemy within 1 tile of them for an area of effect. The mages special move allows him to call upon a thunder storm that damages all enemies on the field by 1 damage.
The game is challenging enough to where you must strategic move around your characters if you wish to defeat all the enemies.



Techincal Features

1. Particles and billboarding

       The particle system uses instancing in order to render large numbers of quads without any significant frame drops. Particles are simulated individually, each having their own life time, color, etc. Textures for particles are supported, although not used in the game. Billboarding is done through much of the same way particles are done. A quad or other geometry is rendered to screen space, always facing the camera. We used particles for attack effects and billboarding for healthbars and the selected hero icon.

2. Shadows

       Shadows are done using the shadow mapping technique. A framebuffer object is created that allows depth rendering to be diverted into a texture. Two passes are done. First, the scene is rendered to the shadow framebuffer object, rendering from the orthographic viewpoint of the light. The scene is then rendered again in the main framebuffer and the shadow texture is sampled in the lighting fragment shader to darken fragments in shadow.

3. Animation

       We have animations for walking and attacking for each of our 3 types of characters. The walking animation stays for when they are idle, but the attack animation is timed to when the character actually attacks.

4. Collision Detection

       Collision detection is done through axis aligned bounding boxes. Each character, arrow, and environment object has a bounding box. Because our game is grid based, the only object that we have to check collision with is the arrows. We check each arrow against each character and object. If the arrow hits an object, it will stop and stay stuck into the object. If the arrow hits a character, it will get stuck in the character and move with them.

5. Tweening

       Tweening is done through a variety of equations. The tween engine takes a float and runs it through a specified equation over a specified amount of time. Equations used in the game are sine equations, circular equations, bounce equations, and exponential equations.

6. Level Editing

       The levels are read into the game through a text file. Since the game is tile based, the text file has letters that describe what object should go on which tile. This method makes creating and editing levels very easy.

Controls

  • MOUSE: Left Click to select a character
  • MOUSE: Left Click a tile to have the character move there
  • SPACE: Cycle through your characters
  • LEFT SHIFT: Special attack
  • TAB: Zoom in/out
  • WASD: Move Camera

  • References

    Collision Detection http://www.cs.princeton.edu/courses/archive/fall00/cs426/lectures/raycast/sld017.htm

    Shadow Mapping http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-16-shadow-mapping/

    Billboards http://www.opengl-tutorial.org/intermediate-tutorials/billboards-particles/billboards/

    Particles http://www.opengl-tutorial.org/intermediate-tutorials/billboards-particles/particles-instancing/

    Skeletal Animation http://ogldev.atspace.co.uk/www/tutorial38/tutorial38.html