I'm attaching a TD map I've been working on for the last couple of days. It's not finished yet, but I thought I'd get some user feedback before I continue. Instructions are in the game (just click "yes" when it asks if you want to watch the tutorial) but here's a brief description:
Income based on harvesting probes, which die when enemies reach your base.
3 spawn points (each wave randomly selects 1)
A network of roads with 72 possible paths (each wave randomly selects 1)
Railroad tracks, for boss trains every 10 levels.
The game cycles through 20 different enemies endlessly, with waves becoming harder each cycle
3 classes (Mechanical, Biological, and Psionic)
Flying, Land, and Rail units.
8 different attack towers, plus a sensor tower to detect cloaked enemies.
Water makes some areas unbuildable.
Here are the specific areas I'd like your feedback in:
Balance. Should a certain tower have its damage, range, rate-of-fire, or cost changed?
Difficulty. Is the game, overall, too hard or too easy? Is a certain wave too hard to beat?
Difficulty, as time goes on. I've tested it through level 40 (2 cycles) and the 2nd cycle seems hard enough to still be interesting without being frustrating, but what do you think?
Plans for the future:
There are some things I plan to implement in the next version, but haven't gotten to yet:
Tower selling
Tower upgrading (this will be done on a tower-by-tower, individual basis with different upgrades for each tower type
Different difficulty levels. The current difficulty is "Medium", and I plan to implement Easy and Hard by adjusting the time between waves (which means more/less time to gather minerals)
Hmmm... I'd use "Unit enters/leaves region" for the event, and then just instantly move the SCV back to the middle of the area. Maybe even give it a gather command to send it back to work.
I don't know if it's the most efficient way, but I'd do something like this:
Variables:
A (integer) = 0
B (integer) = 0
TemporaryStorage (real) = 0.0
ArrayLength = 10
General - For each integer A from 0 to (ArrayLength - 2) with increment 1, do (Actions)
Actions
General - For each integer B from (A + 1) to (ArrayLength - 1) with increment 1, do (Actions)
Actions
General - If (Conditions) then do (Actions) else do (Actions)
If
Array[A] > Array[B]
Then
Variable - Set TemporaryStorage = Array[B]
Variable - Set Array[B] = Array[A]
Variable - Set Array[A] = TemporaryStorage
Else
That will just compare each number to all the numbers after it, and if it finds one that's smaller then it'll trade places. I don't know if there's a way to get the length of an array automatically, so you'll have to adjust ArrayLength yourself to however long the array is.
Oh, do you want the unit to have to stay in the region for X seconds before being healed? That's a bit more complicated.
Event: Unit enters region
Local Variable: Healing Unit (unit) == Triggering Unit
Actions:
Wait X seconds
If (Healing Unit is in region == True)
Then
Set Healing Unit life to 100%
The If/Then checks to see if the unit is still in the region after X seconds, and if so then it heals it.
There are a couple problems with it, which I'm not sure how to solve (I don't have my editor with me at the moment).
One is that if you go into the region, then leave, and then back in again within X seconds, then the healing will still apply.
The other is I don't know how it would react if several units enter the region together, it might only heal the last unit that entered. I don't know without testing.
Trigger event: Periodic event (however often you want the healing to happen)
Actions:
Pick each unit in region and do actions
actions: set (picked unit) life to 100% (or you could add 10% every couple of seconds, if you want it to go slower)
In medieval times they had siege towers with catapults on top and archers on platforms (numerous variations were built) and some of them had wheels and could move. They couldn't walk, but they could move.
Try it with "at most any amount" and see if that works.
Also make sure the trigger is even activating by having it display a text message or something like that.
If you still have trouble, select the whole trigger, right-click and choose "copy as text" and paste it here inside code tags (by clicking the button on the reply window that looks like a gear with a couple of squares). Then we can take a closer look at it.
0
I'm attaching a TD map I've been working on for the last couple of days. It's not finished yet, but I thought I'd get some user feedback before I continue. Instructions are in the game (just click "yes" when it asks if you want to watch the tutorial) but here's a brief description:
Here are the specific areas I'd like your feedback in:
Plans for the future: There are some things I plan to implement in the next version, but haven't gotten to yet:
0
That's some weird behavior. Have you changed any units in the data editor?
0
I don't think you can do that with timers, but you could just make a dialog with a trigger that updates it once every second.
0
Hmmm... I'd use "Unit enters/leaves region" for the event, and then just instantly move the SCV back to the middle of the area. Maybe even give it a gather command to send it back to work.
0
I've just been reading about those sorting algorithms on Wikipedia. Turns out I invented off the top of my head a Selection Sort. Who'da thunk?
0
I don't know if it's the most efficient way, but I'd do something like this:
Variables:
A (integer) = 0
B (integer) = 0
TemporaryStorage (real) = 0.0
ArrayLength = 10
General - For each integer A from 0 to (ArrayLength - 2) with increment 1, do (Actions)
Actions
General - For each integer B from (A + 1) to (ArrayLength - 1) with increment 1, do (Actions)
Actions
General - If (Conditions) then do (Actions) else do (Actions)
If
Array[A] > Array[B]
Then
Variable - Set TemporaryStorage = Array[B]
Variable - Set Array[B] = Array[A]
Variable - Set Array[A] = TemporaryStorage
Else
That will just compare each number to all the numbers after it, and if it finds one that's smaller then it'll trade places. I don't know if there's a way to get the length of an array automatically, so you'll have to adjust ArrayLength yourself to however long the array is.
0
Oh, do you want the unit to have to stay in the region for X seconds before being healed? That's a bit more complicated.
Event: Unit enters region
Local Variable: Healing Unit (unit) == Triggering Unit
Actions:
Wait X seconds
If (Healing Unit is in region == True)
Then
Set Healing Unit life to 100%
The If/Then checks to see if the unit is still in the region after X seconds, and if so then it heals it.
There are a couple problems with it, which I'm not sure how to solve (I don't have my editor with me at the moment).
One is that if you go into the region, then leave, and then back in again within X seconds, then the healing will still apply.
The other is I don't know how it would react if several units enter the region together, it might only heal the last unit that entered. I don't know without testing.
Anyway, it's a place to start.
0
Trigger event: Periodic event (however often you want the healing to happen)
Actions:
Pick each unit in region and do actions
actions: set (picked unit) life to 100% (or you could add 10% every couple of seconds, if you want it to go slower)
0
In medieval times they had siege towers with catapults on top and archers on platforms (numerous variations were built) and some of them had wheels and could move. They couldn't walk, but they could move.
0
A tower walks into a bar and orders 12 glasses of champagne. The bartender says, "What's the occasion?"
The tower says "I'm celebrating the fact that I can walk!"
0
Also, Water and Lava - yes
0
Try it with "at most any amount" and see if that works.
Also make sure the trigger is even activating by having it display a text message or something like that.
If you still have trouble, select the whole trigger, right-click and choose "copy as text" and paste it here inside code tags (by clicking the button on the reply window that looks like a gear with a couple of squares). Then we can take a closer look at it.
0
I leave the site open in the background and check in every hour or so, in between whatever else I'm doing.
0
That's stolen from [i]Airplane![/i]... one of the best movies of all time.
0
File => Open => Campaign tab