- Joined
- Jan 5, 2009
- Messages
- 1,127
Making an Efficient TD
By Crazed_seal
Whats a TD
A TD or Tower Defense is map were the players have to build towers to stop creeps(runners, enemies ect...) Thus the name Tower Defense, this type of game can be either really easy or hard to make. Although all TD's basically do the same thing some have gone out of the box. Such as Wintermaul Wars, you not only have to defend, you have to attack. But in this tutorial we're doing a basic one.Initiazation
Ok first, we have to set the points that the creeps will run to and where they will spawn. If we don't set the points to a variable it will create leaks, leaks create lag and eventually if there is enough lag it can crash the game.Variables Needed.
These are the Variables needed in setting the points.
One has to be:
Name | Type | Array? | Array Ammount |
Spawn_Areas | Point | Yes | As many spawn areas you have |
Movement_Areas | Point | Yes | The amount of places a creep will move to |
Last_Point | Point | No | 0 |
Life_Pool | Point | No | 0 |
Lives | Integer | No | 0 |
-
Init
-
Events
-
Map initialization
-
-
Conditions
-
Actions
-
Set Spawn_Areas[1] = (Center of( Spawn1 <gen> ))
-
Set Spawn_Areas[2] = (Center of( Spawn2 <gen> ))
-
Set Spawn_Areas[3] = (Center of( Spawn3 <gen> ))
-
-------- I have 3 Spawn areas --------
-
Set Movement_Areas[1] = (Center of( Move1 <gen> ))
-
Set Movement_Areas[2] = (Center of( Move2 <gen> ))
-
Set Movement_Areas[3] = (Center of( Move3 <gen> ))
-
Set Movement_Areas[4] = (Center of( Move4 <gen> ))
-
Set Movement_Areas[5] = (Center of( Move5 <gen> ))
-
Set Movement_Areas[6] = (Center of( Move6 <gen> ))
-
Set Lives = (How many lives you want there to be)
-
Set Last_Point = (Center of( Last <gen> )) - This is not end, this is the area before the life pool, boat, ect...
-
Set Life_Pool = (Center of( Life Pool <gen> ))
-
-------- You would place Move1, Move2, and Move3 outside the Spawn Areas --------
-
Create an integer Variable called Spawn
Now onto the Spawn Triggers:
-
Spawn
-
Time - Game time elapsed is 20.00 seconds
-
Conditions
-
Actions
-
For each (Integer Spawn) from 1 to 20, do (Actions)
-
loop
-
Unit - Create 1 Level1Creep for Player 12 (Brown) at Spawn_Areas[1] facing Default building facing degrees
-
Unit - Order (Last created unit) to Move To Movement_Areas[1]
-
Unit - Create 1 Level1Creep for Player 12 (Brown) at Spawn_Areas[2] facing Default building facing degrees
-
Unit - Order (Last created unit) to Move To Movement_Areas[2]
-
Unit - Create 1 Level1Creep for Player 12 (Brown) at Spawn_Areas[3] facing Default building facing degrees
-
Unit - Order (Last created unit) to Move To Movement_Areas[3]
-
Wait - 1.00
-
-------- This makes the creeps or runners spawn one by one every 1.00 second --------
-
-
-
Wait until ((Player 12 (Brown) Food used) Equal to 0), checking every 1.00 seconds
-
Game - Display to (All players) the text: Level 1 Complete
-
Wait 20.00 seconds
-
For each (Integer Spawn) from 1 to 20, do (Actions)
-
loop
-
Unit - Create 1 Level2Creep for Player 12 (Brown) at Spawn_Areas[1] facing Default building facing degrees
-
Unit - Order (Last created unit) to Move To Movement_Areas[1]
-
Unit - Create 1 Level2Creep for Player 12 (Brown) at Spawn_Areas[2] facing Default building facing degrees
-
Unit - Order (Last created unit) to Move To Movement_Areas[2]
-
Unit - Create 1 Level2Creep for Player 12 (Brown) at Spawn_Areas[3] facing Default building facing degrees
-
Unit - Order (Last created unit) to Move To Movement_Areas[3]
-
Wait - 1.00
-
-
-
Wait until ((Player 12 (Brown) Food used) Equal to 0), checking every 1.00 seconds
-
Game - Display to (All players) the text: Level 1 Complete
-
Wait 20.00 seconds
-
-------- Just keep doing this for every level updating the runners though --------
Movement
You got to make 7 Triggers.These seven triggers, when the unit enters a region it is ordered to move to the next point.
-
Movement Column 1 1
-
Events
-
Unit - Enters region Move1 <gen>
-
-
Conditions
-
(Owner of( Triggering Unit)) Equal to (Player{12}Brown)
-
-
Actions
-
Unit - Order ( Triggering Unit ) to Move To Movement_Areas[4]
-
-
Movement Column 2 1
-
Events
-
Unit - Enters region Move2 <gen>
-
-
Conditions
-
(Owner of( Triggering Unit)) Equal to (Player{12}Brown)
-
-
Actions
-
Unit - Order ( Triggering Unit ) to Move To Movement_Areas[5]
-
-
Movement Column 3 1
-
Events
-
Unit - Enters region Move3 <gen>
-
-
Conditions
-
(Owner of( Triggering Unit)) Equal to (Player{12}Brown)
-
-
Actions
-
Unit - Order ( Triggering Unit ) to Move To Movement_Areas[6]
-
-
Movement Column 1 2
-
Events
-
Unit - Enters region Move4 <gen>
-
-
Conditions
-
(Owner of( Triggering Unit)) Equal to (Player{12}Brown)
-
-
Actions
-
Unit - Order ( Triggering Unit ) to Move To Last_Point
-
-
Movement Column 2 2
-
Events
-
Unit - Enters region Move5 <gen>
-
-
Conditions
-
(Owner of( Triggering Unit)) Equal to (Player{12}Brown)
-
-
Actions
-
Unit - Order ( Triggering Unit ) to Move To Last_Point
-
-
Movement Column 3 2
-
Events
-
Unit - Enters region Move6 <gen>
-
-
Conditions
-
(Owner of( Triggering Unit)) Equal to (Player{12}Brown)
-
-
Actions
-
Unit - Order ( Triggering Unit ) to Move To Last_Point
-
-
Last Move
-
Events
-
Unit - Enters region Last <gen>
-
-
Conditions
-
(Owner of( Triggering Unit)) Equal to (Player{12}Brown)
-
-
Actions
-
Unit - Order ( Triggering Unit ) to Move To Life_Pool
-
-
Life Taken
-
Events
-
Unit - Enters region Life Pool <gen>
-
-
Conditions
-
(Owner of( Triggering Unit)) Equal to (Player{12}Brown)
-
-
Actions
-
Set Lives = ( Lives - 1 )
-
When a unit enters the region it takes -1 away from the life.
-
Lose
-
Events
-
Time - Every 0.25 seconds of game time
-
-
Condition
-
Lives Less than or equal to 0
-
-
Actions
-
Player Group - Pick every player in (All players) and do (Game - Defeat (Picked player) with the message: You Lose)
-
~Crazed_seal2 Out~
Last edited: