If you don’t know what Ludum Dare is, get the short version before reading the rest of the story :-).
Last week has been Ludum Dare #30. Like every time, I was really looking forward to it — on the week before LD, random gameplay ideas had started popping into my head. I had recently played Ingress, so I was thinking about how I could include geolocation into a game in cool ways.
Luckly, the theme of LD30 was “Connected Worlds” — so I could basically apply all the ideas that were cooking on my head right as they were!
The basic idea was a “dungeon” game where the random number generator that created the play area was seeded by the user’s location. In other words, the level design, enemies, loot, everything was determined by where you were when the game started. If you wanted a harder/easier level, you had to physically walk around and try to play the game somewhere else.
Before starting, I had some very complicated ideas about feeding the latitude and longitude to a perlin noise generator, which would determine a “biome” to guide dungeon generator. But I quickly dropped those ideas, opting instead for simply multiplying latitude by longitude and using that as my random seed. It is LD, KISS!
As the Jam began, I first decided to build the infrastructure to get the GPS location. Although a google search for “LibGDX+GPS” results in many complicated looking results, I found the guidelines in the android developer‘s page to be really simple to use. That page includes some detailed discussion about policies for pooling GPS in order to reduce battery drain, but I skipped that because LUDUM DARE.
A more practical decision involved how much resolution to use the GPS. Using 4 decimal digits on the latitude and longitude value produced the best effect, where I had to walk around a block to get different values for the game.
After solving the GPS part, came the time to make the game itself. This is when I started to get stuck. The truth is, besides LDs, I do very little (if at all) game programming. So I’m starting to get to that point where I kinda know what I need to do (entities, collision), but I haven’t done it enough, and end up reinventing all the wheels. This took an enormous time, as I had to search for things as simple as the correct parameters for rendering a TextureRegion… I managed to get the game “feature complete” (After dropping a lot of features) just before the 40 hour mark (ha!).
In the end, though, I managed to add a lot of what I thought was needed for the game to be “bare minimum”. Max score, losing condition, keeping state across play, pew pew pew… This time out I even managed to not use autotracker for music — using abundant music instead! I managed to submit the game about 4 hours before the deadline.
One week after the game submission, I got a nice number of positive reviews, but a surprising number of people having this game crash on their device :-( I supposed this might be the fault of some mistake in how I declare the required android SDK, but so far I have no real way to knowing.
If you want to try my game, please get it at the Play Store!