Pull to refresh

SHENZHEN I/O — новый симулятор программирования микроконтроллеров

Reading time 6 min
Views 87K


Как многие из нас хотели быть инженерами-схемотехниками, но не стали ими? Я не говорю о программистах, строителях и прочих специальностях. Многие мечтали паять платы, ходили в радиокружки и курочили домашнюю аппаратуру (получая после этого ремня от отца, само собой) в попытке понять, как она работает? Если не каждый первый, то уверен, многие.

Разработка электроники и даже пайка на коленке имеет достаточно высокий порог вхождения, начиная от прямых рук и заканчивая знанием физики, схемотехники, теории электрических цепей и расходными материалами.

В этой публикации я предлагаю вам познакомиться с новой игрой, вышедшей в ранний доступ в Steam 6 октября этого года. Встречайте, инди-симулятор создания цепей и простых устройств — SHENZHEN I/O.

В Steam игра находится в разделе «симуляторы» и идет с пометками «инди», «логические игры» и «ранний доступ», и все они являются абсолютной правдой.

Статистика


Но прежде чем мы перейдем к самой игре, давайте посмотрим на цифры от SteamDB.

В самом Steam игра имеет 94.03% положительных отзывов (209 «за» и 5 «против», и есть подозрение, что последние голоса связаны с крашами игры или с невозможностью запуска сырого проекта).

В игре почти ничего нет, но это не мешает ей требовать 4 Gb оперативной памяти на борту:



При установке через Steam все выглядит достаточно просто. Сервис сам проверяет актуальность .NET (необходим версии 4.5), DirectX и прочих компонентов.

Также разработчик не обделил линуксоидов и владельцев маков, эти платформы тоже поддерживаются со схожими системными требованиями. Для Linux это SteamOS или Ubuntu 16.04+, для macOS — версия 10.9+. Требования к процессору и оперативной памяти те же, что и для Windows.

Каких-либо проблем с игрой (вылетов, крашей на старте) на Windows 7 x64 пока замечено не было.

По информации SteamSpy игру купило всего 8913 (±2348) человек, однако, среднесуточный онлайн уже составляет 872 игрока.



Намного интереснее статистика проведенного в игре времени. В среднем, в игре за последние две недели (т.е. с момента релиза) провели 4,9 часа (по медиане 4,5), что для логической инди-игры отличный показатель. Для сравнения, у вышедшей недавно игры Mafia III данная цифра составляет 7,3 часа (по медиане 5,6).

У проекта есть собственный раздел на Reddit, где происходит общение между игроками. Рейтинги обсуждений далеко невысоки (10-15 баллов), но там уже прошедшие существующие уровни игры люди предлагают свои решения на всеобщий суд. Русскоязычное коммьюнити стало стихийно собираться в telegram (инвайт-ссылка на канал) с подачи некоторых пользователей твиттера.

Это хорошая возможность «подсмотреть» что-нибудь для новичка или просто влиться в небольшой коллектив игроков, ведь онлайн в будние дни не доходит даже до тысячи.

Там же, на Reddit, в закрепленной теме организована обратная связь с разработчиками. Там можно предложить новые уровни, функции, ачивки и прочий игровой контент. В отличие от корневого раздела с 2-3 комментариями на топик, тут обсуждение идет более активно, ведь некоторые «матерые» техники игру уже прошли.

А теперь перейдем непосредственно к SHENZHEN I/O.

Сама игра


Главное меню игры может служить образцом минимализма:



Весь базовый интерфейс меню построен по принципу получения квестов посредством «электронной почты».

Игра начинается с принятия игрока на работу:



Хардкор начинается, кстати, в самом начале. Вместе с приветственным письмом и щебетом виртуальных коллег появляется тимлид (по фото выглядит слегка бесновато) с двумя сакральными фразами:

  1. Fresh meat...
  2. Иди курить маны.


Да. Просто да.

Разработчик от лица Карла на полном серьезе предлагает предварительно сходить ознакомиться с документацией по игре.



Мануалы, кстати, это отдельная история. При нажатии на соответствующую кнопку «Datasheets» в меню игры, открывается PDF-документ на 41 страницу в ассоциированной в системе PDF-читалке (в случае автора — в Google Chrome).


Вы уже чувствуете себя рабом на китайском производстве?

Если не чувствуете, то для обеспечения глубины погружения в «офисные будни» разработчик добавил «Солитер».



И, конечно же, карты подписаны по-китайски. Мы же в Китае работаем, так? Однако, приступим к самой игре.

Игровой процесс строится по принципу получения концепт-документации по e-mail и разработке необходимого устройства. Сперва от нас требуют спроектировать камеру.



Приступал автор к первому заданию как истинный подготовленный джедай: ничего не зная о схемотехнике или, отдаленно, о программировании микроконтроллеров и, конечно же, не читая мануал:



Единственное, на скриншоте уже установлен модуль и проложена «дорожка» до необходимого выхода. Верхний модуль был полностью сформирован и трогать его не нужно, он рабочий. На первом уровне игры задача сводится к написанию простого кода контроллера, который обеспечит корректное «прохождение сигнала по заданному пути»:



Так выглядит график симуляции сети без кода, просто прямой сигнал. Нам необходимо его «погнуть» в нужную нам сторону.

Базовый код, который идет «в комплекте» с первым модулем, выглядит следующим образом:

mov 0 p0
slp 6
mov 100 p0
slp 6
  
# why is this
# so hard? :(

Орфография сохранена

Методом тыка и аналогий (джедаи же маны не читают, помните?) выводим, что:

  • mov N — движение сигнала по уровню N, XY — вход;
  • slp — дистанция прохождения сигнала.

Исходя из этих нехитрых умозаключений на уровне интуиции получаем код вида:

mov 0 p0
  slp 4
  mov 100 p0
  slp 2
  mov 0 p0
  slp 1
  mov 100 p0
  slp 1
  mov 0 p0

Напоминаю, уровень автора в данной теме соответствует уровню в ней вашего кота.

Так вот, этот нехитрый код описывает замкнутый цикл прохождения сигнала и «выравнивает» его, как нам было нужно:



Весело? Кажется, уже да.

Второй уровень повергает в уныние. Там уже не поможет логика, на которую мы опирались в первом задании, придется лезть в мануалы. Кстати говоря, если бы я мог их распечатать, я бы их распечатал.

Тут мы сталкиваемся с реалиями синтаксиса игрового языка программирования контроллеров. Но так как желание созидать сильнее, то есть только сожаление, что мануал не на русском или не достаточно подробный (желательно, конечно с картинками, но у нас же все серьезно тут, да?).

От нас требуется мультиплексировать сигнал в два раза. Окей. Ищем необходимые нам функции, пишем простенький код вида:

mov p0 acc
  mul 2
  mov acc p1
  slp 1
#ITS ALIVE

И наслаждаемся очередной маленькой игровой победой:



Я не буду говорить, сколько мне, как полному профану, потребовалось времени, чтобы понять, как это сделать, но теперь цифра среднего онлайна в 4,5 часа уже не выглядит такой уж и большой.

Дальнейшие свои утехи с SHENZHEN I/O (и мануалом к игре) я оставлю за кадром.

В сухом остатке


Если отбросить в сторону детский восторг (хотя это и очень сложно), то игра получилась увлекательной, по крайней мере для тех, кто не боится трудностей. Да, там не используется VHDL, поле программирования контроллера весьма ограничено по строкам, но для людей увлеченных этот «симулятор работы» подойдет как нельзя кстати.

Также его можно использовать для обучения детей в плане понимания алгоритмов и логики, а по отзывам игроков в Steam от SHENZHEN I/O до программирования и мигания лампочкой «ардуиной» — один шаг. Если затянет, конечно.

Начинающему игроку будет катастрофически не хватать русскоязычного мануала, но с этим может помочь гугл и более опытные товарищи по игре, которые делятся решениями и обсуждают их.

Механика игры не ограничена написанием трех строчек кода. В дальнейшем можно соревноваться с другими пользователями в уровне оптимизации, энергопотребления и стоимости конечного спроектированного в игре продукта, т.е. самостоятельно ставить перед собой челленджи. Использовал четыре контроллера, когда можно ограничиться тремя? Добро пожаловать к верстаку!

Также проект находится в стадии раннего доступа и разработчик прямо заявляет, что готов улучшать и развивать игру, добавлять функции и новые задачи, равно как и способы их решения по требованию пользователей. Цена, по его уверению, после выхода в релиз останется прежней.

Фактически, SHENZHEN I/O заслуженно сравнивают с более хардкорным проектом 2015 года под названием TIS-100, созданный тем же разработчиком, который порадовал нас SHENZHEN I/O. В TIS-100 порог вхождения еще выше, что подтверждают комментарии Steam:





Понятно, что создатель игры нацелился на более широкую, если это можно так назвать, аудиторию. Во всяком случае, программирование контроллеров на коленке пугает не так, как превью-скриншоты TIS-100:


TIS-100

Игра SHENZHEN I/O требует выдержки и терпения. С первых же минут она наотмашь бьет игрока «бревном жестокой реальности» по лицу, но не настолько сильно, чтобы не попытаться в нее вникнуть. Легко не будет. Не будет красочных кат-сцен, возможности играть лежа на диване или «ограблять корованы». Но будет возможность потренировать свой мозг и попробовать что-то новое.

Стоит ли SHENZHEN I/O своих денег? Однозначного ответа на этот вопрос нет. Но если у вас есть тяга к созиданию, преодолению трудностей и решению задач в свое удовольствие — да, стоит.
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+46
Comments 34
Comments Comments 34

Articles