SpaceChem Dev’s TIS-100: A Programming Puzzler

After having folks design molecules in SpaceChem and automated plants in Infinifactory, Zachtronics are back with another puzzle game of complex systems. What comes after atoms and factories, the whole dang universe? The multiverse? Nah, you write assembly code.

Today Zachtronics both announced and (sort of) released TIS-100 [official site], a game about rewriting corrupted code to fix a fictional ’80s computer. It’s on on Steam Early Access now for £4.49. My prediction: their next game after this will be to literally program SpaceChem.

Armed with a trusty TIS-100 user manual, teach will learn to repair the system and maybe uncover a few of its secrets: who made it, and why? Along with puzzles, where you can compete with your chums to write the most efficient code, the game has a sandbox mode where you can code whatever you want – including your own games. Oh gosh, maybe writing SpaceChem is the final level of TIS-100?

Zachtronics think it’s a month or two away from finished, so why release on Early Access rather than wait? Because it worked out well last time. Zach Barth explains:

“I was extremely pleased with our Early Access release of Infinifactory; although the game was largely ‘finished’ when we released, we were able to make a huge number of improvements and additions to the game based on player feedback and turn a great game into an amazing game. We’re choosing to release TIS-100 as an Early Access title for the same reason: to turn a great game into an amazing game.”

Like with Infinifactory, he says it’s polished and “would be perfectly acceptable to release in a traditional fashion.” What he adds over Early Access will largely depend on what people want to see in it. Here, have a trailer showing what’s in there now:

From this site

36 Comments

  1. Lord Custard Smingleigh says:

    Weirdly, the thing I dislike most about it so far is that there doesn’t seem to be a way to move around the registers by keyboard alone. Using a mouse seems… odd, given the theme.

    • gjghost says:

      Found it! Use Ctrl + arrows to move between the registers.
      F1 shows a quick reference for instructions which is nice too.

  2. Banks says:

    This is so awesome. They’ve even made a manual on pdf with the programming language so you have to figure out how to do anything by yourself.

    Zachtronics has balls.

  3. nebnebben says:

    This is amazing! I don’t know why I am so weirdly excited to program in assembly. Hopefully there’s a sequel which is entirely in machine code, the only inputs being 1 and 0

    • Premium User Badge

      Harlander says:

      Easy mode is flipping the front-panel switches on an Altair 8800. Hard mode is weaving core rope memory.

  4. iucounu says:

    Have you seen Foxcatcher? Utterly shit, isn’t it. Anyway, one of the shit things about Foxcatcher is that it wastes Vanessa Redgrave as Steve Carell’s disappointed, disapproving mum, in a thankless role which could have been filled by a frowny oil painting in the background. Every time Steve Carell’s character is really, disappointingly shit, his big rubber nose sloshing around hypnotically while he gives a depressingly bad motivational speech, you just cut to the oil painting.

    Anyhoo, Spacechem sits in my Steam Library, the tutorial levels unfinished, glowering at me, saying “you can’t program a compiler. You only have the vaguest notion of what a compiler is, you arts-ed git.” And I’m saying, no, no, I have A-level maths! And it’s saying “Yeah, but that’s only because you lucked out and bought the graphing calculator from Sharp, because WH Smiths were out of Texas ones, and it had an algebra built in. You are weak and pathetic and could never code or beat the tutorial levels, which, let’s face it, would be way easier than coding this game or making up the puzzles.” And it’s true, it’s all true.

    • Sir Buildbot Winslave says:

      I’m sure you can arrange the waldos and some molecules for a frowny screenshot. (Or, more realistically, get someone to arrange them). Anyhow, tack up an enlarged print and let it loom.
      Wonder how Vanessa Redgrave would fare as “The Waldos”?

    • phlebas says:

      I do program a compiler, and I didn’t get very far with Spacechem. The restrictions felt contrived, and I never really got past that to find the flow. Possibly I should give it another try sometime.

  5. mrwonko says:

    Weird… as a programmer I’d think I’m in the target audience, but I have no desire to do any more debugging; I already spend enough time finding errors in my own programs, where the reward is a working program.

    I can see the appeal though, fixing errors is quite satisfying.

    • Xerophyte says:

      Same. I’m sure I’d enjoy this if I didn’t spend 8 hours a day neck deep in C++. It’s not the lowest level language on the great totem pole of lambda but it’s near enough to assembly wrangling that I’d rather do something else in my leisure.

      It’s hard to find a programming-ish game that manages to be fun without also being work nowadays: Space Chem is great but it’s Turing completeness is more unfortunate than anything else…

      • Banks says:

        Infinifactory is a lot more playful and pleasing to the eye.

      • Nixitur says:

        I find Hack ‘N Slash to be very fun while also allowing you to go wild with programming. In fact, you can literally manipulate the Lua code that runs the game from inside the game which is nuts.
        For example, I once had a look inside the game’s directory, found some unused levels, went into the game and changed some room exits to take me to those unused levels instead of the intended destination. I also set the collision rectangle for some bars to 0 width and height, so I could walk right through them.

        But what I find especially clever about that game is that it introduces these concepts very gently, from just allowing you to change the fields for specific entities (set this specific turtle to be friendly and invulnerable) to being able to manipulate very specific algorithms to complete control over the game world.

      • toastengineer says:

        I always hate doing this ‘cos I feel like a spammer, but I made a game called INJECTION a while back that sounds like it’d fit your bill; you do the actual code-slinging in Python (which is easy to pick up if you’re already familiar with C/C++-descendant syntax) and the levels are designed more around working out a solution to the problem at hand and expressing it simply than rote coding. You’re *supposed* at least to never have to solve the same problem twice, is what I’m saying, and the focus is on the fun parts of programming rather than the rest. I’m still working on sanding off the pointy edges and adding new levels so if you find you don’t enjoy it maybe come back and take another look in a month or so (it automatically updates). It’s . Make sure you pay attention to the level names because there’s hints in some of them – the first level especially – that the level would be much harder without.

        There’s also Untrusted, which INJECTION is inspired by, though Untrusted is in javascript for one and quite a lot more difficult for another. I enjoyed it overall but it got pretty tedious at times.

    • LionsPhil says:

      Ditto. We built tools above this for a reason.

    • User100 says:

      I feel the same way, but I don’t think professional programmers are necessarily the target audience.
      It’s probably more aimed at “wannabe” programmers, i.e. CS students, or those considering studying CS.

      • HopeHubris says:

        As a CS student, if I wanted to fix bugs or write in assembly I’d do my assignments

    • KDR_11k says:

      It’s fun when you get to be so low level that you can start thinking in cycles and of course optimizing it. Most programming languages are far too high level to think about what happens in this or that tick. Among actual languages I’ve only seen that in Verilog and Total Annihilation’s BOS script (which runs in frame cycles but still has some of that tick counting appeal).

      Though I do worry that this might be too work-like, Zach Barth’s engineering games have a tendency to go too far into the realism angle compared to something like Manufactoria (which is ultimately about finite state engines but dresses it up in a fun way). There are a lot of overly work-like games on the Zachtronics website.

      Personally I find it the most fun to build something for dynamic inputs where I have to decide how complex I want the interface to be vs how complex or inefficient the wiring has to be. The SpaceChem parts I liked the most were the boss fights where you had buttons to wire into the machinery, similarly I liked the steampunk mech construction game on the Zachtronics page despite not really grasping the steam mechanics.

      I guess wiring up complicated mechanisms in Minecraft would be satisfying if there was a point to it…

      • John O says:

        It appears to be like low level access to a fictional computer, which is what makes this look fun to me. I have fond memories of manipulating pixels and making my own little sprite library in Assembly and C almost 20 years ago now. The twang of the CRT when entering mode 13h. While it was tricky and low level, it was pretty simple. I kind of miss that.

    • Hobbes says:

      I stared at this, then had cold sweat flashbacks to untangling the mess that was mutilated COBOL code that had been mangled and mutated by a series of hackjob programmers over several cycles resulting in a tangled horror that I was asked to steward during my contract at a company.

      So, so much nope. For people who want to learn, or have a fetish for this kind of thing. Go wild. But I am not going back there. I have the thousand yard stare, anyone who has had to deal with cruft-code from the COBOL era will know precisely what I mean. So much nope.

      • bonuswavepilot says:

        I hear ya, me old stuffed tiger. For me it was inheriting a vital business system which had a web front-end that wasn’t too bad, but where nearly every bit of functionality was performed by stored database procedures. Hundreds and hundreds of them, some several pages long, and all written in a rather *unique* sort of SQL, and generally undocumented.

        Ugh. That said – I have loved all of Zachtronics’ stuff, and I have only rarely had to work on anything this low-level, so I will jump on board…

    • Ungenious says:

      I dunno, as a programmer this has been the only indie game lately that sort of piques my interest.

      Though perhaps just as a curiosity as to see how they designed the system. Or perhaps because of a vague reminder of Mojang’s 0x10c.

    • phlebas says:

      My favourite bit of assembly programming/debugging is the printing it out and attacking it with highlighter pens, which I don’t think this supports. Still looks like it might be fun though!

    • rmsgrey says:

      The game isn’t about debugging – it’s about straight up coding (though, yeah, if you don’t quite get it right first time, there’s a strong element of debugging involved in fixing that).

      I got it yesterday and finished it in one 8-hour sitting – admittedly, I probably would have done better on the harder levels if I’d taken a break and come back to it fresh, but hey…

      It is very much a game about figuring out how to do things within the constraints of a very limited language and an unusual architecture – never mind higher level languages, I’d be happy with just a non-destructive CMP operation…

  6. jgf1123 says:

    Assembly language and microprocessors were a require course for my undergrad degree. I learned a lot, including why we program in high-level language instead of assembly.

    • KDR_11k says:

      Could be worse, one of his games has you manually draw wires and forming transistors on a chip.

  7. Matt_W says:

    Zach Barth is my lord and master, hallowed be his name.

  8. Tiax says:

    Zach, you’re probably the only game designer who could turn SUCH a screenshot into an instabuy for me…

  9. Robstafarian says:

    This is at least as likely to be hellish for me as heavenly, but I have decided to delay the discovery until a Linux version is released. I cannot get into programming/hacking/cracking games when I have just been looking an Windows. As I just wrote in a related Steam thread, I likely would feel more engaged with the game’s “environment” had just been looking at Enlightenment or Fluxbox.

  10. Premium User Badge

    gritz says:

    This looks like my nightmares.

  11. KDR_11k says:

    I don’t even HAVE a printer anymore!

  12. gbrading says:

    Question is how’s the music? SpaceChem has some of the best music ever, I’d hope for the same from every Zachtronics release.

    • bonuswavepilot says:

      I’ve only played a couple of minutes, and had a bit of a look on YT, but so far, it looks like there isn’t any music to speak of… It does have excellent old computer booting noises though, with a great ‘old-machine whir’ startup groan.

  13. ansionnach says:

    As a bonus challenge they could have a bit at the end where you have to crack the game…

  14. manny says:

    After watching the trailer, pretty sure this is a horror game.

  15. Gusni says:

    Signal multiplier брут форс.

    @0
    S:MOV RIGHT ACC
    JGZ 3
    MOV ACC DOWN
    JMP S
    3:SUB 1
    MOV 1 DOWN
    SAV
    MOV DOWN ACC
    SWP
    JGZ 3
    JMP 5
    4:MOV ACC DOWN
    5:SUB 1
    MOV ACC DOWN

    @1
    S:MOV UP ACC
    JGZ 1
    MOV ACC LEFT
    MOV RIGHT ACC
    JMP S
    1:SAV
    MOV RIGHT ACC
    JGZ 3
    MOV ACC LEFT
    JMP S
    3:SWP
    MOV ACC LEFT

    @2
    S:MOV UP ACC
    JGZ 1
    MOV ACC LEFT
    MOV DOWN ACC
    JMP S
    1:MOV ACC LEFT
    MOV ACC RIGHT
    4:MOV DOWN RIGHT
    MOV RIGHT ACC
    JLZ 3
    JGZ 2
    JMP S
    2:MOV ACC DOWN
    JMP 4
    3:JMP S

    @3
    S:MOV LEFT ACC
    SAV
    JGZ 1
    JMP S
    1:MOV LEFT ACC
    JGZ 3
    JLZ 4
    MOV ACC LEFT
    JMP S
    3:SWP
    SAV
    MOV ACC LEFT
    SAV
    JMP 1
    4:MOV ACC LEFT

    @4
    S:MOV LEFT ACC
    JGZ 1
    JLZ 2
    MOV ACC RIGHT
    JMP S
    1:MOV ACC RIGHT
    MOV 1 LEFT
    JMP S
    2:MOV ACC RIGHT

    @5
    S:MOV LEFT ACC
    JGZ 1
    JLZ 2
    MOV ACC UP
    MOV 0 DOWN
    JMP S
    1:MOV ACC UP
    MOV UP DOWN
    JMP S
    2:SAV
    MOV ACC UP
    MOV ACC DOWN

    @6

    @7
    S:MOV UP ACC
    JGZ 1
    JLZ 2
    MOV ACC DOWN
    JMP S
    1:MOV ACC RIGHT
    JMP S
    2:MOV ACC RIGHT
    MOV RIGHT DOWN

    @8
    S:MOV LEFT ACC
    JGZ 1
    JLZ 2
    1:MOV ACC UP
    SWP
    ADD UP
    SAV
    JMP S
    2:SWP
    MOV ACC LEFT
    SUB ACC
    SAV


    Sorokin Igor