A devlog of my progress in the development of TDX.

Introduction: In this post you can find screenshots and screen recordings of the process that I’m making towards hopefully finally releasing my Unity VR tower defense game project that I’ve been working on for the past 12 or something years soon. (I started working on it back when my beard still had color!)
Background: Some of the reasons that I have been working on this game for far too long are because I sort of had to start all over again a couple of times, when for instance Steam VR stopped supporting MacOS and when Unity decided to deprecate it’s old multiplayer API and made me wait for the new multiplayer services to mature. And then there was covid and around the same time the passing away of my mother who sadly died from cancer at a relatively young age, after dealing with it for more than ten years.
Journey: In the years that I have been working on this game, which really is a passion project of mine, I have had many different jobs teaching all kinds of different programming, game development and digital arts subjects as a freelance teacher at a couple of different high schools and college’s, which gave me the opportunity to develop it slowly, without having to stress about income as an indie developer most of the time. Teaching the different subjects has also, I think, made me an all-round better coder and designer.
Current Status: After designing and redesigning a lot of the gameplay and multiplayer lobby systems for this game multiple times, I am now finally back at a point in development where I was a couple of years ago, where most of the components work together in sync, so I can start worrying about fun things again, like play testing and improving the gameplay elements etcetera,..
But this time around the underlying foundation and structure of my code and the ability to better upscale the content of the game are much better, so I am starting to become hopeful again that maybe some day kinda soon, I can actually release it!
About TDX: TDX (Tower Defense Experiment) is a VR Single-player and Multi-player miniature tower defense action game, that can be played solo against the AI, or Multiplayer against three other human players plus the enemy AI where each player will have to try to defeat the other players and the enemy AI to win the game.
To be successful players have to strategically balance the defending of their own base with attacking the enemies and with gathering energy as an income to further expand and upgrade their bases and to train units to attack the other enemies.
The style of TDX is inspired by the 90’s era idea of what VR games would be like in the future and by movies like Tron and games like BattleZone. For the gameplay the inspiration comes from one of my favorite early VR games of the OG Playstation VR called Korix and from classic RTS games like Command & Conquer.
Date: 7/11/2025
TDX Development Timelapse Video
Update: I started a while ago with making short and sometimes long screen recordings during the development of TDX at random moments and I’ve finally gotten around to editing them into a neat timelapse video!
I’m still a complete noob when it comes to video editing but I’m slowly getting better at it and I also consider this practice for making YouTube video tutorials…
At the moment I’m trying to make a habit out of making a short screen recording every time when I’m doing something interesting or have some interesting result to show in Unity or in Blender, so expect more timelapse videos soon. (Part two is already in the making)
It’s not easy to explain everything that is going on in this video but it is basically me working on a whole bunch of small systems and small gameplay elements for TDX.
In order to scale the game up the way that I want I have to develop a whole bunch of smaller sub-systems that all need to work in conjunction with each other and work within the larger system that is the game. At some point during development I realized that I’m not only making ‘a game’ but also an operating system for running the game, so I just sort of surrendered and committed to it…
These are some (but not all) of the names of the sub-systems that I’m currently working on, to give you an idea of what goes into this:
WeaponSystem (to handle different turret weapons)
TargetingSystem (to handle different turret targeting strategies)
GameTeamsSystem (to handle different teams and their owners)
InGameCurrencySystem (to handle resource collection and wallet transactions)
SelectionOutlinesSystem (to display outlines around 3D models for visual feedback)
SaveGameSystem (to save the player’s campaign progression)
SystemSettingsSystem (to save and handle global game settings)
UpgradeSystem (for upgrading turrets during the game)
AudioSystem (for controlling background music and volumes for music and sound effects)
ColorPaletteSystem (for storing and applying (team) colors to game objects at runtime)
MaterialPaletteSystem (for storing and applying materials from a palette at runtime)
StatusEffectsSystem (for handling weapon status effects to units for when a Unit is on fire or being electrocuted by a weapon)
PathfindingSystem (for updating path finding graphs at runtime when obstacles are placed etcetera)
HealthSystem (for handling game entities health, health bars and on death events)
DamageNumbersSystem (for displaying damage numbers when units or buildings are hit)
DamageSystem (for displaying different damage levels when turrets or buildings are damaged)
GameSceneSystem (for managing campaign scenes and for loading scenes additively)
CampaignSystem (for handling campaign missions and objectives and also for the tutorial ‘mission’)
ObjectPoolingSystem (system for re-using instantiated game objects from a pool queue instead of re-instantiating them)
LoadingScreenSystem (for displaying loading screens during scene transitions)
GridSystem (for handling the buildable grid territories conquered by the players during the game)
OperatingSystem (I’m building an in-game operating system that can run on in-game computers. This allows me to create small ‘desktop apps’ that run in a linux/windows-like desktop environment)
UIWindowSystem (for handling UI windows operating system style)
UIFloatingPanelSystem (for handling UI pop-up panels like windows’ start-menu and volume-mixer panels)
AppSystem (for handling small ‘Apps’ that get registered a PID which is then used by a TaskManager App)
ConsoleSystem (for cool in-game console logging and for running commands via the Console App)
So now that I have abstracted a whole lot of game mechanics into smaller sub-systems the actual game logic is now basically just the last- or the upper ‘layer’ of logic that simply uses those sub-systems. Which means that my game now relies on those systems but those systems don’t rely on my game, which makes working and iterating on the many, many game things a whole lot easier and much, much less like eating spaghetti everyday!
Next Steps: Implementing the outline system that I have just created into the game mechanics. For the outline system I have created a custom scriptable renderer feature that draws outlines around objects that have an ‘Outline3D’ component. So now I only have to enable or disable the Outline3D component on a GameObject to give it an outline which is exactly the way that I want it, so I’m glad that is now sort of out of the way and off the todo list! 😅
Date: 29/10/2024
Small gameplay testing video!
Progress Update: Right now I am working on the game loop for the single player campaign so that hopefully very soon I can let some people play the game solo. The gameplay loop has to have a tutorial at the start of the campaign and of course there has to be some kind of end-boss or final match at the end of the loop so I have been working on getting everything else to work so I can start on that.
In the video you can see that the player input mostly works and that the player can teleport to different sides of the game map. For the player input I have now fully transitioned from using the old input manager to using the new Unity Input System and for the VR support I have now fully transitioned from only using only my own basic components to using the Unity XR Interaction Toolkit which has some nice components for interactables and for teleporting.
You can also see that most of the game’s units and turrets pathfinding and targeting systems work without any issues and that most of the explosions etcetera have sound effects, which was the easy part but it feels like a small victory and a small cherry on top of a huge cake!
Next Steps: Further improve some of the logic behind the pathfinding’s navigation grid and the grid that the turrets and walls are placed on. After that I can probably start working on the tutorial and the final battle campaign logic.














