ai in flash games

Post on 02-Jul-2015

4.023 Views

Category:

Technology

9 Downloads

Preview:

Click to see full reader

DESCRIPTION

AI in flash games at Flash Platform Submit, Beijing

TRANSCRIPT

游戏人工智能

张启智

摘要

概述

有限状态机

操控行为

寻路

定性

可预测,效率高,易实现、理解、测试与调试

无法帮助 学习、演化

非定性

难以预测,具备学习能力,高仿真

难测试、调试,难度大

游戏引擎的抽象结构

状态与游戏

有限状态机

表示有限个状态以及在这些状态之间的转移和动

作等行为的数学模型

状态:存储关于过去的信息

转移:指示状态变更,并且用必须满足来确使转移发

生的条件来描述它

动作:是在给定时刻要进行的活动

游戏开发中,通常用 实现 控制

设计

更新当前状态

改变状态

案例:开心

进门

玩游戏

等餐与吃饭

去厕所

离开

并行状态机

把互斥行为分解到并行的层次中去

状态管理器维护每个状态层的当前状态

跨层阻止

移动层

停止

向左移动

向后移动

向前移动

向后移动

姿势层

站立

坐下

步行

跑步

掉下

行动层

空闲

战斗

制造

释放魔法

自治智能体

运行过程

行动选择

操控,计算轨道数据

移动,相同的操控可具有不通的移动模式

动力模型

动力模型

朝向向量与侧向向量组成局部坐标系

速度向量与朝向一直

加速度 力 质量

速度

: 朝向向量

: 垂直于朝向向量

: 质量

计算合力

操控行为:靠近与离开

靠近行为( ):返回一个操控智能体到达目标的力

离开行为与靠近行为相反

当前速度预期速度

预期速度-当前速度

操控行为:追逐与闪躲

预测目标未来位置,拦截 逃离目标

权衡准确率与效率

特殊情况:如直接面对时的策略

逃避者预测位置

追逐者

组合操控行为

操控力的截断

加权截断总和

带优先级的加权截断累计

概率抖动

优化:空间划分

案例:开心水族箱

案例:开心水族箱

行为树

任务的分解与决策

非枝叶行为的作用是用来做决定,枝叶行为是用来完成具体的任务

让父行为利用专门的代码做出决定

让子行为去竞争,让父行为根据子行为的渴求程度和关联度判断最终的取舍

自卫

使用手雷

掩蔽

防御

交战

使用手雷

战斗

搜寻

火力压制

反掩蔽

调查防御战后处理

闲置

基本路径寻找

视线移动、追逐

沿着墙走遍空间

避开障碍物

随机移动避开障碍物

绕行避开障碍物

地形与路径

生成地形数据

定义方向数据并分配权值

利用权重找出最优方向

1(+2)

2(+1) 3(+0)

4(+0)

5(-1)

6(+0)

7(+0)

8(+1)

导航图

利用预先放置好的节点计算路径

每个节点在另一个节点的视线内

节点表

A B C D E F G

A

B

C

D

E

F

G

图的遍历

盲目搜索

深度优先搜索( ):保证能找到一个目标节点

广度优先搜索( ):最优路径

启发式搜索

算法

博弈算法、遗传算法等

算法

把起始节点加进

不为空

当前节点 中成本最低的节点

当前节点 目标节点:

搜索完成:

把当前节点移入

每个邻节点 遍历当前节点的所有邻节点

该节点不在 与 中 该节点不是障碍

物:将该节点移入 中;

搜索过程

地形与动态影响力

(累计开销) 启发函数

地形通过修改 来影响寻路

动态影响地图:影响力对应( )

敌人视线的影响

被射杀的敌人对该区域的影响

物件体积的影响

总结

收集游戏数据

记录运行时的关键数据

根据数据分析与决策

执行决策,异常检查

解决问题的思路

分而治之

启发式

模拟现实

游戏项目经验谈

引擎和实现分离

随时方便的测试

尽早重构

使用版本控制系统

项目职能明确

敏捷开发,避免无谓的返工

避免过多工作压在同一人身上

HappyElements

MSN: zhangqizhi@live.com

MAIL: john.zhang@happyelements.com

top related