Розробка

UE4 | Інвентар для Multiplayer #3 | Структура взаємодії

Список статей

UE4 | Інвентар для Multiplayer #1 | Сховище даних на DataAsset
UE4 | Інвентар для Multiplayer #2 | Підключення Blueprint до C++
UE4 | Інвентар для Multiplayer #3 | Структура взаємодії

У цій статті ми розглянемо структуру інвентарю, Яку я застосував для свого мультиплеєрного проекту. Даний розділ зовсім невеликий і не содержии коду.

Сам інвентар являє собою компонент, який використовується не тільки для Character, але і для будь-якого об’єкта в грі, який згідно зі сценарієм може бути сховищем предметів. Наприклад: скриня, ящик, коробка, шафа і т. п.

Цей компонент містить в собі TArray, елементи якого зберігають мінімум необхідної інформації:

  1. Ідентифікатор об’єкта, у вигляді GameplayTag. Як я вже говорив раніше, GameplayTag зручніше, ніж, скажімо, FName, так як суттєво знижує ризик помилки.
  2. Кількість об’єктів у слоті, заданий змінної int.
  3. Категорія об’єкта, щоб зрозуміти як його можна застосовувати. Для цієї мети замість Enum можна використовувати GameplayTagsContainer, що дозволить нам віднести об’єкт до безлічі типів у разі необхідності.
  4. Унікальні властивості об’єкта, які зберігаються у вигляді структури з зв’язки GameplayTag і float. Тут можна зберігати як установки, так і модифікатори.

В даній структурі інвентарю відсутні посилання на самі об’єкти, тому що після збереження і завантаження гри, вони будуть посилатися на області, що зберігають вже інші дані. Таким чином, необхідний якийсь інструмент, який міг би відновити (respawn) всі об’єкти після завантаження гри. Тут на допомогу приходить DataAsset, який завжди доступний на стороні сервера (т. к. в нашому випадку ми підключили його через GameMode) і готовий допомогти розмістити об’єкт на сцені.

Компонент інвентарю так само містить логіку вилучення і додавання необхідної кількості об’єктів, логіку заповнення слотів. Всі функції, що запускаються в контейнері, повинні працювати тільки на стороні сервера.

Структура взаємодії інвентарю та бази даних виглядає наступним чином

Унікальні властивості об’єкта, такі як додаткові components, і логіка без проблем налаштовуються засобами С++ та/або Blueprint.

В наступному розділі я покажу як можна підключати створений компонент до Character або будь-якого іншого об’єкта.

Будь-яка конструктивна критика вітається. Бажано підкріплена пропозиціями.

P. S. У перші дві статті додані зображення, що пояснюють.

Related Articles

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Close