Если бы для микроконтроллеров существовало правило 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, экспериментировать с ардуино и учиться писать правильные диздоки для разработки игр. И даже если увлечение инди-консолями пройдет — полученные знания останутся со мной и, скорее всего, помогут в более серьезной разработке в будущем.
Комментарии
Эх, кустарный игрострой - это же настоящий Дикий Запад. Систематизированной истории этой сферы почти нет, ведь всё держится на таких же энтузиастах. Изредка на хайпе от гиммика выстреливают такие штуки как шарманочная Playdate. А вот разрабам чтобы рассчитывать на коммерческий успех всё равно придётся выходить на официальные платформы больших корпораций, будь то Стим, PSN и т.п.
По сабжу - классный материал. Спасибо за освещение такой нишевой темы. Поколение радиолюбителей прошлого передало свой энтузиазм самоделкиным настоящего =)
Спасибо.)
Вообще, поскольку такой вот инди-игрострой (когда в этом понятии появился смысл) уже шел рука об руку с интернетом, всё документированно, и всю информацию можно найти. И выстреливает то довольно много вещей, просто мало что разрабатывают и продвигают так же последовательно и упорно как Playdate или Arduboy.
Есть, например, прекрасная консоль Pokitto - прям очень хорошая, собравшая активное сообщество, с интересными играми - но авторам явно поднадоело, они закончили выпуск первой версии и так и не сделали вторую. Сообщество так и осталось мизерным. =(
Статьища зачёт!
имхо, но большинство портов дума - это тупо вывод картинки на какой то экранчик, не более :)
значит без живого геймплея - незачёт!
Спасибо.
О да - дум на научном калькуляторе - навсегда в сердечке.
Шикарная статья! Блин а про дум опередили)
Спасибо )
Каждый раз вижу такие штуки и сразу думаю как приладить их к запястью, чтоб как Пип-бой работали. А потом гадаю, что он должен уметь, если нет инвентаря, хп и перков?
В нашей, так сказать, реальности такими пип-боями сканируют и взламывают wi fi сети и управляемые устройства)
Воу воу, это у вас в Эфиопии чуть что потяжелее, сразу гранатомёт тащат! Я про радио думал, может фонарик...
Нашел еще сайт с IDE и эмулем ArduBoy
https://felipemanga.gi....
Можно поколупаться и поэксперементировать перед покупкой.
Да, спасибо за ссылку, это собственно офф-эмуль от разработчика консоли.
Кроме этого тутора по основам знаешь еще какие-нибудь материалы интересные?
Есть еще туториал по созданию сайд-скроллера:
https://community.ardu...
Поскольку я сам не программист, и С++ учил последний раз в институте 20 лет назад, для меня эти туториалы - в самый раз, и более продвинутых я особо не искал.
Но если покопаться на форуме, есть более продвинутые статьи и обсуждения, в том числе есть пара человек, у которых можно спросить, если интересует что-то конкретное.
Пушечно.
Спасибо большое, эт было интересно!
=) Спасибо
Благодарю, познавательно!
Рад, что понравилось)
Не перестаю удивляться какие всё таки крутые вещи делают люди, спасибо за текст
Спасибо, рад, что понравилось )