- PVSM.RU - https://www.pvsm.ru -
Настольные игры — одно из древнейших развлечений, которое собирает вокруг себя друзей, семьи и просто любителей живого общения и эмоций во время игры.
Сегодня я хочу рассказать вам о том, как мы с другом решили создать свою настольную игру, но не простую, а “умную”.

Внимание! Много картинок дальше.
Наша игра — настольная MoBA, в которой каждый из игроков управляет своим уникальным героем, со своими характеристиками и способностями. На данный момент у нас есть первая версия прототипа, сделанная из Arduino и фанеры.
Основная фишка нашей игры — нет необходимости трогать фигуры во время игры, игра должна сама перемещать их и отображать все применяемые способности. Игроку остается только наблюдать и управлять своим героем с мобильного телефона.


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

Как-то я купил себе настолку “Ужасы Аркхема”. После магазина, сразу отправился к друзьям, чтобы поиграть. Однако, к сожалению, никто из нас не играл в нее до этого, а осилить 26 страниц правил мы не смогли.
Именно это навело меня на мысль, что было бы здорово сделать настольную игру, которая самостоятельно будет отслеживать выполнение правил, рассчитывать необходимые значения (без кубиков, линеек и исписанного листа бумаги) и т.д.
Одному из моих друзей идея очень понравилась, и он согласился поучаствовать.
Опыта в разработке hardware-устройств у нас не было вообще (никто из нас даже Arduino в руках не держал), а опыт программирования ограничивался универом и разработкой небольших приложений под Android. Однако, это только прибавило интереса и желания.
После обсуждения всех деталей мы пришли к следующему:
К CoreXY мы пришли не сразу. В самом начале, при реализации кинематики, мы вдохновлялись различными DIY-гайдами по сборке 3D-принтеров.
Ниже фотография нашей самой первой попытки:

Для создания комплектующих мы прикупили дешевый, Б/У 3D-принтер, на котором отпечатали уже 6200 метров пластика и он отлично работает и по сей день.
Однако данный вариант имел кучу недостатков:
В один прекрасный момент мы наткнулись на статью, описывающую кинематику CoreXY и решили выбрать именно ее. У нее есть как плюсы:
Так и минусы:
Чтобы по максимуму избежать всех проблем, мы сделали нашу модель в Tinkercad, после чего уже начали заказывать и печатать комплектующие.

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

Когда модель была готова она казалась миниатюрной и легкой… Однако в живую она очень большая и тяжелая. Сейчас мы понимаем, что всю конструкцию надо оптимизировать:
Ниже я опишу особенности, с которыми мы столкнулись при сборке:
Для расчета расстояния по 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. На нее возложены следующие функции:
Первый прототип был собран на макетной плате и включал в себя следующие компоненты:

После того, как мы убедились, что все работает, мы решили, что надо изготовить свой shield для Arduino Mega и наконец избавиться от монтажки и вороха проводов.
В связи с отсутствие опыта в разработке ПП, мы решили поручить это дело профессионалу. В результате один наш знакомый полностью разработал плату и произвел монтаж всех компонент. Результате можно увидеть ниже:

Судить о качестве исполнения не могу из-за недостатка опыта, но плата работает без нареканий. Принципиальную схему можно посмотреть тут [1].
Мобильное приложение – «мозг» нашей игры. Именно приложение содержит в себе всю информацию о состоянии игры, персонажах и т.д. В качестве платформы для разработку был выбран Anroid, основное требование — поддержка BLE (так как в дальнейшем планируется добавление версии игры для iOS).
В отличии от электроники – у нас был небольшой опыт в разработке мобильных приложений, поэтому мы планировали завершить этот этап достаточно быстро. Однако, как обычно, все получилось не так, как планировалось.

Мы достаточно быстро поняли, что по факту нам придется писать полноценную мобильную игру, в которой средством отображения информации является не только экран мобильного телефона, но и поверхность настольной игры.
Основной функционал текущего приложения:
Чувства прекрасного у нас нет, также как и знакомых UX/UI-дизайнеров, поэтому дизайн делали сами, как могли. В будущем мы планируем добавить лор, описание, а также PVE-режим, в котором игроки будут сражаться против боссов на арене.
На данный момент у нас есть полностью работоспособный прототип, в который можно поиграть (хоть и на 1 смартфоне), и на котором мы полируем правила и механики игры. На его создание мы потратили около года, работая по выходным и редкими вечерами, когда было свободное время.
План у нас амбициозный: найти единомышленников, доработать прототип, полностью “вылизать” баланс и правила игры и попробовать выйти на Kickstarter, т.к. это будет просто фантастический опыт.
Если будет интересно, то в следующей статье подробнее расскажу про мобильное приложение, саму игру, как мы делали наши миниатюры и что из этого вышло.
Автор: Артур Стоянов
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/android/294998
Ссылки в тексте:
[1] тут: https://drive.google.com/file/d/1JvkRnWktiraghZn6E__7R14AK7k-Y0-w/view?usp=sharing
[2] Источник: https://habr.com/post/425629/?utm_source=habrahabr&utm_medium=rss&utm_campaign=425629
Нажмите здесь для печати.