Популярное

Музыка Кино и Анимация Автомобили Животные Спорт Путешествия Игры Юмор

Интересные видео

2025 Сериалы Трейлеры Новости Как сделать Видеоуроки Diy своими руками

Топ запросов

смотреть а4 schoolboy runaway турецкий сериал смотреть мультфильмы эдисон
dTub
Скачать

Кирилл Гейзеров — Entity Component System вместо классического ООП в C++

Автор: C++ Russia — Конференция по разработке на Cpp

Загружено: 2025-10-02

Просмотров: 3431

Описание:

Подробнее о конференции 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++ комьюнити.

Кирилл Гейзеров — Entity Component System вместо классического ООП в C++

Поделиться в:

Доступные форматы для скачивания:

Скачать видео mp4

  • Информация по загрузке:

Скачать аудио mp3

Похожие видео

Винсент Амбо — Ржавеющие плюсы: как внедрять современные проверки С++ в промышленных масштабах

Винсент Амбо — Ржавеющие плюсы: как внедрять современные проверки С++ в промышленных масштабах

Максим Кита — Power of Small Optimizations

Максим Кита — Power of Small Optimizations

Паттерн Entity-Component-System в играх на C // Демо-занятие курса «Программист С»

Паттерн Entity-Component-System в играх на C // Демо-занятие курса «Программист С»

Александр Исхаков — Шардирование: оптимизируем синхронизацию в системах с частой записью

Александр Исхаков — Шардирование: оптимизируем синхронизацию в системах с частой записью

Анастасия Черникова — Компиляторный бенчмаркинг и JIT-компиляция

Анастасия Черникова — Компиляторный бенчмаркинг и JIT-компиляция

Цепи Маркова — математика предсказаний [Veritasium]

Цепи Маркова — математика предсказаний [Veritasium]

Почему я программирую на С/C++ (язык для профессионалов!)

Почему я программирую на С/C++ (язык для профессионалов!)

Guest Lecture: Vladimir Beletsky - From ECS to FSM with injections 22.05.2024 [NUP24 GD101 CSE06]

Guest Lecture: Vladimir Beletsky - From ECS to FSM with injections 22.05.2024 [NUP24 GD101 CSE06]

Кирилл Колодяжный — Роль C++ в архитектуре современных платформ машинного обучения

Кирилл Колодяжный — Роль C++ в архитектуре современных платформ машинного обучения

Интернет в небе: Сергей

Интернет в небе: Сергей "Флеш" о том, как «Шахеды» и «Герберы» научились работать в одной связке

Касты в C++ | static_cast | dynamic_cast | reinterpret_cast | const_cast | c-style cast

Касты в C++ | static_cast | dynamic_cast | reinterpret_cast | const_cast | c-style cast

Никита Руденко — Использование Conan на практике: неочевидные проблемы и решения

Никита Руденко — Использование Conan на практике: неочевидные проблемы и решения

Что такое ECS и с чем его компилят, Андрей Боронников

Что такое ECS и с чем его компилят, Андрей Боронников

Легендарная мелодия 90-х. Роберт Майлз

Легендарная мелодия 90-х. Роберт Майлз

Илья Казаков — В Asio за корутинами

Илья Казаков — В Asio за корутинами

Ключевые моменты ECS, о которых не пишут на Википедии. Никита Ильин, Gameplay programmer, Larian

Ключевые моменты ECS, о которых не пишут на Википедии. Никита Ильин, Gameplay programmer, Larian

Сверхмассивная черная дыра TON 618 в любительский телескоп

Сверхмассивная черная дыра TON 618 в любительский телескоп

ESP32: распознавание речи нейросетью (TensorFlow Lite)

ESP32: распознавание речи нейросетью (TensorFlow Lite)

Кирилл Надеждин (Kumo Kairo) - ECS в разработке игр — хорошая архитектура приложений для всех

Кирилл Надеждин (Kumo Kairo) - ECS в разработке игр — хорошая архитектура приложений для всех

Эта технология сделала нас богатыми

Эта технология сделала нас богатыми

© 2025 dtub. Все права защищены.



  • Контакты
  • О нас
  • Политика конфиденциальности



Контакты для правообладателей: [email protected]