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

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

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 条评论
登录 后参与评论

相关文章

来自专栏Spark学习技巧

终于有人把云计算、大数据和人工智能讲明白了!

703
来自专栏AI科技大本营的专栏

终于有人把云计算、大数据和人工智能讲明白了!

今天跟大家讲讲云计算、大数据和人工智能。为什么讲这三个东西呢?因为这三个东西现在非常火,并且它们之间好像互相有关系:一般谈云计算的时候会提到大数据、谈人工智能的...

2603
来自专栏机器之心

前沿 | 小心!现在,机器人可以控制你了

远距临场机器人通过一个装有摄像头的机器人可以查看遥远的地点。它具有广泛的实际应用,如在军事和太空研究中的应用。市面上的大部分远距临场机器人(telepresen...

1104
来自专栏BestSDK

5个要点,决定你的交互设计是否成功!

交互设计(Interaction Design):定义、设计人造系统的行为的设计领域。人造物,即人工制成物品,例如,软件、移动设备、人造环境、服务、可佩带装置以...

3307
来自专栏华章科技

终于有人把云计算、大数据和人工智能讲明白了!

导读:云计算、大数据和人工智能,这三个东西现在非常火,并且它们之间好像互相有关系:一般谈云计算的时候会提到大数据、谈人工智能的时候会提大数据、谈人工智能的时候会...

1822
来自专栏IT派

用57行代码搞定花8000万美元采购车牌识别项目

Tiait Brown 用57行代码和开源工具 DIY 了一个车牌自动识别系统,完全实现了澳大利亚政府花8600万美元投资的项目效果。 过去一年,维多利亚州共...

3356
来自专栏架构师小秘圈

为什么说21世纪是一场ABC的革命?

作者:刘超,毕业于上海交通大学,15年云计算领域研发及架构经验,先后在EMC,CCTV证券资讯频道,HP,华为,网易从事云计算和大数据架构工作。

913
来自专栏北京马哥教育

终于有人把云计算、大数据和人工智能讲明白了!

作者介绍 刘超,《Lucene应用开发揭秘》作者。个人公众号:刘超的通俗云计算(popsuper1982) 来源:https://www.cnblogs.com...

4579
来自专栏熊二哥

项目管理快速入门02--“多快好省”

项目管理最重要的四个要素就是jd的口号,“多快好省”,当然这是不可能的,哈哈。 多:项目范围管理 快:项目时间管理 好:项目质量管理 省:项目成本管理 这部分内...

20610
来自专栏纯洁的微笑

终于有人把云计算、大数据和人工智能讲明白了!

1935

扫码关注云+社区