Ludum Dare 27, libgdx and you

What is Ludum Dare?

Ludum Dare 27 is near, time to prepare for this weekends battle. Ludum Dare is a tri-annual game development challenge which comes in two flavors: the compo, where you have 48 hours to complete a game alone, or the jam, where you have 72 hours to create a game as a team.

Each Ludum Dare has a theme, decided on by the community through voting. This LD’s voting is still in progress. Register over at the LD site, then cast your vote here.

Once the voting is over, the real fun begins. There’s a little counter on the LD site which shows you exactly when the actual challenge starts.

Once this counter reaches zero, it’s time to start coding, arting and ideaing for 48 or 72 hours straight! You have to submit your game on time, on the Ludum Dare site in an executable form as well as in source form, so others can learn from it.

After the development period, voting begins. Every participant of Ludum Dare can vote on other people’s games. The more you vote, the higher your own entry will get ranked for others to vote on.

How do i participate?

Easy, just follow these simple steps:

  • Register at the Ludum Dare site.
  • Vote on the theme
  • Introduce yourself on the Ludum Dare site. The site is a WordPress installation.
  • Start developing when the timer hits 0
  • Submit on time, the counter on the site shows you how much time is left
  • Play other people’s games and vote after the competition. The more you vote, the better the visibility of your own game
  • Write a post mortem after the competition

Preparation

Before diving into a Ludum Dare, you should have everything in place. This includes your development environment, any tools necessary to create art and so on. Here’s a little checklist when using libgdx:

  • Stick to desktop development. You can publish for other OS’ after the competition
  • Setup the prerequisits (Java, Eclipse, …)
  • Create an empty libgdx project, practive code hotswapping and debugging so you can iterate fast. Use the nightlies!
  • Add any thirdparty libraries like Tween Engine or box2dlights (use our build), Artemis or a libgdx extension to the empty project. Add the jar files to the libs/ folder of your core project, then go to your core projects Properties -> Java Build Path -> Libraries and add the jars
  • Learn how to deploy your app for the desktop, you’ll need it for submission

As per the rules, you have to create the graphics and audio for your game by yourself. Here are a couple of tools you may want to get familiar with:

  • Gimp, an open-source image editing application, which tries to be an alternative to Photoshop
  • Paint.NET, another image editor, Windows only. I prefer this over Gimp
  • Blender, a 3D creation tool with a super steep learning curve. Just mentioning it for completeness
  • Wings 3D, a low-poly modelling tool for static 3D models (read: no animations). My preference
  • Tiled, a popular tile editor with first class support in libgdx
  • Bfxr, a clone of Sfxr, for creating chiptune like sound effects extremely easily

Sadly, there’s still a lack of good music generation tools for musically impaired people. INudge comes close, but doesn’t let you export. Maybe i’ll write something like this in the near future ๐Ÿ™‚

It may also make sense to use screenrecording software to create a timelapse of your development process. This is interesting for others, and may be of help for you to see where you got stuck, and where you may improve next time.

During the Compo

There’s no real silver bullet for how to approach the 48 hours you have to create a game for the theme. Here’s what i usually do:

Design your game with pen & paper: seriously, get away from the computer. Try to layout the screens you want to have, and for each screen its basic functionality. Details can be filled in later. Make sure you have the gameplay itself nailed down. The goal is to get a crasp for the feature set you want to have, and be able to set a scope that’s doable in 48 hours. Kill anything that seems to complex or time consuming.

Implement the game mechanics: Based on your design, start iterating on the game mechanics. If you create a platformer, that would mean getting the controls to feel good, implementing collision detection and so on. Once you got the basics down, add the more advanced, optional mechanics (enemies, platforms, etc.). Use placeholder art until you got the feature down, then create the art for the feature if necessary.

Create your art, one piece at a time: I mix implementing game mechanics with creating the art. E.g. if i implemented an enemy character, i’d use placeholder art until i nailed it’s behaviour. Once that’s done, i’ll create the graphics and audio necessary for the character, wire it up and move on to the next feature.

Finishing touches: This is where i usually create the intro screen, game over screens and credits screen. If you run out of time, you at least have the game mechanics implemented. Any left over time can be spent on tweaking the mechanics or level design.

Make sure to keep track of your progress during the development process and don’t let your scope explode. When in doubt, remove a feature instead of working on it for hours.

Since you are just a punny little human, you should also make sure your body isn’t going to crack. Have breaks, make sure you drink a lot and eat somewhat healthy food. Your brain will thank you.

After the Compo

Once the compo is over, it’s time to vote on other folks’ games. The more your vote on other games, the higher the visibility of your own game for others.

It also helps immensely to document your development process in form of a post mortem. Write down what went wright and what went wrong. Publish your post mortem on the Ludum Dare blog, for extra exposure and feedback.

GLHF

Goody, now go write games, preferably with libgdx. Like last year’s winner, Mono, by timtipgames!

8 thoughts on “Ludum Dare 27, libgdx and you

  1. libGDX lacks of pregenerated classes to code 2d games quickly, like collision system, general purpose entity class, easy tile maps implementations (i said easy :)) and whatnot. I wish there were classes that makes programming games as easy as fp does (http://useflashpunk.net/)

  2. It’s a framework, not a game engine. Whenever I find implementations of game mechanics in general purpose engines, they are never quite what I want. Libgdx gives you a lot of gears, but you have to build your own mechanism and you end up with exactly what you need.

    It’s definitely not a best choice for beginners given the short time of competition. Perhaps Lรถve is better suited and easier if one is not familiar enough with libgdx.

  3. Every time this Ludum Dare business rolls around, I go into it thinking I should give it a go, but then I just can’t muster up the willpower (or the time) to actually do it. For those that do, good luck.

  4. I’ve toyed around with LibGDX in the past, but ultimately I’ve focused most of my time developing using Haxe. LibGDX can do some great thing, but for rapid development and deployment, I think the web is a great platform to target. Also, with Haxe you can target just about any platform that you want.

    LibGDX can be awesome for some things, but I’m not sure it’s the best choice for LD48. Even so, this is a great brief intro in how to tackle the jam and it’s a great article. Thanks

  5. Thanks for promoting LD! I’m doing my fifth this weekend, and I’m absolutely in love with it and want everyone to have this great experience. Your advice is very very good. Looking forward to playing your game!

    For music, I use LMMS. It’s like Gimp for music: it’s free and open source, it sort of works, mostly, but it does have a ton of quirks that you’ll have to get accustomed to.

    I love libgdx (even more so since I’ve tried cocos2d-x…) and have released a commercial game built with it, but I won’t be using it for Ludum Dare. The reason is that I’m targeting the web, for maximum exposure. Being able to write JavaScript directly (well, CoffeeScript) allows me to use the full magic of CSS3, which makes GUI stuff ten times faster and easier to do than it would have been otherwise. Also, GWT scares me ๐Ÿ˜‰

Leave a Reply

Your email address will not be published.