Hey! It’s me again! It’s been a while. Time for a very overdue news post!
Dicey Dungeons is on sale!
Just a heads up: right now you can get Dicey Dungeons on steam for 50% off – the cheapest it’s been since back in alpha. I guess if you’re reading this post there’s a good chance you have the game already, but, you know, in case you missed it 😀
The game’s in Irish now!
v1.8 brings lots of new stuff – new enemies, gamepad controls, a design pass on You Choose, You Lose – you can read all the details on the steam patch notes!
But the new feature I’m really most excited about: The Irish translation is finally complete! This is something I’ve been going on about for a long time, so I’m really thrilled it’s finally ready!
I honestly have no idea how much interest there’s going to be in this. It’s kind of an experiment! Regardless, I’ve been really enjoying being able to play it in Irish myself, and learning a few things as I go.
…but it’s not in Japanese, yet.
One big promised feature that’s missing from this update is the Japanese localisation. I’m really sorry! I recently told a Japanese website that I was planning to add this in v1.8, so I know this is disappointing.
It’s almost ready, but unfortunately it just narrowly missed this update – it needs one more round of edits. Apologies to everyone who’s been waiting patiently for it – getting this ready to go is my number one priority with the game right now.
We released a switch trailer!
I know a lot of people have been wondering about the switch version: all I can say right now is that development is going well, and we’re on schedule! One of the big focuses of the last steam update was gamepad controls, which is a really vital part of the switch port – we really wanted to nail the controls, to make it as good to play with a gamepad as it is with a mouse. I think we’ve done that!
What else is going on?
So, uh, I’m in Australia now! We were here visiting in late February, and then, as Holly put it, the thing that happened happened. We made a decision to stay put for a bit, and we’re still here, for now at least.
We’re doing ok, but truth be told, I’ve had a kind of unproductive spell with everything that’s been going on. (If you’ve been waiting for me to get back to you recently, sorry!)
Lately, I’ve been back to myself, though. Hopefully the next Dicey update will be a lot quicker than the last one! <3
Today is the 10th anniversary of VVVVVV’s release!
Or possibly tomorrow is, depending on who you ask – technically, the game first went live at 3am GMT on the 11th January 2010, after a very, very long day of fixing every last bug I could, making last minute builds, and trying to slowly upload everything on an extremely unreliable internet connection that kept cutting out. But I’ve always gone by “it’s not tomorrow until you wake up” rules, so I still think of January the 10th as the real launch day <3
Gosh, ten years.
VVVVVV is such an important game to me, I barely even know where to start. I wanted to do something special to mark the occasion: so, as of today, I’m releasing the game’s source code!
I wanna give a big big thank you to Ethan Lee, who helped a lot to prepare for this, including getting the repo ready for the public, and organising the reveal on AGDQ (hi speedrunners!)! Thanks Ethan!
A quick overview of the source code
So, I think a fair question to ask here is: “What’s interesting about the VVVVVV source code?”.
I think even a peek of the source code will quickly reveal that VVVVVV is not a technically sophisticated game! Even by the standards of self taught indie devs, it’s kind of a mess.
Some possibly interesting notes/explanations of why things are they way they are:
There’s a lot of weird stuff in the C++ version that only really makes sense when you remember that this was made in flash first, and directly ported, warts and all. For example, maybe my worst programming habit is declaring temporary variables like i, j and k as members of each class, so that I didn’t have to declare them inside functions (which is annoying to do in flash for boring reasons). This led to some nasty and difficult to track down bugs, to say the least. In entity collision in particular, several functions will share the same i variable. Infinite loops are possible.
If you’re looking for the game’s text, that’s mainly (but not entirely) in the Scripts.cpp and TerminalScripts.cpp classes. These functions basically load data into a very simple script parser that controls cutscene logic. Fun fact: modders reverse engineered this “internal scripting” years later to do amazing things with custom levels that I didn’t even know were possible.
Somewhere along the road, I picked up that it was a good habit to separate your code into input, logic and render, and boy did I take that to heart. Most of the critical game code is in three files – input.ccp, logic.cpp, and the incorrectly named titlerender.cpp. Every state in the game is packed into these three files, under functions called things like “teleporterrender” and “towerlogic“. There’s a lot of copy and pasting going on here.
All the actual levels in the game are hardcoded in huge arrays that I generated with my own map editor, which exports the levels in source code that I could read in. This is just kind of how it worked when making a flash game in 2009 – accessing external data assets is hard to do, so it just made sense at the time to compile that into the game instead. All the really big files (like Spacestation2.cpp, Finalclass.cpp and so on) were made this way. I’ve uploaded the code for the editor here for completeness, but it’s not really useable anymore to be honest (it requires Allegro and Mingw to compile). I made a similar tool for rearranging the final level layouts!
When I was making this, I didn’t really understand how static classes worked, or why they were a good idea. I think I read somewhere that static classes and global variables were BAD in flash, so I tried to avoid using them at all ever. The result? Virtually every function in the game is passing around the following arguments: “Graphics& dwgfx, Game& game, mapclass& map, entityclass& obj, UtilityClass& help”.
VVVVVV basically has no temporary objects, and it fills all of its entity arrays (and most of its other data arrays) with hundreds of blank entries when the game is first initialised. It does this because I read somewhere that deleting objects in flash causes weird hiccups as the garbage collector takes over and slows things down, which is actually sort of true. I was still doing this weird thing in new projects until very recently – I finally broke the habit in Dicey Dungeons.
One more: as well as the cutscene parser, I had another way to control game logic as you were playing – a monolithic state machine, which had gotten completely out of control by the end of the project! You can find it in Game::updatestate, and I kinda recommend checking this out even if you don’t read anything else! This controls things like triggering the start of more complicated cutscenes, where teleporters send you, the timing of the level completion animation, and other miscellaneous things that I just wanted to kludge in quickly. The states are numbered, and it counts all the way up to 4099, with gaps. When I was developing the game, I kept a notepad nearby with the important numbers written down – 1,000 triggers the collection of a shiny trinket, 3,040 triggers one particular level completion, 3,500 triggers the ending. This dumb system is the underlying cause of this amazing 50.2 second any% speedrun of the game.
I dunno, what can I say? I was young and more interested in getting something on the screen than implementing it properly. Maybe the best thing about VVVVVV’s source code is that is stands as proof of what you can hack together even if you’re not much of a programmer.
Looking back through it myself all these years later, I find it really funny how much of it is basically just the same parts copy and pasted over and over, with the values changed. This basically makes it impossible to read and maintain ten years later, but back when I was in the thick of it, it made it really fast to iterate and add new things. I’ve gained better habits over the past decade, and I’m definitely a better programmer now – but it does seem to take me longer to do things.
Surprise Birthday Party!
Just as I was getting ready to post all this, Sergio Cornaga announced a 10th anniversary game jam for VVVVVV over on glorious trainwrecks!
I am so excited about this, haha – and I love glorious trainwrecks, which hosted the regular Klik of the Month jams that I did regularly around the time I was making VVVVVV. This feels like a perfect home for it!
I’m really, really excited to see what people come up with – once the jam ends, I’ll do a big round up post here on this blog, in the style of the old VVVVVV player level posts I used to write <3
A decade on, I still feel the same way. I’m incredibly proud of VVVVVV, and grateful for everything. I want to thank everyone who helped me along the way – Magnus for his incredible soundtrack, Ethan and Simon for all their work to bring the game to more people, Bennett for naming the rooms, Stephen for helping me get that mac build out late in launch day. This game is special to me – thank you to everyone who played it and supported me over the past ten years. It’s meant so much. <3
Hey, I was on a podcast! This is new for me – I’ve been recorded talking at events and things like that, but I’ve never actually been a podcast guest like this. It helped a lot that I knew both of the hosts!
This was, uh, terrifying, but I think it went pretty well! Actually, it was a lot of fun – Started off a little shakey, but I relaxed a bit as it went on, and I think it ended up being pretty interesting. Anyway, check it out!
Hey! Welcome back to my series of seven daily blog posts on the run up to Dicey Dungeon’s launch! This one’s a bit overdue, as the game actually launched, uh, *checks watch* three months ago. Ah. Well, let’s have a news update and catch up on everything that’s happened! I barely know where to start.
…I still don’t really know how to talk about all this. That’s actually why this blog post is so late. I kept trying to write it and getting nowhere.
I tried to keep my expectations low – I’m really proud of this game, but there have been so many indiepocalypse stories in the last few years that I was nervous that it all might go wrong. And I, uh, took some risks. I blew a huge chunk of my Super Hexagon and VVVVVV savings to make this. I was quietly hoping it would do ok, but really I was just hoping that at the very least it wouldn’t end up being a total disaster.
What actually ended up happening is that it shot right past those quiet hopes, and massively exceeded my wildest ones – it’s been by far the biggest and most successful launch of my career. Within just its first month, Dicey Dungeons outsold the lifetime sales of my previous two games on Steam combined.
I might have more to say about all this when more time has passed. I’m probably not the best person to talk about business stuff, to be honest. I do think we did a lot of things right – going to expos, reaching out to press and streamers, cultivating a community on our discord. I think it’s worth talking about that and sharing that knowledge, and I hope to do it at some point in the future. But also, we owe a lot to Lady Luck. We’re really, really lucky to have been this successful, and I don’t think I’ll ever be able to fully explain how we did it.
We won the Indiecade Grand Jury prize
This came as a pretty huge shock, to say the least. We were all really, really honoured by this, and it meant a lot to me personally <3 This was my third time as an Indiecade finalist – VVVVVV won the “Most Fun and Compelling Game” award in 2010, which was huge for me, and At a Distance was a finalist in 2011 – but winning the grand prize? That’s something I thought would never happen.
We’ve been updating the game, like, a lot
Since the game came out three months ago, we’ve released six updates, and we’ve also released a free DLC, the Halloween Special!
When Super Hexagon came out in 2012, I immediately moved on to a different project, and I really regret doing that. It was bad for Super Hexagon, and it was bad for the other project too – I was too exhausted from the stress of releasing that game to really get into anything else, and I ended up just resenting the amount of time it was taking to work on necessary things like bug fix updates and ports. That period of working on the PC port and fixing iphone bugs was actually more stressful than the launch.
With Dicey Dungeons, I’ve thought about this a lot, and I’ve decided to do what I wish I’d done with Super Hexagon: to have a long cool down period of maintenance work. For the foreseeable future, I’m gonna try to work normal hours, and just focus on making sure that this game is as good as it can be. I wanna start taking more time off, to actually play games and to relax and take care of myself and rest up a bit and actually figure out what’s next for me, instead of rushing into something new. I’m basically planning to keep working like this, making Dicey Dungeons as good as I can, until I can’t think of anything else that needs to be done.
The next update planned is v1.7, which will be shifting focus to modding support for a while (which is already pretty cool, as the Halloween Special shows!). As well as that, I’m also thinking about how we can do some more big updates… We’re not doing anything for Christmas – it’s too soon, and we need a break – but hopefully we’ll be doing more stuff like the Halloween Special in future. I’ll be sharing more about all of this in the coming weeks and months!
We’re planning ports
I’m really happy to announce that both Switch and Mobile ports of Dicey Dungeons are underway!
It’s worth saying that these things can take some time to come together, and there’s currently no release date planned. I think we’re talking probably next summer at the earliest. It’s really, really important to me that every port of the game be at an extremely high standard – I don’t want there to be any bad version of the game.
There’s not really much more to say at this point, but when I have something to share, I will! Probably the first step towards this that people will see will be improved touch controls on the PC version, and well as keyboard and joypad controls as we figure out the best way to make this work on a Switch! Am really excited to see this all come together!
I think that’s everything for now. Thanks so much to everyone reading for your support! Excited about the next steps <3
Yes! Well, sort of. I’ve never finished a game like this before. But I’ve, uh, taken quite a few runs at it.
The website Hardcore Gamer wrote a very lovely article about Dicey Dungeons from when it was at Indiecade’s E3 showcase, which began like this:
It feels like it’s been a while since we’ve heard from Terry Cavanagh. The acclaimed indie developer delivered amazing work with VVVVVV and Super Hexagon earlier in this decade, but since then he seems to have been happy just making smaller, experimental Flash titles. But now he’s back with his next major game, Dicey Dungeons.
Yeah, lol, fair. I can see how it looks that way! Actually, I considered making today’s question “Super Hexagon was in 2012! What on earth have you been doing for the last 7 years?“. So let’s quickly answer that one first!
The way I usually work is to prototype a bunch of small ideas, and then try to develop the promising ones into bigger projects. This worked pretty well for me until about 2012 (both VVVVVV and Super Hexagon started out as jam games!), but over the last couple of years, it does seem like my success to failure ratio has gotten pretty bad. Or maybe my standards are too high, I don’t know. In any case.
I’ll say right off the bat that I’m extremely fortunate to be in this position at all. VVVVVV and in particular Super Hexagon were both very successful, and that’s meant that it was possible for me to have a few years of failed projects. I’ve been living off my savings from the initial releases, and through what I’ve made from various ports of both games over the last few years. It helps a lot to be a solo developer without much in the way of expenses.
But: yes, I’ve had a few years of failed projects. Since Super Hexagon, I’ve attempted four commercial games, all of which are currently either on hold or cancelled – State Machine, Halting Problem, Four Letter Word, and Nexus City – I’ve also spent a lot of time working on projects that I did consider making commercial, but ultimately ended up making available for free, like Tiny Heist and Naya’s Quest.
I have been a little bummed out about that over the past few years. But it’s kinda hard to feel that way just right now, a day away from releasing the best thing I’ve ever made.
Here’s a big thing that’s new for me about Dicey Dungeons: it’s not a solo effort. For the first time in my life, I put a team together to make a game.
Dicey Dungeons is being made by four full time creators – myself focusing on design, Chipzel on the music, Marlowe Dobbe on art, and Justo Delgado Baudí doing the programming. We’ve also got about a half dozen other people contributing part time – including Holly Gramazio, who wrote the script, and Dana Trebella, who’s helping us with PR and Marketing (we don’t have a publisher!). (The rest: Philippa Warr helped us out with copyediting, Lars Doucet implemented his polymod library into the game, and Niilo, Adriana, Jules and Will did the game’s voices.)
By a lot of people’s standards that’s a pretty tiny team, but from my perspective, after a decade of mostly working on my own or with just one other collaborator, it’s a huge operation, and a huge change, personally.
It’s been an adjustment – I value working on my own a lot! Being in control of every little element of a game is a wonderful thing, and after Dicey Dungeons, I do plan to make more small solo stuff – but gosh, it turns out working with a team is really great as well.
A big part of it is probably who I’ve been lucky enough to work with – everyone on this project really gave it their all, and cared as much as I do about making it into something special. It’s a really amazing thing to be able to just rely on people to do great work – when you have a team like that, you end up with a project that is so much greater than just yourself. It feels like an obvious thing to say, but the version of Dicey Dungeons I would have made on my own would not have been on the same level as the thing that we have now.
Dicey Dungeons started as a game jam game for last year’s 7 day roguelike. I had a pretty simple ambition: I wanted to make a “dreamquestlike”.
I’d been replaying Dream Quest a lot at the time after rediscovering it again, and I was really interested in trying to make something small and different that was a bit like it, but with my own spin on it. I figured it’d just be a tiny 7 day thing, so I didn’t think about it much more than that. I tried using dice instead of cards, just as a random prompt to give me something different to do with the genre, and gosh, it turns out, that was a rabbit-hole that I’m still exploring.
Okay, so it looks a bit wonky, I get it. And actually, it plays a bit wonky too. At times, it feels ridiculously unfair and unbalanced! That’s actually a huge part of what I find so refreshing about it.
For me, there’s sort of a galaxy brain meme thing going on with this game – from first impressions to second impressions to still playing it five years later impressions, I feel like I’m always finding something new in it. Dream Quest challenged the way I think about game design, and gave me with a whole new paradigm for thinking about what I actually find fun in what I play, and what a good game “is” for me. I can’t think of another game off-hand that’s had more impact on how I think about what I do.
The closest experience I’ve had to this is discovering pop music in my 20s. As a moody teenager, I’d always been super into rock music and metal and dance music and things like that, and low-key dismissive about pop music. I used to really care about certain concepts that I thought were important: “authenticity”, “auteurism”, that sorta nonsense. Letting go of that? It opens up this whole new dimension of ways to care about music.
What I’m trying to say here is: Dream Quest is the Girls Aloud of videogames.
The thing I love about Dream Quest is that it’s WAY more interested in letting you find cool combos and discover things, and in letting wild and astonishing things happen, than in being fair, or in being neatly designed. It recognises that it’s more fun to understand and master the mechanics of its systems, to learn how to unbalance and break it, than it is to try and balance everything so that it feels broadly the same every time.
I love that Dream Quest just has playstyles and strategies that are clearly better than others. That is has the guts to be so unbalanced! It’s clearly deliberate – it presents you with different choices, all of which sort of work, but some of which really work once you learn the ropes. It also has other choices, which don’t work nearly as well, but if you know what you’re doing you can make them work anyway.
I think this demonstrates a huge amount of respect for the player, and leaves breathing room for them to set their own goals and explore this little universe, in the same way the designer did. It makes the game feel wild and free and playful and open. More than anything else, this is what I loved about Dream Quest, and what I wanted to explore with my own work.
Dream Quest, of course, isn’t my only inspiration for this game – it’s also influenced by gameshows, by the many RPGs I played as a kid, by Undertale, by Adventure Time, probably loads of other stuff that I haven’t even consciously realised yet. If you ask other members of the team they’ll have their own answers for what inspirations they brought to the project too.
I’m a big believer in talking openly about what’s inspired me, and I think more people should do it! Everything anyone *ever* makes is inspired by what’s in their head – what they’ve played or read or encountered or thought a lot about. Creation doesn’t happen in a vacuum – everything is a remix! You start with the ideas you love and obsess about, and go from there to make something that’s uniquely your own.
I say this all the time, and I’ll say it again – I think Dicey Dungeons is the best game I’ve ever made. But here’s another thing: Dicey Dungeons is also, by a wide margin, the biggest game I’ve ever made.
It’s only when I actually sat down to figure out how long it was that this fact really hit me. We never set out to make a huge game – it just sort of happened, bit by bit.
My previous two games, VVVVVV and Super Hexagon, are very different here.
VVVVVV takes most players 2-3 hours to complete, a bit longer maybe if you do things like complete the time trials and hunt down all the trinkets.
Super Hexagon, played perfectly, takes six minutes to finish. Many players take… longer. But even then, the game is fundamentally a minimal one. It’s just a very different design – making it was about refining it down until it was right, rather than exploring it and expanding on it, like Dicey Dungeons is. About cutting things out rather than putting them in.
This game is different. It’s taken me about about three times as long to make as either of those – they were six months each, this is gonna be closer to 18. Also: I’m not making Dicey Dungeons alone! VVVVVV and Super Hexagon were just me and a musician; Dicey Dungeons is made by a full team – four full-timers and quite a few others contributing. So, on every axis, this really is the biggest game I’ve ever made.
So, how long, exactly?
Well, let’s do some quick maths! The game has six playable characters. Each of those characters has six “episodes”, which are like levels. There’s also a separate final episode, so that’s 37 episode in total.
A normal player, playing the game for the first time will probably beat the first few episodes in about 20 minutes, but some of the later ones like the Witch episodes take more like 40. On average, I think it probably takes about 30 minutes an episode, give or take.
To “complete” the game, though, you don’t have to do all 37 – you can skip one episode per character, so for a minimum completion, the total is 31.
So, uh, a half hour times 31 is… 15 and a half hours? For a minimum completion. Gosh.
But actually, that’s probably not right. That assumes that players beat every episode they play the first time through, which is… probably not going to happen. But lets be generous, and say that a player wins 2 out of every 3 matches? That brings the estimated minimum playthrough time to, uh, 23.25 hours. And many players will take longer, probably. There are already people with 100s of hours on the alpha.
If this scares you off a bit, that’s really not my intention! I think of the game not as having a lot of content (although, it does!) – but of having a lot of what you I guess you could call “replay value”. In fact, the way the game is paced, I think you’ll see a lot of great stuff even if you don’t bother with the episodes, and just do the introductions for the first five characters.
Dicey Dungeons is what some designers like to call a “stuff” game – a game with lots and lots of atomic stuff in it, all of which plays against each other in interesting ways. A thing about Dicey Dungeons that I’m really proud of is that you really don’t need to see all of that stuff, or even most of it, to have a great time with it.
My hope is that most people’s experience will be much slower, and less focused on trying to “complete” it. Maybe playing a quick episode every few days or so over a long stretch of time! This is how I like to play games, and what I hope Dicey Dungeons is for most players.
Ok, deep breaths! Next Tuesday, I’m launching Dicey Dungeons. This is my third commercial game – my last one, Super Hexagon, was seven years ago. I’m excited, but also: pretty anxious!
I feel like I have a lot on my mind right now, so, I wanna try something this week! I’m going to write little blog posts every day about various things related to the game, to maybe try and explain why this thing turned into such a big project, why I think so much of this game, and why my team and I have been working so hard on it.
So, here we go. I’ll update this with links as they go up!
So, today! What’s changed in Dicey Dungeons since the last alpha?
Well. Kind-of a lot.
A new soundtrack
Niamh felt pretty strongly the the music from the alpha versions of the game was only meant as unfinished placeholders: just early sketches of what she really wanted to do. Which, over the past couple of months, has really come together and developed into something spectacular. You can check out a few clips of the new soundtrack here:
We’re also adding voices! These aren’t line readings – they’re more characters sounds, Simlish-style, providing extra personality and inflection for every single character and enemy in the game. We’ve got new sounds too – in general, audio has just *massively* levelled up since the last alpha.
Loads of new art and animation
Thanks to a lot of hard work from Marlowe, things have really come together on the visual side of the game too! All the placeholders in the game are gone now, with every screen given care and attention. There’s new stuff too! More backgrounds, lots of extra polish, more enemies…
Yep! The final version of the game has 11 completely new enemies, and re-adds 3 that were dropped in the v0.16 enemy design audit.
Parallel Universes and Bonus Rounds
Parallel Universes are one of the highlights of the game now: a substantial new episode for every character, with totally new equipment and rule changes to how every status effects works. These might be the best episodes in the game – I really felt I was pushing myself harder as a designer than I ever have before, and I”m so proud of them.
There’s also a new episode 6 for every character: the Bonus Rounds, where you start out with normal rules but as you continue through the dungeons, more and more weird and awkward rules are added to it, different every time. These episodes kind-of take all the best stuff from the game and put it in one place – so Parallel Universe and Vanilla equipment in one episode, along with random rules that widely change how you play. They’re the game’s “infinitely replayable” mode!
No spoilers, but: I’m super excited for people to see the game’s ending. It’s a whole extra episode that unlocks once you’ve beaten the Bonus Rounds – big and ambitious and very different from anything else in the game. Honestly we probably all got a bit carried away on this one. I’m super proud of this.
Loads of new writing
The last alpha had three short cut scenes, two of which weren’t animated. The game now has, er, eighteen short cut scenes, plus short outros when you beat an episode, a load more lines that enemies might say when you defeat them, and lines from the shopkeeper characters – none of these are long, often it’s just one sentence at a time, but they really bring the whole game together. I really love where we ended up with our story! (I wrote a little bit more about this last week.)
Lots of other little things
Too many to list, honestly. But as well as all of the above, the final version of the game has:
A challenge system: As you progress through the game and complete certain challenges, you unlock a gallery of enemies with tiny profiles for each!
Shopkeepers: We’ve had the art for these around for a while now! Finally, they’re implemented and in the game!
Improvements to existing episodes: I’ve done a design pass on all of the episodes and tweaked most of them, and made very substantial changes and improvements on a few.
Loads of bug fixes: So many fewer bugs. Lots of extra little polish things too!
Nearly there now. I can’t wait to share this with everyone <3