Я планирую приключенческую игру и не могу понять, как правильно реализовать поведение уровня в зависимости от состояния развития сюжета.
Моя однопользовательская игра представляет собой огромный мир, в котором игрок должен общаться с людьми в городе на разных этапах игры. Однако, в зависимости от развития сюжета, игроку будут представлены разные вещи, например, лидер гильдии изменит локацию с городской площади на разные локации вокруг города; Двери будут открываться только в определенное время дня после завершения определенной процедуры; Различные события на экране / триггере происходят только после достижения определенного этапа.
Я наивно думал о том, чтобы изначально использовать оператор switch {}, чтобы решить, что должен сказать NPC или где его можно найти, и сделать задачи квестов взаимодействующими только после проверки состояния глобальной переменной game_state. Но я понял, что быстро столкнусь с множеством различных игровых состояний и переключателей, чтобы изменить поведение объекта. Этот оператор switch также будет сложно отладить, и я думаю, его также сложно использовать в редакторе уровней.
Поэтому я подумал, что вместо одного объекта с несколькими состояниями, может быть, у меня должно быть несколько экземпляров одного объекта с одним состоянием. Таким образом, если я использую что-то вроде редактора уровней, я могу разместить экземпляр NPC во всех разных местах, в которых он может когда-либо появляться, а также экземпляр для каждого состояния диалога, которое у него есть. Но это означает, что будет много неактивных, невидимых игровых объектов, плавающих вокруг уровня, что может быть проблемой для памяти или просто трудно увидеть в редакторе уровней, я не знаю.
Или просто, сделайте идентичный, но отдельный уровень для каждого игрового состояния. Это самый чистый и безошибочный способ сделать что-то, но это похоже на массовую ручную работу, гарантирующую, что каждая версия уровня действительно идентична друг другу.
Все мои методы кажутся неэффективными, поэтому, повторюсь, мой вопрос: есть ли лучший или стандартизированный способ реализации поведения уровня в зависимости от состояния развития сюжета?
PS: у меня еще нет редактора уровней - я думаю об использовании чего-то вроде JME SDK или создании своего собственного.