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



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

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

    В этой публикации я предлагаю вам познакомиться с новой игрой, вышедшей в ранний доступ в 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 своих денег? Однозначного ответа на этот вопрос нет. Но если у вас есть тяга к созиданию, преодолению трудностей и решению задач в свое удовольствие — да, стоит.
    Поддержать автора
    Поделиться публикацией

    Комментарии 32

      +1
      Прошедший эту игру может основать свою фирму производства смартфонов.
        +3
        Это, скорее, к TIS-100.
          0
          Ну только не просто прошедший, а оптимизировавший все задачи на минимум циклов.
        +21
        А потом окажется, что задания начиная с N-го уровня игры на самом деле присылают китайцы(для реальных железок) и игроки по сути работают без оплаты.
          +6
          Это было бы очень круто. Это как биткоин-майнер в кряке игры, только ещё лучше.
            +2
            Точнее майнеры бывают в репаках, релиз-группы таким не занимаются (по крайней мере известные), поэтому надёжнее всего качать релизы от них.
              +3
              Хорошая попытка участник релиз группы, но нет.
              –2
              Это как в Игре сами-знаете-кого (если не знаете, то это будет спойлер).
              +1
              А это идея для MMM, ой MMO
                0
                Игроки еще и сами заплатили (при покупке игры же)!
                0
                Эх, новая игра вторая работа от Зактроникса. Где бы время найти?
                  +1
                  Ну почему никто не вспоминает SpaceChem? Третья же (из популярных от Затроникса), даже пятая, если учитывать Ironclad Tactics и Infinifactory, но они не такие популярные.
                  SpaceChem
                    0
                    Слово „вторая“ относится к словосочетанию „вторая работа“. Так-то я и флешовые игры его помню и люблю. KOHCTPYKTOP был излишне сложный, а вот Codex of Alchemical Egineering — самое то. Не говоря уже про отличный Ruckingenur.
                  0
                  Задумка хорошая. Но думаю, что самым лучшим было бы создание похожей игры, но чтобы всё было как в реальности:
                  — используемые языки (VHDL, и другие) как в реальном производстве
                  — поддержка внешних редакторов PCB (и не только)
                  — общая база проектов, кода, плат, с возможностью организации закрытых проектов.
                  В игровом процессе предусмотреть различные тесты, проверки, рейтинги, статистику. Предусмотреть роли заказчиков проектов — чтобы кто-то из игроков мог предлагать задания, вкладывать деньги, и после выполнения работы разработчик получает доход. Заказчик же выгружает готовые для производства устройств данные: чертежи, код, и т.п.
                  Можно предусмотреть типа тендеров: открытый аукцион проектов — чтобы можно было сравнивать варианты, и лучший оплатить и получить материалы к производству. Или совместное производство — когда работают все (или ограниченная команда), а после сдачи проекта каждый получает в зависимости от каких-то критериев (можно использовать какую-то внутреннюю статистику или другие критерии, по которым распределяется оплата).
                  Да много чего можно предусмотреть.

                  Вот в таком случае можно было бы легко организовать разработку электроники во всемирном масштабе, когда разрабатывать может каждый, не выходя из дома. Правда, это уже была бы огромная мощная площадка, а не какая-то игра.
                    +2
                    Я бы побоялся пользоваться такой электроникой.
                      0
                      гладко было на бумаге, да забыли про овраги
                      красиво звучит, но как же сертификация и пресловутые «закладки» буржуев от заочных разработчиков
                      для личного пользования сам много делаю простых устройств (робот пылесос, ЧПУ, гироскутер и т.д.) и скажу что окупаемость прототипа никогда не сравниться с серийным образцом (особенно китайцев, пока свое корявое сделал, уже цены на китайские ниже травы ).
                      Получается разработка должна окупаться от серийного производства.
                      Конкурсы тоже затруднительно заочно устраивать — какой лимит ответственности? Если же о юрлицах говорить, то это уже не игра (налоги). Параллельно работать могут только энтузиасты без гарантии оплаты на конечном этапе.
                      В целом Ваш пост про площадку (типа кикстартер), а не про игру. Советую Вам довести ее до реализации. Искренне желаю удачи.
                        0
                        Если кто соберется разрабатывать игру с поддержкой BlueSpec — я к нему присоединюсь!
                        0
                        Спасибо за обзор! Иду в Steam :)
                          +4
                          Странно, что игру называют симулятором. Микроконтроллеры совсем не так программируются, там другая идеология.

                          Думаю, если хочется именно симулятор, можно взять Proteus. Он такой же аскетичный, как и эта игра, но там много реального железа и реальные же микроконтроллеры. Да и знания, полученные в такой симуляции будут применимы в реальной жизни.
                            +1
                            Лет 10 или больше назад пользовался proteus — реально очень полезная программа. 90% схем можно проверить на ней. Оставшееся — недоработки симулятора и недосмотр разработчика (пользователя программы) — можно учесть самому. Конечно, надо кое-что знать, и чем сложнее проектируемое устройство, тем больше нюансов приходится учитывать.
                            При этом вполне всё сходится с реальным железом. Я в то время немного занимался микроконтроллерами, проектировал и отлаживал в протеусе, потом собирал в железе, заливал код (уже отлаженный и рабочий) — и всё ОК. Жаль, что тогда забросил это направление, а сейчас просто нет времени изучать новые контроллеры, новый софт для разработки, и т.п. Да и несколько интересы сместились в другую сторону…
                              +1
                              Прям с языка сорвал. Удваиваю.

                              На симулятор это не тянет — слишком примитивно, гораздо менее интересно, чем самый простой МК.
                              Полет фантазии ограничен, причем специально. Так что это именно головоломка, которую выдают под соусом симулятора: как выполнить задачу с 3,5 ассемблерными инструкциями, одним регистром и памятью на 9 команд. Как ханойская башня.
                              Но сделано красиво, да.

                              Любителям железа и электроники тоже советую поиграться с реальными МК: вживую, или хотя бы с их более-менее достоверными симуляторами, типа Proteus, avr studio, algorythm builder.
                              Или вообще любой ассемблер под ПК — там и то интереснее программу отлаживать.
                              Хотя ассемблер интересен только пока задача проста, потом волей-неволей придется переползать на С/С++, причем ИРЛ с этим нет никаких проблем, в отличии от игр. Только твори.

                              Например в симуляторе самого простого avr за 35 рублев задачи выходят на порядки интереснее: богатый (по сравнению с любыми играми уж точно) ассемблер, множество регистров, причем не абы каких, а 8-ми битных, часть из них парные 16-ти битные, куча периферии, которую можно и нужно использовать (всякие таймеры, компараторы, ацп/цапы, кнопки мертвеца ака wdt), один или несколько портов ввода-вывода, каждый из которых по 8 пинов, каждый пин на которых можно программно переконфигурировать, система аппаратных прерываний (да да, ты не ослышался — аппаратные прерывания в самой примитивной железке, и ими можно пользоваться!), несколько типов памяти, особенности которых нужно учитывать, да и сами пины тоже не простые — однобитовые, логические, умеющие только в 0 и 1, зато быстро-быстро, на скорости в единицы и десятки МГц, имеющие индивидуальные и общие ограничения по току. Столько всякого разного — и все твое.
                              И всем этим зоопарком управляешь ты, и только ты! Это как солидных размеров цех по перемалыванию информации, с множеством сложного, интересного, уникального оборудования, со своими возможностями и особенностями. Скучно тут не бывает. Менеджмент тоньше некуда — никакие симсы/стратежки/зомби-фермы и рядом не валялись.
                              И это только верхушка айсберга, а сам айсберг — огого:
                              В комплекте идет непередаваемая вселенная стеклянного времени, где секунда растягивается до бесконечности, и ты мыслишь тактами и наносекундами. На этих временных интервалах ты изучаешь внешний мир и взаимодействуешь с ним — скорости портов самого простого МК вполне хватает для столь тонких манипуляций. МК превращается в микроскоп времени, где можно любой скоротечный процесс рассмотреть во всех подробностях, и даже успеть отреагировать на изменения в нем, если хочется вмешаться в этот процесс.
                              Как бонус идет полноценный вкусный даташит с максимально полной информацией о работе МК, который приятно даже просто читать, как учебник (это не какой-то огрызок на 5 страниц текста), плюс тысячи форумов и руководств.
                              И конечно тусовка: тысячи людей твоего языка, нередко даже профессионалов (занимающихся МК давно и за зарплату), с которыми можно общаться, обмениваться опытом, учиться, и даже просить помощи. В играх же тебя здесь ждет стена.

                              В общем симулятор реального МК или живой МК — это не в пример более живая и интересная игрушка, чем любая компьютерная игра.
                              Причем порог вхождения у нее крайне низкий, да и сам процесс вхождения более приятный.
                              К тому же полезный, да не эфемерно, а реально, и, что особенно вкусно — это по карману любому: за эти самые 35 рублев твое увлечение из игрушки может превратиться в реальную железку на руках, которую, при наличии паяльника, можно применить куда-нибудь с реальной пользой.
                              Причем сейчас уже avr'ки не особо котируются, ведь, накинув сверху еще 10 рублев, тебе становятся доступны stm'ки и даже начальные arm'ы, а это уже куда более серьезное железо с гораздо большими возможностями, почти взрослый компьютер на кристалле — именно arm'ы например трудятся в ваших смартфонах и планшетах.
                              И это — самый низкий ценовой уровень! Чуть дороже уже идет куда более вкусное железо.
                              Программирование МК — это окно в удивительный мир железа, мир этот большой и интересный, и не где-то за экраном, а прямо здесь, и ты можешь невозбранно пользоваться плодами этого мира. Также в этом мире нередко встречаются настоящие уникумы, типа всяких специализированных железок, архитектур вообще очень много, самых разных, о большинстве из которых мало кто даже слышал, и часть из них просто поражают возможностями, например воть: http://www.greenarraychips.com/home/products/ — 144 ядерный стековый проц, 96 млрд операций в секунду, энергопотребление, гигабитные шины, и все это счастье жрет не более 1Вт и стоит 20 баксов. Такие штуки в космос летают — просты и надежны, да и архитектура у них хитрая, заточена под непрерывные вычисления не смотря на пропадание питания, т.е. при включении вычисления просто продолжаются с того места, где закончились, как будто и не выключали.
                                +1
                                Читал ваш комментарий на одном дыхании. Спасибо.
                                  0
                                  Звучит отлично.
                                  У меня сейчас есть идея девайса, которая если дойдет до завершения окажется на GT.
                                  Я читаю ваш комментарий и вижу цену за Proteus, которая на порядок превосходит затраты на железки для моей поделки.
                                  Может вы можете подсказать что-то бесплатное?
                                    0
                                    Можно ссылку на avr за 35 рублей, не оптом и не с китая? Спасибо.
                                      0
                                      Есть по 37 р в розницу (и 30 — мелкий опт) efind.ru/icsearch/?search=attiny13a
                                      И чтобы два раза не ходить, АРМы по 60 рублей: efind.ru/icsearch/?search=stm32f030
                                        0
                                        Круто, спасибо! Попробую заказать аттини. Правда, там по три штуки минимум (от 100 руб), но все ещё хорошая цена.

                                        UPD: Не-а, 3000 минимальный заказ в интернет магазине. http://prnt.sc/ctsnts
                                        :(
                                          0
                                          Смотрите другой магазин. Efind — это же просто поисковик.
                                          Вон в Контесте тиньки по 30 рублей и минимальный заказ 500р
                                      0
                                      В сравнении игры с реальным МК есть одно «но»: в игре есть множество заданий, которые представляют некоторую сложность и интерес. Есть ли такой набор заданий для МК? Да и в случае МК выполнять задания можно в любом порядке, из-за чего теряется интерес к процессу «прохождения», а в игре последовательность важна, она и заставляет проходить определённые задания, и учит новым вещам постепенно.
                                      Ну и да, многие реальные задачи для МК слишком сложны, чтобы с них начинать.
                                    0
                                    Спасибо, интересно.

                                    Как только пройду infinifactory…
                                      +1
                                      «мультиплексировать сигнал в два раза» — кмк к мультиплексированию это никакого отношения не имеет, просто амплитуду увеличили в 2 раза.
                                        0
                                        Великолепная игра. Странно, что в TIS-100 считают порог выше. Никогда не писал на ассемблере, но в TIS-100 легко разобрался, первые задачи решались очень быстро, из-за чего в начале, пока только учишься всем командам и идеям было несложно.
                                        С SHENZEN I/O только над первым заданием просидел 5 минут пытаясь понять, что же от меня хотят. Потому что мануал открыть сразу я не захотел, ведь игра «такая же» как TIS-100. И вот неудобно, что доступ к мануалу есть только из главного меню. Получаешь задачу, понимаешь, что нужно прочитать новый материал, и тебе для этого нужно выйти…
                                        Но это все придирки. Удалось практически полностью пройти TIS-100, а SHENZEN таки давит сложностью, очень радует. Тем более автор проработал интерфейс, теперь вместо неинтуитивных чисел видно сигналы, визуально понять ошибку легко, дебагать тоже удобнее.
                                        Вообщем, вердикт — игра полностью стоит своих денег. Понять, что это не ваше можно за 20 минут и выполнить возврат в Steam. А если понравилось, то уровня задач хватит на много часов.
                                          0
                                          Интересный экспонат. Конечно, к собственно контроллерам это произведение не имеет никакого отношения, судя по описанию.

                                          Как практикующий инженер-электронщик могу сказать следующее: мне кажется, что эта игра нацелена в основном на тех, кого электроника привлекает исключительно атмосферностью (ну там, романтика пальника, все дела). Если же интерес более серьезен и сопровождается тягой к познанию, лучше купить реальную отладочную плату, поставить какую-нибудь среду разработки и начать развлекаться. «Квестов» хватит лет на пять минимум, если начинать с нуля. Для разнообразия можно не искать легких путей; например, вместо того, чтобы возиться с Ардуиной, начать разбираться с реальной документацией на контроллер, компилятор и программатор, а еще лучше вместо готовой отладочной платы взять контактную макетку, контроллер в DIP и горсть выводных компонентов… В общем, тут уже начинаются варианты, гораздо более разнообразные, чем в любой игре.

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