我正在创建一个板球经理统计游戏。我需要创建一个逐球模拟的游戏。比赛/球的结果将受到球员统计数据和其他外部因素的影响,如天气或选择的战术。
我一直在阅读,大多数游戏都可以实现为状态机,这听起来很吸引我,但由于我是板球新手,我无法将这款游戏想象为状态机。
球应该是一个状态机,还是比赛,或者是玩家,或者都是3.我也不确定我将如何协调这个状态机(通过事件)。
我也很难识别出状态和转换。任何帮助都将不胜感激。
发布于 2013-01-12 00:18:16
所以这是我从你的问题中理解的-你的板球经理游戏将根据球员的统计数据(保龄球手的技能/经验,击球手的技能/经验,防守/维控统计数据,等等)来模拟一个又一个球的比赛。以及其他相关变量。根据我的理解,这将更像是一个算法引擎,而不是板球比赛的可视化表示。
现在回答你的问题,首先,我不相信你对FSM的看法是正确的。FSM是一段代码,在其生命周期的任何时候,它都处于许多可能的执行状态之一。每个状态可以并且通常都有一个不同的更新例程(这就是它的要点)。此外,每个状态都可以在预定义的触发器/事件上转换到另一个状态。您需要了解的是,状态为同一实体实现了不同的行为。
现在,“大多数游戏都可以作为一个状态机实现”--不是“一个”状态机,而是一个完整的状态机。游戏中的几个管理器类,渲染器,游戏对象,菜单系统,或多或少一切都依赖于它自己的状态机。出于本例的目的,假设有一个游戏角色,比如一个拳击手。您将在“CBoxer”(?)中找到一些状态。类将是'Blocking','TakingHit','Dodge',RightUpper,'LeftHook‘等等。
但请记住,FSM更多的是一种设计构造-一种设想手头问题的解决方案的方法。你不一定要用到它们。你可以在没有状态机的情况下制作一个完整的游戏(我认为:)。但是FSM让你的代码设计变得非常直观和直接,坦率地说,在任何规模合适的项目中都很难找到一个。
我建议你看看FSM在工作中的一些代码示例。一旦你理解了它背后的想法,你会发现自己到处都在使用它们:)
发布于 2013-01-11 01:57:00
作为第一步,你应该通过板球规则和你的球结果模型来总结以前的球是如何影响给定的球的。
然后确定您需要跟踪的内容,以及使用状态机表示它是否方便。例如,作为FSM,统计信息通常不太便于跟踪。
考虑到这些信息,您应该能够构建一个模型。您需要跟踪的信息可能是状态机,也可能是特定状态的内部值。球之间的相互作用将决定从一台机器到另一台机器的转换和循环事件。
https://stackoverflow.com/questions/14263616
复制相似问题