Первых несколько этапов игры уже реализовано.
Это формирование произвольного случайного лабиринта, вывод лабиринта на экран и произвольное движение по нему.
Джойстиком можно произвольно перемещать вид, а нажатие на джойстик строит новый случайный лабиринт.
Лабиринт создается по этому алгоритму. Получается быстро и не накладно по ресурсам.
Перед тем как начать что-то разрабатывать, нужно убедится что результат окажется такой как ты представлял, иначе можно потратить много времени впустую.
Для нашего случая, когда примерно известен геймплей, неизвестным остается визуальная составляющая — как это все будет выглядеть на дисплее. Для тестов я создал набор спрайтов и просто их проиграл на дисплее — получается неплохо!
Приступаем к разработке.
Эта статья будет описывать схему устройства, его электронные компоненты и внешний вид. Все что буду менять в конструкции — будет описано здесь (для этого буду временно поднимать статью в топ). В комментариях можно будет поучаствовать в обсуждении или помочь советом.
1 Схема
В этой игре решил следовать принципу минимализма и схема первая в этом поучаствует:
Проще, наверное, уже некуда!
Сначала решил подключать дисплей к аппаратному SPI (можно работать на максимальной для дисплея скорости), но потом передумал и организовал программный SPI (это даст, в случае чего, запас по быстродействию). Более того, дабы вообще избавится от проводов на макетке, дисплей полностью подключен к выводам Ардуины. Тоже касается и джойстика. Эта конструкция требует всего 4 модуля: макетка, дисплей, джойстик и Ардуина. Никаких проводов!
Касательно дисплея — до конца разработки он останется без изменений (после, можно будет делать модификации и для других дисплеев). А вот джойстик можно заменить на кнопки.
2 Корпус (пока только идеи)
В процессе разработки корпус, естественно, не нужен. Все собрано на макетке. Позже можно подумать и о корпусе, удобным для ношения.
Поговорим о модулях, из которых будет состоять наша игра.
Их будет немного.
Кстати, все модули для этого устройства мне предоставил магазин DiyLab.
И если все получится с игрой, то можно будет эти модули купить прямо набором с уже прошитой Ардуиной.
Последнее время очень не хватает времени на блог и устройства для для него 🙁 — много работы. Но идеи новых устройств постоянно возникают в голове и последняя из них меня очень «зацепила». Поэтому, даже несмотря на отсутствие времени и еще незаконченные проекты (например, AAL — который хоть и на завершающей стадии, но никак не дождется чтобы его доделали), решил начать еще один интересный и большой (в планах) проект — игра на AVR-микроконтроллере. Идея не новая и подобных проектов в сети очень много — так что первопроходцем стать не получится :), но это мне близко по причине любви к Roguelike играм (еще их называют «Рогаликами»).
Мой любимый рогалик, в который я играю на смартфоне — это Darkness Survival.
Недавно увидел в Маркете 1-Bit Rogue и понял, что это готовая основа которую можно перенести на AVR.
Скриншот первого уровня
— Игра будет создаваться на базе Arduino и OLED-дисплее 128х64 (позже можно будет переделывать на любые другие дисплеи). Соответственно, повторить устройство будет делом пяти минут (на макетке без пайки и специального программатора). Устройство должно быть небольшим (в идеале, размером позволяющим его использовать как брелок). В качестве органов управления будут кнопки или джойстик. Еще будет небольшой аккумулятор и модуль его зарядки.
— По пошаговый игровой процесс Рогалика идеален для реализации его на платформах с ограниченными ресурсами. Кроме того, игра случайным образом генерирует карты уровней, ловушки, врагов, оружие и т.д. что экономит память, так как нет необходимости хранить эту информацию.
— Предварительные прикидки показывают, что ATmega328 вполне должна справиться как по быстродействию, так и по размерам памяти. Дисплей 128х64 хоть и маловат, но с другой стороны — это внесет в игру дополнительную сложность (а рогалики именно за сложность и непредсказуемость любят), так как не будет виден весь лабиринт сразу и по нему реально придется ходить и искать выход.
Официальное видео игрового процесса (увеличенная его часть) примерно отображает игровое поле дисплея 128х64 — вроде играбельно.
Вот такая идея.
Не обещаю, что это устройство реализуется быстро, но заниматься им мне будет интересно, а значит есть все шансы что я его не брошу 🙂
Как я и обещал ранее, представляю Вашему вниманию устройство для практической демонстрации алгоритмов регулировки цвета RGB-светодиода. Особенностью устройства является то, что можно регулировать цвет светодиода сразу при помощи 2х систем RGB и HSB. Это позволяет «почувствовать» все достоинства и недостатки обоих систем. Дополнительно, бонусом, реализован выход на умный пиксель WS2812B, а это значит, что можно сравнить, как выглядит цвет, сформированный одними и теми-же настройками на разных устройствах отображения!
Напомню, что: Система RGB – это система с тремя регуляторами для каждого из основных цветов
— Red (красный)
— Green (зеленый)
— Blue (синий)
Комбинируя их в разных пропорциях можно получить любой оттенок цвета.
Система HSB более естественно изменяет (задает) параметры цвета, путем установки различных значений базовых параметров:
— Hue (оттенок цвета)
— Saturation (насыщенность)
— Brightness (яркость)
Каждый из трех параметров обоих систем присутствует в устройстве:
Устройство собирается без паяльника и программатора на Ардуине (Pro Mini, Nano, Uno) за пару минут.
Написал небольшую программу создания табличных значений для вставки в исходники. Раньше такие таблицы я создавал или в экселе (сохраняя результирующую таблицу в формате .csv) или писал разовые программки. После очередного написания одной из таких разовых программ решил доделать ее до более приемлемого, для последующего применения, вида. Теперь следующие таблицы я буду делать только в ней! Ну и Вы, тоже, можете ею пользоваться 🙂
В этой статье будут рассмотрены практические механизмы формирования и изменения параметров цвета светодиодного светильника, проблемы при этом возникающие и способы их решения. Все, что описано в статье – это мой опыт работы со светом при реализации проекта AAL.
Как формируется цвет при помощи светодиодов.
Начнем с самого начала — определимся, как формируется цвет, вообще, в жизни (все знают, но на всякий случай …). Любой оттенок цвета формируется при помощи трех основных цветов. В нашем случае, когда цвет формируют источники света (аддитивный синтез) – это: — R red красный — G green зеленый — B blue синий
Комбинируя всего три основных цвета в разных пропорциях можно получить любой оттенок цвета. Следующую картинку, наверное, видел каждый – она и передает суть вышесказанного
С недавнего времени, как Вы заметили, я стал создавать много конструкций на базе Arduino. Причина проста – экономия времени на сборку устройства. Сейчас у меня стало не так много свободного времени, но отказываться от своего хобби я не хочу. Поэтому приходится оптимизировать производство новых устройств :). Больше времени уделять коду, чем пайке. Кроме того, конструкция на Ардуине обладает хорошей повторяемостью – трудно сделать что-то не так, когда для создания конструкции необходимо, всего лишь, соединить готовые платки десятком проводков. Но, несмотря на то, что устройства создаются при помощи Ардуины, программы под них я все равно пишу на Algorithm Builder (родная среда программирования Ардуины очень упрощена и мне много чего в ней не хватает).
С переходом на Ардуину встал вопрос прошивки МК. Можно использовать ISP разъем на Ардуине и прошивать МК прямо с Билдера (плюсом будет внутрисхемная отладка), но грех не использовать уже прошитый в Ардуину загрузчик и прошивать свои программы посредством штатного USB-шнура Ардуины. К сожалению Билдер не может записать прошивку в Ардуину через загрузчик, поэтому приходится использовать сторонние программы – HEX-загрузчики.
Раньше процесс прошивки Ардуины у меня выглядел следующим образом. Предварительно я запускаю один из загрузчиков (о них я писал раньше) и настраиваю его на включенную Ардуину, прописываю путь к хексу создаваемой программы. Дальше в Билдере, после очередной редакции кода, компилирую проект, перехожу к окну загрузчика, жму на нем кнопку «Загрузить» и возвращаюсь в Билдер. Процедура вроде и не сложная, но когда таких циклов в процессе отладки делаешь десятки – это начинает немного надоедать.
Для того чтобы упростить процесс прошивки Ардуины я сделал свой автоматический загрузчик — gcUploader.
В Adjusty Ambient Light я планирую применять только готовые и широко представленные в продаже модули. Это значительно упростит сборку и прошивку устройства. Наладки как таковой вообще не потребуется. Применяя плату Arduino не понадобится и программатора. Ниже привожу перечень того что планируется применить в устройстве (возможны изменения, но, думаю, незначительные)
Первые две позиции – это обязательные для устройства модули.