500 000
Информационные технологии и интернет
Сентябрь 2025
Требовалось создать законченный продукт, в котором непрограммист может самостоятельно собирать стрелковые упражнения любой сложности - без правки кода, без участия разработчика и без пересборки приложения. Ключевые требования:
- Редактор уровней как в профессиональных движках: расстановка объектов мышью, перетаскивание, поворот, копирование, отмена действий, мини-карта.
- Гибкая параметризация каждого элемента сцены: дистанция до мишени, время на рубеж, количество выстрелов, штрафы, звуковое сопровождение, поведение мишеней - десятки настроек, у каждого типа объекта свои.
- Соревновательный режим на одном ПК с честным разделением экрана и полной изоляцией игроков друг от друга.
- Разнородная физика мишеней: статичные, движущиеся, вращающиеся, биатлонные с падающими створками, сбиваемые.
- Сохранение сценариев и статистики между сессиями, кроссплатформенный запуск, формирование отчетности для инструктора.
Сложность не в отдельных фичах, а в том, что все они должны работать в единой системе, где данные сценария - один источник правды и для редактора, и для игрового режима, и для отчета.
Реализован единый декларативный слой данных (Target / Param), который описывает любой объект сцены как набор типизированных параметров (range, rangefloat, bool, dropdown, категория). Этот слой стал ядром всей системы:
Редактор автоматически генерирует UI настроек из списка параметров объекта - добавление новой настройки не требует ни строчки UI-кода.
Игровой движок читает те же параметры в рантайме и применяет их к камере, таймерам, подсчету очков и звуку.
Модуль отчетов сериализует результаты по той же модели и выгружает их в форматированный Excel-документ.
Поверх этого ядра построены полноценный редактор сценариев (drag-and-drop, мультивыделение, привязка мишеней к объектам, undo/redo, copy/paste, авторасчет дистанций, 2D-мини-карта, превью вида от лица стрелка) и движок стрельбы (рейкаст-баллистика, зонный подсчет от центра мишени, декали от попаданий, переключение огневых рубежей по таймеру и лимиту выстрелов, штрафы за чужие мишени и промахи).
Собран законченный продукт из трех интегрированных подсистем (редактор, игровой движок, отчетность), работающих поверх единой модели данных.
Время сборки нового упражнения сократилось с ручной работы программиста до нескольких минут в визуальном редакторе - создание контента полностью перешло к пользователю.
Поддержано до 5 участников одновременно на разделенном экране с полной визуальной изоляцией и без искажений картинки.
Реализовано 5+ типов объектов сцены и 4 типа местности, переключаемых в рантайме; 6 зачетных зон с масштабонезависимым подсчетом.
Полноценный редактор уровня профессиональных инструментов: undo/redo, copy/paste, мультивыделение, привязки, мини-карта, превью от лица стрелка.
Автоматическая выгрузка протоколов в Excel превратила симулятор в рабочий инструмент с отчетностью, а не только в игру.
Архитектура «один источник правды» обеспечила расширяемость без затрат: новый параметр или тип мишени добавляется в модель и сразу подхватывается редактором, движком и отчетом.