
Как обслуживать 10 000 NPC в кадре без просадок GC
arhip1986 1 час назад Как обслуживать 10 000 NPC в кадре без просадок GC 6 мин 2.1K Разработка игр * C# * .NET * Алгоритмы * Туториал В двух словах о проблемеДопустим, вы делаете симуляцию города. Или RTS. Или RPG с...
В сфере искусственного интеллекта произошло заметное событие. arhip1986 1 час назад Как обслуживать 10 000 NPC в кадре без просадок GC 6 мин 2. 1K Разработка игр * C# * . NET * Алгоритмы * Туториал В двух словах о проблемеДопустим, вы делаете симуляцию города.
Или RPG с открытым миром. И у вас в сцене одновременно находится 5, 10, а то и 20 тысяч живых существ. У каждого свои цели, приоритеты, эмоции, социальные связи.
Технические детали
Ваша архитектура AI начинает трещать по швам. Классический подход — дать каждому NPC компонент с методом Update() — перестаёт работать где-то после 500–1000 объектов. Дальше начинаются проблемы:10 000 вызовов виртуальных методов за кадр → промахи кэша и давление на предсказатель переходов.
LINQ-запросы для поиска ближайшего врага → аллокации и GC. Пересчёт эмоций по полному графу → O(N²) на каждое распространение. Сортировка всех NPC для выбора топ-10 → пустая трата O(N log N) сравнений.
В результате ваши 60 FPS превращаются в 30, а потом в 15. Игроки жалуются на фризы (это GC собрал 20 мегабайт временных массивов). Вы начинаете нанимать отдельного инженера по оптимизации AI.
Отраслевые последствия
Этого можно избежать, если с самого начала заложить правильные примитивы. Что лежит в коробкеБиблиотека GameAI. Net — это не фреймворк.
Это набор низкоуровневых алгоритмических кирпичей. Вы не обязаны использовать всё. Вы можете взять только то, что нужно, и встроить в свою архитектуру.
7Целевая платформа: . 0+Установка: dotnet add package GameAI. Behavior Tree на стероидахВместо иерархии объектов — плоский массив инструкций.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





