Симулятор программиста


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

Лучший способ научиться чему-либо – поиграть в это. Представляем 10 обучающих игр, которые помогут освоить основы программирования.

Прежде чем вникать в тонкости конкретного языка, необходимо понять общие концепции компьютерных наук, освоиться с алгоритмами и поверить в свои возможности. С этим превосходно справляются игры. Мы подобрали 10 замечательных экземпляров, с которыми не страшно погрузиться в загадочный и полный возможностей мир IT.

Изучаем основы программирования

Algotica Iterations (2017)

Приключения робота Лони с теплой атмосферой и приятной стильной графикой – отличный выбор для первого погружения в мир алгоритмов.

Главный герой с товарищами борется с местным тираном, проходя уровни один за другим. Игрок должен вводить в терминал простые команды, которые Лони послушно выполняет, например, forward или turn-left. Прежде чем начнется сюжет, проводится понятное обучение.

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

CSS – Flexbox Froggy (2016)

Бесплатная браузерная игра, раскрывающая все секреты технологии Flexbox. Очаровательные лягушата заплутали в пруду и потеряли свои лилии. Чтобы помочь им, игрок должен правильно выстроить макет, используя css-свойства.

Подробные подсказки и мини-справочник значений помогут сориентироваться даже новичку, не знакомому с флекс-версткой.

Игра быстрая, приятная и очень полезная.

JavaScript – Grasshopper (2018)

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

Кстати, название для проекта выбрано не случайно. Слово grasshopper, что переводится как «кузнечик», очень похоже на имя Грейс Хоппер. Удивительная Грейс не только совершила множество открытий и разработок в компьютерных науках, но и сделала карьеру на флоте.

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

Сначала игрок узнает о базовых понятиях программирования, чтобы слова «переменные», «циклы» и «функции» его больше не пугали. Затем идет раздел рисования. С помощью JavaScript-библиотеки D3 игрок может выводить на экран разные фигуры и создавать из них полноценные изображения. Это делает процесс обучения более живым и наглядным.

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

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

Игра находится в свободном доступе в магазинах Google Play и App Store. С ее помощью можно легко и непринужденно освоить основы программирования на JavaScript в пару кликов.

Swift – Swift Playgrounds (2016)

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

В интерактивных 3D-локациях действуют персонажи, которыми можно управлять с помощью команд. Для удобного набора кода есть панель быстрого доступа и специальная клавиатура. Игра дарит потрясающую возможность увидеть, как программа оживает, ползает, крутится и летает по небу. Мир можно вращать движением пальцев!

На Swift написаны тысячи популярных приложений для Apple. Swift Playgrounds позволяет сполна ощутить возможности этого языка. Есть доступ к встроенным инструментам, таким как MultiTouch или гироскоп. Можно экспериментировать с дополненной реальностью или управлять внешними подключенными устройствами, например, роботами и дронами.

В приложении есть несколько типов песочниц, все с бесплатным доступом:

  • Learn to Code – самые основы программирования для абсолютных новичков.
  • Challenges – полноценные проекты для более опытных разработчиков.
  • Accessories – работа с подключаемыми устройствами.
  • Starting Points – пустые шаблоны.

Постоянно добавляются новые шаблоны для собственных программ и дополнительные челленджи.

Swift Playgrounds делает процесс обучения невероятно увлекательным и простым. Она доступна в App Store и поддерживает больше 10 языков, но русской локализации, к сожалению, пока нет.

Погружаемся в IT

Машинное обучение – while True: learn() (2018)

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

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

Каждое выполненное задание приносит немного денег, которые можно потратить в местном магазине. Главные статьи расходов: апгрейд компьютера и смена имиджа кота.

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

Есть возможность начать свой стартап и получать прибыль, продавая акции.

While True: learn() отлично нарисована, полна юмора и смешных отсылок. Она способна заинтересовать даже далеких от машинного обучения людей. В процессе игры зарождаются новые идеи и проекты.

На данный момент приложение находится в раннем доступе и активно обновляется. Машинное обучение в реальности не стоит на месте, поэтому появляются новые уровни и технологии. В ближайших планах – беспилотники, свёрточные сети, обучение с подкреплением.

Блокчейн – CryptoZombies (2017)

Креативная браузерная игра, посвященная созданию смарт-контрактов на языке Solidity. Наполовину обучающее пособие, помогающее освоить основы программирования, наполовину многопользовательская стратегия!

Сюжет построен на создании армии зомби и состоит из четырех больших уроков. В первом игрок построит фабрику по производству зомби с уникальным ДНК, а во втором пустит свое войско в дело. Каждый солдат в строю имеет особый внешний вид, сгенерированный с помощью функций шифрования. Третий и четвертый уроки посвящены фундаментальным концепциям языка Solidity и технологий блокчейн и Ethereum.

Игра затягивает с первых же глав, оторваться от нее невозможно. При этом вовсе не обязательно обладать каким-то опытом в блокчейн-разработке. Отличная обучалка начинается с самых базовых концепций и будет понятна даже новичку. Еще в игре есть плюшки в виде коллекционных карточек зомби и различных бонусов.

Хакерство – Hacknet (2015)

Увлекательный симулятор хакера с непередаваемой атмосферой командной строки и отличным саундтреком покорил тысячи человек и собрал множество наград.

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

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

Вся игра разворачивается в терминале с минимумом графических элементов. Именно тут предстоит выполнять различные задания, используя реальные UNIX-команды. Можно управлять и мышью, но все же именно использование терминала делает Hacknet таким особенным.

Ближе к железу

Prime Mover (2017)

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

Prime Mover – отличный выбор для любителей головоломок. Здесь можно не только напрячь мозг, но и изучить основы программирования на самом низком уровне.

К сожалению, у игры нет русской локализации, но игровой процесс понятен интуитивно.

Shenzhen I/O (2016)

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

Эмигрант приезжает в Китай и устраивается на работу в фирму Longteng, производящую электронику. Атмосфера офиса корпорации потрясающая: встрепанный тимлид, иконка солитера на рабочем столе, карты с китайскими подписями. На электронную почту начинают поступать задания, и герой принимается за работу. Его профессия – создавать микросхемы для различных устройств. Сначала заказы простые, например, фальшивая камера наблюдения или неоновая вывеска. Дальше – интереснее.

Игра не для слабаков! По-настоящему мозгодробительные задания по созданию и программированию электронных схем – это настоящий рай для любителей головоломок. Для выживания тут необходимо знать хотя бы основы программирования микроконтроллеров.

Полное погружение

Else Heart.Break() (2015)

Великолепная игра о дружбе, любви и, конечно, программировании.

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

Оказывается, все в этом мире можно взломать и перекодировать! Например, превратить дверь в портал, а воду в стакане в энергетический напиток. С этого момента все становится очень интересно.

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

Else Heart.Break() очень умная, яркая, живая и немного психоделичная. Игрок в ней не хакер, а волшебник. В этом и заключается истинная суть программирования.