Lumo Dev Diary16 Jul 2018
My house move is complete and I’m living in the UK again. Woo!
I stumbled on the Lumo Development Diary that I wrote for Linux Voice Magazine while setting up my office, and I’m fairly sure that I’ve never posted it here. So, for posterity, here is the full article:
On April 29th, 2013, I arrived in Finland to start up a new dev-studio. The idea being to make mobile games and learn from the vibrant development community that had sprung up around companies such as Rovio and Supercell. That didn’t quite go to plan. In fact, I ended up doing something completely different and going it alone. Lumo, my first independent game, was the result; a modern take on the classic ‘Isometric Arcade Adventure’ genre (Head Over Heels, Amaurote, Knightlore etc) that was a mainstay of the 1980s gaming scene. Development took around 2.5 years, part-time, and the final result was released in May 2016. This is, roughly, how it happened.
For the last 3 months I’ve been working on an RTS prototype – think ‘Advance Wars’, and you’d be close – aimed at the tablet market. Something about it seems like a great fit between game and form-factor, but it’s becoming increasingly clear that I’m not going to be able to finish it and release it as a free-to-play game. I’ve not got the money for user acquisition (marketing by another name) and I’m not sure I can support it with enough content after release. It’s depressing and my constant mooching about is getting on my girlfriend’s nerves: “Why don’t you just make something you want to do, and forget about the mobile stuff?!” I think she has a point, but I’m still not sure what I can do on my own that I can finish to a high enough quality. I’m at a party, a little worse for wear, idly chatting to Ste Pickford over Twitter. He’s one of the Pickford brothers, responsible for many classic games, and we’re watching speed-runs of people playing Equinox, when it hits me… I’ve always wanted to make a game like Head Over Heels. It was the first game that I actually owned, so there’s a nice circularity to it. They’re reasonably small and I could probably do the whole thing on my own. Eureka! When the hangover subsides I get up and start work on a quick prototype. It instantly clicks. I think this is it. I show my girlfriend and make a quick video to share with Ste, who both make encouraging noises. ‘Arse Over Tit’ is born, and I have my project!
I’m nearly full time on Arse Over Tit. The University where I teach is nearing its winter break and the short consultancy job I’d picked up has finished. The design ideas have settled very quickly. I know that I want to ape the kind of world that Head Over Heels presented, so I’ve settled on the location being a big, ‘scary castle’, with two or three distinct ‘zones’. Each with their own art-style and set of toys for the player to discover. I want the player to feel a little protective of the character and I want them to feel like they’re lost, so making the player character small, almost childlike, should help both of those feelings. It’ll also subtly magnify the environmental dangers as they’re playing. The big question looming over it all is how it’ll look. I know I don’t want to use pixel art. I want this to be as modern as possible – dynamic lighting, high resolution textures and as many modern post-effects as I can squeeze in – but should it be cartoony or photo-realistic? The prototype was quite bright and I want more of a ‘Scooby Doo’ feel, so I buy-in some textures from Gametextures.com and remove all the ambient lighting, settling instead on wall-based torches that light each room while casting long, dark shadows. This immediately feels better, so I create a room where the player spawns in with a big particle effect and link it to another room with musical floor tiles that you have to hit in sequence (stolen from the Billy Jean music video, natch). Even the simple act of moving between rooms makes it feel like a proper game… I think I’ll aim for it to be a similar size as Head Over Heels. So roughly 150 rooms. My notepad has a list of the types of mechanics I’d like to build, so the job of creating rooms begins in earnest. But there’s another problem. My girlfriend hates the name ‘Arse Over Tit’. I’ve tried explaining that it’s just a pun on Head Over Heels, but it’s not washing, so I need to come up with something better. It seems apt to pick a Finnish name given that I’ve just moved here, so I fire up Google translator and start putting in words: Magic, Spell, Charm, Enchantment… Bang! There it is: Lumo.
January – March, 2014
I’ve got a small collection of rooms, but no real game-flow. I’ve settled on the look for two of the three zones that I’m planning and, on a whim, created a room where all the bricks fly-in, as you move, to form the room around you. I really like this effect but it doesn’t fit with how I’m picturing my castle to be. I’d like the zones to feel like they’re at different heights, so living space up-top, a basement in the middle, and then maybe a mine. For this to work I’d need an excuse to drop into some sort of ‘warp zone’, outside of the castle, so I can break all the game rules and mess around a bit. Hmmm. I’ve also been having a bit of fun by sneaking in the odd reference to old developers. I doubt anyone will notice these but they make me chuckle. Some crates have “A.C. & G. Ltd” on them, as a nod to Ashby Computers & Graphics Ltd who, it was pointed out to me, became Ultimate Play The Game, before later turning into Rare. Carpets and curtains have borders that mimic the box art of early Ultimate games (Knightlore and Mire Mare) and there’s a bit of graffiti on the wall saying “JR [John Ritman] & BD [Bernie Drummond] Woz Ere” above two little skulls. Head Over Heels made it into the game! I’ve also taken part in the first, unofficial, Twitter ‘Googly Eye Challenge’ after Rob Fearon suggested that my boxes weren’t ‘Rare’ enough. They’re now walking around with eyes that follow the player. Very cute. Lighting is still in constant flux, but I’m liking the dark and spooky feel that the castle has, even if I do keep changing the colour palette. The ambient audio bed I’ve put in – consisting of little creaks and groans – seems to be working well and there’s a distinct vibe forming. It’s coming together. So, I’m going to need to make the game public (rather than just my Twitter feed), and the quick way to do that is probably the Steam Greenlight process. I’m going to need to distribute via Steam anyway, but in order for this to happen I need to have some screenshots and a gameplay trailer. The latter is a problem. I’ll need at least a minute, preferably two, of gameplay and it’s going to need to show more than just running and jumping. It’s time to make an instance of each of the game mechanics that I’ve scribbled down in my notepad and see if I can chain them together into something that looks like a game!
March – May, 2014
The first week of March is spent editing together the Greenlight video. I have just over 30 rooms to choose from, mainly showing running and jumping, so there’s plenty of footage. The inner DJ in me has taken over. I’ve ended up syncing everything to the music. Er, don’t do that. If I’m honest, I don’t have a plan on how to promote the Greenlight, I’ll just see what happens. I push the ‘Go’ button on the 12th March and Lumo stays on the front page of the Steam Greenlight Community for ~5 days before dropping off. Along with most of my traffic. I’ve posted to every related Facebook group that I can think of, along with G+ but, predictably, this isn’t making much of a mark. I’m a bit worried that I’ll be stuck in the process for a couple of years as I’ve heard some horror-stories… And then there’s a bit of luck. Rob Fearon championed the game in his monthly round-up and the day after dome.fi – a Finnish game and movie news site – picks it up. There’s a noticeable spike in traffic and I make it to the Top 100. I’m there for a week when Valve green lights a new a batch games, so not being included is a blow and I have no idea when the next batch will be pushed through. I decide to send out some emails to gaming websites in the hope of getting some news pieces, but I hear absolutely nothing back. The traffic to the Greenlight page starts trending down sharply so I begin posting to Reddit and joining the #screenshotsaturday posts on Twitter. I continue this pattern, every Friday and Saturday, for a month, but I need a new screenshot of the game each week. It puts the pressure on being productive Monday to Friday. There’s no obvious end in sight so I try another push with the gaming websites, but this time I include a mini-cv of the AAA games I’ve made in the past and a story about how I’ve left the previous studio I was a co-founder of. Within an hour I hear back from Kotaku, who post the news to their site the same day. The day after, Eurogamer pick it up, and then Rock Paper Shotgun. I’m elated and wait for the inevitable bump in traffic to the Greenlight page. Which never comes. Uh. The day after the RPS piece I wake up to people congratulating me over Twitter, for what I have no idea, until I check my email and see the email from Valve confirming that I’ve been Greenlit. Phew! In the end Lumo was in the Greenlight process for 35 days. More than 30k people hit the page and there were 9k yes votes. It’s the first properly stressful part of the project, but it’s done.
May – August, 2014
I’ve told myself that I’m officially in ‘Production’. That means doing some of the chores I’ve been putting off, like front-end, sound effects and actually settling some of the outstanding design questions. What powers will the player have? Will the game be centred around puzzles or just be skill-based? Should there be spells? How is the mouse best used? And then I start getting some interesting emails. One of the console manufacturers is interested in Lumo appearing on their platform. They’d like to see my design docs and have me present my ideas. This is a bit of a problem, because – other than some notes scribbled on paper – there is no formal design doc. I’ve purposefully not written one. One of the things that’s been so joyous about working alone is the lack of ‘paper-work’ bureaucracy associated with professional gamedev. For the most part I just wake up and build what ever is in my head. I put a presentation together to start the conversation and hope they don’t need too much, too quickly. Up to now I’ve only been considering Lumo for PC, so assumed a mouse and keyboard control system (with the mouse being used to deploy ‘spells’, which I’ve yet to think up). Putting it on console would mean supporting joypad. This could work, in fact, it might actually suit what I’m doing, as the original 8bit games only had one button. What if I stuck to the genre and made Lumo a one button game? I’ve also settled on an excuse for the ‘warp zone’: mini-games! I need something break-up the flow of play – to give the player a change of pace – so some short games would be perfect. I can also hide these and use some of the collectables to unlock them. Things are falling into place! By the start of August I have a very rough-and-ready build with a first pass at the game-flow. I take this to Assembly (a demoscene / LAN party held yearly in Helsinki) to show it to a few people and it immediately becomes clear that no one has played an isometric game in years. Getting through my rooms is proving to be way too much of a challenge. I need to seriously simplify the start of the game. Gah. There’re some encouraging noises from friends though, and they universally love the little nods and winks to old games and famous developers that I’ve been sneaking in. I decide to take this aspect a lot more seriously, and with some help from Gary Penn, start reaching out to people for ‘official’ permission to use parts of their old games. I also cheekily send an email to Liz Upton at the Raspberry Pi foundation to see if they’ll let me use an rPi in the game. Lets see how many British references I can sneak in!
September – November, 2014
I’ve entirely re-worked the flow of the game. There’s now a section at the start that just focuses on controls, followed by another 30 minutes gameplay where I’m slowly introducing most of the mechanics that’ll be reused throughout the game. I’m not happy with how linear this has turned out, but I don’t have many options, anything else has proven to be overwhelming to new players. I’ve also added an entirely new zone. My girlfriend and I stumbled on a lovely old church in the country so I snapped a few photos of its walls and made some textures out of them. I now have my own little church zone, full of cobwebs and spiders! Current room count is at 220, so I’ve blown past Head Over Heels in size and I’m no where near the type of gameplay I want to do yet. The zones don’t flow logically into each other and I’m still making ‘tutorial’ style rooms. I want to get to an entirely open world where the player has several options of where to go, so I finally sketch out how all the sections of the game are going to map together. One year without a design doc was pretty good going… I’ve also made great progress with the warp-zone. Three of the mini-games are in and I’ve made some crazy little challenge rooms where everything is floating around the player. I’m really happy with how this part is shaping up (and the fact there’s a Bubble Bobble reference in there!) Music is also in. Dopedemand’s delivered a bunch of fantastic tracks but the idea of doing a dynamic score isn’t working. The player character just moves too quickly; you can be in and out of a room before the music has a chance to react. We’ve spent a fair bit of time on this but I think we’ll have to fall back to ambient music beds. Phil’s fine with the idea – the test one he produced is working well – so he’s head-down in his studio making some more. I’ve also got the Linux version working. There were a lot of shader issues that needed fixing up, so all the hardsurface reflective shaders were removed and the water replaced. But it’s rock solid, and performs every so slightly faster than the Mac version on the same hardware. Happy with that.
I’ve changed the lighting, again. I’ve now got two ‘suns’ in the world, one for each of the back walls. These are different tones (one warm, one cold) so everything’s starting to pop a little more. I’m also colour-grading the final image. This is a lovely little trick that takes the colour of the pixel intended for the screen and pushes it through a look-up table. The look-up table allows you to bake-in adjustments – contrast, saturation, brightness, tone etc. – so gives you fine control over the final image, without having to do work to the individual textures. I remake the Greenlight video at 60fps to show this off. There’s also been a sudden up-tick in publisher interest. I’ve got Xbox One devkits in the post and have a Vita devkit on my desk. There’s a lot of background chat between interested parties now, and it’s starting to eat up a bit of time. I’m going to have to make some decisions soon. I want to support Vita and, now the door is wide open, console, but it’s too much work to do on my own. There’s no rush, so I pretend not to think about it while I head off to spend Xmas with family.
January – March, 2015
I’ve hit a nice rhythm with what I’m building now – ideas are coming thick and fast – but this is the busy part of the year for teaching. I’m only getting a couple of days work done in-between the commuting. I still have a lot of conversations happening in the background about how to actually release the game, which is eating up time. Progress is slow, I’m low on cash and starting to sweat a little. I have managed to get most of the in-game UI done though. I want to make a scrap-book so the player can collect pages showing drawings of in-game exploits as they progress. It makes sense to put all the other stuff, like settings, save game, etc. in here as well. The book model is done, I can animate pages, and I can render stuff to each of the pages, but this was way more difficult than I expected. And it’s had some nasty side-effects, the biggest of which is pausing the game. Up to now I was just freezing ‘time’ so everything in ‘the world’ was locked, but I can’t do that and have animations and particle effects play reliably as the book moves through the world, so in-game objects now have to detect they’re paused. I’ll be chasing little bugs around this forever, I know it. I’ve got a Vita version working, albeit slowly, which shows some potential, but I don’t really have time to optimise it. I drop this for now.
Unity – the game engine I’m using – has bounced up to version 5. In some senses this is an improvement. Up to now I’ve had a one version of Unity for PC and different versions for every console. Each of which had their own, nasty, bugs. With v5 everything should be unified in one editor, with plugins to support console. But there are other changes under-the hood. The code API has changed. Fortunately none of my code was affected, I tend not to be fancy and was already doing things the API change was brought in to solve, but the same can’t be said for code I was using from the Asset Store. I decide to re-write all of this. I also bin the stuff used to create the UI in order to use Unity’s new UI tools. This is a complete re-write the front-end, in-game and mini-game UIs. Ugh. If that wasn’t nasty enough, the lighting model has changed. I’m reliably informed that the legacy deferred pass won’t be optimised on console, so I have to use the new GI/deferred lighting model. This isn’t a small change. Every single material and shader in the game needs to be re-done. Every room needs to be re-lit. I no longer have the old fog model. Kill me.
May – August, 2015
This is, by far, the most productive I’ve been on the game. The missing mini-games are written, all the cut-scenes are done. I’ve made well over 100 rooms during the summer break. The game moves through the tutorial section, before slowly opening up into the final hub-zone, and I think it’s starting to feel good. The re factoring for Unity 5 has stabilised and the three main skus are all running well and in sync. I’ve no major platform specific bugs. Everything I’ve thought up has worked first time and I feel like I’m working like a well oiled machine. More importantly, I’m finally making the stuff I envisaging at the start of the project. I’ve also signed a publishing deal. This is a much needed injection of cash and support, so for once I’m not stressing about that side of things.
The publisher is taking Lumo to the EGX Rezzed show in London. This will be the first time the game’s been in other people’s hands since Assembly, a year ago. I’m nervous as all hell. I also need to make a specific build for the show and a new promotional video. Fortunately the reaction from the show is amazing. Several people are calling it the game of the show, which is extremely flattering. Eurogamer do a video on it and suddenly Lumo’s in the spotlight. I’m quietly recovering from the palpitations I’ve been having all month.
October – December, 2015
I’ve agreed to hit content complete by January so Just Add Water Developments can begin on the console ports. I’ve got one section of the game left to do, about 30 rooms, then Steam integration, Save Game, Map, stuff like that. Seems fine. Of course, it doesn’t work out like that. Most of November is knocked out with travel to the UK for meetings, bits of PR and teaching. I get all the rooms done, just, but I need to balance the game and do all the integration stuff I’ve been putting off. December becomes an almighty crunch to get everything done. I’m working every waking minute and starting to stress a little. The situation’s not helped by constant bugs in the Unity Engine. Animations are breaking, the particle systems are not firing, or flicking randomly about the world. UI rendering picks up random garbage occasionally. Reflections are dropping the frame rate to unacceptable levels and I have a crash on Linux that I can’t debug. I roll back to an earlier Unity version and things are stable enough to get to content complete, but I’ve just had a glimpse of life over the next 4 months. I decide to cut the scrap-book collectables and the publisher is jittery about one of the mini-games, so I have to make something to replace it. Time’s getting tight. On the plus side, Steam leaderboards and clouds saves all work perfectly, first time. At least something’s going right.
January – March, 2016
This should just be a bug fixing phase, but it doesn’t work out like that. I find out there’s a problem with Unity on Xbox One that requires me to pull out all the audio using Unity’s in-built system and integrate it into FMOD. There are thousands of audio instances spread around the game and after December’s antics I’m in full ‘Hulk Smash’ mode. I’m also struggling to find a version of Unity that’s stable across Linux, Mac and PC. Each has different bugs and I have crashes on Mac and Linux. In the end I run with 3 different patch releases of Unity, one for each platform, and I do hacks on my side to get over individual platform bugs. Some of it’s filth. Because of this I also have to move off Unity 5.2.x and go to 5.3.x. Another API change has been made, which affects a fair amount of my code. All the particles need fixing, again, and the scene loading is different. This introduces a weird race condition into the start-up of the game that turns out to be a subtle change to the serialisation order of components. I hack around this and I’m roughly back to where I started. It’s not been a good upgrade, but things get worse. The specular lighting value in the rendering engine has changed. Every, single, specular material, in-game, is, broken. I could actually cry at this point. I fight through the process of re-doing the lighting and checking the materials in EVERY room of the game. It’s a rush job, because I have artists jumping up and down at Just Add Water who need the scenes for the console builds. I get things close, and throw the build over the fence. Looking back I didn’t do a great job at this, some of the rooms don’t look anywhere near as good as in previous builds and the intro scene ends up being flat and lacking contrast. None of the metals look good. I’m probably the only person that’ll notice, but it’s annoying none the less. The actual bug-fixing process for my stuff is trivial, a couple of hundred bugs all told, so I have time to do some changes to gameplay and look through it for problems. In all honesty I’m at the point where I’m exhausted and just want it out, but this is the last chance to make things better. I head out to San Francisco for a PR trip, tired and worried about how the U.S. press will take to the game…
April – June, 2016
We’re due out on the 24th of April but we’re not going to hit the date. Unity bugs blocked one of the console versions right from the start and we’re stuck in cert with another. For everyone’s sanity the date gets pushed back a month and I’m in limbo. I can’t make changes to the game, and I can’t really move on to anything else. I’m not able to stop thinking about it and just relax. There’s a constant background nervous tension about how the game will be received, so I end up mentally pacing backwards and forwards for a few weeks. In the end we hit the 24th May date with four of the skus. Xbox one and Vita follow behind. I receive an email from Eurogamer to let me know that they loved the game and finally, I get a decent night’s sleep. The rest of the month is a blur of interviews, podcasts, 4am Twitch streams and fixing up some small bugs I notice as people are playing. I also start on the Director’s Commentary series for You Tube.
It’s been a roller coaster getting to this point, but I’ve done what I set out to achieve. Lumo’s a niche game, admittedly, but watching the first speed-run of the game on You Tube and hearing that people have already rinsed it for the achievements is a fantastic feeling. Turns out there were quite a few people - like me - who loved those old isometric games. I’m hoping someone else picks it up from here and makes some more.