TIS-100

I’ve been messing with this game, on and off, for a long time now but I’ve come to accept that as much as I wish otherwise, there’s a certain at which a game stops being fun and feels too much like work. Due to how much I loved SpaceChem, I’ve always kept an eye out for subsequent releases by Zachtronics though I’m never smart enough to play them all the way through. For this one, I was good enough to finish almost all of the puzzles on the first page on my own but there’s no way I’m ever going to complete the advanced puzzles.

Like all of Zachronics’ games, TIS-100 is a programming game and the model here is assembly language programming. The background here is that you’re a programmer with an interest in old and unusual computer tech. One day you find this strange computer and you become obsessed with learning how it works. As you can see, graphics are non-existent and the interface is as plain as it can be. It’s very a straightforward container for puzzles of roughly escalating difficulty. You very much have to read the accompanying manual to learn the programming language and the specifications. Success requires passing what amounts to unit tests for each puzzle which includes a randomized input test. You’re also shown scores for how quickly your solution finishes the puzzle, how many lines of code you need and how many modules you use.

The machine is in fact divided into a grid of twenty of these modules which are usually configured as independent processing units though they can also be blank or act as memory stacks. Each unit can hold up to fifteen lines of instructions and each unit can send and receive data only from its neighbors. The language itself is just as primitive. My biggest frustration, after being used to modern languages, is that you basically can store only two variables and it’s rather tedious to swap between the two. This makes implementing things that would be trivial in other languages, like looping through a sequence until you hit the end and counting the number of items in it, very unwieldy. There’s also the fact that each unit runs independently, coordinating only through data that you send between them, making it a form of parallel processing, something I’ve never done before.

This obviously isn’t a casual game but the puzzles ease you gently into the intricacies of the system and its rules. Beyond the introductory puzzles, it feels incredibly satisfying to reach a solution after hours of work and there is perhaps even more satisfaction from optimizing your solutions by making it run faster or use fewer instructions. You learn how to make do with so little memory and how to offload storage to neighboring computational units if absolutely necessary. You learn how to control program flow with jumps instead of while loops and do loops, something that is totally verboten in modern programming. Believe it or not there are even puzzles which involve using the computing units to draw graphics. Once again, I’m awestruck by Zachary Barth’s brilliance in using games to teach programming.

As I’ve said however, there’s a point at which this starts to become too much work to feel like much fun and I’m ashamed to say that this point arrives all too soon for me. I actually also own Infinifactory but I’m hesitant to start playing it. I doubt I’ll ever buy Shenzen I/O as much as I love the concept. I just don’t have the combination of intelligence and dedication needed to do them justice. Still, I greatly enjoyed my time, limited that it was, that I spent on TIS-100 and I’m very pleased that I now have some idea of what programming in Assembly is like.

Leave a Reply