Game Design, Programming and running a one-man games business…

more out-loud design thinking

I’ve been doing some playthroughs of various gameplay modes in GTB and thinking a lot about the game design, and the way units interact.

One of the core things that makes Tower Defense games playable, and casual (to a degree) is the clarity of how units interact. There is often a clear way of differentiating how the units work against each other. For example, gun turrets are good against ground units, lightning turrets are good against flying units, laser turrets are not-bad against both. Often that sort of data is as complex as it gets. You can then have an upgraded ‘level II’ laser tower that is the same, but better, and so on…

One of the unique selling points of GTB is that towers have individual modules that can be combined, so it’s not as simple or inflexible as normal. In theory you could customise your defenses to do exactly what you liked. The trouble with this is it over-complicates things and makes the game less playable for first-timers and casual players.

I’m thinking right now that this is fine, as long as it’s clear what MODULE achieves what, and as long as it’s clear that the different classes of unit (Turret/Mech/Tank/Infantry) still have definite characteristics.

In other words, when you see a bunch of enemy infantry, it needs to be obvious that you think “right, I now need to build tower X”. This is where GSB let itself down.

So… in terms of broad principles:

  • Lasers are good against armor, bad against shields.
  • Ballistic weapons are good against shields, bad against armor
  • Missiles are generally average at everything, but have splash damage

In addition to that, I’m thinking of some hard coding so that:

  • Machineguns are rubbish against everything except infantry, where they are devastating.
  • Flamethrowers are the same as machineguns, plus they have splash damage.
  • Bigger weapons (all turrets, and mech/tank weapons) are relatively poor against infantry.
  • Infantry weapons are relatively good against each other.

That will mean some code changes. In addition, I’m more heavily skewing things so that:

  • Tanks do not have shields of any kind. Tanks are all about armor.
  • Mechs have the best lasers and the best shields.

Plus also:

  • I’m adding in construction times for turrets, so you can’t insta-place a turret.
  • You still cannot destroy a tower and reclaim some of the cost. Is this important? I never do it, but some people do. Not sure…
  • You can design (then use immediately) new units mid-battle. Maybe that is a bad idea?

There are a multitude of other things. I’m of the opinion that pretty much *all* maps should have at least two routes, so when you are placing attacking units, it’s a constant game of ‘aha, I see the right-side route is ill-defended against infantry….’ Obviously the first tutorialish map should be simpler.

I do wonder if I should put together a really early playable alpha of the game without any of the fancy graphics, just to let people play with the mechanics and offer feedback. If the majority of music / graphics aren’t even in the game, I could do that without fear of piracy or people confusing it with a finished game, and make it free. Hmmmm. I just don’t know… Would mean a nightmare load of separating stuff out… I wish I’d thought of that 6 months ago.

Game Mode Progress

Today I made some good progress on game-mode stuff. I worked primarily on the ‘assault mode’. My current thinking splits the modes up thus:

Classic mode:

Basically tower defence, with real-time placement. Whether attacking or defending, your supplies increase gradually over time. You can spend them whenever you like, but they cap, so you can’t just sit on them for five minutes. This is an arcade style, keep placing troops or towers game, designed to be singleplayer. This mode works as attacker right now, although AI turret placement will need tweaking. I haven’t implemented AI for attacking yet.

Assault Mode:

Like classic, but with no real-time placement. The total attack (or defense) budget is split into waves, maybe 10 of them, possibly unequally. At the start of each wave, you place your units. The wave then starts, and you are fairly hands-off (apart from assigning priority targets). Once all the attackers units are destroyed or left the map, the wave ends and both sides (player and AI) place the next wave over the ruins of the first. Designed to be singleplayer.

Rush Mode:

Similar to the GSB challenge. This is basically assault mode with just 1 wave. Great big attacking horde vs heavily defended base. This can be played singleplayer or uploaded as a challenge for others (as attacker, or defender). I aim to work on this tomorrow.

Pitched Battle:

This is like rush mode, but neither side is defending. The map is basically a maze of connecting paths that take units right up to each other at point blank, or let them march past each other and fight. Units stop when they reach the enemy, and fire at point blank range. Should hopefully look like a Napoleonic era battle, with lasers and tanks. I aim to work on this maybe Thursday this week. Can be uploaded as a challenge for others.

Of course all this might change. It’s a silly amount of work for one dev in an indie game anyway, so adding anything more than this would be truly mental. I see now why so many tower defense games are so simple.

Minimaps and forecasts and…

There are so many flavours of tower defense.

I haven’t seen another TD game with a minimap yet, but I’ve seen them (like Defense grid) with a ‘forecast’  GUI that shows you what is approaching. I quite like the forecast bit, because it creates an emotion of panic or dread, and emotion is vital to games. I haven’t decided to implement a similar feature yet (and anyway it doesn’t matter for attackers), but I am intrigued by it.

Minimaps aren’t normally required because TD maps are often small, but mine are big, and I think a minimap is very handy, especially if you have a big screen and can afford the real estate. Plus, the minimap will toggle on and off anyway, so it would be silly not to put it in, as it’s all coded etc.

GTB has fog of war, so you can only see X pixels radius around your units. I like this, I like it a lot, but again, I don’t see it in other TD games. My variety is a constant FOW, so exposed areas return to shrouded entirely once the unit that illuminated them dies. I like that too, but YMMV. Right now you can toggle it off, but that may change. Maybe I’ll force it on when playing challenge maps.

GTB has instant building, so far…. I may change this. I know that it’s a big part of some TD games that you need to plan ahead and get those towers built before the enemies get close. I’m not sure whether I want to add a construction delay or not. Possibly….

I’m pretty sure there are a thousand other decisions like these, and as with all decent game design, you can never really know what the right decision was until you have implemented both ideas, tried them a lot, and asked a few opinions. Obviously that takes extreme time, and extreme effort. I’m beginning to see that having a nice spangly engine with cool explosions and effects is only a small chunk of making this game…

Game design feedback

I’ve been away on holiday!  Whilst sitting in the sun, (in the UK too…woot), I read ‘The Design of everyday things’, which is an old, but great book. It has nothing in it about game design but nevertheless I found it inspirational. Mostly the book complains about doors, phones, windows and other things that often get strangely redesigned to be inferior, and impossible to use. It was fitting, as I stayed in a hotel that had some of the worst usability design imaginable. A computerised fancy-ass lighting system that lets me select ‘relax’ or ‘ambient’ but doesn’t let me have 1 bedside lamp on and 1 off, and isn’t even consistant. The lighting had coding bugs…. Also the phone was unusable, and the idiots running the place tried to overcharge us. Grrrr. At least the food was awesome.

Anyway…

One of the points in the book is that usability is partly tied to giving feedback. A good switch turns on a light when you press it, or at least clicks, so you know something happened, and hopefully, what happened. In reading endless rants about this, I concluded that the lack of feedback is one of the BIG design mistakes in GSB. It’s all very well being the case that experimentation and tweaking is a bit part of GSB, but how clear is it that weapon X does Y damage, and that weapon A is better vs shields than weapon B?

Given this, I think a lot of careful thinking is required to get the design of GTB right. Some things I am considering:

  1. Making shields a Mech-only item. Tanks don’t have them. Nor do turrets. They look best around moving mechs anyway. This keeps things simple.
  2. Weapons do different damage vs unit types in some cases. Specifically, flamethrowers totally massacre infantry, but do little or no damage to anything else. The same is true of machineguns.
  3. You fight shields with lasers and armor with ballistics. Maybe lasers do 10% damage vs everything but shields, and ballistics are the reverse. There are no fancy exceptions. Fight an army with mechs (and shields) and you need lasers. Otherwise, you use ballistic weapons.

This would, I think be easier to remember, and still make quite a lot of sense. I can’t see a problem with it, because many tower defense games have used similar restrictions. Some towers battle flying units, others ground, others both. In any event, I intend to do a lot of thinking and experimenting with these mechanics before I spend any more time worrying about any new features or any graphical fluff.

GTB game mode thoughts.

I’ve been giving a lot of thought to the different game modes in Gratuitous Tank Battles. Here are my current thoughts:

Classic (Tower Defence) Mode

In this mode, you play a standard tower defence game. The enemies come at you in pre-scripted waves, and have to get across the map in sufficient numbers to win. When the final wave ends, the player has won. The player earns supplies for shooting down incoming units, and spends supplies by placing new turrets and troops in one of the many pre-defined squares along the multiple attack routes in real time.

Reverse (Tower Attack) Mode

This is the same, but swapped over, with you as attacker. The player earns a steady stream of supplies over time, and these supplies are spent on new units. The supply level is capped, so you can’t just sit there for ages and not place anything, as you waste potential troops in that way. The victory conditions are just like classic mode. This requires a fair bit of AI by the defender, who will intelligently (I hope) place defences along the routes that are most under attack, and select defending forces that balance out, and can best deal with what is being thrown at them.

Assault Mode (attack OR defence)

This is a mode that will also work online in challenges. The player, either as attacker or defender, has a fixed budget to build up an entire army in one go (or for attack, possibly in a number of separate waves). The army then tries to storm past all the turrets without any interaction by the player. The army can be uploaded as a challenge either by an attacker or defender.

Pitch Battle Mode

This is like GSB, but without any pathfinding :D Essentially the maps series of paths meet in the middle and big armies start at one end or the other, marching / driving towards each other and blasting away until one army is destroyed, or everyone is out of range of each other. The last (or biggest) army standing wins. This can also be done as an online challenge game. This is the only mode where both sides have moving units.

Of course, it’s impossible to really say which of these game modes will really work, and which will suck, A lot of it depends upon the exact implementation and numbers. I really think I should implement at least this list though, and give them all some decent testing before deciding if they work or not.

There is SO MUCH to do.