DOTS Battle Simulator Prototype
- Unity Developer / Автор прототипа
- DOTS / ECS · Игровой ИИ · GPU-анимация · Архитектура · Editor-инструменты
- Технологии
- Unity 6 · C# · DOTS / Entities · Burst / Jobs · Entities Graphics · URP / HLSL · VContainer · Addressables · UniTask · R3 · Odin Inspector
Описание
Прототип боевого симулятора на Unity 6 DOTS для массового управления юнитами. Основная задача — совместить принятие решений, поиск целей и анимацию в архитектуре, рассчитанной на масштабирование симуляции. Развил собственный плагин DODBT в отдельный DOTS-модуль с Burst, Jobs и BlobAsset. Разработал VAT-пайплайн: запекание анимаций в текстуры, ECS-runtime и шейдеры для Entities Graphics. Архитектуру приложения построил вокруг постоянной Bootstrap-сцены, отдельных режимов Meta и Gameplay и явного управления загрузкой ресурсов, DI-контекстами и ECS-системами
Достижения
- Спроектировал DOTS-исполнение BT с общей структурой в BlobAsset и раздельным состоянием агентов — обеспечил совместимость с Burst и параллельную обработку через Jobs
- В тесте на 10 000 агентов с деревом из 34 узлов сократил время обработки BT с 126,25 до 1,00 мс с помощью Burst и Jobs — примерно в 126 раз
- Разделил общую структуру BT в BlobAsset и состояния агентов — множество юнитов использует одно дерево без копирования его структуры
- Создал кодогенерацию для leaf-узлов и runtime-отладку — новую логику можно подключать без ручного написания связующего кода и отслеживать ее выполнение в редакторе
- Разработал VAT-пайплайн с запеканием, ECS-runtime и HLSL-шейдерами — анимации исполняются на GPU, поддерживают смешивание клипов и корректные тени и depth-проходы
- Реализовал сетку поля боя и пространственный индекс поиска целей — юниты находят противников в соседних ячейках без полного перебора всей армии
- Организовал запуск режимов через State Machine, VContainer и загрузчики ресурсов — сцены, зависимости и ECS-системы поднимаются и освобождаются в заданном порядке
- Создал единое окно настройки ScriptableObject-конфигов — параметры юнитов, поведения и игровых систем доступны геймдизайнеру из одного интерфейса
- Выделил UI и бинарные сохранения в отдельные модули — интерфейсы переиспользуются между режимами, а игровой код не зависит от способа хранения данных
| Режим обработки BT | Время |
|---|---|
| Без Burst и распараллеливания | 126,25 мс |
| Burst | 7,90 мс |
| Burst + Jobs, 11 рабочих потоков | 1,00 мс |
При интервальном обновлении BT (0,2 с, случайное смещение на агента): средняя нагрузка на кадр — 0,1014 мс, P95 — 0,1290 мс; суммарное CPU-время — 1,008 мс; GC-аллокации за тик — 0 B. Это отдельный режим с более редким обновлением решений. Подробные замеры — на втором изображении галереи.








