Как Мы Делали Настольную Игру С Пультом

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

Сегодня я хочу рассказать вам о том, как мы с другом решили создать свою настольную игру, но не простую, а "умный" .



Как мы делали настольную игру с пультом

Вторую часть можно найти здесь: связь Внимание! Дальше много фотографий.

Наша игра — настольная игра.

МоБА , в которой каждый игрок управляет своим уникальным героем, со своими характеристиками и способностями.

На данный момент у нас есть первая версия прототипа, сделанная из Arduino и фанеры.

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

Игрок может наблюдать и управлять своим героем только со своего мобильного телефона.

Несколько гифок с геймплеем

Как мы делали настольную игру с пультом



Как мы делали настольную игру с пультом



Как мы делали настольную игру с пультом



Как мы делали настольную игру с пультом



Что должна уметь «умная» игра:

Перемещайте фигурки по полю самостоятельно.

Выделите игровое поле (целиком или отдельным блоком) любым цветом.

Покажите игроку, что он может/не может/должен делать, тем самым делая правила игры прозрачными.

Обменивайтесь данными со смартфоном каждого игрока.

Вот как выглядит наша первая рабочая сборка:

Как мы делали настольную игру с пультом



Как возникла идея

Однажды я купил себе доску «Ужас Аркхэма».

После магазина я сразу пошел к друзьям играть.

Однако, к сожалению, никто из нас раньше в нее не играл, и пройти 26 страниц правил нам не удалось.

Именно это натолкнуло меня на мысль, что было бы здорово сделать настольную игру, которая бы самостоятельно следила за выполнением правил, вычисляла необходимые значения (без кубиков, линеек и исписанного листа бумаги) и т.д. Одному моему другу идея очень понравилась, и он согласился поучаствовать.



Выполнение

У нас не было вообще никакого опыта разработки аппаратных устройств (никто из нас даже не держал Arduino в руках), а наш опыт программирования ограничивался университетом и разработкой небольших приложений для Android. Однако это только добавило интереса и желания.

Обсудив все детали, мы пришли к следующему: Фигурки перемещаются по полю с помощью CoreXY, на каретке которого находится электромагнит на 12В.

За движение отвечают два шаговых двигателя Nema 17 17HS4401 и драйверы DRV8825. Для освещения поля используется пиксельно-адресуемая светодиодная лента WS2812b. За управление отвечает Arduino Mega 2560, на которой установлен разработанный нами шилд. За передачу данных между игрой и смартфонами игроков отвечают 4 модуля HM10 BLE. Все это питается от блока питания 12В мощностью 120Вт и DC-DC преобразователя 5В.

На стороне смартфона есть мобильное приложение (на данный момент для Android), которое по сути является ядром всей игры.

От него БЛЕ Есть команды на движение, включение/выключение магнита и светодиодов.



Механика

Мы пришли к CoreXY не сразу.

В самом начале при реализации кинематики мы вдохновлялись различными руководствами по сборке 3D-принтеров своими руками.

Ниже фото нашей самой первой попытки:

Как мы делали настольную игру с пультом

Для создания компонентов мы купили дешевый бывший в употреблении 3D-принтер, на котором уже напечатали 6200 метров пластика, и он отлично работает по сей день.

Однако этот вариант имел массу недостатков: Сборка была мучительной – малейшая неточность положения валов – каретка останавливалась.

Даже один неисправный подшипник означает, что каретка перестанет двигаться.

Высота всей конструкции слишком велика.

Нам не понравилась идея иметь мотор на движущейся части.

Однажды мы наткнулись на статью, описывающую кинематику CoreXY, и решили остановить свой выбор на ней.

У него есть оба преимущества: Сборка проста, т. к.

все «кастомные» детали создаются на ЧПУ или 3D-принтере.

Небольшая высота конструкции, которая ограничена высотой шагового двигателя.

Шаговые двигатели являются стационарными.

Итак, недостатки: Большие размеры.

Из картинки с 3D-моделью видно, что общая площадь значительно больше площади рабочей поверхности.

Длинные ремни, которые нужно успеть затянуть.

Конкретный способ перемещения каретки, о котором я расскажу ниже.

Чтобы максимально избежать всех проблем, мы сделали нашу модель в Tinkercad, после чего приступили к заказу и печати компонентов.



Как мы делали настольную игру с пультом

На данный момент игра имеет следующие физические параметры: Ширина: 780 мм Длина: 700 мм Высота: 85 мм Игровая площадка: квадрат со стороной 462 мм.

Основа: фанера толщиной 12 мм, с вырезанными на станке ЧПУ отверстиями для крепления деталей и двигателей.



Как мы делали настольную игру с пультом

Когда модель была готова, она казалась миниатюрной и легкой.

Однако в жизни она очень большая и тяжелая.

Теперь мы понимаем, что весь дизайн необходимо оптимизировать: Замените фанеру более легким и тонким материалом.

Длина и ширина внешнего контура не должны сильно превышать размеры игрового поля (возможно, придется изменить кинематику).

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

Также желательно смазать валы.

Мы использовали обычное масло для швейных машин.

В качестве линейных подшипников мы поначалу использовали LM8UU дяди Ляо, но часто попадались бракованные экземпляры, которые расшатывались, моментально разваливались и царапали вал.

Поэтому мы решили поменять их на графитовые втулки.

Есть некоторые особенности в движении с использованием кинематики CoreXY. Итак, если запустить только 1 шаговый двигатель, каретка будет двигаться по диагонали.

Для горизонтального перемещения необходимо вращать двигатели в одном направлении.

Для вертикали – в противоположных направлениях.

Для расчета расстояния по X и Y необходимо использовать следующие формулы:

Как мы делали настольную игру с пультом



Игровая площадка

Для освещения игрового поля мы выбрали пиксельно-адресуемую светодиодную ленту WS2812b, которая идеально подходит для наших целей.

WS2812b — это RGB-светодиод в корпусе SMD5050 с 4 контактами: VDD, VSS, DIN и DOUT. Какие требования были к сфере: Небольшая толщина, чтобы электромагнит мог утащить фигурку за собой.

Гладкая поверхность, по которой скольжение будет осуществляться без проблем.

В результате игровое поле условно состоит из 3-х частей: подложки, к которой крепится светодиодная лента, самой ленты и поверхностного покрытия, по которому скользят фигурки.

Основная проблема, с которой мы столкнулись, заключалась в том, из чего сделать подложку? На данный момент мы используем оргстекло, в котором на ЧПУ вырезаны углубления для ленты глубиной 2 мм (высота ленты и светодиода).

Естественно, этот лист полностью потерял хоть какую-то жесткость и сильно прогибается по линиям разреза.

Поэтому мы просто приклеили подложку к поверхности.

Возможно, в следующей версии мы заменим оргстекло на монолитный поликарбонат.

Как мы делали настольную игру с пультом

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

В итоге, проведя вечер с паяльником, мы получили следующее:

Как мы делали настольную игру с пультом

Существуют ленты с разной плотностью светодиодов.

Обычно это: 144, 90, 60, 30 за метр.

Мы остановились на ленте с 30 светодиодами на метр, потому что.

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

Стоит отметить, что светодиоды соединены последовательно.

Поэтому если у вас перегорит первый светодиод, остальные работать не будут. Наше поле имеет размер 14*14 ячеек, всего 196 пикселей.

Лента работает с напряжением 5В.

Один пиксель в полоске состоит из 3-х светодиодов – R, G, B, каждый из которых при максимальной яркости потребляет ток 20 мА.

Нетрудно подсчитать, что если мы хотим осветить белым все 196 пикселей, то нам потребуется почти 12 А… Найти компактный блок питания или DC-DC преобразователь, способный выдавать такой ток при напряжении 5В, весьма проблематично.

Поэтому мы решили, что в нашей игре поле не должно быть заполнено более чем на 60%, и мы не используем белый/серый (цвет, при котором загораются все 3 светодиода), т.е.

максимум 40 мА на 1 пиксель.

В результате получаем, что стол не должен потреблять более 5 А.

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

Но подключаем к полоске с одной стороны, через каждые 100 светодиодов, и видимых перепадов напряжения не наблюдаем.



Ээлектроника

Все части игры управляются с помощью Arduino Mega 2560. Он имеет следующие функции: Выполним калибровку, в результате которой узнаем, сколько шагов должен сделать шаговый двигатель, чтобы преодолеть 1 ячейку.

Получайте команды и данные из мобильного приложения и отправляйте статус выполнения обратно через BLE. Переместите карету из точки А в точку Б по координатам из данных, полученных из мобильного приложения.

Включите/выключите электромагнит. Подсветите определенный пиксель на столе определенным цветом.

Номер и цвет пикселя передаются мобильным приложением.

Первый прототип был собран на макете и включал в себя следующие компоненты: Ардуино Мега 2560; 2 драйвера шаговых двигателей DRV8825; 4 концевых выключателя; BLE-модуль ХМ-10; Транзистор IRF530N – для управления электромагнитом; БП MeanWell 12В 10А; DC-DC преобразователь MeanWell понижающий с 12В до 5В, 10А;

Как мы делали настольную игру с пультом

Убедившись, что все работает, мы решили, что нужно сделать собственный шилд для Arduino Mega и избавиться наконец от крепежа и кучи проводов.

Из-за отсутствия опыта разработки печатных плат мы решили доверить эту задачу профессионалу.

В итоге один из наших друзей полностью спроектировал плату и установил все компоненты.

Результат можно увидеть ниже:

Как мы делали настольную игру с пультом

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

Вы можете увидеть принципиальную схему здесь .



Мобильное приложение

Мобильное приложение — это «мозг» нашей игры.

Именно приложение содержит всю информацию о состоянии игры, персонажах и т. д. В качестве платформы разработки был выбран Android; основным требованием была поддержка BLE (поскольку в будущем планируется добавить версию игры для iOS).

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

Однако, как обычно, всё пошло не так, как планировалось.



Как мы делали настольную игру с пультом

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

Основной функционал текущего приложения: Найдите устройства BLE, определите подходящее устройство для подключения.

Идентификация включает в себя «рукопожатие» — телефон должен убедиться, что подключенное устройство действительно является Bluetooth-модулем для настольной игры, а не телевизором.

Выбор игроков (минимум 2) из доступных героев, которых на данный момент 4. Предоставление всей необходимой информации текущему игроку: о доступных способностях, об их кулдауны , о противниках и т.д. Совершение ходов – каждый игрок управляет своими ходами с помощью «джойстика», с помощью которого он выбирает клетки для использования способностей, перемещения и т. д. Чувства прекрасного у нас нет, как и у наших знакомых UX/UI дизайнеров, поэтому дизайн мы делали сами, как могли.

В будущем мы планируем добавить лор, описание, а также ПВЕ -режим, в котором игроки будут сражаться с боссами на арене.



Результат

На данный момент у нас есть полноценный прототип, в который можно играть (пусть и на 1 смартфоне), и на котором мы дорабатываем правила и механику игры.

На его создание мы потратили около года, работая по выходным и в редкие вечера, когда у нас было свободное время.

У нас амбициозный план: найти единомышленников, доработать прототип, полностью «вылизать» баланс и правила игры и попытаться достичь Кикстартер , потому что это будет фантастический опыт. Если вам интересно, в следующей статье я подробнее расскажу о мобильном приложении, самой игре, как мы делали наши миниатюры и что из этого получилось.

Теги: #Разработка игр #Android #Сделай сам или сделай сам #Разработка мобильных приложений #arduino #Разработка на Arduino

Вместе с данным постом часто просматривают: