GKStrategist
回合制游戏中的AI通用接口。
概括
GameplayKit提供两种Strategist类型,当然你也可以使用这个协议来实现你自己定义的Strategist。你要提供一个已经实现了GKGameModel, GKGameModelPlayer 和GKGameModelUpdate协议的游戏模型去创建自定义类型,然后使用Strategist的各种方法实现最佳的行动。
选择一种策略(Strategist)
GameplayKit提供了两种Strategist类型:
• GKMinmaxStrategist类型给每一个可能的游戏模型状态数值评分,并执行一个详尽的树搜索找到移动最大的选手同时减少对手得分。这种策略可以产生最佳的游戏性,但需要游戏模型的评分方法,并且性能成本随着游戏复杂度的增加而大大增加。
• GKMonteCarloStrategist类型执行随机获得的最终状态的概率搜索。这种策略并不总是选择最佳的移动方式,但很可能选择好的移动方式,即使是非常复杂的游戏,性能成本也很低。另外蒙特·卡罗方法只关注游戏模式状态是否代表胜利,因此不需要实现计分方法。
使用一个策略(Strategist)
使用一个策略必须要实现以下几个步骤:
1.创建一个描述游戏玩法的模型,实现GKGameModel , GKGameModelPlayer , 和GKGameModelUpdate 协议。
2.选择一个策略(Strategist)类型(已经实现了GKStrategist 协议的),创建一个实例,并设置它的属性来确定游戏行为。
3.将Strategist的gameModel属性指向游戏模型类的实例,它代表游戏的当前状态。
4.使用bestMoveForActivePlayer 方法为当前玩家选择最好的行动,这个方法返回一个移动对象(这是你自定义创建并实现GKGameModelUpdate 协议的实例)。
5.检查移动对象,通过Strategist选择移动。使用gameModelUpdatesForPlayer: 方法创建实例,描述游戏中游戏模型类可能移动的方法,所以检查对象给你所需的信息执行移动。
Topics
指定游戏模型(Specifying the Game Model)
gameModel
代表当前的游戏状态模型。 (必须)
配置一个策略(Configuring a Strategist)
randomSource
当Strategist随机选择一个移动时需要使用的随机数对象。(必须)
bestMoveForActivePlayer
计算并返回当前玩家的最佳移动。 (必须)
关系
继承
NSObject
默认遵守
GKMinmaxStrategist, GKMonteCarloStrategist