Как мы это сделали: «умный» настольный футбол

1 комментарий
Как мы это сделали: «умный» настольный футбол

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

Читать далее

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

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

Собрав команду из пяти добровольцев, мы приступили к эксперименту.


Отследить кажды гол

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

Как же это работает?

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

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

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

Вторая нестыковка разрешилась проще — c помощью суперклея, синей изоленты и отвёртки. Поэтому через полчаса все компоненты стола были надежно зафиксированы и готовы к дальнейшим манипуляциям.

Наша команда добровольцев приступила к отшлифовке требований к программной составляющей проекта. Запуск коллективного брэйнсторминга породил ряд идей. Вот самые интересные:

  1. Режим игры можно представить как 1x1 и 2x2.
  2. Распределить уровни игроков.
  3. Получать «ачивки» во время и по итогу игры.
  4. Вести личные и командные рейты.
  5. Звуковое сопровождение игры. 

Дизайн

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

Программная составляющая

Разработку программной составляющей проекта мы разделили на три этапа.

1. Клиентская сторона — Angular.js, Bootstrap.

Реализацию клиентской стороны мы проводили следующим образом:

  • Сделали основные страницы приложения и натянули на них дизайн.
  • Реализовали коммуникацию с сервером через Rest API и Socket.io.

2. Серверная сторона — Node.js, Socket.io, MongoDB.

Серверная сторона разрабатывалась вот так:

  • Сгенерировали структуру проекта.
  • Разработали модель данных.
  • Наладили связь между клиентом и сервером.
  • «Заимплементили» логику по расчёту стастистики.
  • «Заимплементили» логику по получению «ачивок».

3. Связь между Arduino и сервером.

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

На стороне Arduino так

На серверной стороне был реализован следующий контроллер

Принцип работы следующий: слушаем порт, к которому подключён Arduino, и при получении команды «эмитим» то или иное событие. Для запуска и остановки Arduino у нас есть две специальные функции — start and stop, при запуске которых в порт пишется соответствующая команда, которая будет обработана Arduino.

В контроллере игры мы ловим событие и выполняем магию, известную лишь только разработчикам. Вот пример использования.

Кроме того контроллер игры «эмитит» различные события: старт игры, её завершение, получение «ачивок».

Финишная прямая

Далее мы дорабатывали «апгрейд» стола.

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

Мы «заимплементили»:

  1. Подсчёт статистики.
  2. Подсчёт и получение «ачивок» игроком.
  3. Сохранение статистики и «ачивок» в базе.
  4. Нарисовали дизайн для всех «ачивок».

И вот наступил долгожданный тот момент, когда последние строчки кода допилены, а последний шуруп закручен — можно играть!

Итог

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

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

Удачи всем!

Хотите сообщить важную новость? Пишите в Телеграм-бот.

А также подписывайтесь на наш Телеграм-канал.

Горячие события

Gismart Online Meetup
9 декабря

Gismart Online Meetup

Минск

Читайте также

Умерший 15-летний программист может стать первым католическим святым из «миллениалов»
Умерший 15-летний программист может стать первым католическим святым из «миллениалов»
Умерший 15-летний программист может стать первым католическим святым из «миллениалов»
10 ресурсов с лайв-стримами, чтобы отвлечься от этого вот всего
10 ресурсов с лайв-стримами, чтобы отвлечься от этого вот всего
10 ресурсов с лайв-стримами, чтобы отвлечься от этого вот всего
Чтобы сохранить психологическое здоровье и быть в ресурсе, порой нужно хотя бы ненадолго выпадать из новостного и событийного потока. Переключиться поможет подборка с лайв-стримами. 10 мест со всего мира, где установлены «живые» камеры. Можно заниматься созерцанием и релаксировать, совершая виртуальные путешествия. Единственное — не забывайте о разнице во времени. Если речь о природных пейзажах, глубокой ночью вы вряд ли сможете увидеть что-то внятное.  
«С выборами нет связи». Playtika вывозит сотрудников в Турцию
«С выборами нет связи». Playtika вывозит сотрудников в Турцию
«С выборами нет связи». Playtika вывозит сотрудников в Турцию
Геймдев-компания Playtika с крупным центром разработки в Минске планирует коллективный вывоз белорусских сотрудников в Турцию этим летом. Об этом dev.by узнал от сотрудников компании и близких к ним источников. 
27 комментариев
Бот поможет выбрать «непопулярное» место для отдыха в Беларуси
Бот поможет выбрать «непопулярное» место для отдыха в Беларуси
Бот поможет выбрать «непопулярное» место для отдыха в Беларуси
1 комментарий

Обсуждение

0

Кстати по правилам фузбола нельзя так прокручивать, как у вас на видео :)

Спасибо! 

Получать рассылки dev.by про белорусское ИТ

Что-то пошло не так. Попробуйте позже