Human Resource Machine (PC) (2015)

Overview: A video game with programming and math-based puzzle mechanics.

20171223:
While there were various games to play using my current game choosing method (still via games which an unnamed Steam friend has played), I was attracted to Human Resource Machine, because it was related to Little Inferno.

String Storage Floor

There's not so much of a story. The fact that there may be hidden messages is made apparent in one of the levels. I'm not sure how many levels contain similarly hidden messages. However, if Human Resource Machine is anything like Little Inferno, it's probably all culminating in something big at the end.

Progress: Skipped 22, 24, 26, 28. Finished 33.

Steam Game Time: 3.6 hours

20171224:
I resumed the game today and I spent some time with some of the puzzles for which I thought I could solve the "Size" or "Speed" Challenge. Sometimes I succeeded. Sometimes I failed and eventually moved on.

Progress: Skipped 22, 24, 26, 28, 36, 38, 40. Finished 41.

Steam Game Time: 7.1 hours (total game time) / 3.5 hours* (session game time)

Progress: Skipped 28, 36, 38, 40.

Steam Game Time: 9.6 hours (total game time) / 2.5 hours (session game time)

A Cutscene

*There were moments when I stepped away with the game on. But this is probably at most 30 minutes of time.

20171225:
Today after I had managed to complete all the levels in some form, I had the following challenges left to complete (in parentheses is my best over number needed to complete challenge):

Size: 19 (12/10), 20 (18/15), 22 (20/19), 28 (38/34), 35 (19/17),
Speed: 19 (87/82), 28 (88/78), 32 (427/393), 36 (110/109), 41 (925/714)

Remark: I achieved the Size Challenge for Year 32, but I no longer retain the solution.

The first one I tackled after making the above summary was Year 32. I got it down to 386/393.

Next I went for Year 19. I easily completed the Speed Challenge (79/82, and lost the solution), but had some trouble with the Size Challenge (10/10).

My Size Challenge solution for Year 20 (15/15) came from realizing that I should use "jump if negative" as a trigger instead of "jump if zero."

In the Size Challenge for Year 22, I played around with using jumps going upward, a technique I heavily investigated during Year 32 (my Size Challenge solution for Year 22 gave 18/19).

Yay! Size Challenge and Speed Challenge Achieved!

I was trying to crack Year 35 when I felt sleepy and decided to stop playing. I had the following challenges left:

Size: 28 (38/34), 35 (19/17),
Speed: 28 (88/78), 36 (110/109), 41 (925/714)

Steam Game Time: 18.1 hours (total game time) / 8.5 hours (session game time)

Remark: Technically some of the hours involves blogging time. Estimated time of 1-2 hours.

20171226:
Resuming the game, I started with Year 35 where I left off last night. I first accidentally created a solution that broke my record for Speed and was less of a hack (63/167). I call it a hack because it maxes out at five letters. In any case, I tried to make a Size solution based on it, but that solution turned out horrible with respect to both Size and Speed.

Eventually, I went back to my original solution of 19/17 and slowly massaged that to 18/17. It took much thought and a lot of playing around to finally get it to 17/17. Note that once again I made use of "jump if negative" instead of "jump if zero." The solution also utilized an offset of 1 between two of my counters. Both of these implementations were made possible by decreasing a counter instead of increasing it.

I love using labels.

In any case, I'm at that point in the game where the final puzzles take a large proportion of the game time. A great example of the 80-20 rule; in this situation, approximately 80% of the game was completed in 20% of the time (in truth, with a projected completion of 30 hours, 90% of the game will have been completed in 30% of the time).

Steam Game Time: 20.4 hours (total game time) / 2.3 hours (session game time)

Year 36, Speed Challenge 71/109. Also simultaneously beat my Size Challenge. It was previously 38/39, but it's now 31/39. This one wasn't that hard. Instead of reading both words in and then comparing them, this time I started comparing them as I read in the second word.

Steam Game Time: 21.0 hours (total game time) / 0.6 hours (session game time)

I tried to solve the Speed Challenge for Year 41 and I started trying to implement linked lists. While the idea might have worked, it was likely I would run out of cells. With that being said, the code and bookkeeping was cumbersome, so I'll have to try something simple. Maybe the simple solution is to sort two different lists and then merge sort.

In the end, I dug around the internet looking for "ideas." I found a GitHub that compiled solutions for the different levels. Analyzing the solution for this Speed Challenge (Year 41) (via copying the file and pasting into the game), I was surprised to learn the algorithm of choice was Selection Sort.

Choose a character to play.

Steam Game Time: 25.8 hours (total game time) / 4.8 hours (session game time)

In any case, that left me with one level remaining: Year 28, Size: 38/34, Speed: 88/78.

Thoughts:
Pros:
+ Novel Enough (I previously played another programming-based puzzle game called TIS-100)
+ Teaches players new mechanics at an appropriate pace
+ Addicting

Neutral:
~ I love Little Inferno, and this game takes place in the same world.
~ Like Little Inferno, the story is subtle.
~ Benefits from familiarity with a programming language; the difficulty for those without is unknown

Summary:
I had a lot of fun playing this game, and unlike TIS-100 (2015) or SpaceChem (2011), the levels were easy enough to complete in a short/enjoyable amount of time.

Recently I've been noticing more programming games on Steam. Either programming-based puzzle games are becoming more popular or I just haven't noticed them until now. In any case, I would definitely recommend Human Resource Machine to any player who is a fan of video games and enjoys either programming or mathematics.

20220920 Snapshot:
There's a 0.1 discrepancy in the total. I've observed this occurring depending on where the total time is source. For this snapshot, the time is sourced from the game page.

Steam Game Time: 25.7 hours (total game time)
Last played: 20171226
20220920 Comment:
I was planning to play today, but there was no synced save file. I'll try and look for one.
20220920:
I couldn't find any backed up save file so I decided to start a fresh save - in part because I love this type of game. With that being said, I did briefly consider not starting a fresh save. Having previouslyu finished the game, I focused on one of the remaining achievements: to finish the blue section. Fortunately, this is the second section of the game (the first is the yellow section).

After passing through all the blues with a working solution, I went back to try and meet the optimization requirements. I found a general optimization strategy for speed was to reorder the JUMPs. For example, the obvious logical JUMP order is the following: a | b | IN | JMPZ c | JMP b | c | OUT | JMP a. The inefficiency comes in having to run the final JMP a. Instead, by reordering the previous as "JMP c | a | OUT | b | c | IN | JMPZ a | JMP b", then JMP b is sometimes skipped. Remark: the size of this reorder is equivalent.

Among the attempts to optimize, the multiplication level was giving me trouble. It crossed my mind to try and implement a solution that involved doubling (powers of 2), but I wanted to avoid it if possible.*

Steam Game Time: 29.1 hours (total game time) / 3.4 hours (session game time)
*I eventually tried this on 2022092X. The order of magnitude of the values involved and the operations available make it so that it does not seem to be a viable method of optimization.
20220921:
My previous entries showed no sign of difficulty with the speed requirement for year 20, and indicates a small switch to achieve the size requirement. However, I couldn't seem to figure it out.

Later in the day, I had moved onto other puzzles and when returning to year 20, I managed to get it for size and speed separately. I don't think there was a specific strategy involved in achieving them (perhaps just luck). More broadly, I had learned that speed essentially means making very specific choices particular to the task whereas size essentially means combining code as much as possible. In programming terms, it's extremely dry code for size and extremely wet code for speed.

Gameplay Log:
Along the way I had gotten the overflow error achievement.
Completing the blue section gave the blue area achievement.
I used level 2 to get the last achievement, inserting useless jumps to spend 102 lines when 25 is the cutoff for the level.

Steam Game Time: 32.9 hours (total game time) / 3.8 hours (session game time)
Human Resource Machine (PC) (2015)

Human Resource Machine

Relevant Links:
Human Resource Machine Webpage
Human Resource Machine (Wikipedia.org)
Human Resource Machine (PC) (MetaCritic.com)
Human Resource Machine (Steam Store Page)

No comments :