[Shenzhen I/O] The lovechild of SpaceChem and TIS-100

ecco the dolphinecco the dolphin Registered User regular
edited October 2016 in Games and Technology


Congratulations employee! You've opened up the correct thread to read about Shenzhen I/O, a game from Zachtronics - the creators of SpaceChem.

Shenzhen I/O is a puzzle game where you are the newest engineer at Shenzhen Longteng Electronics Co., Ltd, tasked with the creation of the latest line of gadgets for the greater glory of the company.

This game takes inspiration from previous games in the series - especially TIS-100.

You are given an input, and are expected to wire up/program your components to generate a specific output:


Just like being a real engineer!

Come in and post your solutions, puzzles, and we'll shoot the breeze. Or something.

Penny Arcade Developers at PADev.net.
ecco the dolphin on


  • csuzwcsuzw Registered User regular
    I played this for a few days after release and then have been waiting for the limited edition manual to arrive. For some reason the package seems to be randomly travelling the world - it's been to Amsterdam, back to the US, Istanbul and currently Sydney - I live in the UK!

    ecco the dolphinDrake
  • ecco the dolphinecco the dolphin Registered User regular
    I was tempted to buy the limited edition, but I talked myself out of it by asking, "Do I really need a printed manual?"

    As it turns out, after actually playing the game - "Yes, things would have been easier with a printed manual" is the correct answer.

    I "make do" with putting the PDF on my second monitor, though. =)

    Penny Arcade Developers at PADev.net.
  • csuzwcsuzw Registered User regular
    That's how I've been doing it too. I mostly bought the limited edition to support Zach in the hope he makes more games like this. Not sure why I want more games like this though when I've only completed SpaceChem. Only about 50% through TIS-100 and Infinifactory.

  • 21stCentury21stCentury A lovely pixel artist and gamecrafter [They/Them]Registered User regular
    I hit a wall way earlier than expected with the "VR Helmet buzzer" and "Coordinates fuckery" levels.....

    One of them, i got a solution that's slighlty out-of-phase making it invalid, the other looks like magic to me.

  • ContentContextContentContext Registered User regular
    Just started this. Having a good time with it so far, but I've spent more time playing solitaire than anything else.

  • 21stCentury21stCentury A lovely pixel artist and gamecrafter [They/Them]Registered User regular
    The solitaire game is so rigged

  • ecco the dolphinecco the dolphin Registered User regular
    The solitaire game is so rigged

    I managed to get it on my first try!

    But then I put it away again so that I could keep saying that I had a 100% success rate.

    Penny Arcade Developers at PADev.net.
  • ContentContextContentContext Registered User regular
    The reason I played so much was in an effort to get a 3-streak. I'd get 1 or 2 wins, then make a simple mistake and get stuck. Ended up getting a 5-streak. Surprisingly strategic for solitaire.

    As far as the main game is concerned, I've only done the first 5 problems. Debating if I should buy some paper to print out the manual.

  • ecco the dolphinecco the dolphin Registered User regular
    Oh Zachtronics.

    This cuts too damned close to the bone.

    Serious spoiler (After COOL DAD!!! e-mail)

    Undocumented instructions!

    This is too close to my real job!

    Penny Arcade Developers at PADev.net.
  • ecco the dolphinecco the dolphin Registered User regular
    edited November 2016
    Let's Ruminate

    As a game, Shenzhen I/O takes cues from real embedded development, and simplifies things to make it manageable and fun for those who don't want to get into the nitty gritty of professional development. I thought it might be interesting for those who enjoy Shenzhen I/O but aren't in the industry to hear some of my real life experiences and thoughts in relation to the puzzles.

    As some of you might know, I am a professional embedded developer. I've worked with tiny 8-bit microcontrollers (like the ones that power the popular Arduino range of products), to your industry bog standard ARM running Linux (like the ones that power most smartphones). I'll be ruminating on random stuff that's related to puzzles in the game that I pick (or if there's a particular one that you're stuck on, post and I'll see what I can do).

    I will try and avoid giving direct solutions to the puzzles, since half the fun is solving the puzzle in the first place. If I do give a solution to prove a point, it'll be one that will be average at best.

    Security Camera (Fake)

    Ah, Blinkenlights - a key part of any feedback mechanism. I guarantee you that over half your embedded devices will have LEDs on them, if only to indicate the presence of power/activity.

    Here, we're tasked to blink LEDs in a certain pattern:


    What's interesting in this particular example is the second waveform.

    I believe the way that Shenzhen I/O encourages you to look at is is that it's a periodic waveform made up of two patterns of smaller periods:


    This isn't a bad way to look at it - if this was an actual product, blinking light patterns may actually be implemented as two separate patterns placed one after another.

    What's interesting is that you can also approach this as a composition of two patterns of equal periods, overlapped with one another:


    The key advantage of this perspective is that there are two patterns of equal periods. A lot of microcontrollers have timing units that can be configured to generate simple on/off PWM patterns like pattern 1 and 2 are, and once configured, can run without further CPU interaction. By reducing the slightly complicated output pattern into two simple patterns, we are now able to potentially use timer units, and because they are of equal periods, we can easily combine them without using any processing power.

    We can actually use hardware (resistors, circuit layout, output drives, and the innate nature of the LED) to implement the addition/subtraction necessary to combine two simple patterns into the output pattern that we want.

    Now why would we want to approach a problem like so? Because using these timer units only requires a one time initial configuration to set up the patterns that they need to generate. Once you set them up, they just run - even if you put the processing core of your microcontroller to sleep. For battery operated situations, this may be an advantage because the processing core of a microcontroller is typically a large percentage of the power consumption.

    Again, which particular solution you'd pick in practice would depend on your overall situation/product goal.

    ecco the dolphin on
    Penny Arcade Developers at PADev.net.
  • LeumasWhiteLeumasWhite New ZealandRegistered User regular
    I haven't got anything intelligent to say like that, just that I'm immensely proud of my solution for the precision food scale that fits all on one chip.

    ecco the dolphin
  • SpoitSpoit *twitch twitch* Registered User regular
    I'm just happy if I can get a Frankenstein solution that works :| You guys should add me so I can feel bad about my scores.

  • AntoshkaAntoshka Miauen Oil Change LazarusRegistered User regular
    I also fail horribly at this game, after being only somewhat terrible at TIS-100. I do plan on stealing a binder at work, as well as actually printing the PDF there tomorrow, because of the supplementary material.

  • ecco the dolphinecco the dolphin Registered User regular
    Let's Ruminate - Replacement Factory Module

    So the concept is simple: Given a signal, double it, and output the result:


    So in this particular case, we can rewrite the problem as:
    Output = 2 x Input

    Doubling a signal is not particularly difficult to implement.

    But what happens when we have a time consuming/complicated processing function that is hard to implement in a given processor?

    One common technique is to utilise lookup tables. People who are older (before the age of digital calculators, some time during the age of slide rules) may remember sine and logarithmic tables. A lookup table is the digital equivalent.

    Hilariously, what's old is new again - in some scenarios, embedded microcontrollers that require trigonometric or logarithmic operations will often have said lookup tables, because unlike your modern day desktop CPU, those microcontrollers do not have hardware trigonometric or logarithmic instructions.*

    You can actually use lookup tables to great effect in Shenzhen I/O. Some of the puzzles can require complex calculations which are hard to fit into the space allowed... or you can convert the possible inputs into rows of a lookup table, and then do a read from ROM to get the precalculated results.

    * Admittedly, there are also iterative methods to calculate sine/log, so brush up on your maths! =P

    Penny Arcade Developers at PADev.net.
  • KashaarKashaar Low OrbitRegistered User regular
    Whoo, @amnesiasoft is simply the best, she just gifted me this game! I only just got hooked on Infinifactory, and I loved TIS-100 - this is gonna be right up my alley :-) Steam friend me so we can leaderboards! http://steamcommunity.com/id/luggld

    Indie Dev Blog | Twitter | Steam
    Unreal Engine 4 Developers Community.

    I'm working on a cute little video game! Here's a link for you.
  • Raiden333Raiden333 Registered User regular
    Ok so, as someone who LOVED Spacechem but had to tap out before reaching the end, and having taken a couple classes in electrical engineering and assembly coding in college, but having no real basis other than those, would this be decently accessible? It's on my shortlist for the next sale.

  • amnesiasoftamnesiasoft Thick Creamy Furry Registered User regular
    I've got some pretty strong scores in the ones I've finished. Feel free to add me and try to beat me!

Sign In or Register to comment.