我正在尝试设计一个需要执行以下操作的游戏:拥有一个游说时段,将玩家移动到游戏前设置,开始游戏,结束游戏,重复。
我当前的设置如下:MatchManager创建并销毁Match对象并在需要时设置它的状态。有一个MatchState枚举(无大厅时段),玩家跳过大厅,直接从游戏结束到下一个游戏前。我们现在想要添加一个大厅时段,如上所述。
在游戏的先前版本中,我们有一个Lobby对象,其中包含一系列玩家。然后我们在MatchManager中只有2个字段:当前匹配和当前大厅。使用大量痛苦的空检查,我们能够判断游戏是否在游说时段。我们不喜欢这个解决方案,并想知道是否有更好的解决方案。
我想知道的是,在没有将其添加到MatchState的情况下管理大厅的好方法是什么(因为MatchState应该只负责匹配的LifeCycle)并且也不创建一个全局GameState(此游戏旨在非常灵活,所以在某些时候我们可能会同时运行多个匹配。这需要某种MatchState,一次管理2个状态会非常混乱)。此外,还有一种替代方法可以使用枚举来实现" MatchState"全部一起?我们的主要目标之一是创建一个Core游戏引擎,在这个引擎中我们可以在不破坏某些代码的生命周期的情况下轻松添加/删除状态。
编辑:另外,我们不想直接将Lobby添加到核心(因为我们的核心可能用在不需要大厅的游戏中)。我只是想强调这一点,因为这意味着我们正在寻找一种不同类型的解决方案(动态状态)。