Mortal Kombat на Старкон 2026



Привет всем! Ищу напарников для Sven Co-op и PvE-игр (Steam / Discord) Всё в ЛС
Прайм-тайм: Личное +05:00 GMT около 20:00+ игровое время по ASTANA, у участников чата по разному, чат новый!
Требования к связи: Стабильный интернет по возможности, микрофон, вебка если есть для ДС, ПК периферия, джойстики и т.д.
#Поиск напарников , #Steam , #Discord , #Sven Co-op , #Кооперативные игры , #PvE, #Игры , #Текстовый чат , #Голосовой чат .
Всем привет! Продолжаю тему симуляции эволюции, первая версия была в прошлом посте. Сегодня будет сразу третья версия на ECS-архитектуре и замеры производительности.
Дело в том что за идею симулятора эволюции я брался не раз. Разрабатывая первую версию программы было ощущение, что с производительностью не дотягиваю. Сотни существ - это хорош, но хотелось то тысячи. Поэтому отложив первую версию попробовал создать новый проект. Доведя до определенного уровня вторую версию понял, что получается плюс минус тоже самое, плюс неожиданные баги, в общем бросил его.
Однажды серфя интернет наткнулся на ECS. ECS (Entity Component System) — это архитектурный подход, где данные и логика разделены. Вместо того чтобы каждый объект сам думал за себя, есть центральная система, которая обрабатывает всех сразу.
Читал статьи, смотрел бенчмарки — люди гоняли десятки тысяч объектов без просадки ФПС. Выглядит очень впечатляющие, общий смысл я понял но не до конца. Полноценный DOTS (Data-Oriented Technology Stack) с Job System и Burst Compiler показался сложным: "вынеси логику в отдельную функцию, там она выполнится, забираешь результат". Смысл понятен, но выглядит геморно, хороших гайдов на русском не нашёл. Поэтому решил попробовать только архитектуру. В теории она тоже должна дать прирост: вызываются не сотни объектов, а несколько, всё обрабатывается в одном цикле, что позволяет лучше управлять распределением расчётов и оптимальнее использовать память.
Так появилась третья версия проекта, по функционалу она очень близка первой версии, но есть и отличия: можно выбрать размер поля, немного больше статистики. А что же по производительности? До недавнего времени я думал, что мой эксперимент провалился. Но готовясь к этому посту замерил производительность с помощью монитора производительности Steam (проверить через Unity Profiler не смог, яндекс диск перепахал первый проект).
На видео вы можете видеть сравнение двух проектов, вверху на видео это первая версия программы, внизу третья версия (с архитектурой ESC).
Условия сравнения: обе версии на Unity 6.3, ~1000 существ. Два режима: 1x и 5x ускорение симуляции. Один замер, не средний показатель. Железо одно: мой ноутбук.
V1 без ECS: 1x — 53 FPS, 5x — 10 FPS
V3 с ECS: 1x — 72 FPS, 5x — 38 FPS
То есть в случае симуляции на скорости 1x разница FPS 27%, при ускорении в 5x разница возрастает до 73%. Стоит отметить: в V3 игровое поле меньше, чем в V1. Меньше площадь — выше плотность существ, больше столкновений и нагрузка на NavMesh. На большом поле V3 показывала ещё более высокий FPS.
Профайлер Unity показывает, что узкое место обеих версий — физика движка: много столкновений и NavMesh. ECS-архитектура сама по себе не решает эти проблемы. Нужны Job System и Burst Compiler.
Даже смена архитектуры без DOTS даёт прирост производительности. Логика стала непривычной, но код на мой взгляд более читаемый. До полноценного DOTS вряд ли доберусь, но применять эту архитектуру в других проектах с большим количеством агентов планирую. Надеюсь, хватит сил и времени организовать их по новому.
Надеюсь будущий проект который я выложу
Скачать билды симуляторов эволюции можно по ссылкам: