Dicey Dungeons is out now on Switch

Hey! I’ve got some big news – Dicey Dungeons is available right now on Nintendo Switch!

[Dicey Dungeons on Switch eShop]

I’m really excited about today’s launch! I think the game is a great fit for the Switch, and I’m really hoping it finds a new audience here that digs what we’re all about.

If you’ve enjoyed Dicey Dungeons, today is a really good day to spread the word and tell people about it! We’re a tiny team of independent creators, publishing a console game on our own, and to be honest, we really need all the help we can get <3

5 Comments

Dicey Dungeons Halloween Special

Happy Halloween! What an absolutely horrifying year it’s been.

Haven’t been updating the blog much recently – not really much to say I guess! I did a Ludum Dare entry earlier in the year that I’ve been meaning to clean up a bit and post, but that aside, I’ve mostly just been working on Dicey Dungeons updates and our upcoming ports (will have more to say about that very soon, I hope).

Today I wanna post properly about one of the more unlikely things I’ve worked on: The Halloween Special for Dicey Dungeons! Here’s a great video of Retromation playing the first episode of it last year:

Dicey Dungeons had a pretty crazy launch. You know that gif of a burning car driving across the finish line? I relate to that. I feel like it was only in the last three months of development, as we were wrapping up, that I really started to figure the game out on a deep level. There was a period, just after the last alpha, when I was working on the the Parallel Universe episodes, where *everything* clicked. I felt like I was on fire. One year on, my only real regret about Dicey Dungeons is that I didn’t cut more of the early stuff from the game before release.

After launch, when the dust settled, people on the team started talking about wanting to make some Dicey Dungeons content – a DLC. It was a new idea for me: after VVVVVV, I absolutely didn’t feel like making any more platformers. After Super Hexagon, I didn’t feel like making any more action games. But after Dicey Dungeons? I was well up for it.

So, we made the Halloween special, and I think it’s our team’s best work.

With the adrenaline rush of launch behind us, everyone on the team was punching at their best. Everyone brought their A-game: Niamh’s spooky soundtrack is absolutely killer, Marlowe’s Halloween costumes for the baddies are fantastic, and Holly’s script has some of my favourite jokes from the whole game. And I’m damn proud of the work I did: the Inventor and Witch episodes in particular are the very best episodes I’ve made, out of the entire game. When it all came together, I was so, so proud of this dumb thing. I know it’s just a weird Halloween tie in for a game that’s not even horror themed, but we put so much energy and love into it.

I guess I was *maybe* a little bit disappointed that it didn’t get more attention, but ahhhh what can you do? I think people maybe just didn’t even expect it to be interesting – people see seasonal DLC and think it’s just like, a gimmick. Fair enough.

So, probably I’m never doing this kind of seasonal thing again – I just don’t think it’s for me. If we ever do another DLC for Dicey Dungeons, I want it to be something that stands on its own, and has its own identity.

Anyway! It’s Halloween again, so give it a try, if you haven’t already! Here’s a guide to launching it from within Dicey Dungeons. Go check it out!

3 Comments

Dicey Dungeons v1.8 out now!


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

1 Comments

VVVVVV’s source code is now public, 10 year anniversary jam happening now!

Posted in VVVVVV


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!

[VVVVVV Source Code on github]

The repo contains two versions – the desktop version, ported to C++ by Simon Roth in 2011, and later updated and maintained by Ethan Lee – and the mobile version, written in Actionscript for Adobe AIR, based on the original v1.0 flash version of the game.

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!

VVVVVV’s 10th birthday eVVVVVVent!

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

Even before I released the game’s source code, I made the tools to make and play VVVVVV levels available for free in the “Make and Play” edition back in 2014! You can download that from here! If you’re interested in making levels in the VVVVVV editor, this thread is a good place to start! Good luck!


Mushy stuff

Ahhhhh so I’ve talked about how I feel about VVVVVV a little before – just before the first anniversary, I posted about how things were going for me when the game first came out, and how its success changed my life. Then on its firth anniversary, I posted about how VVVVVV felt like a once in a lifetime project – that nothing before or after could come close to.

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

43 Comments