AI can be defined as "A way through which machine can be made to understand environment, logically reason the information and learn for acting better." -- [Preface] Trends in Ambient Intelligent Systems: The Role of Computational Intelligence
准备研读一下AI方面的东西,进而想阅读关于AR-AI相关联的。找到一个很有趣的ppt,是关于游戏中AI设计的。不得不说是个启蒙的好路子。
首先要有最初的分别:
以人为本的思考,以人为本的行动,以理性为本的思考,以理性为本的行动。智能的要求是以人的模式思维,同时行为也要。
http://games.ws.dei.polimi.it/wp-content/vdp/VDP2013-11-ArtificialIntelligence.pdf
(Artificial Intelligence for Games http://ai4g.com/)
这个ppt里提到的“好的AI”和“有趣的AI”两个概念。
然人想起当年相声大师侯宝林的训条“你是要当好演员还是著名演员!”
这种思维模式很正确,一个追求AI极致(目的是胜利,也就是痛扁玩家)。一个追求用户体验(目的是被花式吊打),算法基于不同意图。目标看你做什么。极致情况应该是往增强智能Augmented Intelligence 方向走吧。而fun的则是游戏中被主角虐或互动的npc们。前段时间腾讯游戏开发频道里有篇介绍设计BOSS的经典文章“大傻逼”。其中的傻就是指的此处的“有趣的AI”。
“好的AI” 为了胜利而玩/扮演
各种规律法则是定死的,对称,多玩家,无限制的策略,(适应)客观进化演变,与图灵测试相关。感觉到深深的“以不变应万变”的太极版独孤九剑。
“有趣的AI” 为了失败而玩/扮演
各种规律法则不断演化,不对称,单个玩家,有限制的策略,主观演化,不相关。感觉就是“玩家虐我千百遍,我待玩家如初恋”。
AI在(有画面的)游戏中
在电子游戏中,AI扮演非玩家的所有角色。需要(根据设计的诱因)产生意图,然后(表演)程序动画 (不能光想啊,要让玩家看到反应,就如黑魂和血缘里玩家对防火女/木偶做动作得到不同表情回应一样),对玩家行为进行分析,自适应游戏,(未完自己去琢磨或者翻书吧)
对游戏AI的定义
在游戏流程中控制所有的(非玩家)角色。
决定:做什么,在哪做,如何做,什么时候做。
敌对,同盟的AI
路径计划(计划通),同时避免冲突
选择不同的动画。
例子🌰
Nascar 2002:每个家使用拥有各自的性格和独特的驾驶风格。
魔兽3: 友方npc会侦查周边区域然后定制战斗策略。
模拟人生:npc拥有各自性格,特征,需求
AI控制NPC的方式
一般模式:通过感受器,找出诱因,做出反应。
演化型AI:鲁棒式解决问题,时间需求,空间需求,实际足够
反应时间要求:30 fps,33ms/frame,AI要在1-3ms内做出反应,为每个单位作出计划的时间大概在100ms。
游戏AI应该怎么做?
1. 尽量靠近玩家的规则和局限性(这样才能公平地游戏)
2. 在策略游戏中,人类玩家只能看到部分地图,AI应该一样。
3. 在一些特别情况/环境下,AI反应不好,比如黑魂中,npc很容易跌落悬崖,或者卡在某个地方。
4. 作为权宜之计,AI系统要适当“作弊”
AI如何作弊?
对世界了若指掌,知道玩家位置,玩家的手牌,玩家的资源
主流AI技术
1. 有限状态机:
用状态值作为输入,并转化为表现,这种机制过去常用
2. 生产系统(对输入进行分析)
大体上是一套if-then-else规则
在冒险游戏中十分管用。输入和状态的组合可以诠释一个情境。
3. 搜索
置换出所有可能的游戏板块状态来试图预测应将发生的。(象棋)
4. 计划系统
用来决定最佳配置,从一个开始状态到一个结束状态。比如组织一个组单位来达成一个目的。
5. 代理和多代理系统
用来模块化单个或多个NPC
6. 人工人生/生命
多代理系统试图用生活体系来模拟AI代理,如模拟人生还有孢子。
7. Flocking积累
用来控制大群单位的组织和行动,比如鸟群或者军队。
有限状态机
第一个有AI机制的游戏是Pong
然后讲了经典的吃豆人的案例:三个状态模式:追捕,散漫,受惊
低级时只有一个小鬼在一心追吃豆人,高级时两个,另外两个只有大概三分之二的时间在追吃豆人。
这也是有限状态机的雏形。
有限状态机概念平易近人,容易实现,而且已经有很多中间件可用比如Unity AI。
缺点是:很快就会变的巨大,而且笨重。很难Debug!!!很难扩展!有大量重复代码。
总之有限状态机已经过时了。还罗列了十宗罪。
挑简单的:low,逻辑限制多,需要用户扩展,很难标准化,无法协商,在同步上问题很大,规模小。新技术已经来了。
现在流行Scripts with coroutines 协同程序脚本
游戏AI的进化
格斗游戏最先引进了复杂complex AI
这是基于用户行动,位置以及游戏状态
第一步:用户的行动和位置将在一个检索表中搜索,并且得到最相似的值,找到对应的反应决定。
第二步:用minimax or minmax算法来搜索可能的状态空间并决定最好的可行性行动。
2001年的“黑与白”就是个例子。
pathfinding
四个表现:网格,航点图,导航网,Delaunay Triangulation
内容不少,跳过了
behavior trees 行为树被广泛运用
1 在系统中:角色AI,Squad(队)逻辑,策略AI,指导,AI指挥
2 构造引擎中:CRY,Unity,Evolution
3 游戏例子 很多
Node选择:
优先:子节点被按照顺序审查,直到有一个通过审核
顺序:第一个子节点被审核并运行,当其运行结束,再开始审核下一个
随机:所有子节点都被审核,每次随机选一个来审核
图例
行为树是状态机的进化版,增加了限制,同时又有更多适合的结构遍历
叶节点leaf node:
行动:实现一个动作或者游戏世界状态改变,比方说计划一个路径,并且随之移动,感知最近的敌人,作出特定动作,换武器,播放音效等等。第二点看不懂
判断:检查特定的动作或某些游戏状态,中间中断整条结束,第二三点看不懂
情绪,互动,慢慢悠
说了一段挺有意思的话,老式的AI按照指令行动,而如今的AI在面对命令时,有了选择。(通过情绪,或者是你设定的情绪)
心理学情绪模型:
喜悦:积极反馈,在一瞬间达到峰值,随时间降低
恐惧:被动消极,逐渐达到峰值,主要发生在安全的环境中。
其它感觉:成功/失败,危险/安全,期望,信任,惊喜,厌恶,预期。
多样Diversity:两个单位永远不会有完全一样的情绪应答(应该是随机的)
立体化动作表现:比如恐惧:角色就会产生快速的头部动作,低姿态,双眼膨胀;又比如开心:微笑,身体拉直,缓慢而优雅的动作(踢起小碎步)。
案例Left4Dead
和另外三个角色合作完成游戏。
从反恐精英吸取的经验:单调不变的战斗是厌倦的。长周期令人乏味。
游戏强度的峰值和低谷值是不可预测的时候,可以营造出一个非常具有吸引力和重玩体验的效果。比如黑魂,宫崎英高就是牢牢抓住了这点。即使是同样的情境,几乎一样的地图,达到了完全不同的体验。
插一句,对比猫里奥,黑魂的故事性和内涵以及艺术设计更是其成功的主梁。
总之,要通过心理学分析,在适当的时候刺激玩家。Fun AI。
以Left4Dead为例,运用了一个有趣的算法来使AI更戏剧化
1.估算每个幸存者的“情感强度”
2.追踪四个幸存者强度的最大值
3.如果强度过大,出去主要威胁一会儿
4.相反,创造一个有趣的威胁
感觉就是要把玩家控制在心流之中,AI指挥会在幸存者情绪稳定时创造单位(来袭击),情绪过于不稳定时降低进攻。
进化算法
将系统的性状编码成基因的形式。用变异和交叉来产生并保留合适的性状,从而达到不断进化的目的。
更聪明。
[ppt结束]
另外:
发现一本论文集挺有意思,Transactions on Edutainment XII,但还是有点贵。Edutainment = 寓教于乐.
公开课资料 http://www.techug.com/awesome-artificial-intelligence