Bill in BSODia Post Mortem

Posted by (twitter: @vigrid)
April 25th, 2012 12:39 pm

tl;dr: Good: I made it. I learned a lot. Bad: XNA is not for jams, web is easiest to play. Ugly: I’ll be back.

This was my first Ludum Dare and the first I have ever made and released. I am proud, as I always wanted to make games, and finally found the courage to try and make one for real. I had my cherry popped after over many years of dreaming (I’m not an old fart yet, though). That was totally worth it! Even if it’s crap to you, to me it’s special: If you haven’t rated it – rate it, I’ll be happy to rate you back!

What went right?

  • Preparation: I read this book. You should read it too.
  • Sleep: I slept enough to be rested and productive during both days. The theme was announced at 3AM in my time zone, but I decided to sleep, instead of waiting for the theme. That was a good call. Sleep deprivation is really bad for your brain.
  • Tools and Technology: I used Visual Studio with ReSharper (VS without R# is crap, it’s a fact), programmed in C# / XNA, used GIMP for graphics, and BFXR for audio. By saying that GIMP went right I mean – I struggled a bit, but found my way around it. By saying BFXR was a good tool I mean that I’m deaf as a doorpost and I have managed to get some sound out of it. There is bad side to XNA which I’ll address below.
  • Source Control: I used a repository for my LD48 code. That gave me the comfort of having an off-site backup, and comfort of being able to screw up without risking losing all my work. Also, for free, I just needed to post a link to the repository and I was done with publishing the source code.
  • Focus and Motivation: Most of the time I was focused on creating the game, and limited distractions to the minimum. On the first day I blogged about my progress a bit, logged on to IRC for a second, tweeted, followed others’s progress, etc. I had a longer lunch break and ate out. On the second day I was more focused, never got on IRC, ate at home, stayed away from Twitter and from blogging. This helped me to get into the “zone” ans stay there.
  • Time Lapse: This deserves to be put in bold and all caps: RECORD A TIME LAPSE, IT HELPS YOU COMPLETE A GAME. There. Now that I have your attention, let me explain. First of all, you have a “I’m being watched” syndrome and you focus on the game, as you know… Your private chats, and messing around the internet are going to be recorded. So you don’t do that. (To be fair, I have to admit that I cheated, as I recorded only a single monitor in my time lapse). But the other, and probably more important part is – when you watch your time lapse, you can see how much time you have wasted on doing stuff that you didn’t really need. That’s a great resource, for you, and for others as well. More on this below.
  • No Livestream: Initially I toyed with the idea of live streaming, but decided against it. First of all – I figured it doesn’t serve any purpose that a time lapse does. Second of all – it eats a lot of your resources and your system is a bit less stable. During the coding, last thing you want to see is this:
  • Unless you’re me… BSOD intro: this definitely went well. I think I spent about 3 hours making it right and aligning all the pixels. But it felt great to read all the positive comments about it. Being a crap game designer, this intro was my transition into the Tiny World theme, and something that was supposed to grab my player’s attention. It also allowed me to justify using…
  • Isometric graphics: I have declared a voxel engineI could use, but that would feel like yet another Minecraft. I wanted to get out of my comfort zone, and wanted to actually create some graphics. People say that the graphics looked “polished”. I think any real graphic artist would have done a better job. I’m satisfied with the graphics, because they’re consistent…
  • … and Humorous: I figured, if I’m not a game designer (yet) ;), I can’t make a good game in 48 hours. I’ll try and at least make some people laugh. So, William and Steephenshould be quite familiar:
  • The Little Things: Can’t draw? Don’t have an idea for eye candy? Particles are the answer! Made a 2D game, but it makes sense to add a third dimension? Draw some shadows!
  • Little Differences in Mob “AI”:
    I had 4 different behaviors for the mobs. Too bad level design didn’t give them a chance to show. More on this below.
  • And last, but not least: I MADE IT!
What went wrong?
  • Tools and Technology. If you think you’re having a deja vu, don’t worry. You’re not having it. XNA is great for getting results quickly. It is hack-friendly (or rather proper-architecture-unfriendly). It has a content pipeline that just works. It is sh*t when it comes to publishing to non-Windows. Cost: lost Linux and Mac players. Hint: learn and use web-friendly technology for the jam.
  • No Code Reused: I have declared my library, but I have managed to reuse only 8 lines of it. I didn’t have anything for simple 2D / isometric graphics. A voxel engine and a working HUD system weren’t of much use for my game. Cost: “Crap. Oh well”.
  • Scrapped Content: Having no experience in creating games, I wasn’t really sure what to do. My first tile set was too complicated. I used 6 parts to create a “vertically scalable” block, not really having a solid idea how do I want my game to look like. I scrapped this, and created just a single sprite to display a block. That worked perfectly, and allowed me to draw cracked blocks quickly. My audio – I have created some sounds on the first day, but ended up with re-creating all sounds on day 2, as I forgot to use them, and disliked them. I wanted to make all the pixels/blocks distinguishable during the transition from 2D to isometric. I failed. Total Cost: about 4 hours. Hint: if you’re a coder, create sound effects only when you’re about to plug them into your code, not earlier. If you’re not an artist, don’t create content that you’re don’t need yet!
  • No Music. Well. It hurts less because most of the games didn’t have any music. Cost: less fulfillment.
  • Bugs and Glitches: the game crashes when you run off the map. It would take 2 minutes to fix this. There are some minor graphic glitches with tiles overlapping the other sprites. There is a problem with alpha blending not working the way I wanted for the explosions. Cost: if you haven’t noticed these, it’s just my pride.
  • LEVEL DESIGN: It is sh*t with a capital SH*T. The game feels empty, there are no enemies, and the level is just too big. I haven’t implemented any spawners, only the main boss spawned a random mob periodically. There were too many weapons and too much ammo. I cut too many shortcuts implementing the map. It ended up as a maze game with elements of shooting and jump-to-cheat feature. I had the level implemented as a PNG file with predefined colors meaning different things. It would take 15 minutes to make the level design a lot better. Another 15 minutes or so to implement mob spawners with some ugly copy-pasta from my Boss class. Cost:a lot of playability and fun was lost. I have to confess, I was tempted to cheat and update the level design after the release, but I <3 U all too much to do this to you. I could probably submit my game into the Jam, not into 48 hour compo, and have a lot better level design and more polish.

Lessons learned:

  • Know Your Audience: develop for web, if you can, or at least have build scripts for multiple platforms.
  • Know Your Tools: practice pixel art with GIMP – pixels are good for most of jam games. Learn what the sliders do in BFXR.
  • Have a 2D Engine You’re Familiar With: Why? Bad 3D art is… Well… Just bad 3D art. Bad 2D art is something that your players can fill with their imaginations.
  • Focus on The Gameplay before Focusing on The Eye Candy: I spent my time making the particles and shadows pretty. I should have made my level more enjoyable instead.

Ludum Dare was the best creative rush I’ve had in a long time! I enjoyed playing a lot of your games already, and I’m happy when I see that someone has rated my game. Even if it ends up on the very bottom of the list, it will still be unique – as it’s on THE list. I am definitely going to participate in the next one, and will look around if there are any other events that I could join. I am also motivated to learn Stencyl, and release a couple of small games to the world.

I’ve had a great time, and will have even more playing your games.

Play mine! :)


Leave a Reply

You must be logged in to post a comment.

[cache: storing page]