Ludum Dare 23 Post-Mortem

I’m about a month overdue in writing this entry, but better late than never. Back in April, I participated in the 23rd Ludum Dare by creating a game in 48h by myself. You can play my finished product: Tiny World Defense. Results of the competition were released last week, and I was really proud. I managed to get #176 in the “Fun” category, and #244 overall. For a field of over 1000 games, that’s pretty good. If you’re looking for some really fun games, check out the top 50, and top 25 per category. They’re pretty awesome. Remember, each one was completed in 48h.

Overall, it was a great experience. I got to challenge myself to finish something that I never had before, and I learned a lot along the way. It’s a lot of fun to watch the #ludumdare IRC channel during the compo, and the community is fun, even though I didn’t participate much.

Without further adieu, what went well:

  1. The Keynote. Ludum Dare had an awesome, interactive keynote this year. Go check it out.

  2. Working at KwartzLab. Having other people around who were working at the same time as me was extremely helpful. It was really encouraging, and provided a means to talk to people about successes/problems. For an extrovert like me that’s necessary.

  3. Choosing Flixel. It’s a very good framework, and helped me out a lot. Probably won’t use it next time, but that’s no fault of its own.

  4. Tools. mtPaint and bfxr made graphics and sound FX really easy. Aww yeah.

  5. Participating in Warmup Weekend. This was probably the most critical factor for my success. The fact that I had already done something with my language and framework allowed me to get to work quickly when I finally started working.

  6. Getting food delivered. Meant that we didn’t have to get up in order to eat. Very important for continuous work. Pepi’s Pizza is the bomb.

  7. Going out for food. Spending all your time in one place, even if it is as awesome as KwartzLab, sucks. Going for a walk is important.

  8. My heating regime. KwartzLab is cold in the spring and fall because of stingy heating from the landlord. I got myself a heated shrug for my legs, and a lizard heat lamp for my hands. Vital to my success in that environment.

  9. Sponsors. CCJ Clearline and TribeHR each bought us some food. That was awesome.

  10. Support from my wife. She recognised that this was important to me and let me do it. Without that, it never would have happened. Thanks, hon.

Things that could have been better:

  1. Better planning of snacks. I bought some at a Shoppers Drug Mart on day 2, but the whole situation was meh. Need to plan that better for next time.

  2. More sponsors! Food costs about $50/person for the weekend. I’m going to try to get that all raised so that it’s all covered next time.

  3. Go deeper with the framework. There’s a lot of tools out there for making certain types of games in certain frameworks. Working with those to lessen my personal workload would be a good way to improve.

  4. More testers, more often. One of the things that didn’t quite work out with my game was the balance of the powerups. Had I taken more time to get that balance right earlier and had people test, I think I could have had a better game at the end.

  5. Participate in the community more. That would have been one way to get testers. Also to get help.

  6. Theme. Tiny World? Really? What’s up with that? Bah.

As I said above, overall it was really awesome and one of the most fun things I’ve done in my life. Now I need to get ready for the next one in August!

How to trick yourself into getting more exercise

I still owe blog posts on Ludum Dare 23 followup, and my presentation at KWLUG. I haven’t forgotten. I’m sure I’ll get around to them eventually.

Yesterday, I biked to work. Near the end of the day, My brother called, saying that he wanted to pick up some boardgames for a gaming night he was going to. Of course I agreed, and said I could get them to him faster if he gave me a ride home (forgetting that I had biked to work).

Realized half-way home that I had left my bike at work. So now, I’m about to run to work to pick up my bike, which I will then ride home. At least I’ll be getting my exercise in!

What I'm going to be using for Ludum Dare 23

I’ve now been playing with Flixel and PyGame for a weekend, and I think I’m going to end up working in Flash for Ludum Dare. PyGame was great. I was able to get up and running quickly, and working in Python definitely matches my brain nicely. Flixel is just so fast to build things though, and the language feels like a type-hinted bastard child of PHP and Javascript, so I’m comfortable enough with it.

I did find some new awesomeness with tools, however. First, mtPaint is great for pixel art. Much easier than GIMP. Second, Audacity has a bunch of new stuff in 2.0 that makes generating sounds a lot easier.

Oh, and for developing in Python, I would now recommend Aptana Studio (with vrapper if you are like me and need vim keybindings). Wonderful integrated environment. I might start using it on Linux for my PHP development at work. Of course, FlashDevelop is great for Flash (under Windows or Wine).

Overall, I’m very happy with what I got accomplished. My PyGame source and Flixel source are on GitHub, and you can try the Flixel game I made from a tutorial. See if you can beat my high score of 80!

Play the game!

Deciding on a Toolset for Ludum Dare's warmup weekend

This weekend is warmup weekend for the 23rd Ludum Dare. Ludum Dare is a 48-hour solo game-making competition. I’ve been wanting to participate since competition #2 or 3, but never had the chance. This April is the 10th anniversary of Ludum Dare and I decided that there’s no time like the present to to finally throw my hat into the ring.

This will be my first time making a game from start to finish. I’m fully prepared for the possibility that I won’t finish and if I do that the game will suck. One of the things that everyone says that helps improve your chances is to know your toolset well. Since I’ll have to write all the code, create all the art, and record all the audio during the weekend, I need to figure out what tools I’m going to use so I’m not wasting time learning the tools when I should be creating.

If you’re interested in coming out to try your hand at making a game in 48 hours, you can checkout my post on the KwartzLab blog on how you can sign up and join us at KwartzLab!

Engine

Picking the game engine is probably the most important decision I have to make. The engine will dicate what will be easy/hard during the competition itself. Different engines have different strengths and weaknesses. I’ve been looking at 3 different options:

  1. Unity: This is an awesome engine that a lot of indie devs use. It’s a 3d engine that publishes to web, Flash, Windows, Mac, iOS, Android, and Wii. I’d really love to learn this engine, as it would be great for converting my Ludum Dare project into a real game. Sadly, it’s 3d, which means I’d need to do modeling, etc. I’m not that good at it, and so I’ve concluded it would take too much time for my first try.

  2. Flixel: Flixel is a Flash-based engine for doing rendering and collision detection. Apparently it’s really easy to use. I see a lot of games that are using it. I think this would be a good choice for getting something up and running that’s easy to publish (which is important for the sprint to the finish at the 47th hour). The only problem is that I haven’t touched Flash or ActionScript in about a decade.

  3. PyGame: PyGame is a 2d engine written in Python. In terms of capability, it’s pretty similar to Flash+Flixel. I’m much more familiar with Python than ActionScript, so that’s a huge advantage in terms of time. Packaging PyGame games is a fair bit harder than pushing a Flash file to a website, so I could lose some time there.

I think this is where I’m going to be spending most of my time during warmup weekend. I just don’t know whether Flash or Python will serve me better. I think I just have to try them both and see what fits.

Visual Asset Creation

I think I’m just going to use pixel art, so The GIMP should do. It has everything I need (I think). I’ve never done pixel art though, so I’m going to have to practice this a bit during warmup weekend too.

Audio Asset Creation

For sound effects, I’m probably just going to use Audacity and a crappy mic. If I have time, I might create some fancier stuff, but still in Audacity. If I get time for music, I’ll likely do some chiptunes. I found two guides online that give some tips. If I have spare time during

I’m going to be quite busy over warmup weekend…

Some of the most wonderful things I've ever seen

First of all, credit where credit is due. This comes by way of @thinkontheclock via @josephfung (over a week ago). I spooled it, and just watched it tonight. If you’ve got 35 minutes, watch the first half of this talk. If you have less, I’ll tell you where to start).

If you’re a software developer of any kind, start at 10:20. If you see the GUI, and you’re like “Yeah, that’s nice, but how do I work with real code?” go to 16:25.

If you’re an electrical engineer, start at 23:00.

If you’re an artist, start at 29:20.

Don’t wait if you can avoid it. Watch it now.

Bret Victor - Inventing on Principle from CUSEC on Vimeo.

If what you saw in those few minutes (of whatever segment you watched) impressed you, watch the first 35 minutes in its entirety. It’s amazing, even if you don’t exactly know what’s going on every second.

If you want to see some of this in action, check out Bret’s site, specifically the page on Tangle. (I’ll forgive the hashbang URL this once, because you’re awesome, Bret.)

Breaking the blog

So, I had noticed that some of the modules I had installed on this Drupal-based blog were out of date. Thinking it might be a problem with my Drupaldeb service, I started there. First, it appears that I might have a few bugs with ensuring that packages are actually properly put into the APT repository. There were two packages that were out of sync between the website and the repo. Need to fix that in the future.

But then I found the real problem. When you upgrade Ubuntu, it disables other APT sources. So when I last updated, it disabled the Drupaldeb APT repo, thus not allowing me updates. Simple task to re-enable that and voila. Modules updating.

After I had everything updated, I needed to update the database. That’s when I made the fatal flaw of running drush up instead of drush updatedb. The former command happily overwrite my APT installed version of Drupal with 6.25 from the repository, which disabled a bunch of my modules. They even disappeared from my list of installed but disabled modules! Oh no, my website looks like crap!

After manually re-enabling the modules in the database (which didn’t work), and downgrading Drupal again (which didn’t work), I found the problem. When Drupal upgraded, it deleted everything from my /usr/share/drupal6 directory. Including my modules. So all I had to do was reinstall all my modules and themes and I was fine. This is something else I will have to test soon.

Getting videos offline, automatically, on my phone

There’s several video shows that I like to follow: Zero Punctuation and Extra Credits, for example. I like to get the newest episode automatically. Up until a few months ago, I was content to have them pulled into Google Reader, and then to watch them as time permitted. It worked okay, but they would tend to pile up. Sometimes I’d try to watch them on my mobile, but the buffering meant I wouldn’t get too many in on a bus ride.

Then I discovered Spool. Spool allows you to record videos and have them downloaded to your phone for later watching. Oh happy day! My pattern then became:

  1. Every day, go to Google Reader.
  2. Click “Add to Spool” for each video entry.
  3. Watch at my leisure.

This past weekend, I realized something. RSS is designed to be automated. (Duh). So I wrote myself a plugin for FlexGet that takes the URL from an RSS feed and sends it off to Spool. Now the videos just show up in My Spool as they are posted!

So yeah, it’s available on GitHub: https://github.com/egerlach/flexget-plugins Go ahead and download, fork, and submit Pull Requests. It seems to only work right now if you copy it into the FlexGet main plugins directory… I can’t seem to get it to work at ~/.flexget/plugins. That’s the next step. (UPDATE: It now works in ~/.flexget/plugins! I just couldn’t have it in ~/.flexget/plugins/output is all)

The only problem now is that on Tuesday, YouTube asked Spool to not record their videos and make them available offline. This is annoying, because now the shows I watch from YouTube I can’t get offline. I’ll just have to write another plugin for that…

Domain-Driven Design in 2 weeks!

Last year, Darcy got me into the local Agile Book Club, which was reading Domain-Driven Design at the time. Lately, the book club has been stalled. I think the book is too technical for many of them to read and discuss casually. Which is a pity, because it’s a really good book that gives good insights into developing software around an expert domain (something I’m now doing in my new role at TribeHR).

So I’ve decided to read the entire book cover-to-cover as quickly as I can, and I’m going to blog about it here. I think I’ll be able to get half-way done the book by the end of the year, and then do the other half before I have to return the book on the 15th (I love libraries… one thing I’ll miss about the University).

I’ve already read the first half, and I can dedicate hours per day to it so it should go quickly for the first while. Wish me luck!

Exercising victorious! Next week, sleeping!

Merry Christmas everyone!

I have good news! I have successfully built a habit of exercising over the last 46 days. It was supposed to be 45 days, but I forgot to tweet on day 45, so I didn’t notice that I had passed the 45 day mark until after I had exercised on day 46.

The habit is pretty well ingrained at this stage. Starting around day 25, it became more of a compulsion. Now I barely think about it before starting. I call this a huge success. In fact, today Alex and I agreed that we’d sleep in. I got up at 9 to feed the cats, and it was hard for me not to start exercising at that time.

Given how well it went, I’m going to start a new habit on January 2nd, getting to bed on time. Here’s how it’s going to work:

  • I will have an alarm set on my phone for 10 pm.
  • When the alarm goes off, I will get to bed as quickly as possible. If I’m not at home, that means I start going home immediately.
  • Before 6PM on a given day, I can exempt myself from the alarm by tweeting on @egerlachhabits. If I do that, I must turn the alarm off and set an alarm for 6 pm the next day to remind me to turn it back on.

So, here’s the full plan:

  1. Timeline: January 2nd until February 15th.
  2. Trigger: 10 pm alarm on my phone
  3. Habit: Get to bed as quickly as possible.
  4. Obstacles
    • I just need to finish this”
    • I’m in the middle of watching this”
    • Alex won’t be going to be for a bit”
    • Five more minutes won’t matter”
    • I really need to get this done for tomorrow”
    • I don’t need to be up early tomorrow”
  5. Support structure: Primarily, it will be my wife. She’s the one whom I’m with every night. I will be tweeting about this on @egerlachhabits, though, so if you want to follow and ask me why I’m not in bed yet, I’d appreciate it.
  6. Feedback: This will be a tough point, because I won’t get much. It will be the absence of negative feedback (being tired in the morning) that will be the most beneficial. I will be building on this habit though, and that’s where the positive feedback will come in. I think I’ll restrict myself to playing Scrabble for when I’m in bed. That will work.

This is going to be a tougher one for me. I’m really good at procrastinating going to bed, and there’s no inherent, immediate positive feedback. I’m going to have to build my own positive feedback. But I think I’ll be able to manage it. Follow @egerlachhabits on twitter if you want to find out how it’s going.

Habits: Exercising starting Monday

So back in June I wanted to start exercising as my first habit development. I was all gung-ho, but there was one obstacle I didn’t foresee. I had to undergo two surgeries over the course of July and August, leaving me unable to exercise for three weeks total. That destroyed my drive to exercise.

Now I’m done that, and through my crazy Halloween season, so I’m going to start up exercising again! I’ve picked Monday as my start date. Those of you who know me well might know why. I just wanted to announce to the world that I’m starting up again, and if you want to keep me to task, follow @egerlachhabits on Twitter and let me have it if I don’t tweet saying I’ve exercised each and every morning!

Syndicate content