Tower Siege

Tower Siege Screenshot


Tower Siege was programmed in Visual Basic.NET 2005 in 2008 and early 2009. It utilizes the Truevision3D engine, along with some ripped World of Warcraft models and textures, and my own GUI Crafter project. This project is unpolished and had not yet had finalized user interface.

With this project the architecture was far more important as I had learned from past projects such as my pathfinding and various turn based games that without a good foundation, code quickly becomes unmanageable.

The Architecture

To begin, Tower Siege is powered by Truevision3D, an engine that supplies everything needed to render in 3D with shadows, loading meshes, and texturing. At this time I had yet to learn DirectX or OpenGL along with vector math, but yet much of working on this project has driven my understanding of graphics technology. More on that will be explained as I continue.

Tower Siege is built on a polymorphic structure for towers. The various towers I implemented inherit from a base class which provides base stats and functions that all require (such as Update and Render). Towers are then managed in an ArrayList of their base class and treated as a simple cTower by the game.

The landscape uses multi-texturing to achieve how it looks, sometimes known as “texture splatting” where the base, grass layer was painted over the entire landscape and then using an alpha map the road was put in. Next, to render tower range’s and tower selection, I dynamically “splatted” and “desplatted” yellow and blue textures on the landscape to make filled and outlined circles. This method proved slow and erratic with the outlines due to precision but was deemed acceptable for the time being.

While each tower was unique and could be told to attack enemies of different priority (such as nearest or farther or strongest or weakest), the only notable to talk about is the airport tower. This tower could be told to launch either a fighter or a bomber unit that would fly around killing enemies. This is where I was first introduced to steering, without any knowledge of vector math. At this time I knew of a function called a “dot product” which would give me the direction a point was in relation to the way I was facing, but not much else about it. With that understanding I figured out that I could tell if the object was to the left or right. With this, I was able to get the bombers to follow the path to the end of the enemies, bombing them along the way, and at the end turn around to do so all over again. Fighters similarly would take aim at the flying enemies and turn around and shoot some more.

Another big change with this project over previous projects was a data driven design. Tower stats can be found in “towers.txt” of the Data folder. At the top it gives an explanation for each variable a tower requires. While Visual Basic is fast to compile, game mods greatly interests me as it provides room for growth in a game and brings customers in on helping to make a game better. The level was made by an editor I created where I could setup the objects, create the road, setup the waypoints the enemies would follow, and set the buildable space. Particles were also data driven, a particle editor was made that could create multiple emitter systems with a range of values to give the particles a lot of customizable power.

What went wrong

This project was great, a lot of fun to program and with many challenges. The main downfall was the lack of a design document that gave me clear goals of what I wanted. The tedious affair of setting up exactly how a user interface will look can bore me, while its underlying structure fascinates me. More on GUI Crafter here. Also, the lack of a solid world class dragged the code down and my own architecture ultimately was not very solid. Never intentioned to be a finished project, I shelved the project and went to Full Sail.


Credit is earned where credit is due. The following helped power my project.

BlizzardWorld of Warcraft
Models and Textures
Visual Studio 2005
Used for 3D Rendering

"GreyKnight" - Created the only model and texture not ripped from World of Warcraft
Nathan Schoell - Some of the game design



Arrow Keys to move the camera.

Space sends in a wave.

  1. Immediately on entering, scroll left (left arrow) to find the battlefield.
  2. Instructions
  3. Build towers along the path.
  4. Press space for more waves.


Site Development and Design by <CS>

Graphic Design by Nathan Schoell