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

Чтобы поиграть онлайн, перейдите по ссылке игры ниже, выберете «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…

Отдельный плюс в том, что эмулятор LGE virtual machine помимо онлайн версии написан и для ESPboy гаджета, который имеет сходную с LGE VM переферию воплощенную в железе и про который я уже писал.
- цветной экран разрешением 128х128,
- 8 кнопок,
- однобитный звук
- RGB светодиод
- подходящий по скорости эмуляции микроконтроллер ESP8266
- встроенную флеш память с файловой системой SPIFFS
Таким образом можно загружать откомпилированные в онлайн LGE SDK игры в портативный ESPboy, брать его с собой и с интересом коротать свободные минуты.

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

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

Краткая спецификация 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.
Там постараемся ответить на все вопросы и помочь в реализации идей.
Для настойчивых и заинтересовавшихся ниже короткий пример игры на LGE SDK. Занимает меньше ста строк и размером не более 1Kб в скомпилированном виде. Чтобы его запустить, необходимо зайти на онлайн LGE SDK, скопировать код в окошко «source», выбрать «compile» и затем «run».
int stickCount;
char key,previouseKey,takenSticks;
void redraw(){
int i;
//выбираем красный цвет
setcolor(2);
//рисуем видимые палочки
for(i = 0; i < stickCount; i++)
line(22 + i * 6, 74, 22 + i * 6, 84);
//выбираем серый цвет
setcolor(11);
//рисуем выброшенные
for(i = stickCount; i < 15; i++)
line(22 + i * 6, 74, 22 + i * 6, 84);
//возвращаем белый цвет как основной
setcolor(1);
//ждем перерисовки экрана
delayredraw();
}
void playersMove(){
//если код кнопки равен предыдущему, значит она еще не отпущена. Ждем
while(key == previouseKey){
key = getkey();
}
while(key != KEY_LEFT && key != KEY_DOWN && key != KEY_RIGHT){
key = getkey();
}
if(key & KEY_LEFT){
takenSticks = 1;
}else if(key & KEY_DOWN){
takenSticks = 2;
}else{
takenSticks = 3;
}
printf("%d, ", takenSticks);
stickCount -= takenSticks;
previouseKey = key;
}
void computersMove(){
if(stickCount % 4){
//компьютер реализует выигрышную стратегию, если выпала возможность
takenSticks = stickCount % 4;
}else{
//компьютер ждет возможности реализовать выигрышную стратегию
takenSticks = 1 + random(1);
}
stickCount -= takenSticks;
printf("%d, ", takenSticks);
}
void game(){
//инициализация
stickCount = 15;
clearscreen();
//переводим каретку на восьмой символ нулевой строки
gotoxy(8,0);
puts("Баше");
gotoxy(2,1);
puts("Возьмите 1,2 или 3 палочки. Проигрывает тот, кому нечего брать. Управление:n");
//коды 27,25 и 26 соответствуют стрелкам
printf(" %c 1 %c 2 %c 3", 27, 25, 26);
gotoxy(0,12);
redraw();
while(1){
playersMove();
if(stickCount <= 0){
gotoxy(3,8);
puts("Вы выиграли");
return;
}
redraw();
computersMove();
redraw();
if(stickCount <= 0){
gotoxy(3,8);
puts("Компьютер выиграл");
return;
}
}
}
void main(){
while(1){
game();
//ждем секунду
settimer(1,1000);
while(gettimer(1)){}
while(getkey() == 0){}
previouseKey = key;
}
}
Всем добра и успехов в творчестве.
С уваженеием,
Роман
Предзаказы GTA VI значительно превышают прогнозы, почти три четверти копий купили для PS5
Спустя четыре дня энтузиасты почти довели эмуляцию The Legend of Zelda: Ocarina of Time Remake до идеала
В Steam появилась статистика частоты кадров для игр на Steam Deck
Rockstar продаёт настоящий спорткар Grotti Cheetah из GTA VI
Microsoft готовит ИИ для исправления речи во время стрима
Цифры не на стороне Sony: физические издания игр по-прежнему востребованы у аудитории
OpenAI и ModRetro представили портативную консоль для игр, созданных с помощью Codex
В Xbox Game Pass появятся три игры от создателей Frostpunk