TD tower types

General discussion about LÖVE, Lua, game development, puns, and unicorns.
Post Reply
User avatar
raidho36
Party member
Posts: 2063
Joined: Mon Jun 17, 2013 12:00 pm

TD tower types

Post by raidho36 »

I'm making a tower defense game and one of the gimmicks is vast amount of different towers. The key word is "different", I chose to abstain from making reskins as much as possible - each tower is at least a little functionally different than other towers. The intention is that you must pick and choose tower placement, you can never drop-in replace any tower with any other one and expect the same efficiency.

I've got a quite hefty list of towers already but I'm still asking for suggestions. I want to raise the number of towers as high as possible. But agian, towers must be substantially unique and useful.

Some probably important notes:
You start with a limited selection of towers, depending on the map. You win the game by surviving a set amount of time but you get awards for killing enemies. Enemies travel along pre-defined roads and can't leave them. Enemies are not normally invisible, but can become invisible on specific roads. The enemy is despawned at the end of the road, you get no kill and no money, but otherwise nothing happens.When an enemy passes near your base, the base takes damage. Bases can be located in many different places, not necessarily at the end of the road. There is not necessarily an end of the road, then the enemies stay on map until you kill them, and they will damage your base as long as they come near it. There are multiple enemy types in a wave pack, but they're all "generic", differ only by speed, pack size and HP reserve.
  1. gun tower (basic)
  2. auto tower (shoots faster, has delay before attack)
  3. rotor tower (gattling gun, swings and sprays when changing target)
  4. shot tower (basically a shotgun)
  5. sniper tower (similar to basic except engagement range extends all the way to minimum damage range)
  6. cannon tower (similar to basic but more hefty and aims for highest HP enemy)
  7. flak tower (launches a shell that explodes near enemies)
  8. mortar tower (launches explosive shell that arcs over enemies)
  9. rail tower (railgun, can go through multiple enemies, aims for highest total damage)
  10. shock tower (powers up from moving enemies until it has enough power to instakill a nearby enemy)
  11. arc tower (arcs to other arc towers if no enemies are nearby, firepower adds up)
  12. waste tower (continuous damage in tower's range)
  13. laser tower (beam)
  14. proton tower (same as laser but creates damaging aura when connects, also can attack normally invisible enemies)
  15. gamma tower (same as laser but passes through enemies and damages all of them)
  16. quake tower (creates damaging pulse periodically)
  17. flame tower (shoots flaming liquid, doesn't do damage directly but liquid accumulates on enemies and does continuous damage)
  18. acid tower (same as flame but does damage directly; sprays around when tracking enemies)
  19. vortex tower (shoots sound blast ring, damages enemies when they pass through the ring boundary)
  20. rocket tower (unguided rockets)
  21. blast tower (launches barrage of rockets, arcs over enemies, impact position randomized)
  22. homing tower (homing missiles)
  23. matrix tower (towers create stationary laser beams between them)
  24. barbed tower (same as matrix tower but damage depends on speed)(thanks KayleMaster)
  25. gear tower (same as matrix tower but damage is dealt momentarily, weaker enemies take more damage)
  26. bolt tower (enemies near target also recieve some damage, chain lightning style)
  27. spikes tower (periodically puts spike traps on roads)
  28. mine tower (same as spikes but makes delayed explosion)(thanks NotARaptor)
  29. swarm tower (sends homing swarms, they do damage continuously)
  30. plasma tower (projectile bounces off enemies and retains some power)
  31. void tower (black hole launcher)
  32. zap tower (creates a pulse that goes along roads until it hits an enemy)
  33. fling tower (slowly spawns and accumulates projectiles, can rapidly shoot them all)
  34. ufo tower (spawns UFOs that randomly fly and attack enemies)
  35. charge tower (damage increases when active, drops when idle)
  36. idle tower (opposite of charge tower)
  37. beam tower (just does unconditional continuous damage to a single enemy)
  38. nova tower (shoots projectiles in all directions in a spiral pattern)
  39. bomb tower (launches slow but powerful torpedoes)
  40. blade tower (long blades spin around the tower and damage enemies on contact)
  41. beacon tower (same as blade tower but beams extend across the map and do continuous damage)
  42. sonic tower (does continuous damage in an area in front of the tower)
  43. spiral tower (launches spiraling projectile, Q3 railgun style)
  44. rang tower (launches a boomerang)
  45. meteor tower (sends asteroids near random enemies)
  46. drain tower (removes a certain fraction of current HP, doesn't kill)
  47. bubble tower (shoots bubbles that damage enemies when pop, slowly blown around)
  48. nuke tower (when boss shows up, tower deals part of its HP as damage to all other enemies on map)
  49. rage tower (makes enemies attack other nearby enemies)(thanks Positive07)
  50. scale tower (sets HP of every enemy in its range as their average, HP increase is limited)
  51. lower tower (lowers enemy level - speed, hp and also reward for kill)

    Non-damaging towers:
  52. boost tower (increases damage taken in its range)
  53. magnet tower (makes enemies more likely to turn in its direction)
  54. halt tower (temporarily stops enemies)
  55. toll tower (gives money for each enemy that passes by)
  56. bonus tower (gives money for each enemy that died in its range)
  57. solar tower (just gives money over time)
  58. emc tower (slows down enemies in its range and adds time-slowing effect)
  59. glue tower (slows down enemies in its range)
  60. time tower (puts temporary time slowing debuff on enemies)
  61. curse tower (puts damage increasing debuff on enemies)
  62. repair tower (restores lost HP of the base)
  63. warp tower (teleports enemy closer to the start)
  64. radar tower (adds its detection range to other towers)
  65. psy tower (reveals normally invisible enemies, allows aiming deflection before an enemy is within range/is spawned)
  66. 121jw tower (removes enemy from the map temporarily)
  67. sponge tower (after enemy is killed, its carcass continues moving and converts damage to money)
  68. ice tower (shoots ice bolts that slow down enemies temporarily)
  69. loop tower (makes enemies loop around small section of road)
Last edited by raidho36 on Fri May 18, 2018 3:29 pm, edited 2 times in total.
User avatar
NotARaptor
Citizen
Posts: 59
Joined: Thu Feb 22, 2018 3:15 pm

Re: TD tower types

Post by NotARaptor »

My initial thought is - holy cow that's a lot of towers. As in - it took me a while to read through them all, so I've got to ask - have you considered how you're going to display these to the player for selection? I know you said you start with a limited selection, but assuming you unlock them, is it just going to be a giant list for the player to scroll through? Some kind of "tower tech tree" might be needed to make the choice easier. I imagine each tower can have its own upgrades too?

Fantastic selection though, good variety.
toll tower (gives money for each enemy that passes by)
That made me think of Blazing Saddles :) https://www.youtube.com/watch?v=Xw8hcXBA7X4
flame tower (shoots flaming liquid, doesn't do damage directly but liquid accumulates on enemies and does continuous damage)
To differentiate this more from the acid tower, it would be nicer if it set the enemies on fire (so they take damage for a while, maybe dying in the process) and any enemy that touches them has a chance of being set on fire too.
rail tower (railgun, can go through multiple enemies, aims for highest total damage)
Have you coded that part yet? That sounds like a fun challenge. My first thoughts were:

(a) The tower has a heading, and every tick it shoots a ray in its exact heading, and a ray to the left and a ray to the right, sees which one "scores" higher in terms of maximum enemies seen, and rotates towards that. When it's ready to fire, it fires, as it will constantly be tracking the "best possible" shot, albeit in a local minimum

(b) A full-on polar scanline algorithm. For every enemy in range, calculate the perpendicular vector from the tower and offset from the enemy's centre by its radius in both directions, calculate those angles from the tower position. (assuming an anticlockwise scan where relevant). [This is O(n) but the vector maths and atan2 functions could be slow with lots of enemies). Create an "enter" and "exit" event at each angle which is pushed onto a (circular?) sorted list (by angle) [O(n log n)]. Scan through the events in order, pushing and popping enemies from a stack in turn with the enter/exit events, maintaining a "best position" variable which holds the enter event angle at which the stack height is the highest (biggest number of enemies hit by the ray. you might want a more complex calculation though, but it's the same process). Once you reach the start again, you might have to tweak the initial few values, as your first "open" even might have occurred in the middle of another interval, because the angle value is periodic. Not sure how tricky this part would be. This will also be O(n). At the end, you'll have the start/end angles that cover the largest amount of enemies (or best damage, depending on how you calculate the value function), so aim right in the middle and BOOM. The whole thing would run on O(n log n) but it does involve a lot of maths calls.

Both these approaches assume that the railgun shot is instantaneous (speed of light), but that's a fair assumption.
arc tower (arcs to other arc towers if no enemies are nearby, firepower adds up)
matrix tower (towers create stationary laser beams between them)
I love this mechanic and think you should use it more. Why not a "flame net" between towers, a sticky net... having towers work together sounds like it could be really good, and could be expanded to more features than just those two.



I can't really think of any more interesting tower types, if the enemies are pretty much the same, differing only in HP/speed. If some were resistant to fire and vulnerable to ice, had armour, were vulnerable to pierce attacks but not... smash attacks, there could be more variation.

Maybe a "mine tower", which sets mines that don't explode when an enemy goes over it, but 2-3 seconds later, so it may or may not hit another enemy, depending on pack size or wave size.

Can't wait to see a prototype though!
KayleMaster
Party member
Posts: 234
Joined: Mon Aug 29, 2016 8:51 am

Re: TD tower types

Post by KayleMaster »

Barbed tower? How would that work? Does it throw barbed wire at enemies?
Here's an idea:

Code: Select all

FFTFF
==|==
FFTFF
F is a random tower, T is a barbed tower, = is the path, | is the barbed wire.
Basically you have to have barbed tower on two sides. On a corner you may even achieve 2 barbed wires with 3 towers.
User avatar
ivan
Party member
Posts: 1911
Joined: Fri Mar 07, 2008 1:39 pm
Contact:

Re: TD tower types

Post by ivan »

In my experience there are two basic ways to implement so much variety.
One way is to make a unique object for each type of tower using inheritance. This is a lot harder to maintain.
Alternatively you can use definitions - this way you can describe each type of tower by changing a few coefficients:
"projectileType", "cooldownRate", "damageDealt", "ammoAvailable", "isHoming", etc.
User avatar
NotARaptor
Citizen
Posts: 59
Joined: Thu Feb 22, 2018 3:15 pm

Re: TD tower types

Post by NotARaptor »

Basically you have to have barbed tower on two sides.
Exactly! The linking towers together mechanic seems really promising.
In my experience there are two basic ways to implement so much variety.
I'd go with a message/event system myself - would be more flexible
User avatar
raidho36
Party member
Posts: 2063
Joined: Mon Jun 17, 2013 12:00 pm

Re: TD tower types

Post by raidho36 »

NotARaptor wrote: Tue May 15, 2018 11:15 am Have you coded that part yet?
Immediately before shooting, it goes over the list of enemies that it has in its targeting range, casts a ray against them and checks how many enemies are affected. There is some basic spatial indexing involved to cut down on computation costs.
f some were resistant to fire and vulnerable to ice, had armour, were vulnerable to pierce attacks but not... smash attacks, there could be more variation.
I specifically decided not to do that because it doesn't actually adds variety, it just creates reskins and forces the use of reskins. I played a bunch of TD games that have this mechanic, and it sucked every time. Nearly all element towers were reskins, it could be a tower from any other element and the single difference would be the skin. Sometimes enemies are immune to this specific element and this forces you to use basically identical towers from other elements. Granted, I have shitload of towers and they're quite different already, without even considering elements, but I still don't want to do this. This is like trying to make a shooter game harder by making enemies soak up more bullets before dying, it's not fun, just tedious. I'm making a single exception for bonus enemies, for a technical reason - they are resistant to continuous damage. They die immediately if they take any damage, but to make sure they don't all instantly die on the nearest AOE tower, I made that it takes ¼ second of continuous-type attack to kill them.
Maybe a "mine tower", which sets mines that don't explode when an enemy goes over it, but 2-3 seconds later, so it may or may not hit another enemy, depending on pack size or wave size.
It's a nice idea, thanks, I'll add it to the list.
KayleMaster wrote: Tue May 15, 2018 12:59 pm Basically you have to have barbed tower on two sides. On a corner you may even achieve 2 barbed wires with 3 towers.
It was just an AOE tower but I like your idea better, I'll change it to that, thanks!
ivan wrote: Tue May 15, 2018 1:24 pm ...
That would require implementing the whole arsenal in a single class. I think I'll stick with simple classes on top of basic superclass.
Post Reply

Who is online

Users browsing this forum: No registered users and 26 guests