首页 > 其他分享 >游戏的AI类型

游戏的AI类型

时间:2022-09-24 18:00:30浏览次数:58  
标签:游戏 AI 借鉴 启发式 算法 类型 方法

以下为AI For Games书中内容的归纳总结

​ 游戏开发中设计的AI和AI学者研究的AI是有区别。游戏的AI包括部分借鉴技术(特定的解决方案和使游戏更加简练的效果)、启发式方法(仅适用于大多数情况但不是全部情况的经验法则)和算法(对游戏来说“适当”的东西)。

借鉴技术

​ 有一种说法是“如果它看起来像一条鱼,并且闻起来也像一条鱼,那么它可能就是一条鱼”。对于游戏AI来说,行为主义是一条可以借鉴的道路。游戏AI的开发人员可能对现实的本质不那么感兴趣,他们想要的只是看起来正确的角色。

​ 游戏AI常体现为对现实事物的借鉴模仿,这显然没有资格成为AI学者认可的AI技术。这里有一个例子,《吃豆人》怪物的AI,它实际上是应用即巧妙又简单的随机数生成器。生成随机数本身当然算不上什么AI技术,大多数编程语言都有内置地函数获取随机数,所以为它提供算法毫无意义!

​ 在游戏AI中适当的使用视觉性的东西或许有令人惊喜的效果。《模拟人生》中很多角色的行为都是动画交流的。如果删除角色动画,那么这个AI的效果将乏善可陈。《星球大战前传1》中,那些令玩家烦恼的角色也会给其他角色带来一些副作用。《雷神之锤2》中具有“手势”命令,角色可以通过它将敌人击退。所有这些都不需要重要的Ai基础架构。它们不需要复杂的认知模型、学习或遗传算法。它们只需要一小段代码即可在正确的时间执行动画。

启发式方法

​ 启发式方法是一种经验法则它是一种可能在许多情况下有效但并不是对所有情况都有效的近似解决方案。对于AI程序眼来说,启发式方法通常会让人联想到路径发现或以目标为导向的行为。在实际运用的技术中可能并不总是很明确的启发式方法。在诸如决策、移动和战术思维等领域,都需要在速度和准确性之间进行权衡。当准确性被牺牲时,通常可以选择启发式方法来代替搜索正确答案。

​ 广泛的启发式方法可以应用于不需要特定算法的一般性AI问题。以《吃豆人》为例,怪物寻找玩家的方式是,在交叉路口选择朝向玩家所在位置的方向,这种方式不一定能正确“寻路”玩家,但基于经验法则,玩家依然会相信怪物真的是在追杀他。

​ 在许多战略游戏中,包括棋盘游戏,不同的单位或棋子都有一个数字值来表示它们的价值或在局面评估中“优秀”的程度。例如,在中国象棋中,一个小兵的价值是1分,车的价值是10分;小兵过河变成2分,进入敌方九宫则价值变成3分或更高。这显然是一种启发式方法,它用一个数字取代了关于单位能力的复杂运算。在即时战略游戏中,可以通过数量与成本计算比较来找到具备最佳建造价值的攻击单位。

​ 这些启发式方法没有应用高深的算法或技术,也不会在已发表的AI研究论文中找到它,但它确实是AI程序开发人员工作的基础。

1.最大约束

​ 给定世界的当前状态,需要选择一个集合中的某个项目。被选定的项目应该是少数几个状态中最合适的选项。

2.先难后易

​ 最困难的事情往往会影响到很多其他的行为,所以最好先做最困难的事情,而不是让简单的事情进展顺利,但最终却发现浪费时间。

3.首先尝试最有前景的事情

​ 如果AI有许多选项可供选择,通常可以给每个选项一个大致的分数。即使这个分数明显不够准确,但尝试递减分数顺序的选项将比纯粹随机获得更好的性能表现。

算法

​ 借鉴技术和启发式方法可以为开发人员提供一条很长的道路,但单纯依靠它们则意味着开发人员必须不断地做重复运动。如果某个复杂算法被视为完成任务的最佳方法,那么对于每种这样的情形,可能至少有5个更简单的借鉴技术或启发式方法可以完成同样的工作。

​ 之后的博客会重点发布一些游戏AI算法的内容,尽情期待。

标签:游戏,AI,借鉴,启发式,算法,类型,方法
From: https://www.cnblogs.com/youzimo/p/16726117.html

相关文章

  • 变量类型
    变量类型变量类型:类变量static数据类型变量名实例变量从属于对象,具有默认值局部变量方法内定义所有变量命名规范:见名知义常量:大写+下划线final变量......
  • 数据类型转换
    数据类型转换publicclassMain{  publicstaticvoidmain(String[]args){    //运算中,不同类型的数据先转化为同一类型,然后进行运算    //由低......
  • git 中的 merge 类型
    1.2-waymerge和3-waymerge 作者:Lazykid链接:https://www.zhihu.com/question/30200228/answer/866309494来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商......
  • 解决 WebSocketClient.js?5586:16 WebSocket connection to 'ws://192.168.13.25:8080
    控制台报错: vue.config.jsVue的配置文件const{defineConfig}=require('@vue/cli-service')module.exports=defineConfig({devServer:{host:'0.0.0......
  • 基本数据类型
    基本数据类型java的基本数据类型:数值类型:整数类型:byte(1字节)、short(2字节)、int(4字节)、long(8字节)浮点数类型:float(4字节)、double(8字节)字符类型:char(2字节)bo......
  • Java基础(标识符,数据类型,数据转换,变量)
    注释Java中的注释有3种:单行注释 //多行注释/**/文档注释/***/注释不会被执行,是给我们写代码的人看的书写注释是一个非常好的习惯标识符Java所有的组成部......
  • SAP ABAP ALV 的一些总结:Docking container 和 Dialogbox container
    Dockingcontainer停靠容器(CL_GUI_DOCKING_CONTAINER)不需要任何父容器,自定义屏幕上的自定义容器区域也不需要。创建和显示后,它停靠在屏幕的四个位置之一:顶部、底部、左侧......
  • 让 AI 让您的拼车业务更高效。
    让AI让您的拼车业务更高效。技术飞速发展,人们依靠拼车服务实现出行目的。但复杂的交通服务网络在另一边并不容易操作。为了让交通供应商更容易,人工智能是繁荣。Blinx......
  • 为绝对初学者学习人工智能 ai — 安装 WSL
    为绝对初学者学习人工智能ai—安装WSLWowlearningai,whatfun......
  • 变量和认识数据类型
    一、变量1、变量的概念和组成部分(1)变量名程序中,数据都是临时存储在内存当中,为了更快速的查找或使⽤这个数据,通常之后,定义⼀个名称,这个名称就是变量名。(2)变量值......