RomanSkl

RomanSkl

DIY и retro gaming энтузиаст
Пикабушник
Дата рождения: 1 января
772 рейтинг 32 подписчика 4 подписки 2 поста 2 в горячем
Награды:
5 лет на Пикабу
229

Игровая консоль и игры к ней своими руками. Little Game Engine + ESPboy

Little Game Engine (LGE) – это виртуальная игровая консоль выдуманной конфигурации, с выдуманным процессором и онлайн web-SDK, состоящий из компилятора С-подобного кода в ассемблер и дальнейшей перекомпиляцией его в машинный код с возможностью исполнения этого кода там же, в онлайн в эмуляторе.

Игровая консоль и игры к ней своими руками. Little Game Engine + ESPboy Esp8266, Arduino, Gamedev, Программирование, Микроконтроллеры, Длиннопост

Как видно из названия, заточен весь комплект на быстрое создания 2d ретро игр. Более 20 игр уже готовы, несколько в разработке.

Игровая консоль и игры к ней своими руками. Little Game Engine + ESPboy Esp8266, Arduino, Gamedev, Программирование, Микроконтроллеры, Длиннопост

Чтобы поиграть онлайн, перейдите по ссылке игры ниже, выберете «compile» и затем «run».


TankCity, 1916, FourINaRow, BlackJack, ZombieDefence, MicroRace, DwarfClicker, Galaxies, Memories, NinjaEscape, Mines, Breakout, TowerDefence, FlappyBird, WormBlast, ESProgue, Snake, FishLife, Columns, MarsAttack, CityRunner, Asteroids, Bashe

Игровая консоль и игры к ней своими руками. Little Game Engine + ESPboy Esp8266, Arduino, Gamedev, Программирование, Микроконтроллеры, Длиннопост

Отдельный плюс в том, что эмулятор LGE virtual machine помимо онлайн версии написан и для ESPboy гаджета, который имеет сходную с LGE VM переферию воплощенную в железе и про который я уже писал.


* цветной экран разрешением 128х128,

* 8 кнопок,

* однобитный звук

* RGB светодиод

* подходящий по скорости эмуляции микроконтроллер ESP8266

* встроенную флеш память с файловой системой SPIFFS

Игровая консоль и игры к ней своими руками. Little Game Engine + ESPboy Esp8266, Arduino, Gamedev, Программирование, Микроконтроллеры, Длиннопост

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

Игровая консоль и игры к ней своими руками. Little Game Engine + ESPboy Esp8266, Arduino, Gamedev, Программирование, Микроконтроллеры, Длиннопост

Загружать игры можно, как по проводу (см. заргрузка файлов на spiffs), так и через WiFi. Удерживая при запуске ESPboy кнопку «B», мы превращаем гаджет в точку доступа, и подключившись к ее WiFi сети с именем «ESPboy» через браузер, попадаем в веб интерфейс файловой системы, где можно, как удалять файлы, так и загружать новые.

Игровая консоль и игры к ней своими руками. Little Game Engine + ESPboy Esp8266, Arduino, Gamedev, Программирование, Микроконтроллеры, Длиннопост

Остается только собрать гаджет, на что есть схемы, инструкции и kit набор для сборки, который вскоре будет доступен на tindie.com.

Наигравшись в существующие игры – можно довольно быстро начать писать свои.

Игровая консоль и игры к ней своими руками. Little Game Engine + ESPboy Esp8266, Arduino, Gamedev, Программирование, Микроконтроллеры, Длиннопост

Краткая спецификация LGE виртуальной машины:


- Набор из 108 инструкций навеян CHIP8/SCHIP и микропроцессором MOS6502.

- 16 регистров по 16 бит, нулевой регистр является указателем стека.

- Каждая инструкция двухбайтовая, некоторые инструкции содержат после себя два байта данных

- Адресуемая память 20Kб.

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

- Размер экрана 128х128 пикселей, 16 цветов на точку, что занимает 8Kб памяти, еще столько же занимает буфер для рисования спрайтов и частиц.

- Обновление экрана около 20 кадров в секунду.

- Можно рисовать тайлы и 32 спрайта размером до 128х128 пикселей с возможностью вращения и зеркалирования.

- Поддерживается работа с частицами.

- Для экономии памяти можно использовать однобитные изображения или RLE сжатие.

- Присутствует упрощенная физика: обнаружение столкновений спрайтов со спрайтами и тайлами, разрешение столкновений, гравитация.

- Экран обновляется построчно, только если в строке произошло изменение пикселей.

- Скорость VM в зависимости от того, сколько строк отрисовывается в кадре, варьируется от 100 тысяч до 900 тысяч операций в секунду.

- Можно использовать разные цветные экраны, есть программное растягивание изображения.


Чтобы не писать напрямую в опкодах, в SDK входит самописный компилятор «LGE С», представляющий из себя «C» образный язык высокого уровня. На данный момент этому компилятору далеко до полной поддержки стандартов языка C и при компиляции можно легко столкнуться с непонятной ошибкой в непонятном месте. Зато он быстр, ведь он занимает меньше 2000 строк исходного кода, а также постоянно развивается.


LGE онлайн среда разработки с компилятором и эмулятором

Описание виртуальной машины LGE

Руководство по LGE компилятору «C» образного языка

Исходный код игр LGE на LGE C


На LGE SDK уже сделано не мало игр и можно продолжать создавать новые прямо сейчас, однако до совершенства далеко. Если кто-то желает принять участие в создании новых игрушек на LGE или улучшении самого LGE SDK, а так же если кто-то заинтересовался сборкой ESPboy, добро пожаловать на форум www.espboy.com.

Там постараемся ответить на все вопросы и помочь в реализации идей.


Всем добра и успехов в творчестве.


С уваженеием,

Роман

Показать полностью 6
454

ESPboy гаджет для ретро игр и экспериментов с IoT

ESPboy гаджет я сделал на основе известного микроконтроллера ESP8266 80/160Mhz, 4/8Mb с TFT цветным экраном 128х128, звуком, RGB светодиодом, аккумулятором с зарядкой и WiFi на борту.


Инструкции по сборке

ESPboy гаджет для ретро игр и экспериментов с IoT Esp8266, Своими руками, Arduino, Gamedev, Microcontrollers, Видео, Длиннопост

Получилась автономная, модульная платформа, которую можно спаять за пару часов из деталей, стоимостью примерно 12$ и носить в кармане.


Базовая плата нарисована в easyeda.com, произведена jlcpcb.com.

Все компоненты стандартные, легко доступны за копейки на aliexpress.com.

ESPboy гаджет для ретро игр и экспериментов с IoT Esp8266, Своими руками, Arduino, Gamedev, Microcontrollers, Видео, Длиннопост

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

Есть разъем на который выведены все интерфейсы (SPI, I2C, UART и прочее), куда можно подключать родные модули и свои собственные расширения.

ESPboy гаджет для ретро игр и экспериментов с IoT Esp8266, Своими руками, Arduino, Gamedev, Microcontrollers, Видео, Длиннопост

Программируется ESPboy обычным путем через Arduino IDE, так как ESP8266 практически полностью совместим с ардуииновской экосистемой и библиотеками. Для продвинутых есть родные SDK от Espressif Systems NONOS или RTOS. Различные дополнительные среды для программирования и сборки прошивок тоже доступны, типа LUA, Micropython, scratch, wifi-iot.com, fl-prog, Visuino и тыщи других.


На борту ESP8266 есть встроенный WiFi, что добавляет сетевых возможностей и для коммуникаций между девайсами и для экспорта данных в сеть и много для чего еще. Например можно запросто коммуницировать с таким онлайн сервисами, как RemoteXY, Blynk, Thingspeak, HiveMQ, CloudMQTT, NarodMon, MajorDoMo, ThingerIO, Google cloud IoT, dweet.io, Temboo, Xively, IFTTT, LORA-WAN.


Технические детали и инструкция по сборке на hackaday

ESPboy гаджет для ретро игр и экспериментов с IoT Esp8266, Своими руками, Arduino, Gamedev, Microcontrollers, Видео, Длиннопост

Проект вырос из любви к самоделкам и ретро девайсам, возни с Arduino и знакомства с такими штуками, как: Arduboy, Gamebuino, Pokitto, m5stack.

ESPboy гаджет для ретро игр и экспериментов с IoT Esp8266, Своими руками, Arduino, Gamedev, Microcontrollers, Видео, Длиннопост

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


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


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


То есть учить в обратном направлении, не с безликих плат и проводков к готовому устройству черт знает когда, а от полноценно работающего гаджета, через любопытство: “а как это устроено и работает”. Что-то подобное ощущается у проекта m5stack.com, но он на мой взгляд черезчур цельный и закрытый.


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

Эффект похож на ощущения после самостоятельной сборки шкафа IKEA.

ESPboy гаджет для ретро игр и экспериментов с IoT Esp8266, Своими руками, Arduino, Gamedev, Microcontrollers, Видео, Длиннопост

Облегчает дело то, что китайцы с pcbway.com помимо производства основной платы, могут вполне аккуратно запаивать все мелкие детали, после чего остается собственноручно припаять только динамик, модуль зарядки батареи, плату микроконтроллера, дисплей и прицепить батарейку.


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

ESPboy гаджет для ретро игр и экспериментов с IoT Esp8266, Своими руками, Arduino, Gamedev, Microcontrollers, Видео, Длиннопост

Далее открывается простор в изучении геймдева или IoT.


По разработке игр это отдельное дело, можно использовать LGE движок Игоря например.

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

ESPboy гаджет для ретро игр и экспериментов с IoT Esp8266, Своими руками, Arduino, Gamedev, Microcontrollers, Видео, Длиннопост

Предпрошивать пока что предполагается или ESP little game engine со встроенными играми от Игоря, который любезно портировал свою разработку на ESPboy или эмулятор CHIP8/SCHIP игр с примерно 90шт встроенными играми, который мне удалось написать не так давно.

Уже сейчас доступны готовые модули, вставляя которые в разъем расширения ESPboy и заливая прошивку, можно получать полнофункциональный гаджет на выбор: метеостанция, mp3 плеер, fm приемник, навигатор, клавиатура, GSM телефон. Код естественно доступен на GitHub.

Планируется сделать еще несколько прикольных модулей: LORA мессенджер (который работает без какой бы то ни было связи вообще на 8км), монитор окружающей среды (с дозиметром, датчиком фенола, CO2 и прочим), сканер штрихкодов, термовизионную камеру, wifi радио и несколько подобных.


Так же в процессе написание простого браузера и twitter клиента, создание онлайн каталога с прошивками, чтобы можно было загружать софт, подключившись к онлайн каталогу через WiFi. Без проводов, возни с настрокой IDE, компиляций (по типу, как сегодня происходит поиск и установка софта на смартфонах с Google play или Apple store).


Дальнейший процесс постижения всей этой DIY микроконтроллерно-программерской магии может идти через интернет и youtube классическим путем, благо учебного материала сегодня на эту тему предостаточно. В случае затруднений, в форуме сообщества ESPboy подcкажут.


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


Всем добра и успехов в творчестве.


С уваженеием,

Роман С.

Показать полностью 8 3
Отличная работа, все прочитано!