Project Managers: Rohit Umashankar and Seungwoo Sun
RTS (Real-Time Strategy) games have become popular due to their demanding nature in requiring players to employ a long-term strategy with upkeep of units or resources in order to fulfill a certain objective. Tower defense games are a specific type of RTS games – they require the player to prevent enemies from reaching a target location by building towers to defeat them. Some tower defense games rely on the player to build a path for the enemies whereas others specify a static map with a defined path for enemies and have the player build towers alongside the path. Examples of tower defense games are: Bloons Tower Defense, Gemcraft, Kingdom Rush, and Plants vs. Zombies, to name a few.
Your Final Project:
For your final project, you will be constructing your own tower defense game. It will contain a pre-defined path for enemies to travel, but it is up to you to decide how the game is played. Players can purchase towers and place them in the map to attack enemies. Your game will have a single player mode and a multi-player mode (additional modes of play can be included for extra credit). You are allowed to grab ideas from existing games, but you must adhere to the requirements listed below (and please cite any sources for code snippets or images that you use). Creativityishighlyencouraged.
As part of the AGILE development process, each user story below is associated with a number of story points (SP) that you should use to allot your time when working on this project. These story points are based on the difficulty and complexity of each user story, so they don't necessarily correspond to actual points you will receive for this project. The story points will be either 1, 3, 5, 8, or 13, in order of increasing difficulty. There are a total of 200 story points.
In contrast to the user stories (that use story points), the extra credit opportunities are given as actual points that you will receive, so that you know exactly how much an extra credit feature is worth before deciding to implement it.
Maps (23 SP total)
(5 SP) Each map has a background image and contains a pre-defined path for enemies such that enemies originate at their start location and move along this path towards the target.
(5 SP) Different maps have different backgrounds and paths that enemies travel.
(8 SP) A player can select at least one map that contains more than one path for enemies to travel on (so it presents a more difficult gameplay).
(5 SP) A player can select and play on at least two maps (more maps can be provided for extra credit, see extra credit section).
Enemies (44 SP total)
(5 SP) Enemies continuously emerge from the map at some location.
(8 SP) Enemies move towards a destination that the player will defend.
(13 SP) Movement of enemies is animated.
(5 SP) Each enemy has certain stats/characteristics. This can include speed, defense, armor, resistance to certain types of attacks (from different types of towers), etc. You can choose whether you want enemies to attack the towers (see extra credit section). You can choose whether this difference applies to either each individual enemy that is spawned on the map or whether it applies to each type of enemy.
(5 SP) A player can view information about a enemy by clicking one that has been placed. Information should include the characteristics of that enemy (speed, defense, armor, ... your choice).
(8 SP) The game should have at least three different types of enemies.
Towers (62 SP total)
(13 SP) Towers will attack enemies that pass by (in its range of attack). Some examples of this in existing tower defense games are: Gemcraft uses towers powered by gems and the combination of gems determine damage, range, etc. Kingdom Rush uses a medieval setting with archery towers and warrior towers. Be creative! You can decide how towers should attack enemies (e.g. whether they should attack one enemy until it moves out of the tower's range or whether it attacks enemies at the edge of its range before attacking enemies close to it … whatever makes sense for the game).
(5 SP) Each tower has a different damage amount, range of attack, and rate of attack.
(13 SP) Each tower has a different way of attacking enemies (some possibilities, of many, are: attack multiple enemies, teleporting enemies, slow enemies, poison enemies, confusing enemies [so that they either walk back towards their start or maybe they spin in a circle for a few seconds], etc.)
(5 SP) A player can view information about a tower before purchasing it and/or by clicking one that has been placed.
(5 SP) A tower's range is visible when a tower is clicked. (If a tower is upgraded, this information should also be updated; see extra credit for upgradeable towers.)
(13 SP) Tower attacks are animated.
(3 SP) Towers cannot be built such that they block the path of the enemies.
(5 SP) The player can build at least two different towers. (See extra credit for multiple tower types)
Single-player Gameplay (24 SP total)
(8 SP) Players can buy towers through some form of currency (money, points, mana power, life-force, etc.). There is a graphical way for the player to place the tower at the desired location (e.g. change the cursor to look like the tower and use a mouse click, select a grid square, etc.)
(3 SP) Players should start with an appropriate amount and are able to obtain this currency during game-play by defeating enemies.
(3 SP) Players can see their current amount of currency throughout the game.
(5 SP) The player loses the game after a certain number of enemies breach the defenses and reach the destination. Again, you can exercise your creativity here. One way (out of many) is to have the “destination” as the headquarters for the player, that also has health. Enemies can be designed to do some amount of damage to the headquarters.
(5 SP) The player can win the game by fulfilling some objective (successfully defeating some number of enemies, defeating a boss enemy, defending the destination for a certain amount of time, etc.).
Multi-player PVP (Player versus Player over the Network) (40 SP total)
(1 SP) Players must have the option of playing a game against another human player over the network.
(1 SP) Both players' maps have the same path for enemies.
(1 SP) Both players will start with the same amount of currency (usually larger than single player mode).
(13 SP) Both players will be responsible for building towers andspawningunits.(Here, “units” referstothe “enemies” insingle-playermode).Spawnedunitswillappearontheotherplayer'smapastheenemiesthattheyneedtokill.
(3 SP) Each player can spawn any of the (at least) three required types of units/enemies. The units should have different costs to spawn, based on their stats/characteristics.
(13 SP) Each player will see a mini-map of the opponent's field that also displays some helpful information about their opponent to aid in developing a strategy. The mini-map should include at least the towers that the opponent has created and how close the opponent is to being defeated. You should also include statistics such as the number of units the opponent has defeated, the number of units the opponent sends, etc. near the mini-map. Choose what is appropriate and consult with the project manager with any questions or concerns.
(5 SP) Win Conditions (choose one of the following two options):
A player wins when a certain number of his units breach the opponent's defenses.
The game is timed and a player wins when the time runs out. If you choose this win condition, put some thought into how you decide who wins (number of enemies spawned, currency value, health of the defenses, etc.). You should also account for scenarios where the game ends in a tie at the end.
General Game Characteristics & Rules (7 SP total)
(1 SP) The player can read the rules of the game anytime before game-play.
(5 SP) A player chooses between single- and multi-player game modes in a main menu. The player returns to this menu after a game ends.
(1 SP) A win/lose message should be shown when a game ends. This requirement can be replaced with a game statistics message (see extra credit).
Popular Versions of Game-play
NOTE: There are two popular versions of game-play, listed below. You are not required to follow one or the other, but if you decide against both, discuss your ideas with the project manager for approval.
Continuous: Enemies continuously spawn and the player builds towers to defend the destination. The single-player game ends when the destination has been defended for a specified time period or when a certain number of enemies have been defeated. In multi-player, players can purchase individual enemies to instantly spawn on the opponent's map.
Waves: A collection of enemies form one wave. Each wave of enemies spawns with a short pause in between waves. The single-player game ends when all waves have been defeated. In multi-player, players can purchase different types of waves to send to the opponent. Waves can be queued and sent in intervals or they can be sent instantly.
This project lends itself well to object-oriented design concepts. You are expected to follow good object-oriented design principles and ideas we've covered this semester. Please make use of inheritance, polymorphism, and design patterns when appropriate. In addition, put some thought into your design of this game so that you do not duplicate code or functionality when implementing the single-player and multi-player components.
Extra Credit (20 points max):
Thisisbynomeansanexhaustivelistofextracreditopportunities.Discussanyextracreditideasyouhavewithyourprojectmanagertoensurethatyourextrafeatureswillreceivethepointsthatyouexpect.Someofthesuggestedextracreditopportunitieswillbemuchhardertoimplementthanothers,andareworthmoreaccordingly.Extracreditideasnotlistedwillreceivepointsbasedontheirdifficulty. These extra credit features are listed along with the points you will receive for properly implementing a feature (these are not story points based on difficulty, but actual points).
Attacking enemies (4 points): Enemies can attack towers as they pass. Towers have health and will get destroyed when this health goes to 0. Players should be able to see the health of a tower and they can repair towers for a fraction of the tower's cost.
Upgradeable towers (4 points): Towers can be upgraded at least twice to have more range, fire rate, or damage. Upgrades will change the look of the tower.
Chat System (4 points): You include a chat system in multi-player mode.
New Tower Types (2 points each, up to 6 points): Introduce new tower types. These new towers must be inherently different than towers you may already have. You cannot just change the initial damage and range of a tower, for example, for a tower to qualify as different. A different tower might involve a different type of attack or a different animation. (e.g. a lightning tower that attacks 3 enemies at the same time)
Story Mode and Quickplay Mode (4 points): The requirements do not explicitly necessitate a story mode, but you can add one. Develop your single player game to follow a simple plot. Include a Quickplay mode, where a player can play a normal single-player game. Add Story and Quickplay Mode options to the main menu.
Map Editor (8 points): The player can access the map editor from the main menu. The map editor allows for the creation of new maps in a graphical window and includes load/save functionality for maps. Created maps must have a defined start and end locations as well as a complete path for enemies from this start to end. Players should be able to play on created maps.
Multiple Maps (2 points): The player can play on at least 5 different maps (the path the enemies travel must be different – you cannot just change a background image and call it a new map). These 5 maps should be built-in (you can't say that you have a map editor, so a player can play on 5 maps). However, you can use your map editor to create five maps and save them for this purpose, if you choose to implement a map editor. This feature is well-suited to go along with the story mode and quickplay mode.
Terrain Types and Effects (4 points): The map consists of a variety of terrain types, which affect the movement of enemies as well as placement of towers. Be creative.
Pause Game (2 points): The player can pause and resume the game.
Toggle Speed (2 points): The player can toggle the speed of the game between a normal speed and a fast speed.
Save/Load Games (2 points): When playing single-player mode, the player can choose to save the game and play at a later time. A Load Game option is in the main menu. This feature works well with the Pause Game feature, since it is more elegant to load a game, have it paused initially, and then resume to play the game.
Sounds (2-4 points): Incorporate sounds into gameplay for single-player mode. More points for well-incorporated sounds. No points for random sounds.
Game Statistics (2 points): Collect statistics about the game (e.g. enemies destroyed, towers built, etc.) and show them to the player after a game ends. Statistics need to be shown for both single-player and multi-player modes.
User Accounts (2 points): Each player can log into an account, which saves their game statistics and history. A player can also choose to log in as a guest if they do not want to create an account. Options for logging in (to an account or as a guest), logging out, and creating an account are present in the main menu. This feature goes well with the game statistics feature.
Temporary Powerups (6 points): Killing an enemy can sometimes give you a powerup. You can decide whether that powerup applies to nearby towers or all towers. You must have at least two different kinds of powerups. Players must know when a powerup is active and how long it's active. For example, a “Slow” powerup might slow all enemies for 20 seconds.
Versus AI (2-6 points): Players can play against an AI (with multi-player rules). More points for a smarter AI.
Multi-player Lobby and Rooms (8 points): Players connect to a central server when they choose to play multi-player. Once a player is connected, he/she joins the lobby. The lobby consists of at least 4 rooms. A room is an assignment of two players that will play against each other. In the lobby, the player can either create a room or join a room that another player has created. The player who creates the room chooses the map for the game. The lobby shows all the rooms as either: Available, Occupied, or Waiting. An available room means that no players are in the room and that anyone can create a room there. An occupied room means that two players are playing against each other in that room. A waiting room means that one player has created the room is waiting for another player to join and play the game. When a game ends, an occupied room becomes available.