Shenzhen I/O is a programming game, released in November 2016. You take on the role of an electronics engineer, designing curcuits and coding them.
Of course, there is a lot more to the game. There is a story in the game, although I have to admit that I never really took the time to learn the story. I just wanted to work on the programming challenges because that's what the game is all about. You don't do high level programming in this game, it is strictly low level. You build devices with components and design the curcuits which carry the data. The you write code for the components which tell them how to handle the data.
The programming language is a form of simplified assembly code. You can move values to input/output pins, or store them in the data register of the microcontroller. You can perform simple arithmetic, but only on data stored in the register. So if you need to change input data, then you would first need to move the input data into the register. Then perform the required modification, and then move the data to an output pin. You also have the ability to test the values on input pins, or register values. Comparing values and then executing code based on the result. The code in a microcontroller will loop back and repeat once it reaches the end of the code, so it is important to keep in mind how it will execute over time.
There are a lot of different components available, although they will be gradually available through the course of the game. The common microcontroller is probably the one you will be using the most, it is the component where you write all code. There is a larger microcontroller available, which can hold more lines of code, and has two data registers. Among the other components available you can find random-access memory, read-only memory, and some logic gates. All components are obviously not needed for all the programming challenges, but it can sometimes be a fun challenge to see how you can solve one problem differently by using different parts.
In case it is not clear by now, let me just state that this game has a bit of a learning curve. But that is not really a big problem as the game comes with an excellent manual. In fact, you should play the game with the manual open at all times. It has a reference for the programming language, which is crucial while you are playing. Do note that there are two instructions that don't appear in the manual, but they will be revealed through the emails you receive within the game. So be sure to read those emails. The game manual also has detailed information on all the components and how to use them, so be sure to read through the manual. Even if you don't read up on all components at once, you should at least know about them and their basic use case, then you will more easily recognize when they would be helpful in a situation. There are also some examples in the manual, explaining the use of components and the programming language through the examples. The manual is not just something useful for playing this game, it is a requirement. There is information in the manual that you will need in order to finish certain programming challenges.
The challenges become increasingly difficult, sometimes making you really think about the problem before you can sit down and work out a solution. I find the game to be extremely therapeutic to play as it teaches you to really consider the flow of logic, and the structured movement of data between your components. It is a tremendously rewarding experience each time you solve a programming challenge. Even more so, I really enjoy revisiting solved challenges to see if I can improve upon my solution.
I would not recommend this game to everyone, as I know that some people just would not have the patience for this kind of game. But if you enjoy solving puzzles with logic, or you simply enjoy programming, you will most likely find this game immensely enjoyable. Progressing through the game comes with a strong feeling of satisfaction and accomplishment. I personally love this game and have been playing it on and off since release.