Инди-разработчик показал симуляцию 250 тысяч зомби в реальном времени на движке Godot

Инди-разработчик под ником theargyle поделился новой демонстрацией своего рендерера орды – Godot одновременно симулирует и отрисовывает 250 тысяч зомби на ноутбуке MacBook Pro с чипом M1.

Помимо мелких противников, на сцене работает около тысячи более крупных и сложных врагов, рассчитываемых на стороне ЦП – это светящиеся "боссовые" зомби с продвинутым поведением.

На Steam Deck та же сцена выдаёт 30 кадров в секунду без серьёзных просадок. По словам разработчика, портативная консоль почти без проблем справилась с требовательной нагрузкой на шейдеры, что говорит об эффективности экспорта Godot на разные платформы.

В основе симуляции лежит алгоритм boids с собственной реализацией избегания соседей.

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

Вся физика орды живёт на видеокарте. Мелкие зомби считаются в шейдере, а крупные CPU-противники передают свои координаты в видеопамять, чтобы орда могла обходить их при движении. Урон тоже подсчитывается на GPU и партиями возвращается на ЦП в виде очереди событий – для эффектов, звуков и подсчёта очков.

Сам разработчик описал поведение толпы как "упругую жидкость, отрисованную как система частиц".

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

Рендеринг устроен нестандартно для Godot. Вместо MultiMesh разработчик использует проход композитора с собственными вершинным и фрагментным шейдером – на каждого видимого зомби отрисовывается один квад, а вся орда выводится одним draw-call. Параллельно идёт запись в g-буфер, чтобы позже отрисовать обводки противников через ещё один проход композитора.

Мелкие зомби представляют собой 16-направленные билборды, тогда как крупные противники – обычные 3D-модели. Чтобы орда не выглядела однообразно, разработчик добавил вариативность – отражения анимации по оси X, небольшие различия в размерах и оттенках, чуть разные скорости проигрывания анимаций у каждого экземпляра.

Несмотря на масштаб, для каждого мелкого зомби отслеживается отдельное здоровье и урон. В системе можно задавать разные типы существ с собственными значениями скорости, радиуса избегания, радиуса нанесения урона, базового запаса HP, входящего урона и визуала.

Стек у игры нарочно минимальный. По словам разработчика, в коде используются только gdscript и glsl, без ECS – всю тяжёлую работу выполняют шейдеры, а нагрузка на ЦП на показанной сцене не превышает 8 процентов. Очень впечатляющий результат для такой "массовки".

Разработчик уточнил, что в видео показана поздняя стадия забега. На старте раунда орда должна представлять реальную угрозу, а ближе к финалу превращаться в симулятор тотального уничтожения зомби, когда давление переключается на крупных CPU-боссов.

В качестве визуального ориентира выбрана смесь между Vampire Survivors и Powerwashing Simulator.

Во время геймплея около 30 тысяч зомби разработчику пока хватает, но запас по производительности позволяет ему демонстрировать сцены и с 400 тысячами существ одновременно.

Страницы тайтла в Steam пока нет, как и официального названия.

Больше статей на Shazoo
Тэги:

Об авторе

Эксперт по Fallout
Главный редактор
Более 16 лет в индустрии освещения видеоигр, кино, сериалов, науки и техники. Особенно разбираюсь в серии Fallout, ценитель The Elder Scrolls. Поклонник Arcanum и Fallout Tactics. Больше всего играю в Civilization, Old World и градостроители. Изучаю ИИ и загадки космоса.