游戏智能系列之三:有限状态自动机

游戏智能是很传统的领域,有限状态机和行为树是两种主要方法。今天这篇博客主要介绍有限状态自动机。

1. 有限状态机

有限状态机 (Finite-state machine,FSM),又称有限状态自动机,是表示有限个状态以及状态之间转移和动作等行为的数学模型。从它的定义,我们可以看到有限状态机的几个重要概念。

1.状态:表示对象的某种形态,在当前形态下可能会拥有不同的行为和属性; 2.转移:表示状态变更,并且必须满足确使转移发生的条件来执行; 3.动作:表示在给定时刻要进行的活动; 4.事件:事件通常会引起状态的变迁,促使状态机从一种状态切换到另一种状态。

下图是一个典型的有限状态机,描述了一个简单的对战逻辑。

这个有限状态机有三个状态,分别是 idle, escape 和 attack; 不同状态之间的转换是通过动作进行的,比如 idle 状态看到哥布林就会进入 attack 状态。

2. Clashjs 游戏中的有限状态机

但是在 Clashjs 游戏中,有限状态机需要一些变化。因为 Clashjs 游戏中,一架飞机的状态不仅由它本身采取的动作决定,还由它所处的环境(包括敌机和弹药包)决定。这时候的有限状态机反而简单了,不考虑状态之间的切换,只考虑在每个状态下应该采取什么动作。Clashjs 游戏中的有限状态机的实现代码如下所示。完整的代码已经传到 GitHub 上了(地址)。

    if (utils.canKill(playerState, enemiesStates) && playerState.ammo) {
        return 'shoot';
    }
    if (direction2ammo !== playerState.direction && direction2ammo !== null) {
        return direction2ammo;
    }
    if (direction2ammo == playerState.direction){
      return 'move';
    }

    return utils.safeRandomMove();

由于状态转移部分在游戏逻辑中,有限状态机代码退化成什么状态采取什么动作的 if-else 语句了。上图实现的有限状态机的示意图如下。

3. 总结

最近为了写游戏智能系列文章,我了解了一些游戏智能相关知识。我发现和如火如荼的机器学习和虚拟现实一比,游戏智能简直就是南极的冰窟窿。例如,我们很难找到这个领域的好资料和交流圈,特别是有关实操相关的资料。我想原因有两个。第一,游戏智能不 sexy。游戏智能的算法都只是一个框架,具体游戏行为逻辑需要大量人力物力填写,比端到端的深度学习不知道低到哪里去了。第二,游戏智能不容易复现因此比较难学习。机器学习有很多公开的数据集。拿到这些数据集,我们就可以写代码调参数了。但是游戏智能和游戏紧密结合,大部分好的游戏不提供游戏智能的接口,大部分提供接口的游戏质量差强人意。这使得非游戏开发商内部人员很难有机会实践游戏智能,从而很难产生好的实操分享。虽然说了那么多坑,但自己选得路,跪着也要走完。我会努力写完游戏智能系列。

游戏人工智能系列系列文章

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏成猿之路

[福利]人工智能学习资料

15260
来自专栏腾讯大数据的专栏

2015年第一季度移动行业数据报告

2015年第一季度移动行业数据报告解析了移动设备,系统分布和网络状况等国内移动互联网现状。 ? ? ? ? ? ? ? ? ? 123

21060
来自专栏云计算D1net

关于无服务器计算,您需要知道的10件事

如果您阅读了2017年有关于IT特别是云计算方面的各种预测,您很有可能碰到“无服务器计算”这一术语。早在2014年亚马逊的网络服务(AWS)已推出了第一大无服务...

34860
来自专栏即时通讯技术

新手入门:零基础理解大型分布式架构的演进历史、技术原理、最佳实践

随着社会的发展、互联网技术的进步,以前的大型机服务端架构很显然由于高成本、难维护等原因渐渐地变得不再那么主流了,替代它的就是当下最火的互联网分布式架构。

14040
来自专栏腾讯开源的专栏

手游自动化框架GAutomator,新增iOS系统和UE4引擎支持

GAutomator诞生背后 研究过手游自动化测试的同学都知道,虽然市场上已经有比较多成熟的自动化工具,如Android系统的UIAutomator,iOS的...

33030
来自专栏CSDN技术头条

购买FLASH存储之前需要问的16个问题

下面这些问题,可以帮助企业选择值得信赖的flash存储方案,不仅仅是比较好的falsh。 花费 现在,每GB的成本大约是1.5美金,已经不再昂贵了。 1.供应商...

21770
来自专栏云市场·精选汇

2018年新规1 个公众号可以关联多少个小程序

微信小程序出新规啦!关于小程序新万小编了解到,微信小程序成为当下热门话题,下面从多个方面来谈谈2018年新规1 个公众号可以关联多少个小程序。

18830
来自专栏北京马哥教育

运维平台体系,你们真的有好好规划吗?

在之前的文章中,谈到过“运维的本质——可视化”,在可视化的篇幅中,着重介绍自动化的可视化和数据的可视化;在后续的篇章中又介绍了“互联网运维的价值体系”,里面分解...

31300
来自专栏云计算D1net

云计算带来的积极变化

在当今竞争激烈的行业市场,云计算提供了一个绝佳的机会,不只是为了创新,而是运营业务要比以往任何时候都更加快速、更具成本效益。这是一个非常有效的提供IT服务的平台...

42870
来自专栏EAWorld

支撑企业IT精益运营:普元DevOps平台实践之路

本文目录: 一、普元DevOps平台建设历程 二、如何建设企业级的DevOps平台 明确定位:DevOps是覆盖IT全生命周期的生产线 理清思维:DevOps思...

44580

扫码关注云+社区

领取腾讯云代金券