Indie Wonderland: Human Resource Machine

Hey, look at this neat surprise I didn’t at all see coming! Human Resource Machine is the latest production by Tomorrow Corporation, the company best known for Little Inferno — a game that Human Resource Machine bears an immediate visual resemblance to — and World of Goo. So that’s one game about innocent, round-headed creatures being ruthlessly exploited by a giant corporation, and one game about innocent, round-headed creatures being… ruthless exploited… And now this new game is called Human Resource Machine. To paraphrase internet nerdfather Shamus Young, it’s hard not to wonder what dark hidden anger lies in Tomorrow Corporation’s past.

Nobody tell them they’re a corporation themselves now, though. Let them have their dissonance.

(Spoiler levels: Narrative, low-medium. Mechanical, medium-high-ish.)

(Game source: Bought it myself.)


You know, I was worried Human Resource Machine would be another one of those The Evil That Men Do kind of stories. But look at how nice this opening screen is! There’s a cool high-rise skyscraper, and some happy-looking dancing and jigging people — just look at those smiles! Add some upbeat polka-esque background music, and it’s hard to remember why I was even worried in the first place.

Something about all this company’s other games having the same theme of corporate devastation and horror, hidden under a veneer of naive happiness? I honestly can’t remember.

Do I want to work for this company? Hell yeah I want to work for this company! Give me one of those employee badges!

Give me one of those neat narrative justifications for a system of save slots!

Oh, and a photo too? Hah, would you look at that? That guy on the left is so me.

I’m not the only one who sees the resemblance, right?

Badge and photo in hand, I’m ushered into the elevator. I get to start in the mail room, yeah! I’m so excited with this new opportunity, I almost forget to do what it is I usually do in this review segment. Which is to say: check for options, controls, credits, and other ancillaries.

Turns out it’d have been okay if I skipped that, though. Because in Human Resource Machine, there aren’t any.

Like, nothing *at all*.

Hmm. I’m not sure how I feel about this. Apparently Human Resource Machine thinks its presentation and controls are flawless enough to be right for everyone? Colour me skeptical on that. But we’ll see; it could happen!

For now, though, back to the new-job excitement. Mail room, yeah!

The most noble of entry-level jobs.

Initial impressions

I can’t wait to get started!

I’m so excited, I got here super early.

Alright, let’s see what we have. I see an inbound conveyor belt in the lower left, helpfully labeled ‘->IN’, which is currently carrying in… what appear to be big green boxes with numbers on them. In the lower right, another conveyor belt is labeled ‘OUT->’. And just like that, I think I might understand the basic idea of Human Resource Machine.

In the top left, I see… me! Aren’t I just the cutest? And in the top right, a bespectacled man behind a desk. I look at him, and at once I can’t shake the nagging feeling that his head has two colours. Like, the left side of his head is a slightly different flesh tone from the right side. And there’s a really obvious seam running between the two. Like a subtle but slightly botched suture job. Or like… I mean, there’s really no way around saying this: I think this man’s head looks like a butt.

Now that I’ve seen it on him, in fact, I can’t help but see it on myself as well. Oh dear god. Are all the characters in this universe bi-coloured butt-heads?

Let’s quickly move on with the game instead of thinking about this for too long!

I am! Thank you for noticing.

Desk-bound boss man — for he is indeed my boss — congratulates me on my new job and on my apparently obvious order-following skills. He tells me that my new job will ‘appear over there on the right side in a moment’, and reminds me that I can always ask him for help. How to ask for help, he doesn’t specify.

And then the actual job appears, and my paradigm is flipped.

*Flipped*, I tell ya.

I mean, not because of the job itself, obviously. That’s just the ‘carry boxes from IN to OUT’ that I called a few paragraphs back. It’s just that… I figured I’d actually be transferring boxes. Like directly, controlling my little dude, or indirectly, maybe clicking each box up and down the production line under some sort of time limit.

Instead, it look an awful lot like I’ll be programming.

No, but that’s literally what it is. I have access to two commands right now, ‘->inbox’ and ‘outbox->’, and I can drag copies of those commands into the text field below. This forms a list of instructions for my little worker to follow… a ‘program’, if you will.

Human Resource Machine isn’t even subtle about this, as evidenced by the newly visible Play button.

‘What, you thought we’d have a cutesy metaphor for what you’re doing here? No dice, code monkey.’

I drag an Inbox command to line 1. Then I drag an Outbox command to line 2. Then I hit play. Little-me runs to the Inbox conveyor belt, grabs the topmost package, runs to the Outbox belt, and deposits the package. So that solves the mystery of what those commands do, I guess.

Boss-man isn’t happy, though. I’ve reached the end of my program, and only one of three numbers has been Outboxed.

This earns me a stiff talking-to.

I… guess I figured the program would loop automatically? No idea why I thought it’d do that, to be honest. I halt the program’s execution, which returns the world to its previous state — though the box numbers are now different. Then I add four more lines to the program, and run it again.


For my performance, I am judged by a purple lady with either a moustache or a really weird mouth. Then, it’s on to my next assignment!

It’s not just me, though, right? Everyone else is seeing this moustache-mouthed woman?

Which is to say, it’s on to my next assignment… next year.

You’re telling me I spent a *whole year* carting boxes up and down?

Second verse, as it turns out, same as the first: again, a set of Inbox boxes — letters, this time — needs to go to Outbox. This time, though, the Inbox line is long and busy and unpredictable, and I can’t just write a program tailor-made to its exact length. If only I had some way to make my programs loop as often as needed… some kind of way to jump from the end line back to the start.

Oh hey, look at that!

After two years of strictly linear carrying activity, year 3 decides to spice things up a little. It does this by introducing… a carpet!

A fancy letters carpet.

It’s useful for sending ‘bug’ reports.

The carpet, it turns out, is a simple form of memory. I can copy whatever box I’m holding onto any carpet square, or copy any box from any carpet square into my hands — somehow magically duplicating the box in the process. Year 4’s assignment plays with this idea a little: using the carpet’s memetic powers, I have to move pairs of Inbox boxes to the Outbox belt — in reverse order!

No, my paradigm! It flipped again!

Then it’s time for a coffee break!

This coffee break takes a *whole year*.

And then, back to work!

I learn to add stuff together!

After year 6, the elevator path actually briefly splits. The right path, blue now instead of yellow, continues on upward. On the other hand, the still-yellow left path only goes up three more levels. What’s up with that?

I’m not sure this is how elevators *work*, also?…

Diving into the left path — because no good mystery should go un-investigated — I learn it’s a set of optional, difficult missions. ‘For high-performing employees only’. Not only are the missions inside more challenging than the fare I’ve seen so far, but — for the first time ever — I actually get graded on my performance.

How does that work? Obviously, I can’t complete a level without actually getting a working solution going. But not all solutions are equal in efficiency. Human Resource Machine grades me on two aspects: the number of commands used to solve the assignment, and the number of steps taken to solve the assignment. One rewards brevity in writing the program; the other rewards brevity in carrying the program out. Human Resource Machine is quick to point out that these goals might not always be as compatible as you’d like.

Right before telling me that *this* time, I got both of them anyway.

Performance rewards aren’t just for the optional path, however: now that the concept’s been unlocked, I’ll get graded for all assignments. I even retroactively get grades for the work I’ve been doing the last seven years.

I… I really though I had a good thing going in year 2.

I approach my new assignments with the presence of performance objectives in mind. Suddenly, it’s no longer just about getting the work done: it’s about getting the work done well enough.

It’s tricky at first. I can intuitively wrap my head around short program writing as a performance goal easily enough. Just use less lines, yo. But the speed challenges are more difficult. Sometimes, I find myself doing better if I crack open my loops and write them out in full. Other times, that actually harms? And while there is often one ‘optimal’ solution in arm’s reach, Human Resource Machine‘s insistence that you can’t always have your cake and eat it proves true.

That said, I find myself doing better and better with each step. Programs get faster, codes get shorter, and one by one, the performance indicator lights next to each level blink on and stay on.

Felt pretty good about myself, getting the optimal solution for the yellow side path’s hardest mission.

Yup, things are looking up for me. The way I’m currently seeing it, none of Human Resource Machine‘s nonsense poses any kind of insurmountable…


Hmm. That’s odd. I was sure that that was good. But maybe if I switch up this and this?…

Wait, how did that make it *worse*?

…Readers, I’ll be back in a moment. I just gotta… maybe get some scratch paper, and a pencil, and…

Onto page 2. >>


  1. Argh! You didn’t close your curly braces! Or if you did WordPress ate them.

    Please fix, also please fix your TERRIBLE lack of whitespace!

Leave a Reply

Your email address will not be published. Required fields are marked *