АнонсБлок 4 - UE EngineeringКурс: Тестируется

Почему std::vector может ломать Unreal

TArray, TMap, TSet, UObject references и контейнеры как часть gameplay performance.

Главная боль

Зачем Epic сделали свои контейнеры?

Главная мысль

Контейнеры - часть gameplay performance.

Главная боль

Зачем Epic сделали свои контейнеры?

Зачем это существует?

Контейнеры Unreal связаны с reflection, GC, serialization, memory tracking и editor tooling. STL может быть нормальным C++, но не всегда нормальным Unreal C++.

Темы

  • TArray
  • TMap
  • TSet
  • RemoveSwap
  • GC visibility
  • UObject refs in containers
  • STL vs UE

Greybox Arena

  • Active projectile arrays
  • Nearby enemy tracking
  • Gameplay effect collections

Практика

  • RemoveAt vs RemoveSwap
  • Где порядок важен
  • Где порядок не важен

Где люди обычно ломаются?

  • Хранят UObject references в контейнерах, невидимых для GC
  • Используют RemoveAt в горячих местах, где порядок не нужен
  • Не понимают стоимость поиска, удаления и reallocations
  • Смешивают STL и UE containers без причины
  • Не думают о container choice как о gameplay decision

Как это выглядит в production?

Production gameplay programmer выбирает контейнер под доступ, удаление, порядок, GC visibility и hot path performance, а не просто "мне нужен список".

Главная мысль

Контейнеры - часть gameplay performance.

Бейдж Unreal Authorized Instructor используется по лицензии Epic Games. Absolute Academy — независимый авторский проект. Авторизация инструктора не означает, что Epic Games одобряет или спонсирует Академию и её учебные материалы, либо что Академия аффилирована с Epic Games.

Мой учебный код можно свободно использовать в своих проектах. Упоминание автора — по желанию. Условия и лицензия 0BSD