目录

  • 游戏AI是什么?

    • 游戏AI和理论AI
    • 智能的假象
    • (更新)游戏AI和机器学习
  • 介绍一些游戏AI
    • 4X游戏AI
    • 《求生之路》系列
    • 角色扮演/沙盒游戏中的NPC
  • 游戏AI 需要学些什么?
    • 自治智能体
    • 群体智能
    • 感知
    • 状态机(重要)
    • 行为树(重要)
    • 寻路/搜索/规划(重要)
    • 黑板
    • 模糊逻辑(不常用)
    • 杂项技巧
    • 脚本驱动(重要)
    • 机器学习(有潜力)
  • 游戏AI 基本设计
    • 感知
    • 决策
    • 行为
    • 小结
  • 参考


游戏AI是什么?

游戏AI和理论AI

但是值得注意的是,但是游戏AI与理论研究的AI那些有所不同。
我们平时所熟悉的人工智能,大多数是指理论AI。(例如深度学习,机器学习)

而游戏AI往往很少应用到理论AI那些神经网络、深度学习等等理论AI所流行的技术。

智能的假象

游戏AI主要是程序员预先定义编写好可能发生的行为,而不具有理论人工智能那种自我“学习”的特性。

因为游戏AI主要职责是模拟出智能行为,而并非学习
(例如:街道上会避让车的人群,天空中乱飞的小鸟,来回巡逻的守卫,兵线上的小兵...)

可以说游戏AI是智能的假象。

要是游戏功能需要自我学习,尽可能做出最优策略,更应该使用理论AI(也是我们熟悉的那个人工智能),通过神经网络,深度学习等流行技术实现。
例如:围棋AI阿法狗,DOTA2的OPENAI

(更新)游戏AI和机器学习

以前觉得机器学习要应用于游戏AI,还远得很。
最近看到一些资料后,也尝试玩了玩Unity机器学习,才发觉机器学习占领游戏AI的可能性和趋势。
这让我对游戏AI和理论AI的看法有了变化,因此下面介绍也会提到机器学习。

因此现在看来,理论AI可以归纳为游戏AI的一部分。游戏AI应该分为人工制作的和机器学习训练的。


介绍一些游戏AI

4X游戏AI

《群星》《文明》《王国风云》等为代表的4X游戏,战略游戏的一种,其主要的四个游戏目的分别是:
eXplore(探索),eXpand(扩张),eXploit(掠夺),eXterminate(毁灭)。

为了让玩家在4X进程中受到阻挡,4X游戏AI必须得足够聪明做出决策,
但又同时为了不让玩家觉得无法胜利,它往往不是采用最优策略,而是使用更“人性化”的策略,
(例如反应延迟,走的路径稍微扭曲,模糊决策等做法)。

《求生之路》系列

作为一款FPS游戏,很难说《求生之路》里的怪物有多智能——它们本来就该是愚蠢而凶猛的。真正有技术含量的是它的“导演系统”,AI Director作为后台的核心,会根据玩家在游戏中的具体表现调控游戏的节奏。怪物出现的地点、数量,何处刷新道具等等,配合上根据形势动态变换的音乐,给了用户更真实的游戏体验。

角色扮演/沙盒游戏中的NPC

在一些自由度较高的游戏中,为了让玩家更好的融入这个世界,游戏会对NPC进行很多详细的设定。比如在《巫师》系列中,每个NPC都有自己的性格设定,包括会话数据库,让他们可以进行丰富的动作和对话。在GTA这种沙盒游戏中更是这样。


游戏AI 需要学些什么?

下面列出部分游戏AI所需掌握的知识和简要介绍:

自治智能体

智能体,通俗点意思是含有AI的对象物体。这些对象往往拥有自治动作(即什么情况就该做出什么反应)。在《看门狗》《GTA》里,街上走路的人或者开动的汽车,就是一个自治智能体。主角开车如果冲向它们,这些自治智能体能够自行判断并做出躲开的动作。

群体智能

如其名,与自治智能体相对,“群体智能”一般用于编队的AI或者集群的AI。例如足球游戏里,AI操控一方所有球员互相配合传球踢球。又或者射击游戏里,AI操控一支小队通过战术进攻据点。

感知

智能体所能获取的信息应该总是有限的。引入“感知”的概念,用以模拟智能体的感官,从而让智能体能获取一定程度的信息,用于之后的决策判断。

可参考:游戏AI之感知(1) - KillerAery - 博客园

状态机(重要)

“状态机”是一种表示状态并控制状态切换的设计模式,常常用于设计某种东西的多个状态。
例如一个人有站立状态,跑动状态,走路状态,蹲下状态,开火状态等...
当应用在游戏AI时,它也可以作为AI的决策结构(以前老游戏的AI决策结构几乎都是采用状态机)。

可参考:游戏设计模式——有限状态机 - KillerAery - 博客园
可参考:游戏AI之决策结构—有限状态机/行为树(2) - KillerAery - 博客园

行为树(重要)

“行为树”是一种以树状结构表达的决策模式,也是一种设计模式。这也是现代游戏AI最常用的决策结构。

可参考:游戏AI之决策结构—有限状态机/行为树(2) - KillerAery - 博客园

寻路/搜索/规划(重要)

“寻路”是游戏里极为常见的操作,常用的算法有A* 算法,当然更优化的话则是依赖规划网格的寻路。

可参考:A*寻路算法 - KillerAery - 博客园

“搜索”其实应该跟寻路并在一起,只是游戏AI有可能还会用到图搜索。
在《群星》里,通过一条条“航路”连接千千万万个星球,这时候AI就要每次在决策派遣舰队时,
需要考虑到达这张“图”的各个星球的权值和最优期望。

“规划”则是游戏的预处理,例如提前构建路线,划分区域等,以便游戏进行后利用预先处理好的数据进行高效的算法操作。

可参考:游戏AI之路径规划(3) - KillerAery - 博客园

黑板

“黑板”简单来说就是可访问的共享数据,用于多模块间的数据共享。编写游戏AI引擎时,往往避免不了各模块之间的通信,而使用黑板模式无疑是极好的选择

可参考:游戏设计模式——黑板模式 - KillerAery - 博客园

模糊逻辑(不常用)

为了让游戏AI更人性化,模糊逻辑很有必要。做游戏AI往往不是做最优解,而是做像人类的解。
在某些时候,例如:某个AI战斗结束后,判断如果子弹数量少,则回基地取弹药,
“子弹数量少”这个条件就可以做成一种模糊逻辑条件。

可参考:游戏AI之模糊逻辑(4) - KillerAery - 博客园

杂项技巧

这里主要是各种各样的杂项技巧,或者欺骗玩家的障眼法,也是老鸟们所说的“Trick”。
通过“抖动”,"平滑"等技巧可以增强拟人性,让AI愚笨的像个人。

脚本驱动(重要)

使用脚本可以随意编写出逻辑代码而无需再次编译,从而极大减少修改逻辑的成本。
游戏AI的逻辑修改往往很频繁,使用脚本编写AI逻辑无疑是必要的。
此外游戏程序最常用的脚本语言——Lua.

可参考:C++与Lua交互之配置&交互原理&示例 - KillerAery - 博客园

机器学习(有潜力)

机器学习训练出游戏AI的优势在于:

  • 机器学习训练出的游戏AI,模型可能数据庞大,但是这完全可以部署于服务器。
  • 目前绝大部分游戏AI都是人工制作,工作量庞大。机器学习可以解放生产力,放台主机训练让其自己培养出更实的AI。

但缺点也是有的:

  • 过于复杂的环境,或者需要复杂交互的AI几乎很难训练出来(例如开放世界RPG游戏的NPC,它们都得有自己的一套复杂剧本台词和NPC行为)

因此目前看来,机器学习训练出来的AI可用于简单交互的AI,例如看到人就跑的小动物,更复杂的是会遵守交通规则的路人/车辆。

若对Unity的机器学习插件感兴趣:Unity 用ml-agents机器学习造个游戏AI吧(1)(Windows环境配置) - KillerAery - 博客园
Unity 用ml-agents机器学习造个游戏AI吧(2)(入门DEMO) - KillerAery - 博客园


游戏AI 基本设计

实际世界的智能:
一个正常的智能体,得先感知到周围的事物,才能思考下一步该做什么,才能做出反应行为。

基于这个便自然而然分出以下三个模块:

  • 感知
  • 决策
  • 行为

感知

一般的游戏AI,首先需要获取到感知的信息。

例如:

  • 一个NPC的视野范围内看到了有一个丧尸。
  • 一个丧尸听到了玩家的脚步声。
  • 足球队队员之间的传达配合信息。
class AgentPerception {
public://进行一次感知探测void check();//访问感知目标结果Information& getCheckResult()const;
private://...
};

决策

决策模块一般通过分析感知信息,进行计算,输出接下来想要做的行为的结果。

例如:

  • NPC决策模块检查了这个丧尸,判断到它是自己的敌人,所以输出了逃跑的决策。
  • 丧尸决策模块检查了这个玩家,判断到它是自己的敌人,所以输出了扑过去攻击的决策。
  • 中锋决策模块检查了前锋的带球情况,判断到它想传球,所以输出了要去对应的位置接球的决策。

可以把决策模块想象成一个大脑(为了类比,可以把下面的“决策模块”字样看成“大脑”):
决策模块能够获取智能体模型的感知信息,分析之,并返回行动决策。

  class AgentBrain{public://计算得出智能体的决策Decision caculate(Agent* agent){//获取感知信息Information& information = agent->mPerception.getResult();//根据感知信息,让寄主执行行为if(information...){return Decision(MoveTo, ...);//移动到...的决策}if(information...){return Decision(Attack);//攻击决策}//....}private://...};

行为

一般的游戏模型应该提供相应的行为接口,然后行为模块负责处理决策,执行对应的行为。

//一个智能体类例子
class Agent{
public://智能体的各种行为接口//...void moveTo(cosnt Vector3& pos);void attack();
protected://智能体的各种变量//....Vector3 mPosition;              //当前位置int mAttack;                    //攻击力ViewPerception mPerception;     //视野感知模块
};
class AgentAction{
public://处理决策,让智能体执行对应行为void doAction(Agent* agent,const Decision& decision);
};

小结

这样,一种简单基本的设计就浮现了:

  • 感知模块
  • 决策模块
  • 行为模块

初步介绍到此结束,下一篇博文将详细介绍感知。

参考

[1]《游戏人工智能编程案例精粹》

[2] FINNEY的博客 AI分享站


游戏AI 系列文章:游戏AI - 随笔分类 - KillerAery - 博客园

转载于:https://www.cnblogs.com/KillerAery/p/10003678.html

游戏AI之初步介绍(0)相关推荐

  1. 游戏AI行为选择算法一览

    前言 AI研究的目的是为机械赋予智慧,而游戏一直被认为是需要智慧才能完成的事情,因而游戏自然成为了AI自证能力的最佳途径之一.从棋盘游戏到视频游戏,从最早的Deep Blue到近几年大热的Alpha ...

  2. 博弈对抗游戏AI的技术方法的一些总结和思考

    目录 一.总体概况 1.博弈类型和算法 1)团队博弈 2)有限零和博弈 3) CFR系列算法 4)NFSP系列算法 2.不同的决策方式 二.不同游戏AI的简单介绍 1.棋盘游戏AI 2.纸牌游戏AI ...

  3. 深度强化学习的人工智能在游戏中的运用:游戏AI入门及AI优化指南

    前言: 现如今,所有电子游戏都离不开AI的运用,对于游戏策划而言AI是什么,AI又是如何运作,可以说是面试时的加分项,本文在这里不探讨理论的AI(采用深度强化学习的智能AI,如腾讯AI Lab.网易伏 ...

  4. 游戏AI——行为树理论及实现

    从上古卷轴中形形色色的人物,到NBA2K中挥洒汗水的球员,从使命召唤中诡计多端的敌人,到刺客信条中栩栩如生的人群.游戏AI几乎存在于游戏中的每个角落,默默构建出一个令人神往的庞大游戏世界. 那么这些复 ...

  5. 游戏AI之决策结构—行为树

    目录 有限状态机 行为树 控制节点 条件节点 行为节点 装饰节点 总结 额外 游戏AI的决策部分是比较重要的部分,游戏程序的老前辈们留下了两种经过考验的用于AI决策的结构: 有限状态机 行为树 在以前 ...

  6. 清华大学团队与腾讯AI Lab专项合作夺冠FPS游戏AI竞赛VizDoom

    在荷兰刚刚结束的 IEEE CIG 计算智能与游戏大会上,清华大学张钹院士领导的人工智能创新团队 TSAIL 在第一人称射击类游戏<毁灭战士>(Doom)AI竞赛 VizDoom(Visu ...

  7. 游戏ai 行为树_游戏AI –行为树简介

    游戏ai 行为树 游戏AI是一个非常广泛的主题,尽管有很多资料,但我找不到能以较慢且更易理解的速度缓慢介绍这些概念的东西. 本文将尝试解释如何基于行为树的概念来设计一个非常简单但可扩展的AI系统. 什 ...

  8. 游戏AI –行为树简介

    游戏AI是一个非常广泛的主题,尽管有很多资料,但我找不到能以较慢,更容易理解的速度缓慢介绍这些概念的东西. 本文将尝试解释如何基于行为树的概念来设计一个非常简单但可扩展的AI系统. 什么是AI? 人工 ...

  9. 游戏AI的生命力源自哪里?为你揭开MOBA AI的秘密!

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由wataloo发表在专栏wataloo的试验田 1 设计概要 1.1 设计原则和目的 英雄AI的目的主要有: 1.新手过渡局,让玩家刚 ...

最新文章

  1. ansible组件-playbook学习笔记
  2. 鹅厂2020暑期实习第二次二面
  3. python2.7显示中文_Python 2.7中文显示与处理方法
  4. 作者:刘诗凯(1983-),男,华为大数据分析产品部主任工程师。
  5. 大数据(1)---全球100款大数据工具汇总(前50款)
  6. JS中元素的属性(class、style)操作
  7. 关于IIS不能浏览ASP网页 和不能浏览后台(转)
  8. 经典算法题每日演练——第二十题 三元组
  9. 华为BFD的配置规范
  10. fedora 19 安装中文语言包
  11. svn提示没有设置冲突_SVN冲突解决方法大全
  12. Hadoop集群之开启kerberos安全认证
  13. protobuf入门教程(四):repeated限定修饰符
  14. 手机h5像素_移动端H5页面的设计稿尺寸大小规范
  15. 菜鸟进阶黑客知识整合大全(1)
  16. WIN7 (64 位)安装AutoCAD2012失败解决方法
  17. 推荐基于4G模块打造的超低功耗4G摄像头通讯板
  18. 华为、蚂蚁金服等都在招聘的大数据开发,需要具备哪些技能
  19. jQuery中ajax用form表单方式提交数据
  20. 文件服务器审计---首选Netwrix文件服务器审计工具

热门文章

  1. Dynamics CRM2016 Web API之创建记录
  2. sqlserver任务导出Excle
  3. A monad tutorial for Clojure programmers (part 3)
  4. CentOS装机必备-基本设置以及缺失文件
  5. ASP.NET ViewState 初探
  6. 文本的DES加密 MD5散列值 DSA的数字签名
  7. 一种清除windows通知区域“僵尸”图标的方案——问题分析
  8. 一种不会导致资源泄露的“终止”线程的方法
  9. pybind11介绍
  10. Ubuntu定时任务crontab命令介绍