< Back

TIS-100

Web clone of the Zachtronics TIS-100 computer game.

TIS-100 is a brilliant game invented by Zachtronics, who is responsible for a plurality of my favorite games. TIS-100 - in contrast to other Zachtronics titles that I loved - seemed uniquely suited to port into a web app. It doesn't require any extravagant graphics or animations and instead leans into the lust that many programmers have for low-level algorithmic design and terminal-style visuals.

I strongly recommend trying a Zachtronics game if you enjoy programming or solving puzzles - cannot recommend them enough. I have yet to find a company that makes games that feel so suited for programmer enjoyment. They also created Infiniminer - widely accepted as the forerunner/inspiration for the hugely popular game Minecraft! Here are some other Zachtronics recommendations:

Try this game If you like Infinifactory Minecraft or Factorio SpaceChem Optimization Shenzen I/O Hardware and signal processing EXAPUNKS Hacking and Recursion TIS-100 Assembly and Distributed Computing

Current State

I have the core functionality and the first 7 levels of the game done except for the ANY/LAST ports, which will be the next thing implemented. These ports can be used respectively in place of a directional port to signify any port that is waiting for i/o from the current node, and the last port that the current node read from or wrote to. After implementing those I'll be moving on to parity testing more deeply the visualization and behavior of the system, followed by continuation into the Stack node levels.

Interesting Features

  • The official game doesn't explain much to you explicitly - it requires you to read a manual! It does however do a fantastic job of teaching you by example - giving you an isolated problem for which you'll "discover" a design pattern that will be required in later levels.
  • The official version of the game allows players to create their own levels using the Lua programming language. The format for a puzzle is outlined on this fan site - an eventual goal of this project is support the same functionality.
  • As with other Zachtronics games you are allowed to create the most obscenely expensive and inefficient solutions possible as long as they meet the constraints/goals. The flipside of this is that you also get to compare your solutions with the solutions of the community at large via histogram (shown below)tis-100 histogram

Things I Learned

  • Working with React Hooks
  • Syntax Highlighting in Textboxes

Screenshot

tis-100 screenshot