Добавлен , опубликован
В общем, по итогам тестирования Lost Starship на давешнем конкурсе карт засел за написание более универсального и вменяемого квестодвижка на анрылах. Пару фишек взял прямо оттуда, в основном пилил с нуля, и в елом эта зараза наконец более-менее пашет (включая текстовые диалоги с неписями, которые делаются геморройно, но все равно могут быть ветвистыми, а через взаимодействие с системой флагов - могут меняться произвольным образом).
Пока что имеется:
  • База для идентификации объектов и взаимодействия с ними
  • Лазибельные лестницы
  • Кнопки, управляющие объектами на карте
  • Поббирабельные предметы
  • Двери (они же лифты)
  • Диалоговая система, поддерживающая до пяти ответов на вопрос
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
24
7 лет назад
0
Меня смущает фраза про чертеж уровня - что-то запахло костылями ;)
0
23
7 лет назад
Отредактирован Дарин
0
prog:
Меня смущает фраза про чертеж уровня - что-то запахло костылями ;)
Есть костыли )) Адекватные отдельному уровню события для данного непися перехватываются на чертеже уровня. Условно, непись говорит тебе, что открыл для тебя дверь - чертеж уровня перехватывает соотвествующую этому моменту комбинацию "индекс диалога-фаза диалога" (они хранятся и обрабатываются в гейминстансе) и дает команду этой двери открыться.
0
24
7 лет назад
0
Ну, на самом деле, главное что работает)
Не люблю я с левел-блюпринтом связываться - много мороки с ним при процедурной генерации и использовании множества уровней, а уж если и то и другое, то лучше сразу в бункер xD
многобуков
Я у себя еще не дошел до аналогичной системы, но зато у меня есть система "действий", которые можно вызвать по FName, с передачей параметров. Вся логика каждого действия инкапсулируется в отдельном UObject-е, у которого есть два отдельных набора параметров - один задается в процессе создания экземпляра объекта при регистрации "действия" (значения, известные до старта игры, инвариантные для каждого айдишника действия, но могущие отличаться от айдишника к айдишнику), а второй передается в момент активации (значения, известные только в ходе игры, например источник и цель действия или сила этого конкретного удара головой об потолок).
Еще у меня есть система трекинга "уникальных" объектов, реализованная через компонент, который я навешиваю в блюпринт и выдаю ему уникальный FName при размещении на карте. Компонент при начале игры, а по факту в момент спавна, автоматически "регистрирует" своего владельца в соответствующем трекере (который пока лежит в гейм инстансе). Автоматические удаление из трекера еще надо доработать, но это детали. Кроме возможности быстро найти кого-то по имени, это дает мне возможность обрабатывать ситуации, когда что-то может быть представлено разными объектами в разное время.
В итоге, сценарий с открыванием уникальной двери через квест у меня выглядел бы как приписывание к диалогу двух дополнительных FName-ов, один для действия "Открыть указанную дверь" и другой для выбора конкретной двери. А потом, по мере необходимости, это превратилось бы в struct с одним FName-ом и массивами параметров разных типов чтобы можно было любого слона туда запихнуть. А потом я бы на все плюнул и прикрутил Lua xD
Чтобы оставить комментарий, пожалуйста, войдите на сайт.