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

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

17 ответов

29 просмотров

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

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 страницы выйдет, я ограничить постарался. Если прям вкратце - то такова специфика реализации скилов, т.к. их используют НПС по усложненной схеме - ИИ не использует скилы напрямую, он посылает сигнал "использовать что нить с этим, этим и вот этим", а НПС сам ищет, что у него естьиз похожего.

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

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

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта