The Tools Of Tweet_Dungeon 🛠️
When making a game as complex as Tweet_Dungeon (what with it plethora of enemies & items, game mechanics galore, and complicated generation algorithms), spending some development time making up some in-house tools can be a huge help. Today, we're going to take a look into some of those tools being used to help shape the game (and keep my head on straight!).
In Tweet_Dungeon, you'll be exploring a randomly-generated dungeon. That dungeon is made up of a max of 4 rooms width-wise, and 4 rooms height-wise (this is the current layout, but could change in future versions). Each "room" (or as I'll be calling them: caverns), is 9x9 tiles.
There're lots of ways of doing about random generation when it comes to dungeons. The method I've chosen to implement gives me & my partner on this project fine-grain control over each room. We can layout exactly how we want it to be, and if needed I'm able to add a "sprinkle" of coded randomness to it.
Basically, I create a dungeon that can fit 4 caverns wide & 4 caverns tall (4 caverns of 9x9 tiles, so the dungeon is 36 tiles wide & tall, plus a border of 1 tile on all sides, plus room for hallways = final size of 41x41). Now I'm left with, essentially, 16 empty slots that I'm able to plop caverns into.
Me and my partner mockup a shit ton of cool looking & fun to explore caverns using the Cavern Crafter, and then feed it into the game engine, which then selects them randomly & places them into the map.
BOOM! Semi-random dungeon generation 👍
In Tweet_Dungeon, your "view-port" (ie the amount of tiles you're able to see at any given time) is 9x9. You'll never be able to see each individual tile in the entire dungeon all at once.
So how do we, as developers, see an overview of the whole map to make sure the generation algorithms, emoji rendering, and enemy + item placement are working?
Enter, the Dungeon Mapper. This is a helpful overview mode that lets us see how the entire dungeon turns out each new generation call.
Simple tool... But great for catching bugs 🐛
Look familiar? That's right, our third & final tool we'll be showcasing today is actually the same exact environment we used to ship our prototype version of Tweet_Dungeon.
You may think this is cheating, but it's quite the contrary! This "sandbox" environment, as it's lovingly referred to amongst the development team, holds lots of little helpful tidbits that make development a lot easier all around.
🌟 A Few Highlights:
- ⏳ Since the Twitter version of Tweet_Dungeon runs every 20 minutes, it's important to keep this in mind when playtesting. However, playtesting would be a hellish task if every time we needed to test something we had to wait 20 minutes! So, the sandbox environment comes with a built-in "timer" beneath the phone mockup to show how long, in "Twitter-time", your current play session would've taken. That way, you can play with zero-lag, but still see how long the real-world final version would've taken.
- ♻️ Needing to regenerate a bunch of times to make sure my code is working is basically half my day. Having to track down & die from enemies is a tedious way to restart the game so, very helpfully, the little emoji face at the top is more than just a funny decoration, it also allows you to quickly reload your game from scratch!
- 🔎 One of the most helpful tools, I must admit, is not made by me. Rather, it's the wonderful VueJS Dev-Tools extension, which allows me to "go back in time" while playing, as well as get a deep-look into the current state of any running game & track down bugs, errors, and performance hang-ups. Honestly, VueJS has made this whole experience overall loads easier!
As You Can See, Tools Keep A Game-Developer Sane! 😊
BUT: Just be careful not to go overboard with the tools you're making! 😱
In hindsight? Yeah, I probably could've made the Cavern Crafter tool a bit less pretty to help save time, but since I'm working with a partner on this project I wanted to make sure the interface was as friendly as possible. Plus, I plan on open-sourcing & releasing this tool to help others build out their own Tweet_Dungeon game, as mentioned in this post. So, good UI + UX was deemed vital, at least by me :^)
Thanks for reading today's dev-log! Tomorrow will be a change of pace from the recent trend of "behind the scenes" content and instead, it'll focus on more gameplay-oriented stuff! See ya then!
What Is Tweet_Dungeon? 😶💀
Tweet_Dungeon is a Twitter-based dungeon-crawling roguelike game, where the entire game (moves, attacking, looting, exploring, etc.) takes places entirely on Twitter. Players vote on what the little adventurer will do using Twitter polls. Turns are 20 minutes long, and updates constantly all day long.
Follow along with my progress where each day I'll post a short dev log showcasing the latest stages of the gameplay. Will I be able to make the deadline of Thanksgiving (November 28th, 2019)? Only the game-dev-gods can tell...