SlideShare a Scribd company logo
1 of 29
Flash游戏人工智能 张启智 2010.4.22
摘要 Game AI概述 有限状态机 (FSM) 操控行为 (Steering Behaviors) 寻路
Game AI 定性AI 可预测,效率高,易实现、理解、测试与调试 无法帮助NPC学习、演化 非定性AI 难以预测,具备学习能力,高仿真 难测试、调试,难度大
游戏引擎的抽象结构
状态与游戏
有限状态机(FSM) 表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型 状态:存储关于过去的信息 转移:指示状态变更,并且用必须满足来确使转移发生的条件来描述它 动作:是在给定时刻要进行的活动 游戏开发中,通常用FSM实现NPC控制
设计FSM public interface IState {      function execute():void;    //onEnter; onExit; etc} public class FSM {   public varcurrentState:IState;   public function update(){currentState. Execute();  //更新当前状态   }   public function changeState(newState:IState):void{currentState = newState;  //改变状态   } }
案例:开心Lounge Bar 去厕所 等餐与吃饭 进门 离开 玩游戏
并行状态机 把互斥行为分解到并行的层次中去 状态管理器维护每个状态层的当前状态 跨层阻止
自治智能体 运行过程 行动选择 操控,计算轨道数据 移动,相同的操控可具有不通的移动模式
动力模型 动力模型 朝向向量与侧向向量组成局部坐标系 速度向量与朝向一直 加速度=力/质量
操控行为:靠近与离开 靠近行为(Seek):返回一个操控智能体到达目标的力 离开行为与靠近行为相反 当前速度 预期速度 预期速度-当前速度
操控行为:追逐与闪躲 预测目标未来位置,拦截/逃离目标 权衡准确率与效率 特殊情况:如直接面对时的策略 逃避者 预测位置 追逐者
组合操控行为 操控力的截断 加权截断总和 带优先级的加权截断累计 概率抖动 优化:空间划分
案例:开心水族箱
案例:开心水族箱
行为树(BT) 任务的分解与决策 非枝叶行为的作用是用来做决定,枝叶行为是用来完成具体的任务 让父行为利用专门的代码做出决定 让子行为去竞争,让父行为根据子行为的渴求程度和关联度判断最终的取舍
基本路径寻找 视线移动、追逐 沿着墙走遍空间 避开障碍物 随机移动避开障碍物 绕行避开障碍物
地形与路径 2(+1) 3(+0) 1(+2) 生成地形数据 定义方向数据并分配权值 利用权重找出最优方向 4(+0) 8(+1) 7(+0) 5(-1) 6(+0)
导航图 利用预先放置好的节点计算路径 每个节点在另一个节点的视线内
节点表
图的遍历 盲目搜索 深度优先搜索(DFS):保证能找到一个目标节点 广度优先搜索(BFS):最优路径 启发式搜索 A *算法 博弈算法、遗传算法等
A*算法 把起始节点加进open listwhile open list 不为空{当前节点=open list中成本最低的节点;  if 当前节点==目标节点:搜索完成;else:把当前节点移入close list;      for 每个邻节点 //遍历当前节点的所有邻节点      {         if 该节点不在open list 与close list中 and 该节点不是障碍物:将该节点移入open list中;      }}
搜索过程
地形与动态影响力 F=G(累计开销)+H(启发函数) 地形通过修改G来影响寻路 G=Cost from Start + Terrain Cost 动态影响地图:影响力对应(influencemapping) 敌人视线的影响 被射杀的敌人对该区域的影响
物件体积的影响
总结 Game AI 收集游戏数据 记录运行时的关键数据 根据数据分析与决策 执行决策,异常检查 解决问题的思路 分而治之 启发式 模拟现实
游戏项目经验谈 引擎和实现分离 随时方便的测试 尽早重构 使用版本控制系统 项目职能明确 敏捷开发,避免无谓的返工 避免过多工作压在同一人身上
HappyElements 世界欢乐的元素 MSN: zhangqizhi@live.com MAIL: john.zhang@happyelements.com

More Related Content

Viewers also liked

FIM Media Player - BoxModel in Flash
FIM Media Player - BoxModel in FlashFIM Media Player - BoxModel in Flash
FIM Media Player - BoxModel in Flashqizhi20
 
Expo stories A View From An Insider
Expo stories  A View From An InsiderExpo stories  A View From An Insider
Expo stories A View From An InsiderLady F
 
Scada For G Mgt
Scada For G MgtScada For G Mgt
Scada For G MgtAnil Patil
 
Concept Of Grid Code Anilpatil Session Iii
Concept Of Grid Code Anilpatil Session  IiiConcept Of Grid Code Anilpatil Session  Iii
Concept Of Grid Code Anilpatil Session IiiAnil Patil
 

Viewers also liked (7)

FIM Media Player - BoxModel in Flash
FIM Media Player - BoxModel in FlashFIM Media Player - BoxModel in Flash
FIM Media Player - BoxModel in Flash
 
Expo stories A View From An Insider
Expo stories  A View From An InsiderExpo stories  A View From An Insider
Expo stories A View From An Insider
 
Etude pwc
Etude pwcEtude pwc
Etude pwc
 
Scada For G Mgt
Scada For G MgtScada For G Mgt
Scada For G Mgt
 
Concept Of Grid Code Anilpatil Session Iii
Concept Of Grid Code Anilpatil Session  IiiConcept Of Grid Code Anilpatil Session  Iii
Concept Of Grid Code Anilpatil Session Iii
 
Portfolio Managment
Portfolio ManagmentPortfolio Managment
Portfolio Managment
 
Le pouvoir du jeu
Le pouvoir du jeuLe pouvoir du jeu
Le pouvoir du jeu
 

AI in flash games

Editor's Notes

  1. 定性:特定的行为,如视线追逐;游戏AI的基础,方法很多,需要预先考虑各种场景,明确所有行为:开发者的重担有趣的行为,甚至是凸现行为,无需预先料想所有场景,所有行为
  2. 进入、退出、转移动作,示例:门的开、关状态,足球队员(FIFA)的状态,红警中的移动、巡逻等
  3. 两种实现方式状态转换表;内置规则(状态模式);
  4. 准确率:预测多远?距离/速度和效率:是否考虑转向时间?