Меня зовут Анатолий и я простой инженер из Смоленска. Наш бизнес родился на VC полтора года назад. Я тогда даже и не думал, как далеко это зайдёт и, тем более, что это может стать IT-компанией! Где оффлайн квест, а где IT-компания? Сегодня хочу простым языком и со схемками (не ругайтесь, сам рисовал) рассказать, как мы выстраиваем IT инфраструктуру для роста в международную сеть пиксельных игровых, чтобы дойти до миллиардной выручки. А люди в комментариях обязательно расскажут, почему у нас ничего не получится…
Содержание
0. Вступление для тех, кто видит проект впервые
1. Сеть оффлайн квестов в IT контексте
2. Процессы, технологии, архитектура и микросервисы
3. Регистрация ПО и путь к статусу IT компании
4. Open-source игры & Roblox style
5. Почему клиенты не замечают поломок
6. Адаптация нашего софта под китайские пиксели
7. Какие планы дальше
8. Заключение
Для тех, кто видит проект впервые
Суть развлечения заключается в играх на интерактивном пиксельном полу: люди должны выполнять различные игровые сценарии: от обычных “Классиков” и “Пол – это лава”, до игры в “Пинг-Понг” на 32 квадратных метрах площади, покрытой специальными светодиодными пикселями, оснащенными датчиками нажатия. Есть как активные игры на скорость, так и логические на подумать.
Сеть оффлайн квестов в IT контексте
Давайте в крупном масштабе взглянем на архитектуру нашей сети игровых:
Основные идеи:
Все контроллеры всех игровых комнат и арен объединены в единую VPN сеть и подключены к единой системе мониторинга, что позволяет в реальном времени наблюдать общую картину состояния сети игровых заведений и следить за основными параметрами их работы и, самое главное, количеством неисправностей в игровых.
К каждому контроллеру есть круглосуточный прямой доступ для диагностики и устранения проблем, а также для обновления ПО без необходимости присутствия человека на той стороне (делаем обновления в основном по ночам, когда нет клиентов).
Собственная CDN на минималках (сеть доставки контента): централизованное хранилище контента (игр, звуков, картинок) с автоматизированным механизмом доставки обновлений на контроллеры.
Централизованная база бронирований и клиентов: позволяет следить за денежным потоком, а в перспективе позволит устраивать турниры между посетителями разных городов и стран.
Ещё одной важной фишкой является автоматическое лицензирование программного обеспечения: каждый контроллер ежедневно получает обновленную лицензию. В случае проблем с франчайзи и попытки обмана, мы легко сможем удаленно отключить ПО, и контроллер превратится в тыкву.
Процессы, технологии, архитектура и микросервисы
Точкой входа всех клиентов, будь то простой посетитель игровой или потенциальный франчайзи, является сайт на Tilda. Кто бы что не говорил, но Тильда является удобным инструментом для быстрой корпоративной разработки, поддерживающим интеграции с большинством популярных сервисов.
В качестве системы онлайн-записи выступает Bukza, которая позволяет настроить различные ресурсы для бронирования и удобно интегрировать это со сторонними приложениями.
Огромный пласт автоматизации завязан на Telegram и Salebot: в нём коммуникация с клиентами и подписание согласий, воронка продаж франшизы и вся дальнейшая работа с партнёрами, а также все служебные чаты для общения и боты для оповещения о проблемах на серверах и локациях.
В качестве таск-трекера используем российский аналог Trello – YouGile. На нём же сделали доску для заведения администраторами проблем на локациях и их последующей отработки разработчиками, что позволило значительно ускорить процесс отладки нового софта и игр. Под базу знаний используем Teamly – тоже весьма удобный отечественный инструмент.
Ну а держится всё это на трёх китах от Google: Таблицы, Документы, Диск ?
А теперь давайте поближе взглянем на схему локации:
Каждая игровая комната управляется контроллером на базе микрокомпьютером Raspberry Pi: пол, настенные кнопки, звук, табло, потолочный свет. На контроллере установлено наше управляющее ПО с HTTP сервером и Lua-машиной для обслуживания игр.
Для работы системы не требуется наличие стационарного компьютера или ноутбука – всё управление происходит с обычного планшета или даже телефона.
Недавно разработали новый интерфейс. Теперь это не просто интерфейс для запуска игр. Теперь это полноценное ПО для управления локацией: в нём видны бронирования клиентов и заложены скрипты администратору на начало и завершение сеанса, через него теперь можно создавать сеты игр, что сильно упрощает работу на локации (запустил людей на пол часа и забыл про них, не надо включать каждую игру по отдельности).
Серверная часть
Обслуживает всё это зоопарк микросервисов на нескольких серверах.
Мы собираем все бронирования клиентов в своей базе данных, что позволило сделать свой интерфейс и прикручивать разного рода статистику. Через себя же мы связываем клиентов из Сэйлбота с конкретными заказами, что позволяет делать интересные интеграции с опросами для контроля качества и увеличения количества обратной связи.
Написали специальный прокси-сервис для Сейлбота, который пропускает через себя все сообщения и имеет механизм повторной отправки в случае возникновения проблем. Также он нужен для того, чтобы не светить приватный API ключ всем партнёрам.
Недавно настроили асинхронный сбор событий с локаций, это позволяет получать статистику по сыгранным играм и является заделом для реализации турниров и лидербордов. Через того же бота связываем игроков в команды.
Continuous Integration & Delivery
В разработке ПО, Continuous Integration / Continuous Delivery (или CI/CD) — это комбинация непрерывной интеграции и непрерывного развертывания программного обеспечения в процессе разработки. CI/CD объединяет разработку, тестирование и развёртывание приложений.
Вот так незамысловато на схеме выглядят наши текущие CI/CD процессы в компании для доставки обновлений ПО на сервера и локации. Разработчик пишет код и пушит его на GitHub, гитхаб автоматически или по пинку (для локаций) запускает сборку ПО на специальном раннере в нашей VPN сети, который в свою очередь раскидывает это по серверам и локациям.
В перспективе хочется настроить подобный процесс и для репозитория игр pixel-games для мгновенной и, главное, автоматической доставки обновлений игр партнёрам, но это потребует пересмотра и организации процесса тестирования.
Регистрация ПО и путь к статусу IT компании
Среди дополнительных требований есть наличие зарегистрированной в реестре Минцифры России программы для ЭВМ с демонстрацией того, что это приносит доход. Этим сейчас и занимаемся. Предварительно уже зарегистрировали ПО в Роспатенте.
Маленький, но важный шаг в сторону последующей регистрации в реестре Минцифры и становления IT компанией. Это всё даст возможность получать различные преимущества и льготы, а также, надеюсь, увеличит доверие потенциальных партнёров.
Open-source игры & Roblox style
В предыдущих статьях я уже коротко упоминал про наши open-source игры и специальную платформу для их разработки и тестирования. Немного повторюсь и освежу информацию.
У нас открытая система разработки игр, это очень важный пункт, но который не все до конца понимают:
– во-первых у нас есть визуальный конструктор игр "Пол–это лава", где любой скучающий администратор может попрактиковаться в покадровой отрисовке игры;
– а во-вторых у нас есть собственный онлайн редактор для разработки игровых сценариев на простом скриптовом языке Lua, который может освоить любой толковый школьник за несколько вечеров, при этом исходный код наших игр публично открыт в репозитории на GitHub, что делает обучение ещё проще.
Всё это даёт возможность нам (и вам, при желании) легко, быстро и дёшево разрабатывать новые игры и постоянно пополнять коллекцию. А совсем недавно мы внедрили в игровой процесс геймпад, что добавляет огромное разнообразие в игровые механики и даёт возможность весело провести время даже сидя на диване.
Почему Roblox-style? Роблокс дает возможность игрокам зарабатывать на контенте, и мы в перспективе хотим сделать что-то похожее. Готовы выделять процент от выручки на выплаты сторонним разработчикам. А ещё на ютубе нашу игру “Безопасный цвет” постоянно сравнивают с играми “Color blocks” или “Block party” из Roblox, хотя когда я ее разрабатывал, я еще ничего не знал о Роблоксе...
Почему клиенты не замечают поломок
Очевидно, что электроника выходит из строя, и здесь очень важный момент: как сделать так, чтобы игра оставалась функциональна, и клиент не покидал заведение неудовлетворенным? Для этого мы предусмотрели механизм дефектовки пикселей и кнопок, причём дефектовки как программной, так и аппаратной. Это означает, что залипший/сломанный пиксель отключается на уровне железа (чтобы не забивать мусором общую шину данных) и выводится из игры на уровне алгоритмов (чтобы на него не назначались игровые задания). При этом, как правило, пиксель в состоянии продолжать излучать свет и никак не выделяется из общей массы.
Такой подход позволяет нам не отменять и не переносить записи клиентов даже имея более 20 неисправных пикселей на полу. Процесс игры при этом остаётся достаточно комфортным, чтобы НЕ получить негативный отклик.
Для дефектованных пикселей и кнопок у нас выделен отдельный блок на дашборде мониторинга, так мы следим за количеством поломок и своевременно их устраняем.
Обязательное условие разработки новой игры – обработка дефектованных пикселей, чтобы игра оставалась играбельной. Сейчас даже лежим в сторону прикручивания ИИ для автоматического детектирования ложных срабатываний и дефектовки таких пикселей.
Адаптация нашего софта под китайские пиксели
Ни для кого не секрет, что китайцы тоже производят подобные игровые пиксельные платформы и продают их по всему миру. Они легко ищутся на Alibaba по запросу Activate Games. И, как я упоминал, мы тоже купили себе такую платформу для экспериментов, но это вовсе не означает, что мы откажемся от собственного производства и начнём тупо перепродавать китай, как это уже далают несколько "франшиз" в стране.
Какие планы дальше
Перетаскиваем инфраструктуру в Yandex Cloud, т.к стало слишком сложно управлять зоопарком своих разрозненных серверов, в облаке это будет делать гораздо проще и эффективнее, правда чуть дороже. Надеюсь, сможем покрыть часть затрат за счёт грантов Сколково.
Дописали новый сервис photo-manager, который будет отвечать за хранение фотографий и видео с локаций в облачном хранилище S3, занимаемся его внедрением в интерфейс управления локацией. Будем втаскивать S3 в другие части системы, такие как хранение аудиодорожек и картинок к играм.
Задизайнили архитектуру и приступили к реализации лидербордов и турниров: скоро можно будет соревноваться с другими посетителями Pixel Quest по всей стране, видеть свои результаты на сайте и получать оповещения от бота, что вас кто-то переиграл.
В далёких планах есть слезть с Букзы и разработать собственную систему бронирования. Также нужны внутренние интерфейсы для удобного управления контентом: играми, звуками, картинками. Это нужно для локализации и выхода на другие рынки. Хотим развивать нашу среду разработки игр на Lua и предоставить доступ в широкие массы.
По конструктиву есть планы двигаться в сторону влагозащищенного исполнения и установки на открытых площадках. Уже есть все технические решения для реализации этого, скоро обкатаем технологию и обязательно расскажем.
Заключение
Я художник, я так вижу! Но буду рад любой конструктивной критике и взгляду со стороны. К критике и советам – готов. На самом деле очень не хватает людей, с кем можно обсудить архитектурные / программные / схемотехнические решения.
Кому интересно следить за развитием проекта в реальном времени, подписывайтесь на телеграм канал @pixel_quest. Пишу там исключительно сам примерно раз в 4-7 дней, маркетологов не подпускаю, рассказываю больше про техническую сторону проекта с постепенным уклоном в IT, дополнительно публикую ежемесячные финансовые отчёты по всем локациям сети.
Комментарии (15)
alexhu
15.10.2024 07:47Вот так, из г**на и палок, только ставят в цели миллиардные обороты и вероятно их достигнут в краткосрочной перспективе. Только одно замечание - как это вообще может совместно работать в реальности?
А вы можете дальше обсуждать надёжную масштабируемую архитектуру, монолиты и микросервисы, orm and GraphQL, как видим не крупному бизнесу на это почти безразлично.
oWart Автор
15.10.2024 07:47А что вас смущает? Я открыт к предложениям и мне искренне интересно обсудить, что из моих костылей вам больше всего не понравилось...
alexhu
15.10.2024 07:47Меня абсолютно ничего не трогает. Если вас устраивает, то слава богу, поделились как можно за один день запустить - спасибо. Я и сам один из недавних проектов сделал так, что стыдно показывать. Только он работает и нет ни ошибок ни жалоб.
fivlabor
15.10.2024 07:47Мне кажется тут EtherCAT бы хорошо подошёл, вместо CAN. Это немного дороже, но зато заметно шустрее. Впрочем не знаю, какие у вас требования по времени срабатывания.
Приходилось на двух проектах прошивки писать именно по причине того, что надо было влезть в 10мс/цикл на десятки подчинённых устройств ввода/вывода.
AirLight
15.10.2024 07:47Тут на хабре был недавно пост про интерактивные стены с играми для детей, мне кажется они технологичнее и имеют больше свободы для реализации большего количества различных сценариев движения и взаимодействия между участниками. Что думаете об этом?
Вот ссылка:
Keeper10
Не думали продвигать Dance Dance Revolution?
oWart Автор
Так у нас уже есть Танцы... сейчас видео поищу
oWart Автор
https://rutube.ru/video/267c3cca9022ca9aef8d0b3b1e9989a7/
oWart Автор