So here’s how I wrote
What I did:
I started LD19 with ambition, ‘flu and no preparation or basecode. I wanted to do a sprawling content-driven platformer, both to practice storytelling and to see how big a scope I could hit within the 48 hour limit.
My initial goal was to build a fairly linear “Metroidvania” type game where you’d explore and then get to an exit. I figured I’d come up with a narrative using the theme within that game structure once I’d started.
Then my internet connection was cut off forever.
What went right:
About a third of the way into development, I realised I might not finish the game in time. I started logging work done in timelog.txt to help me estimate further work. Having a good idea how long it’d take me to tile a new zone or draw a new full screen image for some area helped me keep the scope realistic, letting me produce a relatively complete game – even if I missed the mark slightly. But more on that later!
I got better at tile mapping/level design as I went
I’ve never done any tile mapping or serious level design work. I rapidly picked up experience over the weekend and I’m quite proud of some of the later areas I crafted compared to the first few. I also got much quicker at it. If I hadn’t, I’m not sure I’d have had time to put the ending together.
Delivering story through text
Just as this was my first attempt at level design, it was my first attempt at storytelling through gameplay. I was originally considering an intro cutscene to set up the story but decided to jump straight in and leave clues instead, communicating the relevant information by text. Text-only content was extremely quick to implement, and since I’ve had comments praising this aspect I conclude the text-heavy approach helped to establish the mood very efficiently.
Beacon’s native resolution is 400×225. The main character is 24×24 and its tiles are 16×16. The high-res structures and objects are very simple and stylised, with straight lines, a very limited palette and banded gradients (if any). This low-effort approach to art let me create a great deal of bespoke art for scenes in the game in just a few hours, even with my crappy art skills.
Beacon doesn’t have any lighting, shaders, full-screen effects, particle systems or other niceties. Skipping this stuff helped me focus on my priorities of content and tight, simple gameplay.
What went wrong:
I started without any basecode, so my first task was writing windowing code, input, basic texture loading, rendering and so on. It took me about 6 hours to reach the point where I had a character moving around in a tilemap and could render text. If I’d invested the time to prepare (within the limits of the rules) before the competition, I’d easily have had 4-6 more hours to work on the game while I was still well rested.
Two hours into working on the game, my Internet connection cut out.
It took over an hour on the phone to Virgin to find out that they’d disconnected the old house two days early for our requested house move, wouldn’t reconnect it, and couldn’t connect the new house across the street until Monday. (Jerks.) Without internet access, I couldn’t get tools/libraries I needed or check reference, and I wouldn’t be able to submit at the end.
I almost gave up at this point.
I resolved to keep working on the game and, on Sunday evening, packed my desktop into the car, drove 60 miles to *my* new house – which already had internet access – then finish the game and submit it from there. In the end, talking to Virgin cost me an hour; packing up my PC and driving down through the snow took two. When I needed a font/font renderer, I couldn’t search for one, so I wrote one; another 30 minutes or so.
I worked through the night. By Sunday evening, I’d been up for over 30 hours. Staying on task was getting tough!
If I’d napped for an hour or two around halfway, I feel it’d have been worth it. Instead, I got through enough coffee that I still couldn’t sleep until five or six hours after the contest ended. That kept me awake, but I’m not sure it helped me stay focused
Slightly too ambitious
This ties into the ‘sleep’ thing. All that scoping stuff above was useful, but I didn’t factor in how I’d slow down as I got tired. In the end, I was a few hours short. I had to cut music and also some minor bits of art polish, but fortunately I’d got all the essential stuff done.
I really should have known better, but I used 24×24 images for a few sprites – like the astronaut! This worked perfectly fine on my machine, but apparently the way DevIL handles loading these images makes them blurry on some hardware.
I’m currently working on a revised version of Beacon, with gameplay and art polish, music and some minor visual effects, for freeware release some time next week. I’m also collaborating with an excellent friend on a much larger non-linear platformer building on the Beacon codebase.
I’m taking my first steps as a fulltime indie developer now and LD19 has given me a few projects to warm up with. More than that – it’s made me remember why making games is fun! I got more out of LD19 than I expected and I’ll definitely see you all in four months.
Beacon was programmed in C++ in Visual C++ 2010 Express using SDL, OpenGL, DevIL and FMod. All content was created in Photoshop CS5 trial, notepad, and sfxr.