

TIS-100 Tessellated Intelligence System - holmak
http://www.zachtronics.com/tis-100/

======
ShaneWilton
Zachtronics Industries makes incredible engineering games. I haven't tried
this one (though plan to tonight), but if this looks interesting to you,
definitely check out some of his older work.

Ruckingenur II in particular is interesting. It places you in the role of a
hardware reverse engineer, tasked with tinkering with circuits for anything
ranging from basic electronic locks, to the copy protection on the Gamecube,
with the goal of bypassing different security mechanisms. It's a really novel
game.

You can play it for free here: [http://www.zachtronics.com/ruckingenur-
ii/](http://www.zachtronics.com/ruckingenur-ii/)

~~~
fpgaminer
I also have to suggest another one of their early, free games, KOHCTPYKTOP,
which focuses on building integrated circuits:
[http://www.zachtronics.com/kohctpyktop-engineer-of-the-
peopl...](http://www.zachtronics.com/kohctpyktop-engineer-of-the-people/)

~~~
nitrogen
Would that read as "constructor" in latin characters?

------
fpgaminer
Looks cool, and I've enjoyed Zachtronics games before. I wish the demo video
was longer and gave a better idea of the gameplay, though. I might throw the
$7 at it anyway to find out.

I've had a vague desire for a game like this lately. I wasn't really around
for the early computing era (my first computer was a 486), but I've played
with the old machines and learned a lot of the history. There's a special kind
of fun to be hand with them, and a sort of peace in working with their
simplicity. They offer an oasis from the ever increasing complexity around us.
Like the peace one gets from working on a garden; it's still work, but the
work is simple, rewarding, and just for your own benefit.

My desire went so far as to build and tinker with my own game. It was to be
like Elite, but you pilot your spaceship using only a Commodore 64 esque
computer. You had to program everything for it. There were no flight controls
or anything, instead you wrote programs to control the thrusters how you
wanted, control weapons, drive the radar and plot the detected objects on the
screen, etc. If you wanted keyboard controls of the thrusters, you made a
program for that. And I had plans to add inter-ship modems so you could build
scout ships with automated scouting programs that send back their data.

It was HTML5+JS based, and I got it to the point of having a working asm.js
6502 simulator, various peripheral hardware, MS BASIC, thrusters, radar, and a
solar system to explore. But I got busy and had to stop. One major roadblock
was that BASIC was terrible at all the register banging required to write most
of the needed programs. So to make it "fun" I would have had to bring up a
respectable DOS-like OS, a C compiler, and a code editor.

I really loved the idea though. It had all the fun, cool, retro elements of
working on a C64, combined with the fantasy-lore of space adventures. My head
swam with neat ideas like adding radiation dangers which could begin flipping
RAM bits; interacting with space stations using your on-board modem so that
all the Elite-like markets were operated like old BBS software; wormholes that
gave you access to alien systems with powerful but undocumented peripherals;
etc.

~~~
teraflop
> I wish the demo video was longer and gave a better idea of the gameplay,
> though. I might throw the $7 at it anyway to find out.

Just spent about an hour and a half playing with it. What isn't obvious from
the video is that the resources at each compute node are _very_ constrained.
You only get one accumulator register, and one additional "backup" register
that isn't directly addressable. Furthermore, the size of each node's program
is limited to 15 instructions (and _comments count toward that limit_ , for
extra evilness).

The result is that the learning curve is pretty steep. For the first few
levels, the problems are simple enough that you have a lot of flexibility in
how to implement a solution. But once the problems get more complicated, you
have to start getting creative in how you split the work across processors.
It's actually more comparable to designing a pipelined CPU than it is to
assembly language, IMO.

I just spent over half an hour coming up with a solution for level 7. It's a
pattern-matching problem that superficially looks very simple: on a real
computer, you could easily solve it with a finite state machine. But here,
that program is considerably too big to fit into a single node -- and state
machines aren't known for being easy to parallelize. I finally solved it by
(rot13'd for spoilers) znxvat guerr pbcvrf bs gur vachg fgernz, srrqvat rnpu
pbcl gb n abqr gung frnepurq sbe bar bs gur guerr cnggrea punenpgref, gura
pbzovavat gur erfhygf jvgu gjb vafgnaprf bs na "naq" tngr gung unf n qrynl ba
bar bs vgf vachgf. I ended up needing 297 cycles, which is about in the middle
of the histogram; clearly there are more efficient approaches, but I haven't
figured them out yet.

~~~
fpgaminer
> It's actually more comparable to designing a pipelined CPU than it is to
> assembly language, IMO.

In a way, yeah. But the 6502 was also quite constrained, and early systems
further constrained it (e.g. the Atari 2600 only have 128 bytes of RAM). I
think this game does a good job of emulating the amount of creative thinking
programmers had to have to deal with the limits of those early machines. And
the game does so while keeping things simple so you aren't spending your
evening glazing over a 300 page 6502 programmer's manual.

Regarding level 7, definitely a tough one! I ended up making what looks like
the first solution with 4 nodes and 22 instructions. It's possible to cram the
logic into one node, with some misc. decoding in a second and the other two as
just transports.

Back to your point, this isn't exactly like working with older, consumer
computers like the Apple II, mostly because of the parallelism. I think that's
because of Zachtronics' other games which involve a lot of data-driven,
parallel engineering. Still fun though; well worth the $7.

------
FrankenPC
I remember when I first installed Omega for the PC.
[http://en.wikipedia.org/wiki/Omega_%28video_game%29](http://en.wikipedia.org/wiki/Omega_%28video_game%29)
I thought it was the greatest game ever made at the time. However, it was too
easy to optimize and win. If I ever decided to create a game, I was definitely
going to do something along the lines of a programmable battle simulator. This
is a long winded way to say that I'm VERY glad to see Zachtronics making games
which assume there is a market for gamers who enjoy programming. I hope to see
more like this in the future. Side note: Just purchased this on Steam. Looking
forward to cracking it open.

~~~
karmicthreat
Omega on the C128 was my first taste of programming after basic. Hacker/Hacker
II were also some of the most fun I've had.

~~~
omegafail
I tried the game but the game doesn't want to authorize my code even with the
simplest example: _Turn Tank Left 3_. Do you have an example that works?

~~~
karmicthreat
Its been over 20 years. You might need a start label before your commands. But
I really don't remember that much about the language, at least not without
setting up a copy.

------
karmicthreat
I'm glad the time between Zachtronic games is shorter now.

------
blake8086
Wow, Steam really made this painful. I bought the game, only to find out it
doesn't run on my platform. No refunds! Beware, I guess.

~~~
jeeva
If you've not run it at all, contacting Steam support (yes, painful) has
apparently got a fairly good chance of getting you refunded. (Also you only
get one refund / one refund per $lengthy_period)

------
amelius
This sounds more like work than a game.

------
tempodox
Too bad it's Windoze only.

~~~
paste0x78
Run it in wine, thats what I'm doing till the official OSX release comes.

~~~
tempodox
If you're saying it works with Wine (which OS X version?), I'll do that.
Unfortunately, only a fraction of games work with the combination of [Wine, OS
X version] that happens to be my current system. Games that work with Wine in
10.6 won't in 10.10.

