Однобитный гейминг, или правило 34 для микроконтроллеров

Однобитный гейминг, или правило 34 для микроконтроллеров

Если бы для микроконтроллеров существовало правило 34, то оно, скорее всего, звучало-бы так: «Если это исполняет программы, кто-то уже написал для этого игру». При этом производительность совершенно не важна, как и то, для чего контроллер предназначался в оригинале. Важен сам принцип – если это выполняет программы, на этом можно поиграть.

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

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

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

Для создания инди-консолей могут использоваться самые разные процессоры и чипсеты, – от ATMega 32u4 (процессор ардуино леонардо) до в десять с лишним раз более быстрого STM32F746IGK, но, чаще всего это будут системы, совместимые с Arduino IDE – будь то оригинальные ардуино, или EST32.

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

Почему инди-консоли?
По своей сути, инди-консоли похожи на так называемые «фэнтезийные консоли» — другой интересный феномен игрового дизайна. Фэнтезийные консоли (Fantasy Consoles) — это программные среды для эмуляции и создания игр для никогда не существовавших физически игровых устройств. Сегодня существуют десятки фэнтезийных консолей и тысячи созданных энтузиастами игр. Разработчиков – чаще всего любителей – привлекают, как ни парадоксально, именно ограничения системы, и связанная с ними возможность сосредоточится на создании игры в простой среде, не отвлекаясь на сложное многообразие возможностей современных игровых движков и запутанное железо ПК и консолей.

У фэнтезийных консолей можно выделить три характерных составляющих —

1) Среда разработки, содержащая текстовый редактор, редактор спрайтов, редактор карт и звуковой редактор.

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

3) Игры, приложения и демонстрации, разработанные исходя из этих ограничений, с общими эстетикой и стилем.

Инди-консоли устроены похожим образом — подобно фэнтезийным консолям, они предлагают «игру в создание игры». Игровой дизайн и программирование становятся чем-то вроде мета игры с ограничениями и правилами – подобными ограничениям создателей игр для оригинальных 8-битных приставок. Кроме того, инди-консоли часто имеют открытый код и схемы, и дают практически недостижимый в современных системах контроль над всеми аспектами и возможностями железа.

Одним из первых широко известных и коммерчески успешных проектов на основе ATMega 328 (Arduino UNO) стала консоль Gamebuino (2012). 16 MHz, 2KB ram, 32kb flash, монохромный экран 84x48 пикселей и шесть кнопок. Что еще нужно для игр и творчества?

Консоль была встречена с большим энтузиазмом и успешно профинансирована на Indiegogo, собрав 1055% от запланированной суммы. Консоль стоила 35 евро для бэкеров, и около 38 позже, в онлайн магазине. В этой консоли есть все, что стало визитной карточкой подобных систем – распространенный и популярный чип с открытой документацией и огромным сообществом энтузиастов, дешевизна, небольшой размер, элегантные схемотехнические решения и дизайн, учитывающий малосерийное производство. И тот факт, что каждая консоль – это одновременно своеобразный девкит, и её можно использовать не только для игры, как таковой, но и для разработки новых игр и расширения экосистемы консоли.

Сегодня именно эту консоль купить уже нельзя, но создавшая её компания существует и выпускает следующую, более мощную, модель. Так же до сих пор живы форумы и сообщества, где можно найти помощь и информацию и до сих пор можно приобрести совместимую консоль – набор для самостоятельной сборки MakerBuino. (Честно сказать, создателей MakerBuino я немного недолюбливаю — некогда недорогой радиолюбительский кит они превратили в хипстерскую коробку с добавлением низкокачественных китайских инструментов и сильно подняли цену)

За последние несколько лет энтузиасты пытались использовать в инди-консолях самые разные чипсеты. Adafruit PyGamer – один из примеров консоли на более мощном железе. Я затрудняюсь сказать, насколько эта консоль «инди» поскольку компания Adafruit достаточно крупный игрок на рынке плат и решений для независимых разработчиков и обучения, но все основные признаки инди-консолей в PyGamer присутствуют в полной мере.

Это недорогая консоль на основе совместимого с Arduino IDE чипсета atsamd51J19. Благодаря большей, чем у базовых ардуино-совместимых контроллеров, мощности она позволяет программирование не только на С++, но и на python, а также использовать визуальную среду Microsoft make code. Благодаря гораздо более шустрому чипсету (120MHz Cortex M4F), объёму памяти (192 кб RAM и 512 kb flash) и цветному экрану 160x128 пикселей эта консоль позволяет создавать довольно продвинутые игры.

PyGamer официально поддерживается makecode arcade и выбрав консоль из списка, игры можно перенести буквально одним нажатием кнопки. Т.е. все написанное можно сразу пробовать на живом железе.

Несмотря на достаточно впечатляющие (для консолей подобного типа) характеристики и возможности, PyGamer вполне бюджетна, и продается за 60 долларов за набор с корпусом, запасными кнопками и чехлом или 45 долларов за голую плату.

Иногда инди консоли могут быть очень забавно решены в плане формы и устройства. В 2021 году компания Kittenbot выпустила Newbit Arcade Shield – не консоль как таковую, но расширение (шилд) для популярного обучающего микроконтроллера BBC Micro:bit второй ревизии. Плата с микроконтроллером вставляется в расширение как своеобразный картридж.

Вторая версия micro:bit имеет достаточно неплохое, для этого класса устройств, железо (Nordic Semiconductor nRF52833 64MHz Cortex-M4F, 512kB Flash, 128kB RAM) . Ситуация с этой консолью довольно интересная – за ней не стоит такое количество энтузиастов-самодельщиков, как за ардуино, но micro:bit – микроконтроллер созданный для обучения, и с огромным количеством учебных и методических материалов. Игры-же для этой консоли пишутся в Microsoft makecode arcade, что гораздо проще для освоения, нежели С++ или даже python.

И, наконец - Arduboy – эта, ставшая чуть ли не стандартом, инди консоль во многом похожа на gamebuino. Она основана на ATMega 32u4 — это чип Arduino Leonardo. От чипа Arduino UNO его отличает встроенный USB интерфейс, что позволило сделать Arduboy очень компактным – собственно, маленький размер и изящное решение платы и корпуса было одной из его фишек.

Проект – тогда еще просто небольшая «умная» визитка с чипом, экраном и предустановленной игрой завирусился на ютубе и его создатель, Kevin Bates, решил оставить основную работу и попытаться воплотить идею в жизнь. Компания на кикстартере началась в 2015 году. Проект был успешно профинансирован — было собрано более 400 тыс. долларов при заявленной цели в 25 тысяч. Не только отличный дизайнер, но и технолог, Кевин переселился в Китай, доработал дизайн проекта и наладил производство первой модели. В 2016 году бэкеры получили первые консоли, а чуть позже устройства появились и в магазинах, занимающихся любительской электроникой по всему миру. Изначально в консоли не было внешней памяти, и можно было записать только одну игру – загрузка в память следующей игры происходила вместо предыдущей, через стандартный интерфейс Arduino IDE. Позже, в 2019 году была разработана следующая модель с дополнительным чипом памяти, вмещающим более 200 игр. Производство новой модели началось в 2020 году, она получила название Arduboy FX (Flash eXtension), и именно она актуальна на сегодняшний день.

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

Arduboy FX приходит в симпатичной коробочке, где кроме самой консоли находится короткий USB шнур. В отличии от многих инди-консолей, Arduboy приходит уже собранным, а не в виде набора для самостоятельной сборки.

Технические характеристики:
Процессор: 16MHz ATmega32u4 (такой-же, как в Arduino Leonardo & Micro)
Память: 32KB Flash, 2.5KB RAM, 1KB eeprom
Экран: 128×64 1Bit OLED с диагональю 1.5"
Батарея: 180 mAh Thin-Film Lithium Polymer (около 8 часов игры)
Micro-USB 2.0 w/ built in HID profile
Для ввода есть шесть кнопок, четыре из которых используются как Dpad. Так же есть кнопка reset, утопленная в корпус во избежания случайного нажатия.

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

На консоли сразу записано две сотни созданных энтузиастами игр. Часть – чуть упрощенные версии классики вроде зелды, KONG или известных серий JRPG, а часть – оригинальные и разработанные специально под Arduboy. И, надо сказать, что несмотря на ограничения – низкое разрешение экрана и процессор, изначально отнюдь не предназначенный для вывода динамичной графики — разработчикам удаётся создавать стильные и вдохновляющие игры, будь то демейки классических аркад или собственные игры с оригинальными механиками.

Что плавно подводит нас к самому интересному – инди-консолям как возможности для собственного творчества. Как уже сказано выше, каждая инди-консоль — это, одновременно, и своеобразный девкит, позволяющий запускать собственные программы и управлять всеми компонентами консоли на уровне железа (у Arduboy существует отдельная версия, которая называется «dev kit», но она отличается только отсутствием корпуса и кнопками – функционал у нее тот же самый. По сути, так назывался ранний прототип для бэкеров и бета-тестеров) .

Консоль программируется через Arduino IDE, т. е. на С++, но с большим количеством написанных специально под Arduboy библиотек, облегчающих работу с выводом спрайтов, считыванием ввода и звуком. Пока что для Arduboy и его клонов не существует единой графической среды разработки, которая включала бы интегрированные редакторы спрайтов, текста и звука и эмулятор, на подобие того, что есть в фэнтезийных консолях – это одно из направлений, которыми Кевин собирается заняться в будущем.

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

Еще одна причина присмотреться к платформе – игр для Arduboy не так много, и к любой будет приковано доброжелательно внимание. Так же форумы Arduboy более чем живы, и там нередко можно встретить опытных программистов и спросить у них совета, если что-то пошло не так — не каждая платформа позволяет спросить технического совета (и, нередко, получить его) непосредственно от разработчика консоли =). Еще, поскольку консоль основана на ардуино, то нужную информацию часто можно получить и от разработчиков, не связанных с проектом напрямую.

Как и в случае популярных фэнтезийных консолей, ваша игра не обязательно останется запертой на Arduboy – например, игра Circuit Dude Джонатана Холмса была им позже доработана и сейчас доступна в Стиме, на Нинтендо Свич и на мобильных платформах.

Одна из интересных особенностей Arduboy и залог его длинной жизни как платформы – постоянное возникновение все новых совместимых с ним проектов, как, например, 8BitCADE. Поскольку это решение стало своеобразным стандартом и его схема распространяется совершенно свободно, множество самодельщиков и радиолюбителей собирают собственные аналоги Arduboy и пишут для него игры и программы.

Вездесущие китайцы так же не бросают на произвол судьбы тех, кто хотел бы стать частью сообщества Arduboy, но не может купить оригинал или не хочет собирать все с нуля. https://www. aliexpress.com/item/4000437689219.htm

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

Лично для меня идея инди-портативок и сообщество Arduboy стали причиной вернуться к вещам, которыми я не занимался почти 20 лет — со времен военной службы и учебы в институте. Я начал делать курсы по программированию и IOT, экспериментировать с ардуино и учиться писать правильные диздоки для разработки игр. И даже если увлечение инди-консолями пройдет — полученные знания останутся со мной и, скорее всего, помогут в более серьезной разработке в будущем.

22
518

Комментарии

Эх, кустарный игрострой - это же настоящий Дикий Запад. Систематизированной истории этой сферы почти нет, ведь всё держится на таких же энтузиастах. Изредка на хайпе от гиммика выстреливают такие штуки как шарманочная Playdate. А вот разрабам чтобы рассчитывать на коммерческий успех всё равно придётся выходить на официальные платформы больших корпораций, будь то Стим, PSN и т.п.

По сабжу - классный материал. Спасибо за освещение такой нишевой темы. Поколение радиолюбителей прошлого передало свой энтузиазм самоделкиным настоящего =)

Эх, кустарный игрострой - это же настоящий Дикий Запад. Систематизированной истории этой сферы почти нет, ведь всё держится на таких же энтузиастах. …
Xander Grishchenko
Эх, кустарный игрострой - это же настоящий Дикий Запад. Систематизированной истории этой сферы почти нет, ведь всё держится на таких же энтузиастах. …

Спасибо.)
Вообще, поскольку такой вот инди-игрострой (когда в этом понятии появился смысл) уже шел рука об руку с интернетом, всё документированно, и всю информацию можно найти. И выстреливает то довольно много вещей, просто мало что разрабатывают и продвигают так же последовательно и упорно как Playdate или Arduboy.
Есть, например, прекрасная консоль Pokitto - прям очень хорошая, собравшая активное сообщество, с интересными играми - но авторам явно поднадоело, они закончили выпуск первой версии и так и не сделали вторую. Сообщество так и осталось мизерным. =(

Статьища зачёт!

Если это исполняет программы, кто-то уже написал для этого порт Дума

Статьища зачёт!Если это исполняет программы, кто-то уже написал для этого порт Дума
MrJulienne
Статьища зачёт!Если это исполняет программы, кто-то уже написал для этого порт Дума

имхо, но большинство портов дума - это тупо вывод картинки на какой то экранчик, не более :)

имхо, но большинство портов дума - это тупо вывод картинки на какой то экранчик, не более :)
Легион
имхо, но большинство портов дума - это тупо вывод картинки на какой то экранчик, не более :)

значит без живого геймплея - незачёт!

Статьища зачёт!Если это исполняет программы, кто-то уже написал для этого порт Дума
MrJulienne
Статьища зачёт!Если это исполняет программы, кто-то уже написал для этого порт Дума

Спасибо.

О да - дум на научном калькуляторе - навсегда в сердечке.

Шикарная статья! Блин а про дум опередили)

Шикарная статья! Блин а про дум опередили)
Альфарий Торрентский
Шикарная статья! Блин а про дум опередили)

Спасибо )

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

Каждый раз вижу такие штуки и сразу думаю как приладить их к запястью, чтоб как Пип-бой работали. А потом гадаю, что он должен уметь, если нет инвент…
iBarin
Каждый раз вижу такие штуки и сразу думаю как приладить их к запястью, чтоб как Пип-бой работали. А потом гадаю, что он должен уметь, если нет инвент…

В нашей, так сказать, реальности такими пип-боями сканируют и взламывают wi fi сети и управляемые устройства)

В нашей, так сказать, реальности такими пип-боями сканируют и взламывают wi fi сети и управляемые устройства)
Ильящер
В нашей, так сказать, реальности такими пип-боями сканируют и взламывают wi fi сети и управляемые устройства)

Воу воу, это у вас в Эфиопии чуть что потяжелее, сразу гранатомёт тащат! Я про радио думал, может фонарик...

Нашел еще сайт с IDE и эмулем ArduBoy
https://felipemanga.gi....
Можно поколупаться и поэксперементировать перед покупкой.

Нашел еще сайт с IDE и эмулем ArduBoy https://felipemanga.gi.... Можно поколупаться и поэксперементировать перед покупкой.
Bremsberg
Нашел еще сайт с IDE и эмулем ArduBoy https://felipemanga.gi.... Можно поколупаться и поэксперементировать перед покупкой.

Да, спасибо за ссылку, это собственно офф-эмуль от разработчика консоли.

Да, спасибо за ссылку, это собственно офф-эмуль от разработчика консоли.
Ильящер
Да, спасибо за ссылку, это собственно офф-эмуль от разработчика консоли.

Кроме этого тутора по основам знаешь еще какие-нибудь материалы интересные?

Кроме этого тутора по основам знаешь еще какие-нибудь материалы интересные?
Bremsberg
Кроме этого тутора по основам знаешь еще какие-нибудь материалы интересные?

Есть еще туториал по созданию сайд-скроллера:
https://community.ardu...

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

Пушечно.

Спасибо большое, эт было интересно!

Пушечно. Спасибо большое, эт было интересно!
AllexKzk
Пушечно. Спасибо большое, эт было интересно!

=) Спасибо

Благодарю, познавательно!

Благодарю, познавательно!
Бальмунг
Благодарю, познавательно!

Рад, что понравилось)

Не перестаю удивляться какие всё таки крутые вещи делают люди, спасибо за текст

Не перестаю удивляться какие всё таки крутые вещи делают люди, спасибо за текст
Gillian
Не перестаю удивляться какие всё таки крутые вещи делают люди, спасибо за текст

Спасибо, рад, что понравилось )