About mildmojo


Ludum Dare 32
Ludum Dare 30
Ludum Dare 26
Ludum Dare 23
MiniLD #29

mildmojo's Trophies

RunJumpDev LD48 Participant!
Awarded by Hectate
on May 7, 2013

mildmojo's Archive


Posted by
Sunday, April 26th, 2015 6:21 pm

It’s been about a week, so here’s a retrospective on my LD32 entry: Pedestrian Mining Corps. It was a nice break from a couple of other projects I’m working on.

What It Is

Box art for Pedestrian Mining Corps

Pedestrian Mining Corps is a one-button game about launching pedestrians into space to push asteroids back to Baby Earth by jumping on them. You’re working against the clock and asteroids’ gravity wells to get as many rocks harvested as possible.

It’s built in Unity 5. It’s a jam entry, so I used some premade assets:

I recorded the stomping sound with my laptop’s crappy built-in mic because I didn’t feel like dragging my gear out, and massaged it in Audacity. Planet and asteroid sprites were created in Inkscape.

What’s Great

dev_gameplay2I finished. I got the thing done. I had to use the whole submission hour on Monday night, but it came together. I wasn’t sure it would. I’ve failed four of the last five jams I’ve attempted, so it felt good to get across the finish line.

I’ve been doing a lot more game dev this year than previously, and I’m better for it. I was able to quickly build the UI and tweened transition effects using techniques I’ve used before. I used the awesome Unity 5 audio mixer system for audio transitions and a low-pass filter to keep the music rumbling after the game ends. I’m pretty happy with the nearly-free polish I got from habits and reuse.

I learned more about Unity’s animation system. Those little jumping animations were pretty easy to make and their sound effects are triggered by animation events. Planet and asteroid rotations use the animation system, too.

I’m pretty happy with the 2D/3D split art style, though it didn’t go over well with most players. It was borne of a limitation: I don’t know how to texture 3D objects. More about that below. I’m happy with the way the menu looks and works, the way the game looks in action, and the way the score/replay wrapup presents itself. Oswald, the button font, is one of my favorites; I’m using it all over the place in another game I’m working on called Disc Jockey Jockey.

I like the choice players make between sending pedestrians to new asteroids or putting more pedestrians on the ones already coming in. More pedestrians on an asteroid makes it (subtly) move faster and take a more direct route to Baby Earth, but it also has an effect on your efficiency. I usually spend my early game bringing in as many new asteroids as possible and the last 20-30 seconds making sure everything that’s on its way gets home under the limit.

What Wasn’t Great


In code, I tried leaning into Unity’s component system this time with lots of tiny behaviors. This was a bad idea, especially when tweaking game feel. You quickly lose track of which object has which component on it, or which of half a dozen components is applying a force at the wrong time or playing a sound when audio should be muted. Or you just need all those components to talk to each other because they’re dependent on each other’s state. I’m much happier with a manager object that’s pulling the strings. Maybe individual objects can have small behaviors attached but controlled at a higher level where I can see everything at once. Let the manager subscribe to events published by components and consolidate coordination and settings.

I mixed 2D and 3D because I don’t know how to texture 3D models. Not even cubes. The only 3D software I know how to use is OpenSCAD—best-suited to mechanical models—which has no concept of UV coordinates. I think the resulting look is playful and silly, but most players just think it’s incongruous. A voxel design would probably work better. I wish I’d known about Magica Voxel before the jam.

I worked alone, which is great for creative control and kind of bad for motivation/focus/workload. Pairing up with someone more accustomed to working in 3D would’ve helped.

Scrapped Plans

Some things I’d planned but didn’t implement:

  • Multiplayer. The framework is there; pedestrians have a “homeworld” they push toward, so it’d be easy to reassign that to another planet.
  • Pedestrians yelling their names on launch. I built a whole system to scrape the filesystem for audio clips at editor time and generate random first/last name pairs, but didn’t have time to record the voices. I think it would’ve been funny to hear. Ended up being a waste of time.
  • Different asteroid/resource types. I’d planned to maybe require a certain number of different resources to be collected under the time limit to advance to the next wave. Or even have antagonistic forces like an enemy planet or spaceship that would attack, requiring pedestrians to take it out.
  • Pedestrian classes. The original game concept was more like tower defense, launching pedestrians out to stick to planets where they could attack incoming enemies. I think classes could still work, with certain class combos producing more minerals or fending off attacks.
  • Credits. There’s a hidden button on the main menu that goes to a dead credits screen I didn’t have time for. That might be the one thing I go back and add before I consider the game “done”.
  • Tuning. I need to play with the push force, steering force, and asteroid spawn rate. They could all be improved. Playtesting would’ve helped.
  • Networked high scores. I always put this on the nice-to-have list, but it’s probably never worthwhile. They’re too easy to subvert and they mostly make you feel bad about your score.


Thanks for reading! I’m having a lot of fun playing and rating all of your games. <3

Please try Pedestrian Mining Corps if you haven’t already. It plays on the web* and it only takes a few minutes.


Pedestrian Mining Corps

* Unity webplayer; Windows/Mac, any browser but Chrome. Lin/Mac/Win downloads also available.

How could I not?

Posted by
Thursday, August 21st, 2014 12:23 am

Ludum Dare’s turning 30, of a fashion, and I intend to celebrate!

I’ve got a pretty solid game idea that I plan to mold around the theme; my brainstorming notepad is filling up with ideas and requirements. This one’s going to be voiceover-heavy, I think, which should be lots of fun to do. Given the audio requirements, I’ll have to lean on other people and Creative Commons sound/music a bit, so I’ll be entering the Jam. Here’s hoping for a good theme.

I’ll be using Javascript with HTML5 (Phaser) or Unity2D. Audacity for audio capture & editing, Inkscape for vector graphics, Sublime Text for coding. Simple enough.

I’m in?

Posted by
Thursday, December 12th, 2013 11:17 am

LD a week before xmas? I usually skip it because the timing’s just madness, but I think I’ve got a small idea that I can complete without too much stress.

It involves international intrigue, and I plan to namecheck all the cities on the Real World Gatherings page (and lots of others). I’m not feeling any of the final themes, but I’ll figure out a way to work the final selection into it.

I usually use HTML5 and CraftyJS for jams, but I’m planning to move to Phaser in the future and I don’t want to learn it for the jam. I’ll try Unity/Javascript and the new 2D stuff this time, hoping to maximize my output. I’m hoping 2D text rendering has improved, too. Planning on using lots of untyped variables and .SendMessage calls. =D Ain’t nobody got time for static types!

GIMP/Inkscape for graphics, bfxr or MXL 990 mic for recording sound effects and voiceover, iNudge or Otomata or Abundant Music for music, XInputDotNet for XInput gamepads (Unity has trouble remembering gamepad 1 is always player 1 across reboots), regular input system for everything else. GitHub for source control.

Good luck, kids!

Sequence Initiated update: switched on

Posted by
Sunday, April 28th, 2013 12:24 am


These toggle switches are working on desktop and mobile and preserve their layout when the browser window is resized. Earlier today, I wasn’t sure I’d ever get this far.

Happy sleep now.

I am so darth.

Posted by
Thursday, April 25th, 2013 7:28 pm

This’ll be my fifth LD. I’ve failed two. I hope to avoid timesink rabbit holes and my inner editor.

I’m not thrilled with the final round of themes, but I’ll make do with whatever we settle on.


Screenshot from 2013-04-25 21:50:26

I haven’t decided whether I’m doing the compo or the jam. I’ll decide which tech to use after I figure out what kind of game I want to make.

Languages: HTML5/Javascript, Unity/C#/Javascript, Ruby

Libraries: iTween (Unity), CraftyJS, jQuery, Underscore.js, CanvasInput, howler.js or lowLag.js or jukebox for audio

Networking: My own unproven, in-development attempt at a simple pub/sub server, reflector.

Sound: Audacity, sfxr, iNudge

Art: Inkscape, GIMP

This post serves as my announcement for the reflector server codebase, though the server is more like a tool than a library. I hope to have it feature-complete before the compo kicks off tomorrow.

I’m also organizing a real-world gathering this time around, so I hope to jam next to a bunch of other jam-driven people.

One hour to go? Uh-oh.

Posted by
Sunday, April 22nd, 2012 5:12 pm


My game’s a local multiplayer HTML5/JS one-button racer. You’re rushing your unicycle around a planet at breakneck speed. Or you would be, if I was finished. With an hour left, it’s not looking great.

But the pizza will be here soon, so that will spur me on. And hey, there’s the Jam as a fallback, right?

In like a meme

Posted by
Friday, April 13th, 2012 12:04 pm

Looking forward to the 10th anniversary! Maybe I’ll finish a game! Tools:

– Javascript
Jukebox from Zynga? Am I nuts? Maybe!
Andre Michelle’s sound circle toy (oh no! It’s gone!)
The Mobile Game Primer (OMG AMAZING)

Broken dreams, an almost-post-mortem

Posted by
Tuesday, December 20th, 2011 7:24 am

Lesson learned: don’t leave the core gameplay and puzzle initiation algorithm for last. Argh.

The game was supposed to play a little bit like Pipe Dreams. You’re the last engineer on an otherwise vacant starship, the ship’s AI is taking care of navigation and weapons, and you need to make sure the shields, weapons, and life support stay powered under enemy fire. The board starts with a reactor on one side, the ship’s systems on the other, and a bunch of power routing tiles in between. You reconfigure the grid by rotating tiles to provide power to the systems that need it.

What went well

For the first time ever, the graphics came together really well. They were a little time-consuming to make in Inkscape because in between sessions, I forget everything I know about it. I was happy to finally have a game with a consistent graphic style that wasn’t offensive or straight outta MS Paint.

I got the tiles clicking and rotating pretty easily. That was a great confidence booster early on. The background game simulator that powered the ship’s systems and dealt damage to its shields over time went together really well, too. Adding scripted events is as simple as adding a hash with an ‘enabled’ flag, an interval in milliseconds, and a fire() method that performs the game state update and requeues itself.

The Android WordPress app was lovely when the LD site wasn’t under load. Rather than fiddling with screen shots and files and the web UI, I could pull out my phone, snap a pic, and post. Awesome.

What didn’t go well

Eating, sleeping, staying focused, and holiday things that will now turn into last-minute nightmares. And then there’s the technical bits:

The Problem

Given how hard it is to programmatically find a smart route through the tiles between each of the three ship systems and the reactor, I’m now thinking that the Tetris-like pick-n-place behavior may make more sense than starting with a filled grid. I thought the filled grid would be more interesting, but crawling the tiles to find each system’s connected power grid is tricky. Two systems can’t use the same tile. So who gets to use it? The first grid that’s fully explored? That was my first strategy, and it lets one well-connected system take over the board. Maybe the systems have to explore the grid in parallel, each acquiring one tile at a time before the first can acquire another.

The Result

I was really looking forward to completing my first LD. I figured I could cram a bit into the submission hour, even. And then it was too late. I had a bunch of nice-looking tiles that rotated when you clicked them, and I couldn’t figure out why they couldn’t see their neighbors. Heartbreak and disappointment.

Since this is also a sort of prototype for a part of a larger game, the plan is to see it through to some kind of playable state. The holidays may torpedo that plan.


Screen fulla wires

Posted by
Sunday, December 18th, 2011 2:28 am


Okay, got some output. My sprites still aren’t rotating properly, but I think I’ve got a hunch why. Still to go: systems icons, meters, reactor graphics, path finding, and action gameplay. Sound? Maybe! Going to be an interesting day.

Lazy day 1

Posted by
Saturday, December 17th, 2011 6:09 pm


It’s been a tragically low-productivity day. I have some gameplay description written out and some nice tiles drawn. Gotta forge ahead into some code before it’s too late!

Non-Memetic Declaration of Participation.

Posted by
Thursday, December 15th, 2011 9:10 am

I’m in. HTML5/JS for the cross-platformness. Specifically, CraftyJS, Underscore.js, jQuery…

I have a game idea that I’ll need to fit into the final theme. It’s sort of an action resource management game that draws on pipe tile games like the classic Pipe Dreams or the card game Waterworks. Except you’re on a spaceship that’s under attack.

Gratuitous Placeholders

Posted by
Wednesday, September 21st, 2011 9:32 am

So many placeholders. My goal for this evening is to finish the “go” button logic that executes your actions on the characters and rooms each night, dress up the placeholders a bit, and get a story put together that can evoke some horror from the player. That’s probably enough to submit for this, though not enough to satisfy me. I might keep polishing it for a while after the mini-LD with an eye toward this month’s Experimental Gameplay and Super Friendship Club.

I was able to formalize the story module format last night. Everything’s in CSV spreadsheets; characters, rooms, story fragments, story-specific game configuration… This lets me almost completely separate content from logic, and should let a person build a story module without learning/modifying the code.

Screen shot below. That’s the basic interface once you’ve started a story. Clicking a room gives you a menu where you can “lock in” an experience type for the night (e.g. noises, dreams, physical manifestations). Once the actions are locked in, the “Begin” button will start the night. You’ll get accounts of the night’s goings-on from the characters the next morning, which will help you understand the story you’re trying to tell them.

Screen Shot

Very nearly operational


Location, Location, Location – Damn the Deadlines

Posted by
Monday, September 19th, 2011 3:24 pm

Still going on the Mini-LD. It’s my first time, so I figure I’ll get the blatant cheating out of the way now; it’s been more than 48 hours on the wall clock. I probably only have 12 hours of dev time so far, so I’m running with that. =)

Javascript is a tricky mistress/master when you’re not accustomed to working with it. I’m learning the CraftyJS framework at the same time (for the second time). Got the concept for a data-driven horror-ish story game pretty well worked out and more than half-implemented. It’s almost interactive now.

The premise is that the player is a location that has experienced something wrong. My sample case is a house which experienced a tragedy. Some folk have chosen to spend the night at the house, and it’s your job (as the house) to communicate the tragedy to the occupants through metaphysical actions. Your basic set of actions can produce different outcomes based on the person and the part of the house they occupy. The player learns the story through the experiences of the visitors.


[cache: storing page]