Nextbots: Sandbox

Action Sandbox • WebGL / Mobile • 2023

EN RU

Обзор

Nextbots: Sandbox — AI-ориентированный sandbox-проект, сфокусированный на геймплее преследования, реактивных окружениях и масштабируемых runtime-системах для WebGL, мобильных и PC платформ.

Проект изначально начинался как ранний production-прототип, но быстрый рост контента выявил проблемы масштабируемости архитектуры и поддержки, которые позже потребовали серьёзного рефакторинга runtime-систем.

Долгосрочный фокус сместился в сторону стабильности runtime, async streaming, управления памятью и масштабируемого владения игровыми системами в условиях продакшна.

Реальные ограничения

  • Высокая плотность AI: большое количество врагов одновременно в sandbox-сценариях
  • Ограничения WebGL: жёсткие ограничения памяти и нестабильная загрузка в браузере
  • Слабые устройства: оптимизация под Android устройства с ~2 GB RAM
  • Масштабируемые live-обновления: расширение контента без полного переписывания сцен
  • Стабильный frame pacing: отзывчивость при сценариях с большим количеством врагов

Роль и ответственность

  • Полная ответственность за gameplay и runtime архитектуру
  • Рефакторинг legacy-систем в модульные изолированные runtime-модули
  • Проектирование async пайплайна загрузки сцен
  • Реализация AI scheduling и систем оптимизации
  • Поддержка production-обновлений и стабильности runtime
  • Оптимизация систем на основе реальных игровых сессий

Инженерный подход

  • Chunk-based async Addressables streaming
  • Жёсткое разделение модульных runtime систем
  • Профилинг-ориентированная оптимизация
  • AI throttling и staggered scheduling
  • Object pooling для всех тяжёлых систем
  • Event-driven архитектура взаимодействия геймплея

Ключевые технические проблемы

  • Проблемы масштабируемости архитектуры — системы стали трудно расширяемыми из-за тесной связности
  • GC-спайки при async переходах — Task-based pipeline создавал лишние аллокации при загрузке
  • Проблемы масштабирования AI CPU — обновления навигации и таргетинга плохо масштабировались с ростом врагов

Оптимизация и рефакторинг постоянно проверялись на реальных игровых нагрузках, а не на синтетических тестах.

Постмортемы (ключевые исправления)

Рефакторинг игровой архитектуры

Проблема: архитектура стала сложно расширяемой после множества обновлений.

Причина: тесная связность между gameplay системами и логикой сцен.

Исправление: разделение систем на изолированные runtime-модули с явными границами владения.

Результат: снижение времени интеграции фич с ~6–10 часов до ~1–2 часов.


GC-спайки при runtime инициализации

Проблема: заметные GC-скачки при async переходах в геймплее.

Причина: Task-based async поток создавал лишние аллокации при инициализации.

Исправление: миграция async runtime систем с Task на UniTask.

Результат: снижение аллокаций с ~1.2–2.5 KB/кадр до ~0.2–0.4 KB/кадр при переходах.


Система AI обновлений

Проблема: рост стоимости AI обновлений с увеличением количества врагов.

Причина: обновление навигации и таргетинга каждый кадр для всех сущностей.

Исправление: внедрение staggered scheduling и throttling обновлений.

Результат: снижение CPU пиков с ~5–10 мс до ~2–3 мс при высокой плотности врагов.

Дизайн систем

  • Chunk-based Addressables streaming pipeline
  • Модульная runtime архитектура геймплея
  • AI scheduler для больших количеств врагов
  • Event-driven система коммуникации геймплея
  • Async pipeline инициализации сцен
  • Object pooling для всех тяжёлых систем
  • Data-driven балансировка и конфигурация спавна

Результаты

  • Стабильное поведение runtime на WebGL, mobile и PC
  • Снижение загрузочных пиков на слабых устройствах
  • Сокращение async аллокаций после перехода на UniTask
  • Повышенная масштабируемость при высокой плотности AI
  • Быстрее итерации после модульного рефакторинга

Масштаб и использование

  • Общее количество запусков: ~1.8M
  • MAU: ~30K
  • Длина сессии: 5–10 минут
  • Платформы: WebGL, mobile

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

Unity C# UniTask Object Pooling Модульная архитектура

Медиа