Unreal Tower Defense (also called TD Challenge) is a prototype for a tower defense game built in Unreal 3 using only the engine’s visual scripting language, Kismet. In classic tower defense fashion, the player can set several types of towers in a preparation phase, and uses them to try to kill enemies before they reach their end goal. enemies that reach the end damage the player, and if enough enemies make it past the defenses the player dies.
A Twist on Tower Defense
As is typical of tower defense games, the player can choose from several types of towers and place them in strategic locations to kill oncoming enemies. Using content native to the Unreal Development Kit, the ‘towers’ are AI units that use either a Shock Rifle, Link Gun, or Rocket Launcher. Using Unreal had some interesting results, such as tower aim not being perfect, and enemy movement being much more agile than is typically seen in tower defense games. This meant that skilled play was required by the player during the defense phase, which was very engaging thanks to Unreal’s pedigree as a shooter. This also offered greater strategic depth since players could decide to rely more or less on their own skill versus the semi-reliable performance of the towers.
Keeping it Simple
Originally I had planned on using vehicles as towers as well as regular AI units. This proved to be more trouble than it was worth however, with vehicles being difficult to maneuver into positions, and vehicles being far too effective in the player’s hands, ruining any challenge present. This, along with a much greater technical cost associated with using vehicles as towers, led me to drop them to focus on the core gameplay with only AI towers.
Given that this was a prototype using only Unreal’s visual scripting language, there were many technical limitations I had to work under. Pushing ahead I would have loved to add an in-game economy, additional traps and towers, more levels, and multiple enemy types. Given the limited technical power of kismet however it was very unlikely any of this would be possible.
Regardless, this prototype was a great success on many fronts. This project laid the technical knowledge basis for several of my later projects, allowing me to use UDK to a much greater extent. From a design perspective it was both enjoyable and valuable to iterate on this idea and take it from nothing, to a working prototype with lots of gameplay potential.