Ludum Dare 31 has ended
Entire Game on One Screen

Results for LD31
Over 2600 Games submitted

Ludum Dare 32
Coming April 17th, 2015! Our 13th year!

Archive for the ‘MiniLD #39’ Category

Pacmob is now available on iOS

Posted by (twitter: @hatscat)
Tuesday, February 12th, 2013 5:38 am

The running game I made for the mini LD 39 is now out on iOS (for free), after long week of “in review”, and because Apple don’t like that my graphics looks like pacman ^^”

So, the web and android version looks like that :



and the iOS version is like that :



Have fun!

A Stick in the Mud MiniLD#39 Post Mortem

Posted by
Tuesday, February 5th, 2013 11:39 am

What Went Right

1. Haxe/NME with HaxePunk
I really enjoyed Haxe as a programming language. It’s got some gotchas (like iterators are automatically created variables that only exist in loop scope and loop ranges are exclusive not inclusive) but overall it was a charm to work with. I’m also glad I got to use NME. This meant I could target mac, pc, mobile devices, and swf all from the same source. There were a few cross-platform few issues, but not as many as I expected.

HaxePunk is a game library built on top of Haxe/NME (based on FlashPunk) and that worked out pretty well. I bumped heads with the API a few times, but ultimately it was a time saver. Without it, I would have spent too much time working on my own game tools instead of working on my game.

2. Using Texture Packer and Tiled Map Editor
Texture Packer (TP) is a great tool for assembling all your graphics in one place. Tiled Map Editor (TME) is a decent (and free) tool for drawing level maps. TME needs a “packed” image to work properly. That’s the image below on the left. Although TME needs packed images, it doesn’t read the associated XML files that TP produces. So when you add new images to the folder TP is monitoring, TP annoyingly moves images around to make room. So the images get shuffled around and then TME’s map gets all messed up, carpet showing where grass should be, walls turning into desks, etc. The solution I used was to number my images (04_carpet.png) and tell TP to sort by name and use a short fixed output width. It was still a pain to remove images using this process, so I just didn’t. Bear witness to the first two tiles in the first image below, which were placeholder graphics.

I also separated sprites going straight into the game without TME. To better work with HaxePunk spritemaps, I make several spritesheets based on the image size. Mostly I worked with 64 x 64. But I also found it easier to deal with larger sprites as whole images, rather than breaking them down into 64 pixel tiles. This isn’t optimal, but it worked. Hopefully by time for my next game Spritemap will be updated to work with texture packer images rather than fixed tile grids. If it isn’t, I’ll make my own class. Below from left to right are the TME map tiles, 64×64 sprites, and 256×256 sprites.

map     sprites-64x64     sprites-128x64

3. Dynamic object creation

This worked out really well. I used Matt Tuttle’s Tiled Map Editor code (not currently part of HaxePunk) to read the TME file and create a scrollable map. This code and TME both also support the ability to add generic “objects” to the map. Generic objects can be given a name, type, and (most awesomely) properties. Here I’ve got a worker, an effect, and a zone. The zone is used to detect when you’re close enough to interact with the worker (and therefore the spacebar is active). The quest effect (smoke) is searched for when you complete the quest. The worker uses facing to determine which direction to face, has all of his speaking lines in one place, including the line he uses when you complete the quest. Color is an old prototype property I never bothered removing.

Screen Shot 2013-02-05 at 11.28.32 AM


In my main game world, after loading the TMX map (that’s the extension for a TME file), I process all the objects I can find on the “items” layer.

 var group ="items");
 for(i in group.objects)
     var clazzName = ENTITY_PREFIX + i.type;
     var clazz = Type.resolveClass(clazzName);
     if(clazz != null)
          var obj = Type.createInstance(clazz, [i, i.custom]);
          if(, Zone))
               var zone:Zone = cast(obj, Zone);
      else trace("Unknown object class found: " + i.type + " with name:" +;

So when it finds “Worker” in the Type field, it creates a Worker game entity dynamically, and passes it the properties I defined on the object. It uses those properties to bootstrap itself. This was very cool and has a lot of potential. Also I started messing with the HSL signaling library for cross communication. In this case, I’m binding the playerSignal() method to each zone, so the game world can know a zone is entered or exited, and can display the “press space to inspire!” message.

I started putting together a cascading notification system, where an object can receive a message (the only message I care about is “the quest just completed”) and can also pass on that message to other objects. In response to a message, the object can show, hide, or remove itself. So for example in the stolen lunch quest, two workers are arguing over stolen lunch. When the riddle is solved, the main worker is notified. The main worker has a property “notifies” that contains “arguingCoworker,lunchBags”. In response to being notified, the worker notifies the other worker (who speaks his “success” line), and notifies the lunch bags (which specifies “show” for its “onNotify” property, so the lunch bags suddenly appear).  I’ll be doing more stuff in this direction.

What Went Wrong

To some extent, these “wrongs” were also successes. But I suppose that’s just because failure is just an opportunity for improvement.

1. Tried to move to HaxePunk 2.x.

Mid project HaxePunk 2.x was released and I tried applying it. Everything broke instantly. For the most part I did a good job of suppressing my natural tendencies to fixate on a problem, but I wasted a couple of days trying to get 2.x working properly before I came to my senses and rolled back to 1.72a. That’s just time you don’t have to spare during a jam, even a two week jam, not if you’ve picked a project plan with no slack in it. It’s a hard lesson to learn, especially for an aging dog like me, but I have to pick my battles. It’s my Achille’s heel. This was such a unwinnable battle that, in fact, a week or so later 2.x still doesn’t work with my post-compo build. The good news though is HaxePunk 2.x is adding support for hardware accelerated blitting, so it’ll be worth the growing pains.

2. Started late, dreamed big.

I started a few days late, missing out on the initial weekend. And of course I picked new tools and game styles I’d never done before: Tiled Map Editor, Texture Packer, HaxePunk-Tiled (that’s the TMX reader), and orthogonal 2.5 perspective. This is all great learning stuff but it made it really tough to make the deadline and things had to get dropped out.  I also put together 10 puzzles, plus a bonus puzzle and an easter egg. If you haven’t played the game (feel free, it’s here), it’s about an alien who is fascinated with a piece of old poetry, and uses that poetry to inspire his coworkers. The way that works is you go up to a coworker, hit spacebar,  pick a stanza from the poem, and then see if that dramatically solved the worker’s problem.  I came up with the puzzles first, and then worked backwards to make the poem. That was a challenge, and probably not the best way to approach it.

It was a race to the deadline, which shifted on me. I thought it was 10PM GMT-5 on Friday and they extended it to Sunday. So I busted my backside to get as much as I could in there literally down to the last moment, and then I noticed the submission was still editable. In retrospect, this probably helped me, because I was able to slow down over the next two days and address some glaring issues that I couldn’t get in by what I thought was the deadline.

Still, there wasn’t enough time to do everything.  I wanted to add an end game cinematic, where after stealing from the guy who was stuck in the elevator you have a change of heart and learn from Hrothmok’s mistake. A FIRE-O-METER got dropped; this would have filled every moment you weren’t at a desk (tap tap tap!). The meter would fill rapidly if you gave a wrong quote and the boss would try to find you if the meter went red. The plants were originally a place you could hide from the boss. Now they’re just silly. Using aliens instead of humans was a time constraint compromise. Human animation was harder. I started messing with Spriter and would have loved to get some neat animation in there but there was just no time. And finally I needed a lot more art. The place was barren.

3. Three votes

For those who gave me feedback, thank you so much! I was very happy to receive it. I was unhappy with the lack of voting from the members. There were only 12 submissions. I voted for 8 of the 11 other folks, holding back from two who had voted for no games and one who had voted for one but also received  some votes. I knew that Mini LDs had less participation than the regular compo, but I expected more than 3 folks to rate my game. The lack of feedback is disappointing given the amount of work I put into it. How do you get better if you don’t get critiqued? I kept checking to see if someone else would rate my game. I didn’t know when the voting was going to end, I couldn’t find that information anywhere. They also didn’t announce the rankings (here) although maybe I’m being impatient. I made it to the top two, if you consider 3 votes statistically significant. ;)

At this point I’m a tiny bit soured on Mini LDs. I’d rather come in last place and get lots of great feedback. :) I do see that other Mini LDs have gotten more participation. I guess I was surprised to see the ratio between compos and minis to be so extreme (1327 vs 12). But it was a good experience overall and I’m looking forward to entering the LD#26 jam in April. I hope that the lesson “pick your battles” sticks because I’m going to need it to stay focused for 48 hours.

If anyone is curious, Hrothmok – the protagonist of the poem – is a portmanteau of Hrothgar (of Beowulf fame)  and Darmok (from the ST:TNG episode).

TimeZone: RPG about procrastination…

Posted by
Thursday, January 31st, 2013 2:26 pm

I had meant to submit this for the latest MiniLD, but couldn’t quite make the (generous) deadline. However, I’m very pleased with how it turned out, so I thought I’d share anyway. In particular, the 3d modelling went well but was time consuming. The code went smoothly, although I need to figure out a better system for triggering plot events…On the downside, I didn’t get to any character modelling, so I just used a standard rig for every character, which is less than ideal. Although there is music and sound, it was done in less than 3h, so it doesn’t really fit.

Here’s a bit of the concept. I got bit carried away with the writing (: So much fun:

The discovery of Procrastination, as it came to be known, was, like many great discoveries, almost instantly abused. At first, governments and corporations fought to control the Timezones in the hopes of untold financial gain, then, inevitably, for untold power. However, the effective creation and control of a Timezone is a complex and consuming task, and only those with the most sophisticated technology had any hope of emerging victorious from the ensuing turmoil. In the end, one group, as terrifyingly ruthless as they were intelligent, managed to gain complete control over all Timezone activity. They continue to hold that position today – they are the Disciples of a Strict Chronology.

Grab it here!



Looking forward to April

Posted by
Tuesday, January 29th, 2013 7:32 pm

Just got done with GGJ / Game a Month for January. Check out our result here:

Cannot wait for the next big jam.

A Stick in the Mud – MiniLD #39 submission

Posted by
Tuesday, January 29th, 2013 2:12 pm

I’m pleased to have finished a game for mini ludum dare #39:

A Stick in the Mud

The theme was hindsight. I’m surprised more people don’t do the miniLDs. Two weeks is a luxurious deadline in comparison to the 2-day compo. I didn’t complete the compo last time so I think the mini was a good step for me.

Zombie Forever Postmortem

Thursday, January 24th, 2013 7:12 pm

My postmortem for my Mini-Ludum Dare #39 entry Zombie Forever has been posted. The link is . Quick summary for those too lazy to read it:

What went right:

– Going with a Jam challenge instead of going solo

– Zombie feel

What went wrong

-over-ambitious tendencies strike back

-AI resulting in humans killing each other and turning into zombies.

Game will be submitted tonight

Posted by (twitter: @gkamer8)
Thursday, January 24th, 2013 3:27 pm

Over the course of the past 2 weeks I have worked on a game for minld39. The game is not a finished game but I am in 1gam so I’ll continue to work on it. It’s called Light Years Ahead, I think. (Not at my computer right now + the name might change) It’s nothing to brag about, just a side to side space shooter like Galaga. What I’m most happy about is that I have conquered the art of infinite objects and I can carry this skill to different games in the future.

Game submission tonight;I’m pumped.

Mini LD #39 Entry – Pacmob

Posted by (twitter: @hatscat)
Thursday, January 24th, 2013 10:51 am

Here is my entry for the mini LD 39 :



Click to know the hindsight ;)

Actors with multiple Textures

Posted by (twitter: @aaronsnoswell)
Wednesday, January 23rd, 2013 11:46 pm

Hi all!

This is a shameless re-post of my Stack Exchange Game Development question of the same name.

In my 2D side-scroller game I have a bunch of actors being drawn, each of which has a single, non-animated Texture (a png image). These actors all inherit from a base GameActor class.

I want to add some more NPC’s (e.g. tanks or cannons) that have one texture that doesn’t move (the base) and another that rotates to shoot at things (the gun / barrel). How should I structure my Actor class hierarchy so as to allow for this? Should I refactor my base Actor class to allow for N textures? Or should I create a brand new sort of Actor for things that need > 1 texture (and then have to manage these actors separately from ‘regular’ actors)? Or is there a better approach I can’t see?

Thus far I’ve been opting to keep things as simple as possible (KISS, right?), but am not sure how to proceed.

Any pointers greatly appreciated.

You are the Asteroid! Post-Mortem

Posted by (twitter: @rainbladestudio)
Monday, January 21st, 2013 11:57 am

Short and sweet and located on my blog.

You all rock, by the way. Keep it up. I love the community here.

The Launch – Post Compo version on Kongregate

Posted by
Monday, January 21st, 2013 2:47 am

We have finalised a post-compo version of The Launch, fixing a few bugs and reducing the resolution to a more laptop friendly 1280×720.
The How to Play guide has also been improved.

Aside from that, the game is mostly unchanged but it should be alot more accessible now as its possible to read the instructions.

Please play and rate it here:

October LD Redemption

Posted by (twitter: @dougalicious)
Saturday, January 19th, 2013 1:58 am

Since my October Ludum Dare disappointment of not completing the challenge it’s been hard to even consider writing one line of code. However I really wanted to stay at it but my motivation for game creation was at it’s lowest point…

So over Christmas break I got a chance to play some AAA games, which I’d have to say were a bit disappointing. But also got to dig around the indie community and play their games which was inspiring!!

And that really motivated me get pick myself up and get back to the joy of creating games. Then I heard about OneGameAMonth and read McFunkypants blog about his 12 games in 12 months and I was sold… I’m back into it!

Fast forward to now and I’m happy to announce a playable wave mode of Zombie Tales called Zombie Days (I thought I’d really mix it with the title!)  it not as in-depth as Zombie Tales is going to be but I used all the tech I developed Zombie Tales to build this random generated zombie shooter.

Anyways I feel like I have redeemed my past failings by at least getting something playable with the same feel.

Click the image to go to the Unity webplayer. It takes a little time to load the first time… ENJOY!!


[cache: storing page]