EnTT
Подробнее
- Создатель
- Микеле Каини (skypjack)
- Год
- 2017
- Тип
- Библиотека C++
- Лицензия
- MIT
- Исходный код
- github.com/skypjack/entt
Современная header-only библиотека на C++, реализующая Entity Component System на разреженных множествах, а не на архетипах.
Микеле Каини выпустил EnTT в 2017 году. Для каждого типа компонента заводится своё разреженное множество: плотный массив компонентов плюс разреженный индекс, ключом которого служит идентификатор сущности. Поэтому добавлять и убирать компоненты почти бесплатно — в отличие от схем на архетипах, где сущность целиком переезжает из таблицы в таблицу. Счёт приходит при одновременном обходе нескольких компонентов; EnTT смягчает его «группами», которые держат множества отсортированными в одном порядке.
Это строительный блок, а не движок, и самая известная его роль — ядро ECS в Minecraft Bedrock Edition. Заодно он стал точкой отсчёта в вечном споре о том, какая модель хранения на самом деле быстрее, — ответ, как обычно: «зависит от задачи».