The Dungeons Update
Hi everybody!
It’s been a while since our last blog update; I’m going to try to be updating this site a lot more often than I have been!
So the big news is that our Dungeons Update has finally gone live on Steam; it’s been a long, long time coming, for a couple of good reasons, and I’m going to be talking all about it today!
When I first started work on Dungeons, I had a particular plan for how they’d work; you’d place a “Dungeon” building down on the map, you’d make a few settings to specify how difficult it should be, and then players would go inside and come out later, having either succeeded or failed in the attempt.
That was the whole design for the feature. Your AI subscribers would ‘see’ the dungeon interior, but you as the player never would.
As I was starting on implementing dungeons, I did have it in my head that a more intense way the feature could work would be to let the player actually look inside the dungeon and craft the dungeon layout itself, kind of like happens in Dungeon Keeper. The argument for not doing that was of course that it would be a lot more work, and the game engine absolutely didn’t support having more than one map at a time.
Trying to make a real interior space for a dungeon would be a massive job, not just all the new dungeon assets but also upgrading our custom game engine to be able to support the required extra features, and would undoubtedly take an absurdly long time.
So in the end, I decided not to do it, and to instead go with that original “it’s just a building on the map and players vanish into it for a while” plan.
But then I went back and played some Roller Coaster Tycoon, and realised that no; that dungeons are really our killer feature. We had to be able to see them in action – If we didn’t have them, were we really even delivering a “run an MMO” experience?
So I made the tough call to change direction, and work began on building a full dungeon mode into the game. First, I had to expand the engine to support running multiple “levels” simultaneously. In the code, I call these “shards”; the main map is one shard, and the interior of each dungeon is another shard, and each instance of each dungeon is yet another. We can then tell the game which shard we’re currently viewing, and have only that one shard be drawn to the screen, while all of them continue being simulated.
The way I’ve described it above makes it sound like an easy change, but this change touched very nearly the whole codebase; sound, visibility, dynamic lighting, particles, floating text, literally everything in the game suddenly had to understand that it might not be visible to the camera, and so it required major changes throughout the codebase, both within the engine and within the game itself. It was such a big job that I burnt myself out on two separate occasions while working through it all. But even once that was working, it wasn’t clear sailing.
The first big challenge for dungeons was that I knew I didn’t want them to feel square. Very little in our game is built to a strict grid, and I knew if our dungeons were built to a grid like that, everybody would compare them to the levels in Dungeon Keeper, and I wanted to avoid that!
At around that time, an adorable little city-building toy called Townscaper came out, and its strange skewed grid was fascinating to me. I decided that I wanted our dungeons to mimic its strange grid as closely as I could manage, and I feel like that was a great decision for keeping dungeon editing choices feeling ‘chunky’ without making them feel rigid. This way, we could actually get winding corridors and natural-feeling cavern shapes, while still using a tile-based grid.
Out of everything in Dungeons, this is the single piece I’m proudest about.
Of course, it was important to have things inside the dungeon layout, so we added lots of new scenery items, including scenery items that cast dynamic light, brand new fog effects (including ground fog), collectable visible loot, openable containers, locked doors and keys, and a bunch more.
Probably the most notable of the “a bunch more” stuff is dungeon bosses. I felt like it was important for boss monsters to be fully editable, and so we added a new system to be able to design multi-phase boss fights, so you could really test your players abilities. More than that, we made the loot drops from boss monsters configurable, so you could (for example) put a treasure behind a locked door, with the key only being dropped when the boss is defeated.
And I haven’t even mentioned half of the work that went into this; there’s a new UI system, almost all of the ‘Design’ interfaces have been rebuilt, it’s now possible to create extra ‘dungeon monster’ types who exist only inside a single dungeon, you can paint the floor using an exciting configurable ‘paint’ system with customisable and potentially animated floor surfaces, and lots more.
Overall, it’s been a giant pile of work and definitely the largest single game update we’ve ever done, but I’m very happy with how it’s come out! I’m not expecting anything before full release to be as big as this single change! I hope you enjoy what we’ve built!
I want to give big thanks to everyone who played our various dungeon preview builds and provided so much valuable feedback and bug reports, as well as all our players who waited so long for this update to be completed. You’re all the best! If you’d like to help in those sorts of efforts, or just want to say ‘hi’ to us, you can do that over on our official Discord server!