Кейс: система учёта для футбольной симулятора – нестандартный проект с таймерами и чатами
Обычно мы делаем CRM, маркетплейсы, личные кабинеты. Но однажды к нам пришёл заказчик с необычным проектом — многопользовательской футбольной игрой в браузере. Игроки управляют футболистами на поле, каждый ход — 1,5 минуты, нужно координацию действий, чаты, таймеры, расчёт движения мяча.
Мы решили реализовать это на Falcon Space. Да, это не типичное применение, но платформа справилась. Проект занял 6 месяцев, бюджет — около 1,2 млн руб. Расскажу, как мы это сделали и почему даже нестандартные задачи можно решать на Falcon Space.
Что такое симулятор футбола
Заказчик хотел игру, где в каждой команде — несколько реальных игроков (людей). Каждый игрок управляет своим футболистом (одна позиция на поле). Вся игра разбита на ходы по 90 секунд. За ход каждый футболист перемещается на новую позицию (поле — сетка 10x10), отдаёт пас, бьёт по воротам. Бизнес-логика (движение мяча, взятие ворот) рассчитывается сервером в конце каждого хода.
Особенности:
- Нужно синхронизировать действия 22 игроков одновременно.
- Встроенные чаты для команд (чтобы координировать стратегию).
- Таймеры (обратный отсчёт до конца хода).
- Расчёт физики мяча (SQL-процедуры с учётом позиций игроков).
- Проведение чемпионатов и турниров.
Заказчик сначала хотел писать игру с нуля на Node.js + WebSockets, но потом обратился к нам — мы убедили попробовать Falcon Space.
Как мы реализовали игровую логику на Falcon Space
Хранение состояния игры. Каждый матч — это таблица с полем positions (JSON), где хранятся координаты всех игроков на поле. Каждый ход — новая строка в таблице match_moves. Движение мяча — отдельная таблица.
Таймеры. Использовали встроенный механизм .NET Cron (плановые задачи). Запускается таймер на 90 секунд, после чего вызывается процедура, которая фиксирует ход, рассчитывает новое положение мяча и игроков, генерирует следующий таймер. Всё через SQL.
Координация игроков. Игроки отправляют свои действия (куда двигаться) через веб-форму. Действия сохраняются в БД. В конце хода процедура собирает все действия, применяет их и рассчитывает результат.
Чаты команд. Встроенный чат Falcon Space с привязкой к матчу и команде. Игроки обсуждают стратегию.
Проведение чемпионатов. Справочник команд, участников, расписание матчей. Система автоматически создаёт матчи по расписанию, запускает таймеры.
Самой сложной была логика расчёта движения мяча — это десятки условий (кто ближе к мячу, кто перехватил, удар, отскок). Написали это на SQL (T-SQL) с использованием временных таблиц и циклов. Работает за 0,2 секунды для одного хода.
Технические детали
WebSockets не понадобились. Обновление информации о матче происходит через AJAX-запросы раз в 2 секунды (браузер клиента спрашивает: «что изменилось?»). Это создаёт нагрузку на сервер, но мы протестировали — 100 одновременных игроков дают около 50 запросов в секунду, бюджетный VPS с 4 ядрами справляется.
Таймеры через SQL Server Agent. Запускаем задачу, которая при начале матча создаёт запись в таблице active_timers. Отдельный процесс раз в секунду проверяет, не истекло ли время, и запускает процедуру расчёта хода.
JSON для хранения позиций. MS SQL Server умеет работать с JSON: можно сохранить координаты в текстовом поле, а потом парсить. Это упростило хранение переменных данных.
Результаты и отзыв
Из отзыва заказчика (Startpack): «Делаем большой проект, интернет-игру, с помощью этого сервиса получилось намного сократить затраты и ускорить получение прототипа игры. Многие функции не пришлось делать новые, они уже были разработаны раньше. Команда разработчиков всегда на связи».
Цифры:
- Игра работает в тестовом режиме с 50 активными игроками.
- Проведено 200 матчей, 1500 ходов.
- Время расчёта одного хода — 0,3 секунды.
- Сервер — VPS за 5000 руб/мес (4 ГБ RAM, 2 ядра).
- Проект окупится через 8 месяцев после выхода в релиз (за счёт монетизации — платные турниры).
Заказчик планирует добавить 3D-визуализацию (через Three.js) и мобильное приложение, но серверная часть останется на Falcon Space.
Что это значит для вас
Falcon Space создавался не для игр, но этот кейс доказывает: если ваша задача нестандартна (сложная бизнес-логика, таймеры, очереди, расчёты), платформа может справиться. Вам не придётся переходить на другой стек. Всё остаётся на SQL, а значит, вы сохраняете все преимущества:
- Быстрые изменения (изменил процедуру — и готово).
- Низкая стоимость поддержки (один SQL-специалист).
- Надёжность и безопасность.
Если у вас есть «нестандартная» задача, не спешите нанимать разработчиков на Java/Python. Приходите к нам, и мы обсудим, можно ли реализовать это на Falcon Space. Часто — да.
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта