Я Создал Свою Игровую Приставку! Что она Потянет?

preview_player
Показать описание
#Vectozavr #Gamedev #Programming

tg: @vectozavr

Сегодня я расскажу, как я сделал свою версию игровой приставки gameboy с помощью arduino, языка программирования C, джостика и дисплея, а потом запустил на ней pseudo3D шутер от первого лица, змейку и flappyBird, только с вектозавром. Приятного просмотра!

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

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

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

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

Я решил использовать высокоуровневую библиотеку adafruit, которая с помощью интерфейса I2C осуществляет взаимодействие с пикселями на экране.

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

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

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

3-я игра - Flappy Bird. Она достаточно простая в реализации, но очень интересная и сложная в игровом процессе.

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

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

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

Для питания я решил использовать небольшие аккумуляторы 3.7 V. Я буду использовать два таких аккумулятора, подключенных последовательно.

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

Моя любимая игра, безусловно, «flappyZavr». В нее не надоедает играть и она постоянно держит в напряжении. В змейку я бы, возможно, в будущем добавил возможность изменения уровня сложности, а в 3D игру можно было бы добавить врагов.
Рекомендации по теме
Комментарии
Автор

Отличная работа, по мощности примерно как мой компьютер

teecil
Автор

Вот вы все смеетесь над тем, как он паяет, какие ошибки допускает в речи и в коде.
А он не боится ошибаться и делать неидеально – он просто делает.
Из-за перфекционизма и страха сделать что-то не так все мы стоим на месте, а такие люди, как Иван, идут вперед и совершенствуются: у него же столько учителей (уже 111 тысяч), которые указывают ему на недостатки.
Я горжусь тобой, братишка!
Спасибо за твои видео!

sonialine
Автор

0:47 Я ЧУТЬ НЕ УМЕР, КОГДА УВИДЕЛ ЧТО В СЛОТЫ ДЛЯ ВИДЕОКАРТЫ ПИХАЮТ ОПЕРАТИВКУ...

CHIPUZIK
Автор

ты вообще молоток, проделал такую работу))) Хоть и примитивную в плане уровня современных виртуальных игр)))Но дальше больше! Всегда с чего то нужно начинать!

clubcapper
Автор

Утечка памяти: *происходит*
Python программисты: *что это за унга бунга*

egoros
Автор

Никто
абсолютно никто
Майнеры в 1980:

sonnikofan
Автор

Это же ты, чувак)) Ты сделал одно из лучших видео на Ютубе. Тот, где ты создаёшь свой компьютер. Это была работа высшей пробы. И в этом видео ты очень хорош, так держать))

sulimaliev
Автор

Можешь перейти на другие более производительные платы - блю пилл, блэк пилл, esp32. Будет все летать.
У STM32 есть контроллер DMA, который позволит не загружать ядро на обмен по SPI.
Также можно потестить экранчики с I2C, ну и совсем другое дело - FSMC

sledleo
Автор

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

lionlinux
Автор

0:53 отлично теперь я понял как поставить оперативную память. Пойду соберу теперь ПК

bohdan
Автор

это просто бесподобный контент, в тебе определённо живёт творец

rubdvnw
Автор

здорово получилось! Очень интересно рассказываешь. Желаю успехов тебе во всех твоих начинаниях

bakla_zhan
Автор

Все круто, но несколько самых важных моментов, где по моему мнению ты был не прав
1:27 - не там никого ядра - там машинные коды процом исполняются напрямую, а загружается программа с помощью загрузчика, который перезаписывает память полученными из usb.
7:49 - причем тут микроконтроллеры? Платы разные, да, но мк отличаются только корпусом - память, энергопотребление и частота там абсолютно одинаковы, да и вообще модель одна - atmge328p, только кусок пластика вокруг кристалла другой
8:17 - это не лайфхак, это вредный совет - паяльная кислота и электроника НЕСОВМЕСТИМЫ, паяльной кислотой только тазы и ведра паять можно, медь она превратит в оксид меди(ржавчину), и пайка отвалится, флюса в припое хватило бы

9:37 - скорее всего для arduino nano где то другие тайминги в i2c, дело не в скорости выполнения
13:40, 14:14 - оператива кончилась, однозначно.
не замечание 17:27 - когда нибудь попробуй фоторезист
19:36 - надеюсь ты делал это в респираторе - стеклопыль сделает из твоих легких кусок говно
20:24 - контакты arduino в миллиметре от алюминия это топ
21:01 - наверно имел ввиду фрезерный
23:31 - акум без защиты? а заряжать его как? разрядится в ноль один раз и все, емкость упадет раза в два
Надеюсь, тот кто это прочтиал не повторит тех же ошибок. В топ пожалуйста, что бы vectozavr увидел
UPD: Что бы зарядать и защищать акум юзай tp4056 с защитой о переразряда, всех кто говорит, что ардуино - шляпа не слушай - скорость и удобство разработки на высоте, однако если хочешь углубиться посмотри в сторону контроллеров уровня attiny13 и программирования с помощью makefile'а или можешь посмотреть в сторону мощных stm32 на которых можно нормальные микроконсоли. Так же если интересно можете чекнуть мой канал)

vaschannel
Автор

Только "перманентный" это не временный, а постоянный )
Офигеть. "Одноразовые" аккумы. Реальное расточительство.

AlexStraga
Автор

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

ffegjyk
Автор

На 8-bit-ной игровой видеоприставке "Dendy", была такая игра "FBI police", где была реализована в (некоторых сценах) имитация трёхмерной графики, на очень примитивном уровне, но смотрелось просто потресающе аж дух захватывало!

yeqnord
Автор

Невероятно. Очень вдохновляют ваши проекты. Безусловно, один из моих самых любимых каналов на ютубе. Спасибо! Светлых вам идей и справедливой реализации :)

dima_upgrade
Автор

не совсем только понял, зачем было при сверлении портить хорошую доску из бамбука?

jmlfysb
Автор

Надо было тебе ещё Doom туда поставить и тогда он бы точно на всем запустился.
Крутая приставка получилась кстати)

creppernoname
Автор

Vectozavr: создаёт консоль с игрой
консоль с игрой: слава Украине

LadOstrov