我正在创建一个板球经理统计游戏。我需要创建一个逐个球的模拟游戏。比赛/球的结果将受到球员统计数据和其他外部因素(如天气或选择的战术)的影响。
我一直在阅读,大多数游戏都可以作为状态机实现,这听起来很吸引我,但因为我是板球新手,我没想到这个游戏是一个状态机。
Ball应该是状态机还是比赛或者是玩家还是全部3.我也不确定我将如何协调这个状态机(通过事件)。
我也很难确定国家和过渡。任何帮助将不胜感激。
答案 0 :(得分:3)
所以这就是我从你的问题中理解的内容 - 你的板球经理游戏将根据球员的统计数据(投球手的技能/经验,击球手的技能/ exp,守备/守门员统计等等)来模拟比赛用球。其他相关变量。根据我的理解,这将是一个算法引擎,而不是板球比赛的视觉表现。
现在回答你的问题,首先,我不相信你正在以正确的方式看待FSM。 FSM是一段代码,设计为在其生命周期的任何一点,它处于许多可能的执行状态之一。每个州都可以并且通常具有(这是它的重点)不同的更新例程。此外,每个状态可以在预定义的触发/事件时转换到另一个状态。您需要了解的是,状态为同一实体实现不同的行为。
现在,“大多数游戏都可以作为状态机实现” - 不是“一个”状态机,而是一整套状态机。游戏中的几个经理类,渲染器,游戏玩法对象,菜单系统,或多或少的一切都在它自己的状态机上运行。想象一个游戏角色,比如说拳击手,就这个例子而言。你会在'CBoxer'(?)课上找到的一些州将是'Blocking','TakingHit','Dodge',RightUpper','LeftHook'等等。
请记住,FSM更像是一种设计结构 - 一种设想解决手头问题的方法。你不一定要使用它们。你可以在没有状态机的情况下完成一个完整的游戏(我认为:))。但是FSM使你的代码设计非常直观和直接,而且在任何体面的项目中都很难找到它。
我建议你看一下FSM的一些代码样本。一旦你了解它背后的想法,你会发现自己在任何地方使用它们:)
答案 1 :(得分:1)
作为第一步,您应该遵守板球规则和球模型的结果,总结先前的球如何影响给定的球。
然后确定需要跟踪的内容,以及使用状态机来表示它是否方便。例如,统计数据通常不便于跟踪FSM。
考虑到这些信息,您应该能够构建模型。您需要跟踪的信息可能是状态机或特定状态的内部值。球之间的相互作用将决定从一台机器到另一台机器的过渡和事件。