I recently lost more of my life than I care to admit to Zachtronics' more graphically pleasing follow-up Shenzhen I/O [1] that I think I first heard about from HN [2].
The backstory that unfolds through your fake inbox actually gives the devilishly tricky game some direction, and the post-solution histograms showing just how many people solved the same puzzle cheaper, with fewer instructions and with lower power consumption than you tug at your ego and keep you obsessing over the same puzzle long after you've solved it. There's even a fun Solitaire variation buried in there for good measure, which was evidently so popular they also released it as a standalone game [3].
The mechanic of graphing metrics for solutions is common to at least TIS, Shenzhen, and my favorite, Infinifactory. It's perfect for competitive tinkering.
SpaceChem does it too. It's also great if you have people on your friends list that play the games, since then you can see their exact scores and turn it into a direct competition.
Yep, I've spent days tweaking and optimising the starting few worlds of SpaceChem to get solutions which are most optimal. The only disappointing thing is that you can only save one solution to each challenge, so it means you need to pick a solution that is either the fastest or the one with the fewest elements. Luckily they have fixed it with Infinifactory.
I have the same effect with code golf. It's terribly distracting so I stay the hell away from it lest I get sucked in and am alerted to yet another night having passed by because the birds wake up.
The first time I heard about this game someone mentioned another assembly language game called Human Resource Machine. I was so captivated by the design of HRM (I'm a fan of the publisher, Tomorrow Corporation, thanks to Little Inferno), I forgot all about TIS-100. I'm happy to be reminded.
I tried HRM after playing a decent bit of TIS-100, and the interface was just too slow and clunky in comparison for me to keep going. One of the more brilliant aspects of TIS-100 is that you can always see the full program on the screen at all times, and part of the challenge is to refactor code by physically moving it around the screen. HRM in comparison only displays the code as a list of commands and I found it frustrating to navigate through, especially for big programs.
Another really satisfactory part of the gameplay of TIS-100 was that I sometimes came up with a new optimization to solve a later challenge, and could then go back to my old solutions and get large speedups by applying the same optimization there. It made me play the game nonlinearly and go back and forth between the challenges and trying to improve my code in them. It's just a lot of fun for programming-minded people.
Does anyone remember a similar thing that's not a game but an emulator-ish for a very simple cpu + color screen that people made small games / demos on? I wish I remembered more details or that I'd bookmarked it when I saw it...
This is a stretch, but could you be thinking of PICO-8? It's a "fantasy console" that you can write 32k game cartridges for using a subset of Lua: https://www.lexaloffle.com/pico-8.php
I think about the CHIP-8 VM, then the CHIP SBC, and its PocketCHIP variant, which comes with Pico-8. They're all kind of intertwined in my mind, and thinking of any one tends to lead to all the others.
I liked HRM, the story was a nicely quirky, and so far to date it's the only game for which I have 100% achievements for. The only thing it was quite annoying to write the code for the later levels since you couldn't see enough of the screen, so I ended up exporting to text and using a normal text editor to edit before reimporting.
I had a blast with TIS-100 and Shenzhen I/O when they came out, but for some reason I never picked up Infinifactory until yesterday. I'm so glad I did.
Zachtronics games give me that feeling of zen that is increasingly harder to find in games nowadays - the "Oh dang it is 2am already, I thought it was like 9pm!".
I'd recommend checking out the aforementioned titles, as well as some of the 'other games' on the website[1], like Ruckingenur-II.
Don't forget SpaceChem! It's less-obviously-programming compared to some of the others but it has very similarly-compelling puzzles. It might be my favorite from Zachtronics.
The problem I have with TIS-100 is that everytime I play it, I begin to think how cool it would be to have actual physical TIS-100 machine and end up distracted by thinking about the HW design
Similarly with Shenzhen I/O; I constantly think if I could make those microcontrollers as e.g. WiFi-enabled devices with small screens (e.g. via NodeMCU). You'd program and wire them with your computer or a smartphone, but the point would be that each such device executes its own piece of code, displaying the code and the state of registers on its small screen (and signal routing would go through the network for simplicity).
This game is wonderful and I lost much time to it.
Then I lost even more time reimplementing the game in JavaScript and trying to solve the puzzles with genetic programming. I did not get very far. https://github.com/melograph85/tis100
I spent some time playing this. Loved the manual and the old school aspect. Suddenly, I thought that every hour I spent in this I could be learning real assembler or another language that I could use IRL - solve real git-hub bugs for fun, etc.
That is a deep well to dive down. It's similar to the feeling I get when I am procrastinating on the weekends - I want to be 'productive' which in that case means spending some time playing one of the games I have going.
The feeling of "I could be using my time better".
The main difference here, specifically, is that the game has a well defined set of constraints. It is a limited environment with a known correct solution; it has an achievable goal.
There are well defined and measurable metrics, and you quickly learn systematic methods to improve your results with respect to those metrics.
Furthermore, the ability to achieve the goals and improve your stats is entirely within your own control.
Unfortunately, the real world is a mess of subtle complexity. Sometimes not so subtle!
Constraints are poorly defined if at all. Often there is no 'known correct' solution, because most of the time there isn't a well defined problem. Bug reports are a good counterexample to this, however.
Often the metrics aren't defined at all, or different people measure them in different ways. Most of the metrics people care about won't be measured automatically, and you have a limited ability to directly incrementally improve them.
Lastly, your ability to make any impact at all is almost always dependent on other people working with you to that end.
There have been lots of attempts to 'gameify' real-world code development; I wish the world weren't so complex. Sometimes I wish I didn't have that nagging in the back of my head that I could be spending my time better, but to be fair it's probably the one thing that keeps me from getting bored!
I met Zach a few years ago when he spoke at a community college in my hometown. Super nice guy and it was interesting to hear him talk about his games. I was quite literally the only one that played his games in the room though.
Honestly TIS-100 feels like it would be an extremely comfortable 16 bit machine to program for IRL. I've wasted 40 hours of my life on it so far and I'm ashamed to say it's been funner than most 'real' games I've been playing.
I wish there was an environment that could simulate 100s of TIS-100 "cores" but I guess I'd need to write it myself.
Funny, I just started playing this again this week. I remember spending some time 1.5 years ago but since then, I did much more programming on the job. It's good to see I learned how to think in another way. :-)
The backstory that unfolds through your fake inbox actually gives the devilishly tricky game some direction, and the post-solution histograms showing just how many people solved the same puzzle cheaper, with fewer instructions and with lower power consumption than you tug at your ego and keep you obsessing over the same puzzle long after you've solved it. There's even a fun Solitaire variation buried in there for good measure, which was evidently so popular they also released it as a standalone game [3].
1: http://www.zachtronics.com/shenzhen-io/
2: https://news.ycombinator.com/item?id=12660253
3: http://store.steampowered.com/app/570490/SHENZHEN_SOLITAIRE/