KUPRUMprog

KUPRUMprog

На Пикабу
Дата рождения: 18 июня
100 рейтинг 1 подписчик 1 подписка 4 поста 0 в горячем
Награды:
Пикабу 17 лет!
0

Симуляция эволюции: ECS-архитектура без DOTS — замеры производительности⁠⁠

Всем привет! Продолжаю тему симуляции эволюции, первая версия была в прошлом посте. Сегодня будет сразу третья версия на 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 вряд ли доберусь, но применять эту архитектуру в других проектах с большим количеством агентов планирую. Надеюсь, хватит сил и времени организовать их по новому.

Надеюсь будущий проект который я выложу

Скачать билды симуляторов эволюции можно по ссылкам:

Версия 1 без ECS

Версия 3 с ECS

Показать полностью 1 1

Ассессмент и программирование⁠⁠

Здравствуйте! Сегодня хочу опубликовать проект не на Unity — это стек HTML и JS. Так получилось, что мне интересно не только программирование, но и психология. Я довольно глубоко погружён в психодиагностику, поэтому мои навыки часто находят применение в создании компьютерных психологических тестов. Поэтому проект по тесту Роршаха — вовсе не случайность.

Так случилось, что мне нужно было объяснить, что такое ассесмент-центр. Читать скучную лекцию или проводить семинар не хотелось. Хотелось дать что-то необычное. Просматривая возможные упражнения по ассессменту, я наткнулся на простое упражнение «сортировка» (In-Basket). И подумал: почему бы не сделать интерфейс, который будет случайным образом выдавать набор писем? Так родился этот проект.

Что такое ассесмент-центр? Это метод оценки персонала, в котором кандидаты или сотрудники выполняют деловые упражнения, а обученные наблюдатели оценивают их поведение и управленческие навыки. Используется при найме топ-менеджеров, формировании кадрового резерва и оценке потенциала сотрудников.

Ассессмент и программирование

In-Basket — одно из ключевых упражнений ассесмент-центра. Испытуемый получает набор входящих документов (письма, звонки, жалобы, служебные записки) и должен обработать их за ограниченное время — в нашем случае за двадцать минут. Нужно принять решения, делегировать задачи, назначить сроки. Наблюдатель оценивает не только качество решений, но и поведение: как человек распределяет приоритеты, справляется с многозадачностью, реагирует на стресс и работает под давлением.

В проекте есть организационная структура компании, карта наблюдателя с критериями оценки, а также система рандомизации, которая делает каждый тест уникальным.

Скачать можно тут: https://disk.yandex.ru/d/eXjD89q3QmtqGQ

Как запустить: скачиваете архив с Яндекс.Диска, запускаете программу через Index.html.

По умолчанию доступен набор для компании логистики, но в папке data есть JSON для психологического центра. Чтобы загрузить другой ассет, в верхней части окна нажмите кнопку «Выбрать JSON файл». После выбора файла интерфейс обновится.

Показать полностью 1
1

Симулятор эволюции⁠⁠

Снова всем привет! Сегодня хочу опубликовать симулятор. Вообще так получается, что жанр симуляторов один из моих любимых. Пожалуй, от этого даже страдают мои проекты. Ну то есть,  вдохновился я чем-то, дай думаю, сделаю простенькую стерлядку по мехам. Ну и тут Остапа понесло:

Надо прикрутить адаптивную анимацию ног.

Просто башен врагов недостаточно - нужны полноценные ИИ противники.

А чего бы не добавить союзников.

А теперь добавим управление войсками…

Но об этом в другой раз.

Шагающий мех

Сегодня хочу выложить проект, который симулирует эволюцию, на самом деле тут два проекта.

Это симулятор поведения животных. В проекте представлено  4 вида животных:

Куры – бегают по всей карте щиплют траву, и морковки если найдут.

Коровы – держатся стадами, едят только траву.

Волки – держатся стаей, имеют логово, куда возвращаются.

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

Возможности пользователя скромные: движение камеры, слежка за выбранным существом, у животных нет анимации.

2. Симулятор эволюции. В этой симуляции есть только одно существо, но оно может изменяться, изменения идут по трем основным направлениям: размер, скорость перемещения, зоркость. Существа могут специализироваться на пище. Универсалы поедают всё: и съедобные шары, и других существ. У них могут появиться потомки-специалисты, которые едят только шары или только других существ. Специалисты получают бонус к сытости.

У пользователя больше возможностей: движение камерой, наблюдение за существами, настраивать параметры среды (питательность еды, время спавна), создавать особые мутации и т.д.

Скачать можно тут: https://disk.yandex.ru/d/TrzqY7eiC9RQFg


Это один из первых моих проектов в Unity, писал я его очень давно, поэтому в код лучше не смотреть. Тем не менее, производительность довольно хорошая.

Изначальная идея была не просто сделать мобов, которые появляются в определённых зонах и ходят туда-сюда, а создать существ с поведением и своей жизнью. Мне очень нравились рассказы по The Forest — про то, что у туземцев есть свой ритм, свои дела. Мне казалось, что это может быть интереснее. Конечно по здравому рассуждению, когда натыкаешься на медведя, тебе не известно и не узнать какой он путь прошел, а может просто заспавнился вне зоны твоей видимости.

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

Показать полностью 6
0

Генератор пятен Роршаха на Unity⁠⁠

Всем привет! Решил тоже выложить свои поделки. В свободное время программирую всякое (работаю по другой специальности). Стало интересно, смогу ли найти дополнительную мотивацию для продолжения хобби — всё-таки работать в стол бывает надоедает.

Хочу сделать серию постов с программами, которые я сделал за много лет. Правда, надо их привести в порядок, поэтому посты будут нерегулярными. Некоторые проекты — так вообще гигантские, по ним, думаю, будет несколько постов, так как продолжаю их развивать.

Скриншоты из проектов на Unity

Скриншоты из проектов на Unity

Пока планирую опубликовать только проекты на Unuty. Я понимаю их уровень поэтому и не думаю про steam, но может данный шаг приведет каким-то изменениям, кто знает.

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

Проект очень простой, я его написал за пол дня наверное, больше мучился с выбором материалов, написан на Unity. Он позволяет через управление системой частиц получить изображение, похожее на кляксы Роршаха. В психологической практике они, понятно, мало применимы — для полноценного теста нужна статистика ответов респондентов. Но как простой генератор замысловатых пятен — может пригодиться. Наверное.

Что позволяет приложение:
Пятна генерируются на основе заданного сида, поэтому вы можете получить ожидаемый результат.

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

Сейчас понял, что нужна кнопка скриншотов, постараюсь позже обновить приложение.



Может у вас есть идеи по применению, может доработки?

Скачать можно тут яндекс.диск: https://disk.yandex.ru/d/E6s6U7q2j9kvEg

Показать полностью 3
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества