Как будто бы все это работало раньше, когда это был мой основной спек, но сразу скажу что материнку купил на авито, проц видяха и бп у меня были остальное нулевое, докупил.
В чем суть проблемы то, включаю комп, все светится, крутится, спикер не подает сигнала, пробовал оперативу местами менять и слоты, на одной оперативе запускал, одно и то же. Грешу на цепь питания 24 пин, но до конца не хочется верить что это сломанная материнка. Прошу советов
Коротко - как я месяц делал игровую платформу в виде куба с нуля (и еще не доделал), побил некоторые рекорды по производительности дисплеев и был не рад исправлять ошибки проводками.
В июле мне предложили сделать светящийся кубик для игр — типа D16, чтобы светилась выпавшая грань. Заказчик испарился, но мысль засела в голове. Подумал — а что если не просто свет, а поставить дисплеи на каждую грань и упростить до D6? И вообще сделать из этого маленькую тактильную игрововую консоль. Такого точно никто не делал. И понеслось…
Первый концепт кубика
За месяц из простой идеи пока что получился полуготовый куб с проводками, но с рабочими основыми системами. Расскажу как это было — со всеми техническими проблемами и небольшими победами.
Проектирование и осознание масштаба
30 июля — день когда всё началось. Начал прикидывать техническую сторону: ESP32, акселерометр, 6 дисплеев по 240x240 пикселей. В теории выглядит просто — процессор, акселерометр, питание, экраны. На практике оказалось иначе.
31 июля — 1 августа — начало 3D проектирования. Проект зацепил серьёзно. 15 лет назад поступал в универ на программиста, чтобы делать компьютерные игры. И как то не заладилось. И вот через 10 лет выпадает шанс воплотить давнюю мечту.
Одна из первых итераций 3D модели
Обожаю этот ИИ рендер
Первые версии материнской платы для куба
Борьба с ограничениями железа
2 августа — первое столкновение с реальностью. Для нормальной картинки нужно хотя бы 25-30 FPS, но по предварительным расчетам упирался то в память, то в скорость передачи данных. Изначально планировал готовый модуль ESP32, но для буфера кадров памяти у него вообще нет.
Вместо линейника на плате появился DC-DC преобразователь и проц переехал на заднюю сторону платы
В итоге полдня переделывал плату, чтобы поставить ESP32-S3 с 8МБ PSRAM - оперативки (наш «огромный» буфер для кадров). Опять по старинке придется припаивать голый проц на плату.. Но зато какая мощь, во всех прошлых проектах такой памяти вообще не было.
3 августа - день, когда спроектировал все платы для заказа на заводе. Небольшой спойлер - наделал всяких ошибок подключения.. Ну хотя бы не критичных, не пришлось выкидывать платы в ведро.
Как выглядит кубик внутри. Только тут не показаны батареи.
В тот день открыл для себя возможности ИИ для кодинга и продумывания архитектуры проекта. Конечно, нейросети могут выдавать тысячи строк кода (как мне тогда и выдало).
Но лучше код делать по модулям и разбираться в том, что ИИ наваял. Половина кода может работать вообще не так, как хотелось.
Главное при должном понимании и подходе, ИИ очень помогает и ускоряет разработку ПО.
4 августа — а что если использовать ИИ не только для генерации кода, но и для картинок персонажей? Да запросто))) Для игр уровня железа этого куба, 2D картинки вполне будут работать.
Не самая лучшая идея просить ИИ сгенерить сразу несколько персонажей
А вот одного персонажа в определенном стиле и в 2х ракурсах - вообще отлично.
Первые тесты и корпус
5 августа — напечатал первый корпус для куба. Рамки вокруг экранов получились большие, но таков путь — железо диктует размеры.
Зато скругленные грани дают приятную тактильность и куб удобно крутить.
Реально очень удобно лежит в руке. Несколько дней с ним ходил, крутил в руках.
7 августа — начал программировать игровую архитектуру. Создание игр оказалось не таким как представлял. На кубик приходится писать вообще всё с нуля — ядро системы, драйверы, игровую логику. Хорошо что в универе учили основам системного программирования.
Еще один ИИ рендер =)
Сразу замахнулся на "локомотивные" игры — Diablo, стратегии. Но быстро понял реальность: маленькие экраны требуют переосмысления классических жанров. Disciples может с натяжкой и упрощением получится, а вот Героев 3 портировать скорее всего не получится — слишком много мелких юнитов на экране.
8-9 августа — чисто дни вайб-кодинга. Создать игровые движки с нуля это конечно идея.. Хотя бы нейросети помогают в понимании всех систем. Но по крайней мере основную архитектуру составил. В одиночку бы такое делал не день, а с месяц минимум.
Основная буйная идея - собирать игры как LEGO. Сделать несколько модульных систем, которые будут брать свои данные из специальных json-файлов.
А чтобы не писать вручную технические json-файлы, можно закидывать описание в ИИ, чтобы он подогнал всё под определенный формат.
И кажется, что если такая система будет работать - можно будет собирать игры разных жанров из базовых модулей достаточно быстро и просто.
Небольшое отступление. По образованию я ж айтишник (окончил факультет ПМиК). Нас учили именно программировать ядро систем. То есть все эти внутренние алгоритмы, ассемблер, математика (в один год было 5 разных направлений математики).
Но самое неприятное в программировании ядра - это скука при работе. Не видишь какого-то визуального явного подтверждения (обратной связи) по тому, что прогишь и кажется что занимаешься какими то бесполезными буковками на экране.
С этим я столкнулся в начале разработки прошивки куба. И сразу решил откопать какой нибудь экранчик, чтобы уже видеть хоть какие то картинки при работе.
Тестовый стенд и первые визуальные результаты
12-14 августа — вообще при любой работе стараюсь не изобретать велосипед.
Откопав старенькую плату от фризлайт лампы, подцепил к ней экран. Найдя в инете библиотеку графики EmberGL для ESP32, решил попробовать поработать с готовым решением.
Библиотека как старый жигуль из гаража - запустилась не с первого раза (особенно учитывая что её не обновляли уже 3 года). Пару часов пинания кода с помощью ИИ, и получился первый прямоугольник с градиентом и потом 3D. Там был пример с головой обезьяны на 4000 полигонов. И оно даже работало.. Но это прям максимум для ESP32. И причем без текстурирования.
Красивое 3D, но бесполезное..
Интересное открытие: операции с float выполняются процессором с той же или даже большей скоростью, чем с обычными целыми числами.
15-16 августа — работал над системой загрузки картинок и анимаций.
Идея: генерим картинку с персонажем. Делаем из него видео. Видео разбиваем на кадры, складываем на флешку, потом показываем по очереди.
Разбивка и удаление лишних кадров
Первый тест анимации на OpenGL как то оказался медленным..
Настоящее железо и первые результаты
17-19 августа — приехали экраны и тот самый проц с памятью.
Решил отойти от EmberGL в сторону простого самописного драйвера. То инициализация не та, то цвета неправильные, то порядок бит в той библиотеке.
Экран завелся не с первого раза. Зато какой прирост производительности новый проц дал с оптимизированным кодом чтения с памяти (+SPI 4line) и работе с PSRAM. Давайте посмотрим на эволюцию производительности нашего козлика из Diablo.
Обычный проц и медленное чтение с карты
Новый проц и быстрое чтение кадров с карты памяти
Реактивый козел))))) Новый проц и показ кадров из PSRAM
По замерам проца, последние видео это 20 и 90FPS соответственно. Убойная производительность конечно. Видел в инете тесты, там такие скорости обновления не выжимали в принципе)))
20-21 августа — раз у нас такой быстрый показ кадров, почему бы не показать что-то более интересное. Как насчет упрощенной физики жидкости и показа кино (только без звука)?
С последним пришлось немного помучаться. Обычный MP4 проц открыть не может, но с последовательностью BMP565 вполне справляется.
В статье пропускаю все технические сложности и работу с программированием. Главное же результат и какие то забавные моменты.
Например, на этапе с кино впустую потратил 4 часа, пытаясь разобраться в ошибке чтения файлов. А оказывается надо было поправить всего одну циферку при инициализации.
Cамое печальное, raw bmp весит прям очень много. На минутный ролик надо около 110мб.
Конечно можно заметить, что кино выглядит немного пиксельным и с провалами в тенях. Но это особенности сжатия исходного RGB888 в RGB565 для экрана. У последнего формата данных меньше градаций цветов + сжатие jpg сразу видно.
Платы, сборка и фиаско
26-29 августа — мне ранее говорили что видимые винты крепления корпуса не очень красиво и занялся этой задачей.
Решено сделать внутрянку куба на несущей раме, чтобы потом всё вставить в корпус и закрыть крышкой.
С первого раза конечно не получилось. Защелки надо печатать боком, чтобы нагрузка была поперек линий печати. Если гнуть по линии спекания слоев, оно просто отламывается.
Мой первый корпус на защелках
И корпус то это достаточно просто.. Напечатал и пробуй.
А что если читать кино не как bmp, а mjpg. Около дня ковыряния кода, и оно получилось. И главное весит копейки, около 6МБ на минуту, а не 110МБ+. И хитрый трюк - накидывать шум и легкое размытие на кадры, и так получается меньше пиксельности.
30 августа — наконец-то пришли подарки от китайского деда мороза))) Ну то есть новые платы.
Вот такое почти готовое приезжает с Китая. Заводская пайка, все дела =)
На память старый тестовый модуль и новая плата
Конечно сразу взялся за пайку проца и разъемов. Замучился конечно из-за двухсторонней пайки..
Главное, что процессор легко прошивается на новой плате, SD-карта работает. Выжал с карты 10 МБ/с вместо 8.3. Это ещё плюс 5-7 FPS для видео.
31 августа — ИНЖЕНЕРНОЕ ФИАСКО. Когда сказал вслух, что "новая разработка — это исправление недочётов" - накаркал проблему.
Колхозный проводной ад
Из-за большого количества подключённых пинов к процессору упустил, что надо ещё подключать линии включения экранов. Результат: ПРОВОДКИ, которые я ненавижу. Плата для меня — инженерная картина, где всё должно быть аккуратно. А тут проводки.. Но главное что работает. И всё исправляется хотя бы так, а не заказом новой платы и ожидания в месяц.
И под конец месяца поставил акселерометр, обновил прошивку и оно работает.
ЧТО ПОЛУЧИЛОСЬ ЗА АВГУСТ
Основная плата работает (проц, аксель, чтение с карты, дисплей)
Проводки вместо красивой разводки
Куб в полуразобранном состоянии
Игр пока нет, только тесты
Заложена основа для будущей программной системы
Корпус собирается на защелках
Открытия:
ИИ кардинально ускоряет разработку ПО
Железо и чужие библиотеки всегда преподносят сюрпризы
Проверять разводку плат три раза, а не один
Впереди ещё месяцы работы над прошивкой, играми и отладкой. Но основа заложена: железо работает, производительность неплохая, архитектура более менее продумана.
Предлагайте свои идеи, что хотели бы видеть из игр/приложений в кубике. У меня уже в планах змейка 6D, визуальная алхимия частиц, какие нибудь квесты. Очень хочется сделать мини Diablo / GTA2. И конечно что то простое точно будет - выдать число, или предсказание как magic 8-ball.
Также в далеком будущем есть планы перейти на ESP32-P4. Вот там прям вычислительная машина (для своего размера и потребления энергии). И возможно поставить звук, вибрацию, часы реального времени, экраны побольше..
А этом кубике еще на один проводок планируется пищалка - пассивный зуммер =)
И кстати, в моем TG-канале новые новости о проекте почти каждый день =)
1. материнская плата asrock x370 sli killer и процессор r5 1600 (rev. 1 2017) отлично работает и запускается
2. материнская плата ASUS prime b350 plus и процессор r5 3600 (rev. 2 2019) отлично работает и запускается
И ТАК ВЗБРЕЛО МНЕ В ГОЛОВУ ПОМЕНЯТЬ ПРОЦЕССОРЫ МЕСТАМИ
И получается что ни одна из сборок не запускается, то есть из ДВУХ рабочих компьютеров я получил страйк из НЕрабочих компьютеров на свою голову.
Вопрос как это решать пришел давольно быстро, после некоторых танцев со сбросом биоса и перебросом оперативной памяти, необходимо шить биос! В сборке номер 1. появляется камень мощнее и новее чем тот что стоял до этого 1600->3600 следовательно биос нужно обновить, с этим проблем нет никаких просто, ставим обратно 1600 накатываем прошивку, грузимся с флешки, обновляемся и меняем камень на новый 3600, и все прекрасно работает!
А вот со сборкой номер 2. все сложнее оказалось, просто так через 3zflash в уефи биоса нельзя откатываться в прошивках, полез на сайт чтобы найти прошивку которая мне нужна под процессор, оказалось что она аж на 3 года старше той что стоит сейчас, НО по аналогии со сборкой номер 1. я предположил что на последнем билде биоса на сборке номер 2. запуститься камень 1600, соответственно что я делаю, втыкаю в сборку номер 2 камень 3600 чтобы после обновления поменять его на 1600, даунгрейд по железу осуществить, с 3600->1600, накатываю последнюю прошивку от 24 года, комп на 3600 запускается, а на 1600 не запускается.
И так вопрос, как откатить биос на материнской плате асус до прошивки от 2017 года без использования программатора?
Кто подскажет, где можно купить отдельное крепление для кулера в виде крючка вот такого, сокета Amd am4 или am5 , может есть какие нибудь наборы где они есть или отдельно купить можно?
Обязан ли продавец возвращать деньги за отправленный товар? Отправил материнскую плату через авито доставку с несколькими отломанными ножками, из-за этой неисправности лично у меня не работал 2 канал памяти. Эту информацию я указал в карточке продажи . может ли получатель потребовать деньги если она совсем у него не будет работать? Покупатель не просил видео доказательства работоспособности.