Подскажите пожалуйста. Я сохраняю ВСЕ возможные скилы в игре в

качестве массива акторов.UObject-ов в подсистеме game instance. Чтобы игра создавала копию этих скилов и, при необходимости, к ним обращалась. Чтобы, например, урон скила чекнуть, или список тегов. (предупреждая вопросы, там хранится все, что ПРЕДШЕСТВУЕТ скилу, именно графически, на карте, он другим актором спавнится)
Сами скилы - акторы, либо UObject. Собственно, массив из них хранится в game instance, т.к. анрил требует, что для обращения к функциям объектов, они должны существовать на сцене. Вот в game instance пускай и существуют.
У каждого НПС есть свой личный массив доступных ему в данный момент скилов. Это массив из переменных, позволяющих идентифицировать этот скил, чтобы обратиться к game instance и достать оттуда нужный скил (actor/game instance). Пример: урон посчитать, ДО применения, когда НПС решает, что ему кастовать, и ему надо узнать, что урона больше нанесет.
Вопрос: что лучше всего использовать в качестве этой идентифицирующей переменной, и как? Условно, получаю эту переменную - и исходя из нее, кастую к нужному элементу массива акторов в game instance.
А то если без них, то мне придется тупо копии самих скилов (акторов) в каждом НПС прописывать. Излишняя трата памяти.

17 ответов

24 просмотра

Может тебе систему скиллов переписать на компонент?

Dim Alek
или вообще в GAS

Не знаком с GAS, использую в основном компоненты. Те же квесты, иконки на мини-карте компонентами. Компонент легко привязать к чему угодно.

Ну так есть же enumerator ы

Maxx
Ну так есть же enumerator ы

Каждому скилу своё строковое название в перечислении.

Андрей-Соболев Автор вопроса
Maxx
Каждому скилу своё строковое название в перечислен...

А как из энумерации потом обратиться к конкретному актору (из массива акторов в game instance)? Условно, НПС имеет массив энумерации. Он хочет проверить скил "fireball". Как он соотнесет значение enum "fireball" и актор "fireball"? Актор находится в массиве акторов в game instance, enum в массиве энумов в НПС Разве можно энумерацию с именем скила как либо сравнить?

Андрей Соболев
А как из энумерации потом обратиться к конкретному...

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

Maxx
Попробуй посмотреть туторы по созданию системы ору...

Вот я оружие, квесты, инвентарь и так далее делаю через дататабл. Удобно.

Виталий Усатов
Вот я оружие, квесты, инвентарь и так далее делаю ...

Ну у мну тож используется для оружия, но если честно имхо дата тэйбл в анриле какой-то недоделанный 🤨 может конечно это мне просто кажется после sql

Ты жопу с пальцем-то не сравнивай 😆

Aleksei DTG
Ты жопу с пальцем-то не сравнивай 😆

Просто не хватает хоть каких то базовых иструментов что ли. Хотя я сильно не искал, могет какие плагины есть чтоб мини субд сделать.

Maxx
Просто не хватает хоть каких то базовых иструменто...

Да ещё как не хватает, я тебе о том и говорю, что DataTable в анриле - это просто, чтобы хоть что-то было. Ни о каких связях там речи в помине нет, но в принципе всё это поверх пишется, относительно на приемлемом уровне. Спасибо, что есть мета тэг GetOptions, можно хоть ограничить опции выбора при связи таблиц

а вообще в посте много непоняток. Как связаны там "сцена" и гейм инстанс. Зачем кастовать "к элементу массива". Зачем мешать разные классы в едином списке скиллов. и т.д. и т.п.

Андрей-Соболев Автор вопроса

Если все это расписывать, то ТЗ на 2 страницы выйдет, я ограничить постарался. Если прям вкратце - то такова специфика реализации скилов, т.к. их используют НПС по усложненной схеме - ИИ не использует скилы напрямую, он посылает сигнал "использовать что нить с этим, этим и вот этим", а НПС сам ищет, что у него естьиз похожего.

Похожие вопросы

Обсуждают сегодня

Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
13
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
Как думаете через какой сервис они верифицируют?
inc.
5
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Добрый день! Подскажите, каким сборщиком фронта для OctoberCMS кто пользуется? Я имею ввиду сборщики, с которыми можно работать по стандартной схеме директорий октября. Я испо...
Николай Афанасенко
2
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Вопрос: Здравствуйте! У меня возникла проблема с использованием плагина Mall в OctoberCMS. Я использую все файлы и компоненты в их исходном виде, без изменений. Однако на стр...
𐩱𐩪𐩣𐩱𐩲𐩺𐩡
8
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
9
Карта сайта