游戏AI综述

1、游戏AI的特点

随着深度学习等技术的突破性进展,现代的人工智能技术进步神速,已经在自然语言处理、机器翻译和图像识别等众多方面取得了进步,而且已经影响到了现实生活。

如果把围棋也看作游戏,那么大名鼎鼎的AlphaGo系列人工智能,已经体现了人工智能在为围棋项目中的较高水平。另外,也有一些人工智能再经济类电子游戏中取得了良好的成绩。

从概念上讲,游戏AI指的并不是此类AI。

电子游戏在早期就开始包含了计算机控制的敌方角色,但设计精妙的游戏AI再电子游戏早期历史中比较少见。其中一个受到广泛欢迎的作品是著名的《吃豆人》。

在《吃豆人》游戏中,玩家扮演吃豆人在平面迷宫中移动,目标是走过迷宫中所有的位置,吃光所有的豆子。而敌人则会组织玩家,吃豆人被敌人碰到就会失败一次。

在此游戏中,设计师制作了多种类型的AI,每种敌人的行为逻辑都有所不同。例如,有些敌人会随机漫游,有些敌人会沿最短路径追击吃豆人的当前位置,有些敌人会以吃豆人前方为目标,还有一些敌人则以吃豆人的旁边或后方为目标。多个不同行为逻辑的敌人同时行动,迫使玩家不断观察、快速决策并付诸行动。虽然敌人总是遵循某种特定逻辑,但因敌人速度不同、关卡设计不同以及玩家行为不同,局面会时刻发生变化。因此虽然敌人行为模式相同,但每一局游戏都会给玩家新的体验。

从原理上来看,用4个敌人围住吃豆人并不是非常困难的事情。例如,在吃豆人进入某些出口较少的局部区域时,让敌人角色分别把守几个出口,玩家就很难找到突破的方法了。那为什么游戏开发者不从"如何彻底困死玩家"的角度考虑设计呢?显然,如果敌人真的足够聪明,那么这个游戏就不会令人着迷了,就像不太会有人喜欢一直与AlphaGo下围棋一样。

明白了这个例子,再与广义的人工智能对比,就很容易理解游戏AI的主要目标是什么了,以及它与普遍意义上的人工智能之间的区别。

通常人工智能的目标是解决具体问题。无论是语音识别、图像识别,还是机器翻译,这类问题都是有具体目标的。无论AI得到的结果正确与否,但至少有一个确定的答案或者相对确定的答案。

而游戏AI的目标是:让计算机角色与玩家有效交互 ,鼓励玩家积极尝试和探索,表达设计师的想法和理念,最终让玩家经理某种体验并收获了去。换句话说,游戏AI的核心不是"智能",而是"乐趣"。

如果以乐趣和体验作为主要目的,那么我们对于游戏AI的认识就更清晰了。

2、常用AI技术

由于核心目标不同,设计游戏AI常用的技术也不同。游戏AI 开发最基本也最常用的方法是FSM(Finite State Machine)。

FSM本质上只是机械化的程序逻辑,只需要用最基本的分支语句就可以实现。设计FSM的难点在于针对需求设计状态转移图,并设计精确的从一个状态转移到另一个状态的条件。只有有了清晰的状态转移图,才可能用明确的代码描述规则。

另外,在重度AI游戏中(如足球或现实模拟类型的游戏),行为树(Behaviour Tree)也是一种常用的AI架构方法,而理解行为树的设计思路,依然需要状态机思想作为铺垫。

3、AI的层次

人们在考虑问题时,思路是"分层"的。例如在《吃豆人》游戏中,玩家在开局时要先观察地图,确认主角和敌人的位置;然后再做整体性决策,如先去哪一个区域,再去哪一个;最后才是具体操作,输入方向指令让主角沿着道路前进,朝预期的方向移动。当敌人和主角的位置发生变化时,需要再重复一次从观察、决策到具体操作的过程。每一次过程可能非常短暂,毕竟游戏高手习惯于这种快速的观察、决策和行动。

游戏AI亦是如此,一般来说稍微有点智能的AI角色,这稍有决策和行动两个层次的"思路"。如果只有一个层次的思路,行为就会变得极为单一。

而思维层次的高低与变成难度往往不成正比。例如,AI角色对当前局势进行判断和切换当前状态的操作,看上去很高级,但实现并不困难。而低级行为,如沿着地图移动到合适的位置,这种基本的寻路行为却涉及多种复杂算法。

通用的自动寻路并移动的算法,设计了搜索算法、三角形剖分(处理场景中的障碍物)、路径优化和动态避障等多种算法,而且在各种具体场景中会有大量细节需要处理。亲自动手实现一套导航系统难度相当大,好在Unity已经提供了较完善的导航系统,设计游戏AI可以从学习导航系统开始。

相关推荐
小白的程序空间7 分钟前
人工智能之机器学习5-回归算法1【培训机构学习笔记】
人工智能·机器学习·回归
chenchihwen8 分钟前
《生成式 AI》课程 作业6 大语言模型(LLM)的训练微调 Fine Tuning -- part1
人工智能
向宇it10 分钟前
【unity小技巧】Unity 四叉树算法实现空间分割、物体存储并进行查询和碰撞检测
开发语言·算法·游戏·unity·游戏引擎
澜舟孟子开源社区23 分钟前
“AI玩手机”原理揭秘:大模型驱动的移动端GUI智能体
人工智能·科技·agi
Mr.鱼31 分钟前
opencv undefined reference to `cv::noarray()‘ 。window系统配置opencv,找到opencv库,但连接不了
人工智能·opencv·计算机视觉
ATpiu34 分钟前
免费微调自己的大模型(llama-factory微调llama3.1-8b)
人工智能·机器学习·llama
凌虚(失业了求个工作)37 分钟前
RAG 示例:使用 langchain、Redis、llama.cpp 构建一个 kubernetes 知识库问答
人工智能·redis·python·langchain·llama
逝去的紫枫1 小时前
Python PIL:探索图像处理的无限可能
图像处理·人工智能·python
sp_fyf_20242 小时前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-05
人工智能·深度学习·神经网络·算法·机器学习·语言模型·数据挖掘
小火炉Q2 小时前
02 python基础 python解释器安装
人工智能·python·神经网络·机器学习·网络安全·自然语言处理