Beacon Postmortem

Posted by
January 5th, 2011 5:33 pm

So here’s how I wrote Bacon Beacon.

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:

Ongoing scoping

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.

Low-fidelity graphics

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:

No preparation

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.

Internet failure

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.

No sleep

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.

Non-power-of-2 textures

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.

What next?

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.

8 Responses to “Beacon Postmortem”

  1. PoV says:

    Sorry, that bacon thing was me. I can’t help but read the word Beacon as Bacon!

    /me arms in the air

  2. randomnine says:

    Haha. You’re not the only one :p

  3. joekinley says:

    Go Bacon

  4. Bender says:

    I’ve to tell you mate, I loved your game so much, I’ll definitely wait for the new version.
    By the way, is your source code under any GPL/BSD/CC license ?

  5. sfernald says:

    Congrats. That is an amazing accomplishment for a game you wrote in C++ and started out with no base code.

    I think my favorite games are the ones they tell you a story. I really love the storytelling aspect of the game. I know that notes are a common way to progress the story, but it was especially effective in your game. I think because the dialog was tight. The whole tone of the game was one of sadness and loneliness and you could really pick this up through the dialog and use of graphics.

    Good job. It seems like for some reason, platformers always come out well during these competitons, when often there are mixed results with other game types. I wonder why that is. Maybe platformers are easier or a more well defined and known game type.

  6. 0graham0 says:

    Nice little story!

    I liked that the level design struck a nice balance between a linear and an exploratory mode. A narrative prompt or interactive element would pop up right before a full-blown case of metroidesque explorer’s dread (oops you wandered ten minutes in the wrong direction…now you get to climb back up those 7 shafts again) set in.

    It’s interesting to hear that you were “learning” level design as you went along. I dunno if it was intended or unintended but I think the transition from simplicity to complexity helped draw me into the game.

Leave a Reply

You must be logged in to post a comment.

[cache: storing page]