游戏AI之有限状态机(1)

本文介绍了游戏AI中的有限状态机(FSM),阐述了FSM在游戏中的重要性,特点以及基本概念。通过举例展示了如何用状态设计模式实现有限状态机,包括创建状态基类和具体状态子类,以及如何根据角色属性控制状态转换。最后,提到了FSM在游戏中的应用,例如角色的困乏和饥饿状态,并提供了完整的代码下载链接。
摘要由CSDN通过智能技术生成

一。游戏AI介绍

                游戏AI,是一个非常值得挑战的部分。一个游戏好不好玩,游戏AI占了很大的分量。游戏中人物看起来比较智能,会让玩家觉得不是在和电脑作战,而是和真真的有思想的人来决斗。当然,真要做到那一步,很难,不过我们可以使用各种各样的方法,来模人工智能。

        一般来说,人工智能有模式,条件模式,有限状态机,决策树,神经网络,遗传算法和模糊逻辑等等。而有限状态机,基本上是任何游戏都会用到的一种组织AI的方法。它可以为后面更加深奥的AI算法提供强力的支持,所以掌握好有限状态机的使用,对以后更深层次的游戏AI的学习,提供强大的助力。


二。有限状态机介绍

        有限状态机,简称FSM,在各个游戏中都会出现它的身影,所以对于游戏编程人员来说,了解并掌握有限状态机,是非常重要的。根据前辈们的经验总结,FSM具有如下的特点:

       编程快速简单,易于调试,很少的计算,直觉性和灵活性。

有限状态机的概念实际来源于数学,作为程序员我们不需要掌握数学上关于有限状态机的确切定义,我们只需要知道一个描述性的语言就可以了:

     (以下描述摘自游戏人工智能编程案例精粹)一个有限状态机是一个设备,或是一个设备模型,在有限个数量的状态下,可以根据给定的输入来进行不同状态间的切换,一个有限状态机在任何时候,都只能有一个状态。


三。有限状态机的实现方式

        有很多种方法来实现有限状态机,读者可能想到使用一串的if...else,或者加上枚举类型的switch来进行状态的判断。的确,这样的方法是最直观的,也是最简单的实现方法。在一个智能体的状态数量很少的情况下,使用这样的实现方法是可以的。但是,当一个智能体的状态有很多个的时候,在这样实现,代码就会显得很臃肿,就会跟上一长串的case语句或者if...else语句。读者可以自行试试,用这种方法实现的有限状态机,虽然可以工作,但是对于开发人员来说,将是一个噩梦。因为你不得不自己来维护这么一长串的代码,而且不易于调试和阅读。

        所以这里推荐使用的方法是使用状态设计模式来完成整个有限状态机的实现。(关于状态设计模式,是属于设计模式的范畴,读者可自行查阅相关的资料进行了解,推荐看Head First设计模式中关于状态设计模式的章节)

       现在我们来实现下,如何进行有限状态机的设计。

       首先,我们需要定义一个公用的基类,用以派生出不同的状态类。

   

#ifndef _State_
#define _State_

//包含头文件
#include"Role.h"
#include<string>
using nam
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值