Создание трех игровых консолей: опыт разработки новой версии кибертренажера

Привет! С вами команда Далее. В этом материале мы расскажем о том, как трансформировали базовый тренажер по кибербезопасности в полноценную экосистему, включившую специализированные консоли, конструктор сценариев, интеллектуальную систему проверки ботами и интегрированный аудиочат на базе WebRTC.

Концепция игры

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

Фундаментальные элементы игры включают:

  • Атаку — внешнюю угрозу, требующую от игрока принятия оперативных контрмер;

  • Сценарий — структурированный набор событий и параметров, определяющий канву игрового процесса;

  • Индустрию — отраслевую специфику компании, в которой разворачиваются действия;

  • Игровые карты — интерфейсные элементы, визуализирующие доступные варианты действий в зависимости от контекста;

  • Уведомления — системный фидбек, направляющий игрока и формирующий логику его дальнейших шагов;

  • Геймборд — визуальную панель, отражающую текущее состояние инфраструктуры и игровых условий.

Постановка задачи

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

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

Масштабная переработка архитектуры

Мы полностью пересмотрели структуру системы, разделив её на три уровня: консоли для редактора, тренера и игроков.

1. Редакторская консоль: конструктор сценариев и автоматизация тестирования

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

Сценарии хранятся в формате JSON с поддержкой версионности и механизмом наследования (форкинга) для быстрого создания новых игровых миров на основе существующих.

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

2. Тренерская панель: управление сессией и аналитика

Для модераторов мы создали отдельное SPA. Оно дает возможность управлять запуском симуляций, распределять команды, отслеживать прогресс и модерировать коммуникацию.

Одной из ключевых функций стала автоматическая генерация «эталонного сценария» после завершения игры. Этот инструмент позволяет тренеру наглядно разобрать с участниками оптимальную последовательность решений.

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

3. Игровая консоль: производительность на Golang

Для игрового сервера мы выбрали Golang, что позволило обеспечить высокую скорость обработки, эффективную работу с конкурентностью через горутины и экономное потребление памяти. Взаимодействие с фронтендом реализовано через Centrifugo (WebSockets), что позволяет одному серверу беспрепятственно обслуживать сотни команд.

Фронтенд на Vue.js обзавелся расширенным функционалом:

  • встроенным аудиочатом (PION Ion SDK) с режимами командных обсуждений и тренерского стриминга;

  • гибкой системой авторизации;

  • функцией «открытых игр» для автоматического формирования команд;

  • интерактивной визуализацией геймборда, где состояние объектов (угроза/безопасность) отображается динамической подсветкой;

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

Визуализация геймборда
Визуализация геймборда

Аналитический блок

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

Технологический стек

  • Бизнес-логика (Symfony): основа для тренерской и редакторской панелей.

  • Игровой сервер (Golang): высокая производительность при работе с состоянием игры в оперативной памяти.

  • Real-time коммуникация (Centrifugo): масштабируемость для тысяч одновременных пользователей.

  • Фронтенд (Vue.js): унификация для упрощения поддержки проекта.

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

Заключение

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

 

Источник

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