I have to admit, while watching video previews of Human Resource Machine I got the sense that it was a game designed precisely for me. For starters, it is developed by Tomorrow Corporation, a team whose members have previously created many of my favorite games on their respective platforms, including World of Goo, Henry Hatsworth in the Puzzling Adventure (which I reviewed very highly), and Little Inferno (which I also reviewed very highly.) It’s also a puzzle game about programming, and as a programmer who loves puzzle games that’s a very appealing idea to me. Finally, as a part-time elementary school computer teacher, I have been looking for an excus... I mean uh, an education-oriented reason to bring video games into the classroom and share my love of gaming with my students, and Human Resource Machine, with its focus on basic programming concepts, seemed like it might have the combination of educational value and fun that I had been looking for. (I currently use the “games” on sites like Code.Org to teach my students programming concepts, and they are solid games for what they are but you know… not quite the same thing as a Tomorrow Corporation developed game.)
All of the pieces were in place for me to love Human Resource Machine, but that would be meaningless if Tomorrow Corporation failed to turn the concept into a great game. Did they pull it off?
Welcome to the place you will work your entire life at.
The set-up of the game is that you indirectly control an office worker by creating “programs” that will have him or her move objects from your inbox to your outbox. Each stage requires writing a single program to complete whatever tasks are requested, and each program you complete represents a year in your career. You build a program using a variety of drag-and-drop commands which must be placed in the correct order on the right side of the screen. When you feel that your program is complete (or want to test your progress), you can press a button to execute the program and watch your office worker move in real-time. Human Resource Machine is controlled using the stylus on the Wii U GamePad touch screen, and this is a perfect fit for a game that involves mostly dragging, dropping and clicking. If you’re an elementary school computer teacher like me (uh, you probably aren’t, are you?) or someone young enough that you grew up in a school system where children learned coding, this will be somewhat familiar as it is the same basic set-up used in the games on sites like the above-mentioned Code.Org. However, if you haven’t played educational coding games, this kind of gameplay will most likely be somewhat new to you, as there are not many popular games that utilize programming mechanics in such a direct manner.
Chances are that many of your programs won’t execute correctly the first time you run them, and then you have to “debug” them, which essentially means figuring out where you did something wrong and fixing it. Human Resource Machine is pretty user-friendly in this regard (much more user-friendly than most actual debugging is, trust me on this one), and it is simple enough to trace the path of your program step by step and see exactly where it failed. Figuring out how to fix it, however, might be a little more difficult, and you will almost certainly make changes and rerun and fail again several times on some stages before creating a successful program.
You can also copy and paste parts or the whole of your program between 3 sheets, which is nice for when you get a certain piece of the program working and want to make sure you can come back to this piece later on if need be, as well as use the “undo” command to step backwards in your program if you have gone down the wrong path. Another neat feature is a slider that will speed up / slow down the running of your program, which helps makes testing and troubleshooting a bit less painful. Some of the programs will take a fairly long time to run, and if you need to troubleshoot a part near the end, it helps to speed things up and get past the pieces you know work fine before you slow down and zero in on the problem section. Finally, one very much appreciated feature is the ability to add “labels” to your variables (in this game spots on the floor), which helps keep track of what exactly you are using them for. Any experienced programmer can tell you the importance of meaningful variable names, especially when you get deep into programs that utilize multiple variables for multiple purposes. Tomorrow Corporation definitely approached the design of Human Resource Machine thinking about user friendliness, which helps take a fairly complicated idea and make it feel relatively smooth.
Your boss watches patiently as you do all of the actual work.
So what kind of tasks will you be executing with your programs? Human Resource Machine starts at the most basic level, with just two commands, one to take an object from the inbox and another to put an object in the outbox. It’s kind of tough to mess your program up at this point. However, as you get deeper into the game more and more commands are introduced, and with the introduction of new commands also comes unique tasks for each stage. For example, a stage might have you only move objects with a “0” value to the outbox, or change all values to positive numbers before putting them in the outbox, or compare two strings and only outbox the one that would appear first in alphabetical order, etc. To accomplish more advanced tasks you will need to utilize programming concepts like if statements, loops, storing values in variables to be modified or retrieved later, and yes, I hope you studied hard when you were younger because you will definitely be using some math commands as well. Oh, and there are even more advanced programming concepts like pointers and linked lists that show up as well, but these terms probably don’t mean much to non-programmers. I assure you, they can be quite uh... fun… to wrap your head around.
A large part of the challenge of Human Resource Machine comes from having to think creatively using the limited commands at your disposal. To go back to one of my examples above (changing all values to positive numbers), in most programming languages this would be a relatively simple task, as the language would have an absolute value command that you could use on each object and bam, you’re done. Not so here. Human Resource Machine is, after all, a puzzle game, so it’s not going to be so straightforward. You have to really think hard about how to accomplish your tasks using the limited commands provided. It’s almost like programming in some intentionally esoteric language like Brainfuck or something. Thinking outside of the box is a must in this game.
1s and 0s everywhere... and I thought I saw a 2!
Getting through the stages can be difficult enough, but if you really want to push yourself, there are two optional challenges for each stage, a size challenge and a speed challenge. To beat the size challenge you need to write a program that fulfills the tasks of the stage while also keeping the amount of commands your program uses at or below a defined number, while the speed challenge works similarly except your target is keeping down the amount of steps executed when your program is run. Although you can shoot for both of these challenges at the same time, you don’t have to, and in fact in some stages it is physically impossible to achieve both with the same program. These optimizations can be incredibly hard to achieve. I’ve only managed to succeed in about 25% of the size and speed challenges so far, and I can imagine getting all of them would take hours upon hours for most gamers.
Human Resource Machine has 36 playable stages (25 Required, 11 optional), and it took me about 10 hours to finish all but one of them. (The optional prime number stage is a killer. I tried to brute force it and found out the hard way that the game only lets you add around 200 commands per program, so I gave up on the stage... for now.) To be honest, it is difficult for me to guess how challenging the game would be for the average non-programmer, because I’m not sure what it would feel like to be solving puzzles using programming concepts if I did not have a programming background. I imagine I have an advantage here, but who knows? I found the difficulty curve to be pretty ideal for my tastes, as the game started off incredibly easy and worked up to some fairly hard later puzzles, with some extremely hard optimization challenges (and the prime number stage) to go back to if I really want to push myself. One thing that did surprise me, however, is how quickly the complexity (which I am distinguishing from difficulty) of the programs requested amped up. Often the description of what the game wants your program to look like takes a paragraph or two to explain, and there were a few stages where I had to read and reread the request many times before I got a sense of what was even expected of me. Tomorrow Corporation does supply you with a visual example of what the output would look like given a sample input for each stage, which makes it easier to grasp what is wanted when the description text is confusing, but it can still be a bit overwhelming.
*Insert a coffee joke here.* (I'm so bad at coffee jokes.)
On the presentation level, if you have played World of Goo or Little Inferno you will have a fairly good idea what to expect. Detailed, stylistic graphics and an excellent soundtrack are used to create a mood that is both humorous and unsettling. However, outside of a few short cutscenes the entire game takes place on a single screen, and there are only a small handful of music tracks, so while it is a tight package, the presentation is not quite as impressive as what we saw in World of Goo or Little Inferno. This is a Tomorrow Corporation game so of course there is a strange dystopic story, touching on themes like the corporate world and technology with a tongue placed squarely in the cheek, but to be honest the story is so minimal and doesn’t really have any depth, so it didn’t affect me in nearly the same way that Little Inferno’s brilliant commentary did. Polished presentation aside, if you’re going to play Human Resource Machine it has to be for the gameplay.
I highly enjoyed my time with Human Resource Machine and plan to spend even more time going for some more of the optimization challenges, but it is not a perfect game. For starters, the scope is so limited and the gameplay can get complex pretty fast. And despite the many things Tomorrow Corporation did to make the experience as user-friendly as possible, it can still be very difficult to keep track of what pieces of your program are pointing where, especially in the later stages when you will be utilizing a lot of complex logic, jumping all over the place and incrementing multiple variables and looping chunks of code multiple times and referencing parts of code with pointers and you name it. In a few of the toughest stages my programs would be so big and look so messy that when I would lose track of what was doing I was lost, period, and I would sometimes find it easier to just start over again rather than trying to figure out my current mess. At times I even got tempted to get out a pencil and paper and write out the logic of my program before starting (programmers call this pseudocode, and do it all the time), but it felt more pure to do everything within the confines of the game. The lack of a hint system (I’m not counting an example as a hint) is also a bit odd, especially considering how many gamers might be seeing a lot of these programming concepts for the first time. Finally, the lack of any way to save mid-stage felt like a pretty big omission considering how long you may spend on some of the stages (the final stage took me close to 2 hours to finish!) This is especially true taking the optimization challenges into account, some of which can be very frustrating and time-consuming to solve. It would have been nice to have the option to save mid-program and come back later with a clearer head.
If you think this looks complicated, wait until you get to programs with 30+ commands.
I honestly don’t know whether to recommend Human Resource Machine to the average gamer or not. For me it hit all of the right notes (minor complaints aside), and I highly recommend it to programmers, mathematicians, or anyone who likes logic problems, especially multi-step logic problems that get exceedingly more complex over the course of a game. The puzzles here are very well made and really make you think in ways that, even for experienced programmers, can be a bit unconventional. But I can also imagine that the game’s limited focus, complexity, and reliance on logic and math skills might turn some people off, especially with the lack of any kind of hint system to help guide players through when they start to struggle. Of course, I could be over-estimating how much my programming background helped me, and maybe the game wouldn't be as challenging for non-programmers as it seems like it would be? I’ll be very interested to see what non-programmers think about Human Resource Machine. Whatever the case, I loved Human Resource Machine, and I suggest that if it sounds in any way appealing, you should give it a shot whether you have a programming / math / logic background or not. It's currently $9.99 in the Wii U eShop, which seems like a fair price to me for the hours of enjoyment I have gotten from the game.
Now, whether my elementary students would be able to get into a game like this or not, we shall see. Human Resource Machine would probably be a bit too overwhelming for them, but it might be worth exploring...
Sounds kind of interesting actually. Reminds me of an old Dr Brain puzzle where you had to program a robot through a series of increasingly complicated courses using stuff like 'GO FORWARD', TURN RIGHT', 'PICK UP', etc. You'd chain all those into a program, then let your robot go...and watch as he promptly crashes into a wall because you didnt take into account a conveyor belt or something and he ended up turning the wrong way. Reset, try again.
But this seems somehow more 'information' based than simple physical commands? Your reference to IF statements make me think of my various Excel shenanigans that I have to deal with at work. It's pretty satisfying to be presented with an absolute mess of data, and then hitting the right formula (or combination of formulas) that turns it all into something useful.
Could be right up my alley. I'll have to see if it's on PAL E-shop.
@Shadowlink Yeah what you are referring to is pretty similar to the Code.Org games I referenced, which often involve navigating a character through some map by selecting the correct commands. Those involve if statements and loops and such but they're usually relatively linear programs at the end of the day... get from point A to point B. Human Resource Machine is on a whole other level, and it involves a lot of calculations and keeping track of counters and using pointers to reference variables to iterate through sets of numbers and reversing strings and such. With a limited set of programming commands. Which is why I kind of hesitate to recommend the game to everyone. But I mean... the actual logic of the various commands is pretty straight-forward and it teaches you how to use them one at a time, so it's not like you need a programming background to play it or anything. I just don't know how much experience thinking in the ways required to solve a lot of these puzzles most people have. Even with my programming experience and having a general sense of how to solve a lot of programmer logic problems (for instance, various sorting algorithms are one of the first things you tend to learn when learning programming) I still got stuck for a decent time on some of the puzzles.
But there are a few puzzles where it will just straight up help to have some programming / math experience. The one puzzle I didn't finish has you calculating and storing the prime factors of numbers then outputting them in numerical order... which if I actually remembered my math would probably be a bit easier. But without having any multiplication functions it's a tough nut to crack either way. Other than a brute force method (which, as stated in the review, didn't work because they limit the amount of commands your program can use) I'm not really even sure where to start on that one, but I imagine people with a deeper understanding of math probably know the basic algorithms for calculating prime factors.
I DID get my program successfully calculating the prime factors all the way up to 11 for any given number... before I ran out of space to keep going. But I was obviously not doing it the right way because I was creating tons of new code for each prime number...
I'll have to think about this one. Maybe something obvious I'm missing.
Oh I'm more than fine with Maths. Usually. Although I can't remember any algorithms for prime factors...unless those are your basic division tests? Easy enough for numbers from 1 to 10 (except for 7 which is a bastard), but things get trickier going up to 2 digit primes (and of course things only get worse from there). Trying to tease prime factors out of something like 209291 (47x61x73) would drive me nuts.
I got this game yesterday and have been loving it! Not trying too hard to go for the "elevator button" challenges right now, just working my way through it.
Yeah, I definitely feel like having some programming experience is giving me an edge on the game. I do think that a good portion of the challenge comes from working within the tiny space they give you to plop your commands down in. Writing a makeshift if statement takes up four whole lines of code! And with all the blue arrows going everwhere, stuff gets complicated very fast. I almost wonder if they did that an purpose to make you write as elegant code as possible.
The only level that's given me a little bit of trouble so far is the one where you have to output the three given numbers from smallest to largest. My code got so messy that I decided to put the game down for a bit and rewrite it later.
I do like that, even though the focus of the game is on puzzles, there's a tiny bit of Little Inferno-flavored story in there to keep things interesting. Huge fan of Kyle Gabler's writing.
@Secret_Tunnel Yeah but pretty much everything this game has you do with pointers you could do with an array / array functions... if you had them. I'm still kind of unsure what I'd use pointers for in real life (I don't think I have ever used them outside of school.)
The limitations are what make the game interesting though.
Man, the optimizations are like I dunno... playing a Zelda Master Quest or something? As in playing content that is not the same as brand new content but that puts enough of a twist on the old content to make it feel like you're getting something new-ish. Depends on the stage though. On some stages I was able to optimize quickly by making some small changes, but in other cases I have had to completely rethink my approach. I just finished optimizing stage 17 "Exclusive Lounge" and my final program was completely different than the program I used to originally beat the stage. My original approach was just plain not going to work for optimization so I had to throw it out and think up something brand new. That's pretty neat.
That's another cool thing about this game is there are multiple solutions to a lot of the puzzles. Maybe even some Tomorrow Corporation never thought of?
Anyway there is probably no way I will ever be able to optimize some of the later stages (I still have to come up with a plan just to finish the prime number stage) but I'm going to see how far I can get. Have everything up through stage 17 optimized, as well as a handful of others after that.
Beat it! Wow, that last level really drills in how much better selection sort is than bubble sort. Makes me want to go back and optimize all the rest of the levels too! I feel like I can still learn a lot from this game. There needs to be a Human Resource Machine for every skill!