I'm currently developing a flash tower defense game with Stencyl that allows players to create their own towers before every level.
I got inspired by many titles. First game I would like to mention is GemCraft. GemCraft is for me possibly the best Tower Defense game out there and it's totally free. GemCraft allows already some type of custom towers, actually towers are empty husks that have to be filled with magic gems that give the tower damage, range, speed and special abilities. Combining different gems gives a gem multiple abilieties but reduces the overall effictivness of the abilities. The concept always fascinated me. Creating your own unique tower like you want.
But hands down, I figures out that I use in almost any GemCraft title the same gem combinations over and over and over without varity. That's because if you figueres out a successful gem you will use it again. There are only few different enemy types and in the newest title it got even reduced to just 3 different enemy types: Swarmlings, that are fast but weak, Reaver, the normal enemy type and giants, slow but very hard enemies. There are also some mini-boss and boss enemies that okay actually all the same.
So where I want to go from here, is, while Gemcraft supports a huge range of varity you will still use only a little number of combinations.
I wondered if you could improve the varity factor and started my own little project, current work in progress title is "Custom Tower Defense Story".
The basic concept is, well, create your own tower. I won't go that far that you can draw your own tower, think of every single stat and let it go on monster waves. That would be a little too overwhelming and I'm not a programming genius like the developers of Arcen Games (yes, I'm looking at you Chris). I started with a basic tutorial of Stencyl to understand at least something about the tool I use. I used different tools before and had some basic experience on how programming works, but Stencyl was still new too me, so I wanted to understand how it works. After I completed the two tutorials Stencyl gave to me I searched if other players already tried to make a TD game wih stencyl and how it worked out. And I found something very useful:http://blog.publysher.nl/2012/04/tutorial-creating-tower-defense-game-in.html
Publysher is a blogger that describes basic and complicated programming structures and also featured a 10 steps tutorial to create your own tower defense game. That tutorial was REALLY helpful to understand how Stencyl works and how you can create complicated structures. It was more helpful than the basic tutorials together. I used his tutorial as the base for my own game.
After I created the TD prototype from publyshers tutorial I experimented with it a little and added some other stuff in it that didn't got explained in the tutorial but by then I already had understand how everything works which was the reason why I searched for soemthign like this in the first place.
I started to experiment with damage, range and speed as well as special abilities. I created a basic tower upgrade system so you could level your towers.
To get at least some amount of plannign I divided the development of my game in different phases so I don't have to work everthing out at once.
The current phase is the "Pre-Phase" in which I have the basic TD prototype. This prototype uncludes basic TD mechanics like building towers, upgrading towers, waves, enemies, path behaviour and so on. To sum it up, it's just a plain TD game at the moment.
Phase 1, the first real phase of my game is the perk system phase. This shall be the bass for the custom tower system where you can create own towers. You have 4 towers to choose of, every tower has basic stats and is all in all, basic. You can now select up to 4 perks for every tower to customize it. Perks increase the towers abilities or give it special abilities but makes it also more expenisve in the game.
The idea behind this is, that I have an easy concept for the player to choose stuff for the tower and the tower get's the abilities from the chosen stuff. Ot summed up, so I have a model where you can at least customize the tower to a tiny amount.
Phase 2 will work out the real customization system. Built on top of the perk system (without throwing the perk system away you can now select dofferent components for the tower. Imagine your tower as a building of multiple parts. It has a weapon, a tower base, an ammunition type and a reactor. You select the different parts that your tower is built of and that decides the abilities of your tower. The difference now is that instead of a free perk system where you could mix perks as you liked you have now different sections of "perks" and you can use only one perk per section hiving you less freedom but making the game at the same time easier to balance. You can compare this ti the mech customization of Bionic Dues. I want the system to look similiar to this.
Phase 3 will mostly be a creative part. I will now work on the different perks/components that will be aviable in the game. I want to create all components before I start the actual game design. When I know what components are aviable for the player I can create levels depending on that so I know what I have to counter.
Phase 4 will be the enemy design. Now that I know what I have to face I need enemy types to counter this. I have to admit from a developers type of view is the player the enemy. You, as developer, want to defeat the player. Well, not relally defeating but you want to make it challenging to him that he won't yawn at your tiny effort. So I create different enemy types, design what enemy do you have to face at which level etc. What abilities do the enemies have that counter abilities of towers? And so on. It like swapped roles, as player you have to think what tower do you use against which enemy, here I have to think of the exact opposite.
Phase 5 will be the level design. While this is almost no programming part it is a huge part of the game. The player does not want to face the same paths over and over. Also this is probably the most visual part of the game. All the other tiny stuff from the phases before while being a huge programming step is not really visible to the player. The player will only see this when he customize his towers which will hopefully not be after every level (I don't want to force players to change every time their towers).
Phase 6: Pokishing and if it hasn't be done on one of the phases before I will also import graphics for everything. But the most part of this phase will be tying everything up and putting it together into a game. So making a title screen, a level map, buttons and so on. Stuff that is only important when you have a full game instead of a prototype.
When I'm done I hope I have created a really good game or at least a moderate game. Or at least: Unique. It don't have even to be very good as long as it is something new. If it's not good I can at least polish it but if the system itself does not find any support I can scrap everything.
The biggest problem will not be the customization part. really, this is easier as you might think. The biggest issue will be the balancing. Fixed towers are predictible as developer. You know exactly what you have to face. But give the player a free hand on customization and things go out of hand. You might know some combinations that you try yourself but the more parts you have the more combinations you get, making the game unpredictable. Gemcraft is still pretty much unbalanced and players always find new ways to exploit the game mechanic. Gemcraft Labyrinth (the part before the newest) had still balancinf patches after a year because players figuered out how to create huge killchains.
However, looking at how successful gemcraft still is I want to try it out. Just to look how far I can get with it. It might never be finished but I still want to try.
If you've read everything above, wow, thank you for putting that much time into it. And I know it's hard to read all that stuff but I really appreciate that you didn't just ignore it just so you can write "tl;dr".