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

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

17 ответов

19 просмотров

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

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

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

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

Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
Всем привет, есть небольшая проблема Есть такой скрипт document.addEventListener('DOMContentLoaded', function () { const sliderTabs = document.querySelectorAll('.s...
A da
8
@go1337 @dblackCat Привет. Все ещё дрочусь с fastpanel. Добавил второй домен который должен смотреть в рут того же сайта, но так как это просто домен, а не сайт, я не могу ему...
Ross 🦴
9
До речі, в ево нема можливості чи якого розширення щоб з адмінки з телефона зайти і терміново щось в верстці поправити?
Женя
7
Ну, так - шо, грамодяне-эрленгяне? Все - готовы подписаться под словами "гуру" на счёт трудности применения POSIX threads и про, конкретно, мьютексы, что "... недопоставишь м...
Wlad
21
кто-нибудь пользуется тайм-трекерами во время работы? так много разных нагуглил, может есть что-то популярное
Lencore
8
Пацаны. Я разрабатываю софт для инвайтинга на телетон, и столкнулся с такой проблемой, в один из чатов не могу приглашать никого, не дает добавлять, в то же время через официа...
Kernel Panic
11
Скажите, а кому нужен Currency как отдельный плагин вместо полноценного ecommerce в OctoberCMS? Кто-то использует его уже или планирует в будущем? Может я что-то не понимаю?
Igor
13
Розмовами про Рево мені нагадали часи, коли шаблони правилися прямо в адмінці. Хто в курсі, чому відійшли від цієї практики, так блейд не працює? Доволі зручно ж було (інколи)
Женя
3
привет, как сбилдить свифт прогу статически? делаю -Xswiftc -static-executable - получаю такую ошибку: /lib/aarch64-linux-gnu/libc.a(pthread_join_common.o)(.note.stapsdt+0x14...
🦊 Fox 🌸 🌸
6
Карта сайта