This thread will be a continuation of my posts from here.
What is TDWorld?
TDWorld stands for “Tower Defense World” It is aiming to be a location based tower defense game where you take over real-world buildings to create towers and use real-world roads as connections between the towers. When you take over buildings, and link them, it increases your economy in the game (you get credits for each economy creep that reaches its destination).
Story and Factions
The game is based on an upcoming book I have been writing, Doubleshear.
There are two factions - play as either The Dwell - an organization bent on taking over the world - or the Uprising. Each faction has its own strengths and weaknesses (like tower strength, build time, tech tree, creeps, etc).
Towers shoot nearby creeps, and eventually you’ll be able to build attack creeps as well. Eventually there will be incentives for taking over a geographic region.
The backend and client are written entirely in Java. The backend is part application layer, part pub-sub system, part game-engine, and part database. These things have to be tightly coupled for optimization reasons as we are essentially doing a global traffic simulation with towers shooting the “traffic” (creeps). There are also lots of little utilities and services, mostly in JS. The simulation is broken into shards which for the most part, depending on how I design the gameplay, you won’t notice while playing the game. These shards can be orchestrated across servers to help the game scale to many concurrent connections. Think of a sharded database, except the shards can dynamically move around while you’re using it.
The rendering side of things utilizes libgdx. It features a custom render object pipeline / queuing system to quickly inject hundreds of towers/roads/etc into the scene.
In order to render the world, a custom map rendering engine was developed on top of libgdx. We get building data and road as meta data from various services, put it together, and at run-time construct polygons out of it.
I have no guarantees other than I’ll have a beta out this year, and I want the game to be ready for when the whole corona-virus situation clears up as people will be itching to get outside.
While already out of date, a quick background on the game is here: