Войти
UnityФорумПрограммирование

Вопрос по архитектуре системы миссий и диалогов

#0
(Правка: 15:22) 14:15, 27 апр. 2021

Всем привет!

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

Когда приступил к созданию тестового билда оказалось, что имеющаяся у меня лаконичная система диалогов и миссий (в силу особенностей геймплея они неразрывно связаны) не годится для воплощения более-менее масштабных сценариев. Всё прекрасно работает, но скрипты болтаясь на иерархии GameObject'ов неинформативны. Это стало очевидно, когда принялся переиначивать полсотни произвольных реплик, написанных для отладки, и разные взаимодействия с объектами, дверьми, источниками света и т.д. В общем, для реального проекта нужна система миссий, причём, нодовая для наглядности.

В итоге разработал собственную нодовую систему миссий. На этапе проектирования (макета) выглядит примерно так:

+ Показать

Ноды у меня - абстрактный класс MissionNode, обладающий разными параметрами (ссылками на другие ноды, ссылками на GameObject'ы, ссылками на мои скрипты для управления источниками света, дверьми и т.д.) Обратная связь от объектов осуществляется стандартно - через метод BeginNode(int id); , запускающий выбранную ноду.

Вот краткое описание функционала нод:

+ Показать

Для обработки нод имеется очередь - технически это просто массив:

public MissionNode [] thread = new MissionNode();
Данные в котором перебираются через цикл foreach
В общем, всё просто и банально.

Чую, что есть какие то скрытые нюансы, которые могут потребовать очередной радикальной переработки системы миссий... :) Больше не хочу этим заниматься, хочу доделать сюжет и всю игру.

Готовые системы в ассетах и в виде разнообразных примеров мне не подходят, поэтому адаптировать не пробовал и их устройство и структуру данных подробно не изучал. Тем более, что они часто используют собственные библиотеки, поэтому ничего непонятно, пока не исследуешь вообще все скрипты, что требует много времени.

Хотелось бы узнать какие у кого возникали сложности в процессе разработки подобной системы и как они решались.

Буду благодарен предметным комментариям!


UnityФорумПрограммирование