Elements of War was a proof of concept. Not of the game, but of ourselves. We asked ourselves the question, "Can we make a full game that can rival the productions of other companies who cost ten times as much and take ten times as long?"
In this, our first front line combat as a team, so to speak, we set out with a healthy amount of optimism and high hopes for what was to come. To us, Orange Curtain Games was much more than a company, it's a huge step forward into the gaming fray and the unknown.
Vinnie had been teaching Level Design and production at Chapman University for the past two years, and had good experience in the field from his time at O Entertainment. Chris had worked with Vinnie on past projects and was just coming out of Aksys games and his roles on Record of Argarest War and the Wii title Bit.Trip.Beat. Keith had the raw skills, talent and animation experience to make sure the visuals would match all our mental images of what this game should be.
We set out at the start of this project according to our company mission; we are not here to create the next Tetris or Halo. We are here to make the Tetris that exemplifies the genre. With Elements of War we set out to make the Tower Defense that people would think of when they think of the genre. Big words for three people to make from a single room almost too small for them to fit and definitely too small for the heat and noise generated by the workstations.
Our share of victories and defeats came along the way, but overall we managed to achieve in these two months more than what others deemed possible. This postmortem not only gives others some knowlege of how we made the engine bend over backwards and evolved Elements of War from a simple casual game to the narrative driven epic it is now, but also to give us here at OCG a better idea of where we are and how far we have come.
What Went Right
1. Gears of War Tower Defense
Our choice in game engine and game type were, unlike Gaijin Games and their Bit.Trip games, wasn't tied to the Idea. We wanted to use the new UDK Development Enviroment created by Epic Games and to that end would tailor whatever game we had to use it.
While this decision makes numerous appearances on this list, in this specific case we did the right thing. From the first moment we made our appearance at a local gathering of industry professionals and students, we would get the same reaction of "REALLY?!" when we told them we were building a tower defense game in Unreal. People were blown away from an early stage by what we were attempting and their enthusiasm was infectious. The more they got amped up by weekly releases, the more excited we were about starting to fix the issues they found.
What we did find through using the UDK system is that our audience had changed from our initial concepts. Our initial ideas of who would be interested in Elements of War was the standard group of people interested in online tower defenses. However as we saw the reactions of people who had never played Tower Defense before or even liked it, we started to move our model to more closely appeal to the hardcore gamer in general. We focused on adding additional RPG elements, Bigger Explosions, Ragdoll physics on all the enemies, really starting to take advantage of all the Unreal engine had to bear. This gave us a more focused and defined idea as to who our audience was and how we needed to appeal to them! We needed to make this the Gears of War of Tower Defense as so many of our fans told us.
2. Overcoming UDK
For all the glory that is Unreal however, there were some rather large obstacles to overcome. Firstly and most importantly, Unreal was developed as a first person shooter.
Elements of War is a top down Tower Defense Game, infinitely more in common with a real time strategy than FPS. Where the Unreal engine was devised to handle a limited number of on screen AI moving along set paths, we based our gameplay along the ability of the player to create their own mazes and for the relatively huge number of AI to dynamically pathfind their way though an ever changing maze.
This is where Chris and our part time programmer Tore really shined through. We started off with simply trying to adapt the Unreal tournament code that UDK comes with, however as we moved from day to day and Chris kept attacking the code like waves upon the shore, we eventually ditched anything and everything that had the UT prefix in favor of our own and only taking what we needed, which was very few and far between.
By far the most challenging aspect of UDK that needed to be overcome was the pathfinding. The Unreal Engine's pathfinding is handeled largely through C++ source code (which we didn't have access to). The only options we had at our disposal were their waypoint system and their new navmesh system. While the navmesh system required the least amount of work to set up, it was still in it's beta stages and did not allow for changes in the navmesh at this point, for example adding a tower. So with waypoints being our only option, Chris set about completely dismantling their pathfinding system as much as he could through unreal script, wiki, and the forums. We created a uniform node grid that we layed out over each level, deleting what we didn't need, or was blocked.
However we soon found that the path building code was hard coded into C++ and thus allowed for paths to be built not just to adjacent nodes, but to all nodes within a certain distance. This caused the AI to think, "Oh well this node is blocked by a tower, but the one behind it isn't so I'll walk there!". This was solved with the addition of a Kismet node at the beginning of each level that parsed the entire level's custom pathnodes that we created and remove all path's that were longer than the grid spacing. This gave us a 2D grid that only connected the vertical and horizontal nodes.
Far more of a technical description than is needed, but this is just one of many times this happened throughout development. We would encounter a problem, reaserch it, find it was controlled via C++ and then develop a workaround using what access we had available to us. If we had a full Unreal licence, this would have been entirely different, but as it stood we did what we could with the tools we had. For two months we ripped apart everything we could to make sure this engine did what we wanted it to.