
Shenzhen I/O - yumaikas
http://www.zachtronics.com/shenzhen-io/
======
alcari
This was released about 26 hours ago.

Steam says I've played 15 hours.

Send hel--more microelectronics.

It's TIS-100, but with a native multiply! and unsynchronized broadcast! and
digit get/set!

Still supremely difficult.

~~~
db48x
That is exactly the correct ratio.

------
Paul_S
Why doesn't real embedded development work this way?! This is awesome and I
want it to be real.

This is the distilled greatest moments of embedded development because in
reality I spent today ~2 hours doing a code merge, ~2 hours of work logging
and other bureaucracy, ~1 hour of helping testers and ~2 hours of reading
schematics and hunting down hardware issues with an oscilloscope and
spectrograph.

~~~
jschwartzi
I am about to spend the next four hours repetitively power-cycling my device.

~~~
Paul_S
You poor soul, I hope you have a power button. I eventually bought a power
brick with a built-in switch.

~~~
jschwartzi
Yes. But actually the fix I'm testing didn't work, so I've spent the past 5
hours trying different things. I'm now on what I think is my final solution,
so here goes another four hours of fun.

There's no romance in embedded development.

------
Filligree
There was a bug in the game, which collaborated with a bug in NixOS to stop it
from working at all.

I mailed the backtrace to support. Three minutes later, he'd mailed me back
saying he'd release a patch shortly. The problem was simple, admittedly, but —
Nice going!

------
contingencies
Title of the post is wrong. Shenzhen (深圳) is a city in China spelt Shenzhen
not Shenzen. (Edit: Looks like someone just fixed it.) An interesting game
concept. Honestly though, even there virtually nobody codes ASM anymore... as
a hardware startup founder in China I just bought the game anyway. :)

(Edit: This game is really quite good. I never could be bothered with
assembly, but now I am entertained. I don't think it's super accessible to
people who haven't at least dabbled in assembly before though, but it's
certainly a good way to learn.)

~~~
xir78
Fwiw Shenzhen is the Silicon Valley of China, Tencent and Huwei etc

~~~
bogomipz
I thought Shenzhen was more hardware than software no?

~~~
colordrops
The biggest internet company in China, Tencent, is in Shenzhen.

~~~
contingencies
Also one of the most modern banks, China Merchant's Bank (招商银行 / CMBC) is
headquartered there.

~~~
optforfon
I need to open a bank account in China next month - out of curiosity, in what
way are they one of the most modern? :)

~~~
contingencies
Not one of the old guard from the socialist era, a generally good reputation /
better service, and first to have relatively OK internet banking. (ie. not
'manually reconfigure your windows certificates' like some others used to be)

------
danso
Feels like an auto-buy for me. Any developer that can make Assembly into a
fun, polished game (TIS-100) is probably going to hit this one out of the
park.

~~~
jsmthrowaway
Zachtronics became auto-buy with me around the time of SpaceChem. Check out
Infinifactory too for a different, yet familiar, feel.

Zach Barth is like the nerd whisperer. His games speak to me. Good guy, too:
I've corresponded with him over something as pedestrian as Steam keys and he
responded and solved it in mere minutes, if I recall.

~~~
qwertyuiop924
If you're a programmer, you owe it to yourself to check out Zach's games. They
very much focus on the same skills: if you like one, you'll like the other.

~~~
lfowles
They are all at amazingly different levels of abstraction too. This game is
probably my next buy. I have to admit I saw it yesterday and dismissed it as
"some amateur is making Yet Another Programming Game that's going to be
unbalanced and unfun" until I saw it was Zachtronics.

~~~
qwertyuiop924
Which is to say, "some expert making Yet Another Programming Game that's going
to be unbalanced and extremely fun"

Because let's face it, masochism is what programming is about.

~~~
lfowles
>Because let's face it, masochism is what programming is about.

True, but Zach is good at pulling out a simple representative subset for each
game. There's no arcane syntax for using registers vs IO in TIS-100 for
example. It's just another dest/source that works with MOV. Then he adds
something outlandish and gamey like adjacent core communication. I've played
some other attempts at the programming masochism genre and they struck me as
fiddly attempts to cram complexity into the instructions vs the problem.

~~~
qwertyuiop924
This is why I like ZT games more than other excercises in masochism like
BrainFuck. They're ultimately more about using a simple, well-understood set
of tools to solve difficult problems than they are about using a deliberately
obstructive set of tools. The fact that the tools are so easy to understand is
what draws me to it over real asm programming: nothing's worse than trying to
solve a puzzle when you have the sneaking suspicion that there's a few pieces
you're missing that would make your job easier if you were to only learn them.

Let the complexity emerge naturally. Because it will.

By the way, if you like ZT games, and haven't checked out the work of Eric
Wastl (The Synacor Challenge, and The Advent of Code) you should do so
immediately. It's not as fun now that everyone else has done it, but it's
still a blast.

~~~
thaumasiotes
> This is why I like ZT games more than other excercises in masochism like
> BrainFuck. They're ultimately more about using a simple, well-understood set
> of tools to solve difficult problems than they are about using a
> deliberately obstructive set of tools.

I tend to feel the opposite way -- the games are written to be deliberately
obstructive; that's why we call them "games". It gets frustrating pretty
quickly.

Spacechem is a series of exercises in writing Befunge. I don't see how that
could be characterized any other way than as "obstructive for the sake of
obstructive".

~~~
qwertyuiop924
But they don't _feel_ obstructive: allow me to put it like this:

With many games of this sort, or with INTERCAL and Befunge, you are asked to
build a device with broken, strange tools that don't work properly, and are
designed to be as annoying as possible.

The TIS instruction set, OTOH, is perfectly well designed and clear in how it
works, it's just very primitive. This is akin to BF, but BF is so low level
that it's far more irritating.

~~~
thaumasiotes
Spacechem is a ZT game just like TIS-100 is. All of your problems come from
the fact that each thread's cursor has to physically travel to the next
instruction in a very cramped area while avoiding other instructions that may
have been laid out in between. (Also, if full cursors crash into each other,
your program crashes.) With real tools, Spacechem programs would all be
trivial.

Feel does come into it, I guess, because I loved Manufactoria (also Befunge).
Manufactoria is a lot more computational than Spacechem; your goal there is to
manipulate a bitstring, not to traverse the environment for its own sake.

~~~
qwertyuiop924
But the tools are real! Just very primitive.

I guess what I'm saying is that it doesn't give you a toolkit with a bunch of
weird tools and impractical designs and bizzare edge cases (looking at you,
INTERCAL), it's purely, "right, here's your tools, you knoe how they work,
let's see you pull _this_ off."

Sure, it's less obviously linked to programming, but think about it: that sort
of issue comes up all the time.

And just because the goal is more overtly computational in nature doesn't mean
it's actually a more computational game: I wouldn't know, because it's 9
o'clock here on USEast, and I'm typing this on my phone, so I can't play the
game ATM.

~~~
thaumasiotes
> But the tools are real! Just very primitive.

If you're scheduling cargo shipments, it strikes me as both easier _and_ more
"primitive" to have one tool that can load, move, and unload cargo in response
to commands, and an entirely different programmable tool that issues the
commands.

~~~
qwertyuiop924
Is that how MFT works? Well then good.

~~~
thaumasiotes
In Manufactoria, your bitstring exists in an abstract space. Your program is
still written in Befunge, and so the execution cursor must physically travel
around a 2D grid, but instructions affecting the bitstring just happen --
there are no requirements for you to have positioned the various bits within
the grid.

So yes, the Befunge cursor in MFT is the command-issuing tool, and you could
view the bitstring as being acted on by a separate color-blob-manipulating
tool.

In Spacechem, the command "pick up object" will only work if the logic cursor,
which doubles as the robot, is currently over an object. In MFT, the command
"rotate right" acts on your ineffable bitstring no matter where the logic
cursor happens to be.

~~~
qwertyuiop924
That's probably a result of Spacechem's history: The Codex of Alchemical
Engineering, the game which would become Spacechem, and to an extent Spacechem
itself, focus on programming things to move physical objects.

On a related note, thank you, Zach, for only having two mechanisms, using more
visual programming, and adding a sync instruction. Until you play CAE, you
cannot possibly know how good you've got it.

------
veganjay
FYI - TIS-100 is on sale (50% off) on humble bundle:
[https://www.humblebundle.com/store/tis100](https://www.humblebundle.com/store/tis100)

I only heard about this game recently after I read the HN submission: "My Most
Important Project was a ByteCode Interpreter", which led to an article about
other simulators, which led to CoreWars, which led to an article about
programming games, which mentioned TIS-100 :)

~~~
qwertyuiop924
If you haven't bought TIS-100, you should do so right now. If you read HN, and
are a programmer, than you're probably the sort of person who would enjoy it.

------
qwertyuiop924
Let's see. A new game from Zachtronics, which is a clear spritiual successor
to TIS-100, one of my favorite games from the comapany, an actual printable
manual, and looks like it's really cool?

I hate to use memes in most cases, but...

SHUT UP AND TAKE MY MONEY!

~~~
TeMPOraL
Indeed. I saw "Shenzhen I/O" on HN, clicked because "ooh Shenzhen!" (been
there, place of dreams for hardware hobbyist!) wondering what weird startupy
thing it will be. Then saw Zachtronics. That's insta-buy for me, as it has
been since SpaceChem and the flash games on his website.

------
yzh
This really reminds me of this super fun flash game Manufactoria:
[http://pleasingfungus.com/Manufactoria/](http://pleasingfungus.com/Manufactoria/)
A Turing machine game.

~~~
ygra
A queue machine, actually. You don't get free movement on the tape.

------
Udo
I just happened to watch a Shenzhen I/O unboxing on Scott Manley's channel:
[https://www.youtube.com/watch?v=UpJU3wIf-v0](https://www.youtube.com/watch?v=UpJU3wIf-v0)

Looks very, very compelling :)

~~~
watmough
I'm watching that Scottish guy reviewing the data sheets, and I'm just
laughing. Absolutely hilarious.

------
k_sze
I wonder if it will make you debug and identify shady counterfeit components
from time to time, since it has a backstory of being based in Shenzhen.

(I'm Chinese and I love to make fun of my own people.)

~~~
ah-
Even better, you can build shady counterfeit circuits yourself that happen to
pass the test cases but don't really do what the customer requested.

------
stephenmm
Looks interesting but its not clear to me what it is... Anyone have more noob
friendly introduction?

~~~
HCIdivision17
You get to build and program circuits!

Think of it as a steppable debugger for a computer that has modular
components. Your goal is to build circuits out of chips that are little blocks
of code. Also there is a real pritable _manual_ (which was one of the most
celebrated bits from TIS-100).

To get an idea of where the game is going, it helps to have played some of the
earlier works, like SpaceChem and TIS-100.

[http://www.zachtronics.com/spacechem/](http://www.zachtronics.com/spacechem/)

[http://www.zachtronics.com/tis-100/](http://www.zachtronics.com/tis-100/)

EDIT: You know, looking at some of the other earlier work, he may have been
building up to this for a long time. I have n't played it, but Ruckingenur 2
sure looks like a spiritual precursor to this.

[http://www.zachtronics.com/ruckingenur-
ii/](http://www.zachtronics.com/ruckingenur-ii/)

~~~
qwertyuiop924
It looks like a spiritual sucessor to TIS-100, which Zach himself described
as, "kind of a throwback to the kinds of games I used to make, [...] Before I
started Zachtronics, before I worked with other people; just these really
rough, kind of abusive engineering games."

The source article
([http://www.gamasutra.com/view/news/244969/Things_we_create_t...](http://www.gamasutra.com/view/news/244969/Things_we_create_tell_people_who_we_are_Designing_Zachtronics_TIS100.php))
is worth reading.

All of Zach's games are worth playing, but if you're not familiar with his
games, this may not be the best introduction. You should probably start with
Infiniminer, which is the most inviting of his games, instead. If you're a fan
of Zachtronics' work, you're probably opening your wallet already.

Much like From Software, Zachtronics is always making variations on the same
game. However, they're the only ones making it, and they're really good at, so
they have a dedicated fanbase. Many of these are programmers, because the
skills and thought processes required are similar to those required in
programmers: if you like one, you'll likely like the other.

~~~
lfowles
There are a few related non-Zachtronics titles off the top of my head:

* Human Resource Machine

* Factorio

* Chromatic Supercomputer[0]

[0]:
[https://www.youtube.com/watch?v=rzfIqigXXh4](https://www.youtube.com/watch?v=rzfIqigXXh4)

~~~
qwertyuiop924
HRM doesn't have the devastating difficulty that makes the Zachtronics game
what it is. As for Factorio, that actually bares a stronger resembalance to
modded Minecraft, particularly the classic BC/IC2 combination, with a hint of
other tech mods here and there. And it doesn't have a lua-based robot mod
(ComputerCraft), or any of the other really cool mods, so I don't see the
point. It's not as puzzle-y as Zachtronics games, though.

~~~
khedoros1
> It's not as puzzle-y as Zachtronics games, though.

Factorio has layout and pipelining elements that remind me strongly of
Spacechem, but taken up in complexity and scale. I've played Minecraft, but
not very many mods, so I can't comment on that, but I can say that Factorio is
one of the first games in a while that I can sink hours per day into, treating
it as a puzzle game. To me, it's like Spacechem scaled up and with the
scenarios chained together seamlessly.

~~~
qwertyuiop924
Check out SethBling's let's play of FTB (feed the beast) modded minecraft. If
you know who Seth is, you'll know that he's great, and this is him playing
with a grab bag of minecraft mods. It's outdated, but it shows the appeal.

Mind, I haven't gotten my hands on factorio yet, so I'm judging by what I can
see, but thus far, it seems strictly inferior in capability and capacity for
mayhem and interesting mechanisms to minecraft modded.

~~~
khedoros1
I understand the appeal of Minecraft mods, and I've read about some of
them...I just haven't played any (at least, not any complex ones, and not in a
long time).

Let's Plays have never been interesting to me, though. Either they feel like a
waste of time because I'd rather be playing, or they feel like a waste of time
because the game doesn't interest me enough to want to play it.

For Factorio, I like that there's a progression. There's an end goal to the
game (build a rocket and get off the planet). Mechanisms have a purpose
(efficiency and multiplication of player effort).

In vanilla Minecraft, I built things like hidden bunkers that would open up
holes in the ground when you push a button, just because it was cool, and I
imagine I'd have a similar goal if given more tools; maybe I'd build a TNT
factory that auto-loads a cannon and blows up big parts of the map. In
Factorio, I'll build a huge train network as part of a pipelined production
process, with each train programmed for specific routes, conditions under
which it leaves specific stations, etc. The goal doesn't feel the same, and
it's nice that the game itself doesn't have the same feel as Minecraft.

I've also only played vanilla Factorio, but it has official support for mods,
so we'll see how flexible those end up being. I don't know much about the API
that's available to developers, so I can't speculate how much they'll
eventually be able to change the game.

~~~
qwertyuiop924
The Factorio system you just described is very much modded minecraft. In fact,
with the aid of Railcraft, you could literally build exactly that.

Ordinarily, I'd be with you on LPs, but this is SethBling. It's not so much an
LP as it is a "look at the cool stuff I built _this_ week."

------
makmanalp
Interesting and cool to see Shenzhen getting a shoutout in popular culture.

edit: popular meaning "relating to the populous", not "widely supported"

~~~
winkywooster
I wouldn't classify this as popular culture. It's a very niche game.

~~~
qwertyuiop924
Interesting and cool to see Shenzhen getting a shoutout in unpopular culture.

------
bogomipz
This is really interesting. Could someone who is familiar with this answer
whether this might be a decent resource to teach students assembly language?

~~~
RodgerTheGreat
Motivated pupils might be interested in Octo, a high-level assembler and IDE I
wrote which targets the CHIP-8 virtual machine:

[https://github.com/JohnEarnest/Octo](https://github.com/JohnEarnest/Octo)

The documentation includes tutorial materials aimed at complete novices:

[https://github.com/JohnEarnest/Octo/blob/gh-
pages/docs/Begin...](https://github.com/JohnEarnest/Octo/blob/gh-
pages/docs/BeginnersGuide.md)

~~~
qwertyuiop924
That sounds like a good idea. I've got to check out Octo some time...

~~~
RodgerTheGreat
No time like the present- this month we're hosting an Octo game jam!

[http://www.awfuljams.com/octojam-iii](http://www.awfuljams.com/octojam-iii)

~~~
qwertyuiop924
I've got a good bit of homework, and not a terrible amount of spare time on my
hands, but I'll see what I can do.

------
emeraldd
This is going to eat my weekend! Sheesh those time issues are tight. I'm about
90% certain that the only way I've made this stuff function is via carefully
crafted race conditions ...

~~~
p1mrx
Race conditions actually seem pretty rare in this game, because the CPUs run
infinitely fast, relative to the SLP clock.

If two CPUs get out of sync with each other and try to communicate via XBus,
the simulation just halts.

~~~
db48x
I've got a proper race condition in my current solution to the kill-switch
puzzle. The output from my timeout circuit that turns off the power if no
commands arrive in time is getting mixed in to the command stream in the wrong
order, causing it to shut off power unnecessarily. It's a wonderful puzzle.

------
sowbug
I almost missed that yes, it is available on Linux. When did the penguin icon
get replaced with "Steam Play" on the Steam site? Are all Steam Play games
Linux-compatible?

~~~
bumblebeard
Steam Play is their one license = all platforms thing.

I think the little Steam icon means SteamOS and therefore Linux.

~~~
qwertyuiop924
Yes, and yes.

~~~
TeMPOraL
And to answer the original question, it's been like this for quite long; I'd
say at least 3-4 years - that's how long I've been paying actual attention to
Steam, and I don't remember _ever_ seeing a different icon for Linux.

~~~
qwertyuiop924
And having been on steam since The Bad Old Days of Wine (not all that long
ago, really), I can say that we used to have a penguin, and then it got
replaced with the steam logo a few months after steamos and the steam machines
went on the market.

------
em3rgent0rdr
Device 2A27 mentions a "Decentralized Autonomous Corporation" mining
operation...that's quite a easteregg!
[https://en.wikipedia.org/wiki/Decentralized_autonomous_organ...](https://en.wikipedia.org/wiki/Decentralized_autonomous_organization)

------
green7ea
I really liked TS-100 but it refreshed the screen 60 times a second even when
nothing was changing which made my laptop really hot (my normal text editors
don't do that ;D). I think they used unity which probably limited their
optimization options. Having said that, I'm buying this game, Zach makes the
best geek games.

~~~
lfowles
Very few game engines throttle other than to meet monitor refresh rate. I
thought it was ridiculous to play visual novels that made my laptop heat up as
well.

------
0x54MUR41
It's cool.

I think the games that developed by Zachtronics are mainly puzzle game. I have
never played TIS-100 before. It's interesting game, though.

I have played other game from Zachtronics. It's called SpaceChem [1].
SpaceChem is a puzzle game which you play as a reactor engineer. The main task
is transform materials into chemical products. At first glance, it's very hard
to construct chemistry reactions. You know there is a pattern.

I really would recommend the games from Zachtronics.

[1]:
[http://www.zachtronics.com/spacechem/](http://www.zachtronics.com/spacechem/)

------
jordache
how realistic is this game's portrayal of circuit building?

~~~
nickff
Very unrealistic; they left out the part where you have to read a few dozen
different specification sheets and reference manuals, only to discover that
the parts aren't compatible.

In reality, circuits are built by making a schematic drawing, then laying out
the circuit; many different decisions have to be made, and each of those steps
takes days or weeks. In addition, you are probably prototyping important parts
of the circuit while doing the schematic or layout; these early tests may be
with physical hardware or in some simulation software. Spice simulators are
more like an IDE than a video game, but they are very limited.

~~~
HCIdivision17
I am really excited for future games though. If the pattern holds up, we may
just get dozens of badly written manuals and specs to decode!

... It's a bit silly that I'm excited at the prospect for properly terrible
docs, but it really would add some fun to it. Just imagine if the components
have undocumented features, and once in a while you get one that simply
doesn't work as advertised. Beat the game? Get certified!

~~~
Tarean
Actually, I think untranslated features are already lart of the game.

~~~
db48x
Yea, I laughed heartily when the boss sent me an (in-game) email saying that
features X, Y, and Z aren't actually undocumented; they're right there in the
Chinese version of the manual.

------
ah-
This needs a vim mode.

------
em3rgent0rdr
what's makes this game fun is the quality of the simulation environment and
the instant feedback with verification. I wish I had tools like this back in
computer engineering lab.

------
imranq
As a side note, I've been working through all the MAKE electronics books
posted here a little while ago. Will this game help me in designing real life
circuits?

Still impressive, didn't know you could make assembly programming into a game!

~~~
qwertyuiop924
Probably not. And Zach already made asm into a game with TIS-100, which you
should totally play.

------
amelius
Is this an educational game?

~~~
maket
I haven't played it yet, but I've played several of Zachtronics games in the
past.

They generally don't teach you technologies that exist in the real world.
Real-world concepts are usually just used as a way to make the mechanics of
the game more accessible (Spacechem and KOHCTPYKTOP are good examples of this)

However, their games are very programming-centric, having programming skills
makes them much more accessible. Their game TIS-100 is literally just assembly
programming on a made-up architecture. I wouldn't call them "educational
games", but they're certainly very mentally involved.

\---

Spacechem:
[http://www.zachtronics.com/spacechem/](http://www.zachtronics.com/spacechem/)

KOHCTPYKTOP: [http://www.zachtronics.com/kohctpyktop-engineer-of-the-
peopl...](http://www.zachtronics.com/kohctpyktop-engineer-of-the-people/)

TIS-100:
[http://www.zachtronics.com/tis-100/](http://www.zachtronics.com/tis-100/)

~~~
drivers99
KOHCTPYKTOP seemed like building things with transistors should work about the
same way, but I've only built things with logic gates (and that, only a
little). Could you not actually build circuits the way you do in the game?
I've actually been thinking of buying a few thousands of transistors (2N3904)
(and resistors as needed, which aren't used in the game) to see how far I
could get building a (tiny) computer.

~~~
abecedarius
It is close to real CMOS circuits, but idealized -- I don't remember all the
idealizations (and I'm really not an expert), but e.g. it'd accept a solution
that depends on a race condition working out deterministically.

------
shostack
Can someone comment on how playable this would be for someone with no
background in embedded systems or electronics?

------
guiomie
This looks fun. Too bad its not on ps4, and I highly doubt steam works on my
chromebook c300.

------
niedzielski
Is this open source or are there any notable similar simulations with source
available?

~~~
niedzielski
This seems like a reasonable and constructive question and not one I was
expecting to be downvoted. Care to leave a response with your vote?

~~~
MBCook
Questions like this aren't uncommon, but a lot of people find it very
frustrating.

A fantastic small developer makes what looks like another amazing game, and as
soon as it's out people are looking for open-source clones so they don't have
to pay.

On a form full of professional developers, who usually get paid for making
software.

That may not be what was meant, but the it has to be open source or I don't
care posts are not constructive. Real developers like the guys who made Threes
get screwed over by this kind of stuff.

Can't we just appreciate a cool game someone made?

~~~
ue_
>people are looking for open-source clones so they don't have to pay.

I can't speak for others, but you are wrong on this point when it comes to why
I want free software (FLOSS) games or any software. I want it so that I can
see what's going on underneath and to play with it myself. I would be happy to
pay to get a copy of the source code (under a free software license).

This game ought to be quite intriguing internally for any programmer who's
read about it. It's full of stuff that's simply not common in mainstream
games.

Please don't try to say that the desire for FLOSS is just about getting free
stuff. It's not, and it does a disservice to people who would be happy to pay
for a FLOSS version, or just programmers wishing to learn more and build upon
the work of others.

And yes, it can be appreciated. But there's no harm in saying I'd appreciate
it a lot more if it came with the freedom I would like.

~~~
MBCook
I can definitely understand wanting to see the guts, sadly I have no faith
that's what the vast majority of people would do with it. I've met far too
many people who just want free stuff and seem almost offended they have to pay
for things. Those who were like that and ask for FOSS I think were just using
it as a cover for their greed.

That's not a real FOSS believer. I know that.

I would completely understand releasing the source to a game after a few years
when it's not making as much money. I don't see why any developer would do it
as soon as the game comes out (ignoring the fact that this game is in early
release and not finished).

------
em3rgent0rdr
I love Zachtronics games!

------
itgoon
Saw this, bought it...and now it's past midnight.

------
maplechori
Great game, already bought it.

------
jbverschoor
Suprt cool

