< Back

Anthony Sturdy



Voxel-o-Defence was developed for the third semester of my 'Technical Games Production' module, where we were tasked with creating a game within 6 weeks in a group of 6.

The game is a voxel-based tower defence game, where you have to place turrets and walls to stop incoming enemies. The gameplay is currently very simple due to the time constraint, but we were able to implement the basic features the game would have such as World Generation, AI, Camera Control, UI, etc.

I implemented anything related to the voxel terrain, a full list of features I implemented can be seen below. The voxel terrain system was originally prototyped in Unity while other team members set up DirectX11 boilerplate and camera controls, which allowed me to get the systems working before then porting from C# to C++ in the DirectX application.

I also used the Unity implementation of the voxel system to create a Voxel Modelling Tool for the team to use, which allowed us to create voxel models such as walls which can be placed into the scene.


These are the features implemented by me, all features by other team members can be found here.
  • Voxel Modelling Tool
  • Voxel Terrain Generation
  • Greedy Meshing
  • Texturing Greedy Mesh using Texture Atlas
  • Screen to World Raycasting
  • Placing Voxel Models at Mouse Position
  • Model Selection / Build Mode GUI


What I learned

Working with 5 other people taught me a lot about working in a team and how important project management is. This was the biggest team I had worked with, and without constant communication, team meetings and updating our Trello board, we wouldn't have made nearly as much progress. We did encounter a few problems where people were waiting for other features to be finished before they could finish their own features, so in the future I think planning ahead and knowing which features to complete first in order to counter that would be useful.

With a larger team relying on my code, it also forced me to think about and plan the structure and readability of the code, which I hadn't had to before. This lead to me writing much more manageable and extensible code than I previously have in solo projects.