Shenzhen IO 是款很小众的游戏,某国同学发现自己的国家很难去制造什么东西,所以来到了深圳加入了一家电子公司 “深圳龙腾科技有限公司”。游戏中你将扮演这位同学,使用公司的各种芯片,设计电路板,烧入汇编语言来实现各种需求。

游戏的特色就是高仿真,整个游戏基本上就是一个 CAD 系统,只要按规范生成出那些芯片就真能生成出各种板子了,接上机床就可以开始量产了。同时也是不错的熟悉单片机设计,汇编语言的培训工具。

另外选取的需求也挺有趣,都是真实、有用的。比如植物自动浇水,控制三明治机器等等。

而且这是款可以光明正大玩的游戏,因为看起来你真的就是在工作。

游戏的启动到进入主界面模拟的是一个专用的操作系统,“概念 OS”。

Concept OS
Concept OS

其中 conceptMAIL 是收到各种需求(也就是关卡)的地方。

conceptMAIL
conceptMAIL

通过邮件可以进入到 CAD Pad 也就是游戏关卡的主界面。

CAD Pad
CAD Pad

右边可以选择各种芯片,左边主要区域是一块电路板,可以把芯片放上去,然后通过电路连接引脚。下方是具体的需求说明以及验证用的测试用例。同时提供了断点,单步执行等调试工具。

验证用例
验证用例

有部分芯片可以通过输入汇编代码来控制逻辑。另外还有像液晶数字显示屏,内存等等。其中最复杂的是一块带触摸功能的显示屏。

游戏中没什么引导,需要自己去查看产品说明书,我上传了份可以感受下。里面包括汇编语言文档,各种芯片的规范,以及某些关卡中需要用的专业相关的文档。

芯片引脚分为两类,模拟和数字。模拟 (simple input/output) 引脚可以设置 0 ~ 100 的电平,并且始终维持上一次设置的值。数字 (xbus) 引脚则是能够读写 -999 ~ 999 范围内的值。模拟引脚的读写不需要同步,而数字引脚需要同步,输出引脚会等待被输入引脚读取后才能继续执行下面的指令,而输入引脚同样需要等待输出引脚产生值。

游戏的最大的挑战在于在有限的资源内完成需求。限制体现在电路板的空间,决定了只能使用有限数量的芯片。而可编程芯片内存非常小,小的只能放 9 行语句,大的只能放 14 行。小的只有 1 个寄存器,大的只有 2 个寄存器。而且完成关卡后还会显示所提交的方案在所有玩家中的排名位置,包括建造费用,使用指令行数,功耗三个维度。减小建造费用需要使用更少的芯片,优先使用便宜的芯片,减少指令行数需要使用最小的代码,而功耗则需要优化代码和结构。完成关卡后各种优化,想方设法提高成绩就是游戏乐趣之一。

排名直方图
排名直方图

另一个挑战就是数字引脚的同步了,需要精心设计输入输出芯片的代码时序保存不会因为 IO 阻塞而无法执行命令。

IO 阻塞导致失败
IO 阻塞导致失败

游戏的关卡是可以自己设计的,按照要求编写一个 Lua 文件就可以了。设计的关卡需要自己能完成才可以上传到 Steam,通过 Steam 也可以下载玩别的玩家上传的关卡。