Теперь голы считаются автоматически, соперника вызывают на бой через телеграм-бота, а система оповещает звуками «Мортал Комбат» Fight! Расскажу, как провели цифровую трансформацию настольного футбола.

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

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

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

Что и как автоматизировали в игре

Автоматизацией игры мы занимались в свободное время. Через два месяца была готова MVP-версия с подсчетом голов и визуализацией основных игровых моментов в режиме реального времени, а также с последующим сохранением этих данных для статистики. Затем постепенно дорабатывали и улучшали «умный» настольный футбол.

Вот что появилось в нашей игре в результате:

1. Вызов соперника через телеграм-бота. В боте есть список пользователей, зарегистрированных в системе. Из списка нужно выбрать, с кем хотите поиграть, и «бросить вызов». Выбранный пользователь получает сообщение от бота с приглашением — он может его принять или отклонить.

Один игрок выбирает соперника, а второму приходит приглашение на игру
Один игрок выбирает соперника, а второму приходит приглашение на игру

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

Для старта ждём "Play"
Для старта ждём "Play"
Игра в самом разгаре
Игра в самом разгаре
На 3D-принтере напечатали корпус и крепление для дисплея
На 3D-принтере напечатали корпус и крепление для дисплея

3. Расчет текущего счета игры в режиме реального времени. Чтобы система автоматически определяла, когда мяч попадает в ворота, мы установили датчик прерывания на основе светодиода и датчика ИК-диапазона.

Когда мяч попадает в ворота, возникает препятствие между ИК-датчиком и светодиодом — свет излучателя на доли секунды прерывается. Датчик прерывания регистрирует событие, а затем информацию о нем обрабатывает Raspberry Pi. После анализа данных информация выводится на дисплей, и мы понимаем, кто забил гол. Так мы регистрируем каждое попадание мяча в ворота.

Светодиод и датчик ИК-диапазона расположены друг напротив друга на воротах
Светодиод и датчик ИК-диапазона расположены друг напротив друга на воротах

В качестве программного стека используется связь Laravel и Vue, а для передачи данных в режиме реального времени — WebSocket.

Сначала датчики регистрировали ложные голы, но мы нашли решение.

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

Сначала мы добавили функционал, который сбрасывает такие голы, а затем сконструировали крепления для датчиков и напечатали их на 3D-принтере. Теперь считаем только реальные голы, а заодно избавились от дребезга ворот во время игры.

4. Звуковое сопровождение. Каждое попадание мяча в ворота, будь то гол или два подряд, сопровождается звуковым сигналом. Для вывода звука использовали обычные колонки, которые подключили к «сердцу» системы — Raspberry Pi. Причем для каждого события можно установить разные звуки, например фанфары для победного гола.

«Ловкость рук, и никакого мошенства!»
«Ловкость рук, и никакого мошенства!»

5. Персонализация. Мы спроектировали личный кабинет, в котором пользователь может настроить свой профиль: выбрать аватарку, задать звуки для событий, посмотреть историю игр. Бросить вызов можно прямо из личного кабинета, а еще он привязан к телеграм-боту, чтобы данные о вызовах синхронизировались.

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

6. Статистика на основе истории игр. После каждого состязания система сохраняет данные об игре, из них формируется статистика. В личном кабинете можно посмотреть не только историю своих игр, но и общую турнирную таблицу: сколько всего игр у каждого игрока, сколько из них поражений и побед, какой рейтинг.

Мы придумали свою формулу для расчета рейтинга: кто часто выигрывает — забирает баллы оппонента.
Мы придумали свою формулу для расчета рейтинга: кто часто выигрывает — забирает баллы оппонента.

«Умный» настольный футбол — часть нашей корпоративной культуры

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

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

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

Общаемся без формальностей. Нередко в компаниях люди общаются сухо и формально на «вы», и за обедом нечего обсудить с коллегой, не считая рабочих вопросов. В таком коллективе скучно и неинтересно работать. У нас всё иначе, и во время футбола мы можем посмеяться, выразить эмоции.

Непринужденная обстановка помогает нам генерировать новые идеи и создавать крутые digital-решения. Это еще сильнее сплачивает наш коллектив.

Придумываем новые идеи

Несмотря на уже немалый функционал, хотим реализовать в игре следующие идеи: 

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

  • Приглашать не зарегистрированного в системе пользователя. Сейчас телеграм-бот приглашает только зарегистрированных. 

  • Увеличить число игроков. Например, чтобы могли играть четыре человека, то есть двое на двое.

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

  • Добавить достижения игрока. Разные ачивки и анимации. Например, забил пять голов подряд — дается медалька, присваивается статус какого-нибудь известного футболиста вроде Месси.

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

Поделитесь в комментариях, какая корпоративная культура есть в вашем коллективе. Может, тоже во что-то играете или автоматизируете?

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

Комментарии (7)


  1. BogdanPetrov
    21.10.2023 14:04
    +2

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

    Рейтинг тоже был по аналогичной схеме + можно было отслеживать динамику от матча к матчу. Из интересных показателей: diversity. Если он низкий, то игрок часто играет в паре с одними и теми же людьми.

    В статистике фиксировали тип гола (в том числе автогол) и номер фигурки. Это позволило визуализировать стиль игры каждого участника.

    Картинки

    Например, за свою недолгую игровую карьеру я забил 62 гола вот с таких фигур

    и распределение по типам голов (здесь черным - обычные удары, зеленым - более хитрые, а красным - случайные)

    Для более профессионального игрока статистика выглядит иначе


    1. IvanGrigorjev Автор
      21.10.2023 14:04

      Очень круто на счёт статистики голов каждого игрока на поле. А как регистрировали авторов голов, т.е. фигурки?


  1. UksusoFF
    21.10.2023 14:04
    +1

    У нас была рандомилка которая генерировала команды 2 на 2 из всех участников чата и приглашала играть в определенное время :)
    До железной части так и не дошли.


    1. IvanGrigorjev Автор
      21.10.2023 14:04
      +1

      Хорошая идея, нужно нам прикрутить ))

      Сейчас в планах турнирную сетку реализовать с рандомной генерацией противников)


  1. Mirzapch
    21.10.2023 14:04

    Какой наглый игрок справа на видео. Покажите ему правила настольного футбола. https://www.tablesoccer.org/rules/documents/ITSFRulesEnglish.pdf


    1. IvanGrigorjev Автор
      21.10.2023 14:04

      Главное, чтобы было в кайф )


  1. sokolov_fv
    21.10.2023 14:04

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

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

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

    Резюме. Этим открытиям уже около ста лет, ещё при советской власти в учреждениях стояли бильярды и столы для тенниса. Это работает, это даёт сотрудникам отдохнуть, производительность труда повышается. Нужны ли новейшие технологии с приложениями? Скорее нет, это пустая трата денег и времени.