As lifelong video game enthusiasts, a friend and I decided to build a tower defense game together. I have some previous experience in an internship building games for the Nintendo DS and he (Sander Vereecken) is an environment artist involved in level design for Killzone Shadow Fall, Horizon Zero Dawn and, Renegade-X.

We want it to be a multiplayer game that is fun to play at a LAN-party, the main inspiration comes from TD maps of Warcraft 3 such as Legion TD and Gem TD and we both like RTS style games such as SpringRTS which also has a fun Chicken Defense TD. We do want to include gameplay mechanics such as mazing, income investment, upgrading and sending units to an enemy team. When it is fun in co-op we want to build a competitive matchmaking system.

Learning the Unreal engine

As Sander has a lot of experience with the Unreal Engine we decided to use it for this project. As the engine is feature rich there is a large learning curve to understand the ins and outs of the engine. Luckely, there is a lot of educational content available online. Initially, I started by building along with a Tower Defense Tutorial series on Youtube.

The first step was to be able to build some towers and have them target some runners:

We work with data tables to be able to control which units will spawn for each wave and for each type of enemy unit we can configure the speed, health and static mesh:

Some initial tests with building a maze:

Performance testing

We do not want to sacrifice performance for better graphics as we both think the gameplay is more important but we both think massive battles are more fun than small ones. One big aspect of performance in the Unreal Engine is the number of blueprints you use.

How static meshes are instanced matters a lot for performance. One example is the rendering of 400000 trees. When we render all trees are in a separate blueprint the performance drops to 14 fps:

When we render the same number of trees in one blueprint we get 60 fps!

Similarly, spawning multiple runners (enemies) as characters kills performance so we are now testing with basic pawns. We are investigating if we want to use sprites instead of skeletons:

Art style

We decided to go with a Jungle / Town theme. This gives us a lot of options for different types of enemies and it is fairly easy to add natural obstacles like rocks:

The maze city can grow when they kill more enemy units:

Planning

As it is a hobby project we try to limit the scope to be able to get a working project that is fun to play. We are currently in the process of combining the art and code in one project connected with a Git repository. As we ran more into the downsides of using blueprints we will likely switch to using c++ code for most of the game logic.

If you are interested in following the development of the project or want to help out as tester when we release an alpha version you can send an email to nielsvandermolen@gmail.com.


Categories: GameDev

0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *