About Andy West


Ludum Dare 26

Andy West's Trophies

Andy West's Archive

Minima Postmortem

Posted by
Wednesday, May 8th, 2013 9:15 pm

Here is a run-through of what went right and what went wrong in the creation of my game entry, Minima.

Minima is a simple game of dodging fast-moving enemy spaceships with the cursor or W, A, S, and D keys.  The original game was made for Windows using C# and SDL.NET.  It has since been ported to Flash for the web.

The Good

This was my first time competing in Ludum Dare.  Two days is an incredibly limited amount of time to produce anything game related, so I’m glad I finished it at all.  The contest was fun, and I now have something to add to my game development portfolio.

I felt well prepared for the challenge, partly because I’ve been writing business software for many years and I’m accustomed to scope management and tight deadlines.  But I also got a lot of good advice from a Ludum Dare survival guide, most of which I followed.  I got plenty of sleep, ate sensibly, and didn’t overdo the caffeine or sugar.  I took frequent breaks and went outside occasionally for sun and fresh air.  In some ways I lived more healthily than I do on most other weekends.

I resisted the urge to refactor, optimize, or maintain clean code.  This goes against every instinct I have as a developer, but 48-hour dev contests are the exception to the rule.  When you’re the sole programmer on a project this small (and a deadline so short), you can keep everything in your head.  As far as I can tell, Minima is relatively stable and bug-free.

The Bad

I decided to address the “minimalism” theme with a specific game feature, and that was my first mistake.  Games made in two days can’t have “features”.  For the most part the core game mechanic is the feature, and everything else gets cut.  As a result, my game is somewhat bland and uninspired.

Going into this, I thought I knew my toolset pretty well.  I use Visual Studio and C# every day.  The problem is that game libraries are just as important as the core language.  A lot of time was burned reading the SDL.NET docs and generally stumbling around the library.

I didn’t really think people would mind downloading an executable and double-clicking on it, but it turns out that when you’re trying to rate dozens of games, downloading stuff is annoying and gets in the way.  Therefore, I learned Flixel and ActionScript and ported Minima to Flash as quickly as possible.

One almost-disastrous mistake was waiting to test on a non-dev machine until last minute.  Of course, when I tried it the first time the game crashed immediately, and I spent the last two hours of the contest figuring out which files were missing from the package.

I wasn’t prepared at all to create a soundtrack for the game, which is funny because I’ve composed a lot of electronic music in the past.  I downloaded some sequencing software and fiddled with some samples, but it just wasn’t coming together.  In the end I wound up downloading a free sample loop and playing it repeatedly in the background.  The effect is decent.  Next time I will be far better prepared.

Overall, I enjoyed my weekend and I’m inspired to create more.  Thanks to everyone who makes Ludum Dare possible.

Play the game!

Minima Now Playable on the Web!

Posted by
Sunday, May 5th, 2013 11:13 am

Well, it’s better late than never.  My first Ludum Dare entry, Minima, was developed in C# and SDL.NET and only ran in Windows.  As I started rating other people’s games, I realized that I was much more likely to play a game if there was a web version.  I’m guessing this is true with other judges as well.

So, I spent several evenings learning FlashDevelop, ActionScript, and Flixel, and ported my game.  I’m quite proud of myself, not just for learning a new platform and finishing the port so quickly, but that it’s so close to the original.

Windows version

Windows version

Web version

Web version

So, if you haven’t played Minima yet because you’re not a Windows user or simply don’t like downloading executables, please give it a try now!

Higher-Quality-Video Workaround for Chronolapse

Posted by
Wednesday, May 1st, 2013 8:53 pm

Many Ludum Dare participants like to create time-lapse videos that show the actual development of their entries.  I thought that was a cool idea, and decided to use Chronolapse to capture and encode my video.  Chronolapse is stable, has a simple interface, and even has some advanced features like dual monitor support and picture-in-picture.  But the software lacks in one major area: video quality.

While recording, Chronolapse takes periodic frame captures from your screen or webcam.  Then, when you’re done, you can use the tool to compile the image sequence into a video that can be uploaded to YouTube, for example.  Unfortunately, there are no settings to tweak the video output quality, and the quality is pretty bad.

The simplest solution I could find is to download a separate tool called ffmpeg to do the encoding.





Here’s how to do it:

1) Use Chronolapse to create a sequence of images in a folder somewhere.
2) Download ffmpeg and extract it.
3) Find the encoder executable ffmpeg.exe in the bin folder.
4) Rename all the images in your time-lapse sequence to a format that ffmpeg can recognize:

    • Open the folder with your image sequence in Windows Explorer.  Make sure there are no other files in the folder.
    • Single-click on the first file in the sequence to select it.  Note: This step is very important and affects sort order.
    • Select all files with Ctrl + A.
    • Press F2 and type img, and then press Enter.  The files will be renamed sequentially.

5) Place a copy of ffmpeg.exe in the same folder as your image sequence, or ensure that the executable is in the Windows path.
6) Open a command window where the image sequence is, and enter the command:

ffmpeg -r 20 -i “img (%d).png” -q:v 1 -b:v 1500k timelapse.mp4

7) After processing for some time, you should have a new video file of much higher quality than what Chronolapse produces.  Unless you have the correct codecs installed, this will not play.  If you’re having any problems, try the VLC Media Player.
8) Profit!

To see an example of higher video quality in action, see the time-lapse video link on my entry page.

Have fun!


Posted by
Sunday, April 28th, 2013 6:48 pm

Phew!  That was close.  Things were going along smoothly and I was about to add some more features when… I decided to deploy my game to another machine.  With only two hours left before the deadline, I was seriously worried.  But I got it working!


I’ve learned many lessons while competing in my first Ludum Dare contest.  Among them:

  1. Build at least one complete game with your game engine of choice before trying to use it in a competition.
  2. Build games for the Web.  Last minute deployment issues are not fun.

I’ve ruthlessly cut down on scope and sacrificed code quality to finish this, but it’s done, and that’s what counts.

Laugh at perfection. It’s boring and keeps you from being done.


Posted by
Sunday, April 28th, 2013 7:51 am

Ludum Dare is a great exercise for a perfectionist like me.  I have to resist every urge to refactor my ugly code, even though it will be on display.

Things I will work on today:

  1. Score counter
  2. Startup screen / menu
  3. Lose condition
  4. Sound
  5. High score saving
  6. Music
  7. A special feature that I’m not going to announce yet in case I don’t have time for it.

Good Progress for One Day

Posted by
Saturday, April 27th, 2013 6:54 pm

Well, I have something I would call “playable”, but not exactly a complete game.  After working on this for a day, I’m even more impressed by some of the work I’ve seen people doing.  48 hours is not a lot of time!

The current state of things:


I’ve got lots of fun ideas on how to make this awesome, but I need to get the basics in there first.

Ready to Begin

Posted by
Saturday, April 27th, 2013 7:22 am

After a full night’s sleep, some cereal, and a sip of Red Bull, I’m ready to start coding.  It’s scary to think that some people have already put in 12 hours of development, but I figured it’s better to start refreshed.

This is my first Ludum Dare so it will be interesting to see how things go.

[cache: storing page]