Найти в Дзене
Two Box Games

Инвентарь. 25.07.2025.

Сердечно приветствую всех! С вами разработчик из скромной, но амбициозной
инди-студии Two Box Games — да-да, тех самых, кто не боится сражаться с
багами и кофеином в одной руке. Сегодня я хочу поделиться с вами темой,
которая щемит душу любого геймдизайнера: куда же отправляется тот самый
заветный дроп после победы над врагом или открытия сундука? Вроде бы всё
ПРОСТО — в инвентарь, как в бездонный мешок Мерлина. Но давайте
взглянем на это не глазами игрока, а глазами закоренелого разработчика,
проведшего в UNREAL ENGINE 5 более 2500 часов — и да, мы делаем игру
исключительно на BLUEPRINT, потому что кто сказал, что программисты не
могут быть художниками? — Начнем с инвентаря — этой загадочной коробочки с ячейками, сортировкой и весом, которая вроде бы проста, но на самом деле — настоящий лабиринт.
Визуальная часть — это лишь верхушка айсберга, под которой скрывается связь с технической стороной: обновления, инициализация, сортировка. И, конечно же, база данных — сердце ада дл

Сердечно приветствую всех! С вами разработчик из скромной, но амбициозной
инди-студии Two Box Games — да-да, тех самых, кто не боится сражаться с
багами и кофеином в одной руке. Сегодня я хочу поделиться с вами темой,
которая щемит душу любого геймдизайнера: куда же отправляется тот самый
заветный дроп после победы над врагом или открытия сундука? Вроде бы всё
ПРОСТО — в инвентарь, как в бездонный мешок Мерлина. Но давайте
взглянем на это не глазами игрока, а глазами закоренелого разработчика,
проведшего в UNREAL ENGINE 5 более 2500 часов — и да, мы делаем игру
исключительно на BLUEPRINT, потому что кто сказал, что программисты не
могут быть художниками?

UMG дизайн инвентарь.
UMG дизайн инвентарь.

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

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

И тут, за кружкой пива (да-да, вдохновение приходит неожиданно), меня осенило: а что если сделать инвентарь динамическим, генерируемым в реальном времени? Забудем о классах, возьмем NAME — своего рода токен, который хранит лишь ключ к загадке, из которого собирается всё остальное.

Таблица с предметами в игре.
Таблица с предметами в игре.

Далее — сборка инвентаря. У нас есть DATA TABLE и PDA (но PDA пока оставим на потом, пусть отдыхает). Чтобы избежать фризов при большом количестве
предметов, разделим всё на категории экипировки и создадим структуру для
каждой, а DATA TABLE будет хранить другие таблицы. Каждый raw-токен
станет нашим проводником в этом мире данных. И вот у нас есть токены,
таблицы и инвентарь — пора связать их воедино! Каждая ячейка — это
пустой объект, готовый принять данные о предмете. Лучше всего разместить
этот объект в GAME MODE, где при старте уровня происходит инициализация. Но чтобы не создавать пустой набор каждый раз, нужна система сохранения и загрузки — и тут начинается Второй акт нашей Драмы: долгое сохранение гигантского количества данных.

Game-Mode с инициализацией инвентаря.
Game-Mode с инициализацией инвентаря.

Чтобы упростить задачу, объединим инвентари в переменную Map, где ключ — ENUM, определяющий тип инвентаря, а значение — структура с токенами. При
запуске уровня загружаем SAVE с токенами, инициализируем предметы,
перемещая данные в объекты. Весь процесс — это танец между таблицами,
загрузкой уровня, сейвом и объектами.

Save-объект.
Save-объект.

Пока поставим эти размышления на паузу — в будущем расскажу, как очищать
объекты, переносить данные и многое другое. А пока оставайтесь с нами,
задавайте вопросы и помните: за каждым идеально работающим инвентарем
стоит бесконечное количество кофе и пара сотен часов кода!

#BlueprintDev #VisualScripting #UE5 #UnrealEngine #IndieGameDev #GameplayProgrammer #TechnicalDesigner #GameLogic #AI #UI #AnimationBlueprints #Prototyping #Git