我正在计划一款冒险游戏,无法根据故事的进展状态弄清楚实现关卡行为的正确方法。
我的单人游戏拥有一个巨大的世界,玩家必须在游戏中的各个点与城镇中的人们互动。但是,根据故事的进展,会向玩家呈现不同的内容,例如,行会领导将地点从城镇广场更改为城市的各个地点;门仅在完成特定例程后的一天中的特定时间才能解锁;仅在达到特定里程碑后,才会发生不同的切换屏幕/触发事件。
我天真地想到了最初使用switch {}语句来决定NPC应该说什么或可以找到NPC的想法,并且只有在检查了全局game_state变量的条件之后,才能使任务目标可交互。但是我意识到,为了改变对象的行为,我会很快遇到很多不同的游戏状态和切换情况。该switch语句也将非常难以调试,而且我猜它可能也很难在关卡编辑器中使用。
所以我想,不是让单个对象具有多个状态,而是应该让同一个对象的多个实例具有一个状态。这样,如果我使用诸如关卡编辑器之类的工具,则可以将NPC的实例放置在他可能出现的所有不同位置,也可以将其放置在每个对话状态的实例。但这意味着在关卡周围会漂浮着许多不活跃,不可见的游戏对象,这可能会给内存带来麻烦,或者在关卡编辑器中很难看到,我不知道。
或者简单地为每个游戏状态创建一个相同但独立的级别。这感觉是最干净,没有错误的处理方式,但是感觉就像是大量的手工工作,以确保该关卡的每个版本确实彼此相同。
我所有的方法都觉得效率低下,所以回顾一下我的问题,是否有更好的或标准化的方法来实现根据故事进展状态来实现某个级别的行为?
PS:我还没有关卡编辑器-考虑使用JME SDK之类的东西还是自己制作。