У нас вы можете посмотреть бесплатно Кирилл Гейзеров — Entity Component System вместо классического ООП в C++ или скачать в максимальном доступном качестве, видео которое было загружено на ютуб. Для загрузки выберите вариант из формы ниже:
Если кнопки скачивания не
загрузились
НАЖМИТЕ ЗДЕСЬ или обновите страницу
Если возникают проблемы со скачиванием видео, пожалуйста напишите в поддержку по адресу внизу
страницы.
Спасибо за использование сервиса ClipSaver.ru
Подробнее о конференции C++ Russia: https://jrg.su/9Sszhd — — Скачать презентацию с сайта C++ Russia — https://jrg.su/kBNdD8 Игровой движок — это обработка тысяч объектов в реальном времени. ООП, к которому мы привыкли в C++, не лучшим образом подходит для обеспечения нужной гибкости и производительности: 1. Жесткая связь между данными и логикой. 2. Сложность управления зависимостями. 3. Неэффективная организация данных. Добавим сюда еще «плюсовые» сложности: 1. «Слабое связывание» в C++ часто происходит через указатели, управление которыми в условиях динамичного игрового мира — задача со звездочкой. 2. Неявный резолвинг указателей виртуальных таблиц — также не очень бьется с производительностью, когда циклы обработки могут за кадр обрабатывать тысячи полиморфных сущностей. Все это приводит не только к низкой производительности, плохой масштабируемости, но и к снижению эффективности разработки игр, т. к. время на дебаг увеличивается в разы, повышается требование к компетенции разработчиков, что часто сильно бьет в рамках ограниченного времени доставки обновлений. Кирилл рассказал об альтернативном пути архитектурирования движков на C++: ECS (Entity Component System). ECS предлагает иной взгляд на организацию структуры движка: 1. Слабая связанность и модульность. Данные и логика их обработки разделены. Такой подход упрощает добавление новой функциональности без необходимости затрагивать уже существующие механики. В дополнение к этому в основу ECS заложено предпочтение доступа к объектам через ID вместо указателей, что сильно упрощает работу с динамичными сценами. 2. Гибкость. Минимум наследования, максимум агрегации. Если нужно обработать, например, физику всех сущностей за раз, мы обрабатываем только физику. Если нужно построить некий агрегат — мы можем сконструировать его налету, используя только те компоненты, которые нужны для решения задачи. 3. Оптимизация производительности. Компоненты хранятся в памяти в виде пулов, что значительно улучшает производительность за счет повышения эффективности кэширования и использования SIMD-инструкций. В докладе рассмотрели аспекты реализации ECS на C++, DOD (Data Oriented Disign), а еще поговорили про выбор стратегии мультипоточности для подобных систем. Доклад будет интересен не только игроделам, но и всему C++ комьюнити.