And now for something completely different – Online Ghost

I stumbled upon the excellent british TV series “Black Mirror” today and watched all 6 episodes (ya, i got no life…). One episode in particular caught my attention. It was called “Be Right Back”. Synopsis: couple moves to the country side, guy is heavily invested in his tech and online persona, guy dies, grieving wife is signed up for a service that takes her deceased husbands online output and creates an artificial persona from it.

Now, i don’t aim for creating an artificial persona of course, but the thought of archiving all my online output is an interesting one. For myself, i’d would be kind of like an ever updating time capsule, that lets me look back at what i did online over the years. Another, creepier and probably unhealthy option is to provide access to that archive to relatives and friends should i get hit by a truck.

I think that this would be pretty feasible, given that my online activities are limited to email, chat, the blog, twitter and reddit (atm).

I guess i’ll waste some free time on this idea, maybe i can come up with something funky.

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!

Warning: Latest Xamarin.iOS Update is problematic!

The latest Xamarin Update seems to break some functionality related to reflection in the IKVM/Mono port we use. See this issue and this issue, I do not have the time to look into this matter at the moment, as my day job is rather busy, and i need to use my spare time to recharge batteries.

I’ll look into it over the next month. Michael Bayne of PlayN fame will also eventually look into it, though he’s currently occupied with changing diapers 🙂 I promised to give it a shot first, not to sure i can fix up things. My work on IKVM/Mono has been primarily on the JNI stuff.

If you bought a license, you can approach Xamarin and ask them to let you downgrade Xamarin.iOS to an earlier version. This reportedly fixed some issues for folks on the PlayN list, and is likely to fix issues for us libgdx folks as well. You can get a downgraded version of Xamarin.iOS here: http://download.xamarin.com/MonoTouch/Mac/monotouch-6.2.7.1.pkg

We have some other really exciting news coming up in about a month from now which involves our iOS strategy. I’m under NDA and can’t really give any details, so bear with me 🙂