`
windytwang
  • 浏览: 50954 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

2010北京Adobe大会笔记(4.22上午)

阅读更多

奥多比开发者大会笔记—4 月22 日上午

 

(欢迎转载,但请注明原文地址)

 

2010 年4 月22 日9:00-10:00

Flash游戏中的人工智能

张启智

 

PPT链接:http://flash.9ria.com/viewthread.php?tid=51248

 

1 游戏引擎的抽象结构

 

|                   GameEngine                      |

|      Gameplay                  |       UI      |

| Render   |       logic        |

|Sence|Entity|AI|

 

2 状态与游戏

2.1 有限状态机(FSM)

2.1.1 表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型

2.1.2 状态机包括:状态/事件/状态切换

2.2 设计FSM

2.3 案例:开心Lounge Bar

2.3.1 如果不用状态机,逻辑代码会膨胀到不可维护

2.4 状态机的思想

2.4.1 模拟人类的行为

2.4.2 分而治之

3 并行状态机

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

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

3.3 跨层阻止

4 自治智能体(Boid)

4.1 运行过程

4.1.1 行动选择

4.1.2 操控:计算轨道数据

4.1.3 移动:相同的操作可具有不同的移动模式

5 动力模型

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

5.2 速度向量

5.3 特殊情况

6 操控行为

6.1 靠近与离开

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

6.1.2 离开行为:与靠近行为相反

6.2 追逐与闪避

6.2.1 预测目标未来位置

6.2.2 校准位置

6.2.3 特殊情况,如直接面对的策略

7 组合操控行为

7.1 操控力的截断

7.1.1 加权截断总和

7.1.2 带优先级的加权截断累积

7.1.3 概率抖动

8 优化:空间划分

8.1 优化会带来风险

8.1.1 算法的优化,代码的可读性降低

8.1.2 时间换空间,性能的损失

8.1.3 空间换时间,内存总是有限的

8.2 评判优化是否值得的标准

8.2.1 2/8 原则:如果20%的代码占用了80%的性能,集中优化此段代码就可以了

9 案例:开心水族箱

9.1 如果加入新的类总要改变原有代码的逻辑,说明两层之间欠缺抽象层

9.2 控制继承层次:5-7 理论

10 行为树(BT):多层状体机

10.1 任务的分解和决策

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

10.2.1 父行为利用专门的代码做出决策

10.2.2 子行为之前进行竞争,父行为根据子行为的胜者来决定采用的行为

10.3 缺点

10.3.1 很难测试

10.3.2 维护成本很高

11 基本路径寻找

11.1 视线移动,追逐

12 地形与路径

12.1 生成地形数据

12.2 定义方向数据并分配权值

12.3 利用权重找出最佳方向

13 导航图

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

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

14 节点表

14.1 图的遍历(当视线追逐不可用时)

14.1.1 盲目搜索:DFS,BFS

14.1.2 启发式搜索:A*

14.1.3 博弈算法,遗传算法

15 A*算法

15.1 A*算法的伪代码表示

15.2 搜索过程的图形表示

16 地形与动态影像力

16.1 F=G(累积开销)+ H(启发函数)

16.2 地形通过修改G 来影响寻路

16.3 G=cost from stail + Terrain cost

17 动态影响地图(influence mapping)

17.1 敌人视线的影响

17.2 被射杀敌人对地形的影响

18 物体体积的影响

18.1 将各种因素考虑进去后,A*算法可以打遍天下了

19 总结

19.1 Game AI

19.1.1 收集游戏数据

19.1.2 记录运行时的关键数据

19.1.3 根据数据分析与决策

19.1.4 执行决策,异常检查

19.2 解决问题的思路

19.2.1 分而治之

19.2.2 启发式

19.2.3 模拟现实

20 游戏项目经验谈

20.1 引擎和实现分离

20.1.1 每写一个类之前想想应该放到哪里

20.2 随时方便的测试

20.2.1 异常分支永远比正常流程多,做好前置条件判断,后置条件分支和异常分支处理

20.3 尽早重构

20.3.1 重构发生在编写代码的每一刻

20.3.2 出来混的总是要还的,前端在游戏上线之前会焦头烂额,后端则在上线之后会

20.3.3 产品经理是不会预留重构的时间的,自己挤

20.4 使用版本控制系统

20.4.1 Tag,稳定的版本

20.4.2 Trace,当前的版本

20.4.3 Brance,分支

20.4.4 SVN 不错

20.5 项目职能明确

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

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

20.5.2.1 项目风险

20.5.2.2 长期做同一件事情当事人会腻

21 关于Happy Elements—演讲者是此公司的联合创始人

21.1 世界欢乐的元素

21.2 MSN:zhangqizhi@live.com

21.3 Mail:john.zhang@happyelements.com

22 问答时间

22.1 A*算法在大场景中性能会急剧下降,怎么解决?

22.1.1 历年的游戏图形学和人工智能的论文中有很多很好的解决办法

22.1.2 比较常见的办法

22.1.2.1 分割

22.1.2.2 Waypoint

22.1.2.3 预计算

22.1.2.4 计算一个人,其他的跟随他

22.2 有限状态机中的操控行为中,如果同时发生了碰撞怎么办?

22.2.1 我都是直接穿越的,笑

22.2.2 单一职能原则

22.2.3 优先级

22.3 我的AI 经常会出现奇怪的行为

22.3.1 健壮性有问题,笑,比如前面说的条件判断没做好

22.3.2 有限状态机实际上是有向无环图,必然不像人那么智能

22.3.3 机器性能高并且项目允许的情况下可以考虑使用更高级的算法,比如博弈,

遗传等

22.3.4 总要在性能和智能之间权衡

22.4 我自己发明了一个类似五子棋的算法替代A*算法,…,以下省略500 字

22.4.1 去看论文吧,不要重复的造轮子

22.5 节点表中用什么数量的节点比较合适

22.5.1 交给QA 去做测试

 

2010 年4 月22 日10:05-11:00

ActionScript 3 Drawing API探索

Zerlot Ma

 

1 Who am I?

1.1 1999:tester

1.2 2004:售前解决方案

1.3 2008:大客户技术部经理和架构师

1.4 现在:面向市场推广技术与培训

1.5 AVML Math:此三角函数的贡献者

1.6 左脑+右脑:喜欢玩游戏和摄影

2 本次议题:入门+中级

3 Drawing API 最直观的解释:不是工具箱而是编程接口

4 Flash Player 10 上Drawing API 的新增项

4.1 Pixel Bender

4.2 使用矢量(类型数组)提升内容使用效率

4.3 新增一个非零的缠绕规则

4.4 3D 透视绘图API

4.5 图形数据类

5 ActionScript 3 中的颜色体系—色彩

5.1 0-169.777.215

5.2 24Bit 色彩+8Bits Alpha=32Bits

5.3 Drawing API—24Bits

5.4 BitmapData—32Bits

6 ActionScript3 中的颜色体系—换算机制

6.1 请牢记UINT 类型

7 绘制图形—AS2/AS3 的演变

7.1 AS2—只有MoveClip 可以使用

7.2 AS3—DisplayObject 都可以使用

7.3 改进Performance—善用clear()

8 绘制图形—一切开始与画直线

8.1 lineStyle(width, color, alpha)

8.1.1 仅用作设定未来绘制线条和样式

8.2 clear()

8.2.1 清除一切,线条,附加样式,绘图坐标同时归零

8.3 下一条的起点默认为上一条的终点

8.4 curveTo(x1, y1, x2, y2)

8.4.1 请参考9RIA 中的《Flash and math》,或者访问FlashandMath.com

9 绘制图形—画线是基调,填充是必须

9.1 moveTo,lineStyle,beginFill,lineTo,curveTo,endFill

9.2 AS3 自带内置形状绘制使填充更容易,不过建议使用基本函数

10 绘制图形—渐变填充比单色填充更常见

10.1 看文档

11 绘制图形—填充已经不仅仅是针对Vectors!

11.1 增强的绘图组合命令graphics.drawPath()要善用,不要大量使用,组合的命令会

降低一定的性能

11.2 期待加入copyGraphics()

12 绘制图形—设计与编程的完美结合

13 ColorTransform 类—Color 类的优秀接班人

13.1 AS2:color.setRGB(),color.serTransform

13.2 AS3:所有DisplayObject 都有ColorTransform 属性

14 ColorTransform 类—如何使用它

14.1 色彩转损通道公式:新增值=旧红色值*红色系数+红色偏移值

14.2 HardCode 并且给定选择值

14.3 别忘了reset

15 滤镜—像操作PS 一样

15.1 滤镜的目的:封装对于显示对象的效果操作

15.2 所有显示对象的Filter 属性是一个滤镜的对象数组

16 BitmapData 类—通向绘图巅峰的必经之路

16.1 Bitmap 类是BitmapData 实例的容器

16.2 Bitmap 类继承自DisplayObject,BitmapData 类继承自Object 类

17 BitmapData 类—最常用的绘图API 类

17.1 Source 是最重要的参数

18 BitmapData 类—some tips

18.1 将尽可能多相同的Bitmap 指向同一个BitmapData 引用以节省内存

18.2 BitmapData 也适用于Vedio

18.3 BitmapData 没有最完美的解决方案

19 演示—粒子系统

19.1 StarDust

19.2 Fluid Solver HD

20 内置3D 绘图API—Flash player 10+支持

21 内置3D 绘图API—从XYZ 到UVT

21.1 T 是物体在三维空间内的透视缩放比率

22 演示—UVT

22.1 SuperShape3D

23 Pixel Bender Shaders—高级绘图API

23.1 Pixel Bender Shaders 的特点

23.2 AS3 中的调用方法

24 Pixel Bender Shaders—从PBK 到AS3

24.1 PBX—>PBJ—>Flash

25 Pixel Bender 技巧

25.1 当使用ApplyFilter 是,要小心使用SourceRect

25.2 使用shaderJob 比使用ApplyFilter 更好

25.3 处理速度:BitmapData > ByteArray > Vector(Number)

25.4 放弃Alpha=0 的检测,在必要时可以提高30%-50%的效率

26 推荐两本书:

26.1 Flash Action Script 3.0 动画教程

26.2 Flash Action Script 3.0 特效教程

27 什么可以和Drawing API 结合

28 问答:

28.1 PixelBander 可否做数据运算

28.1.1 可以的,如果不需要显示数据就不要输出计算结果

28.2 PixelBander 大规模使用的时候总有这样那样的Bug

28.2.1 使用的方式要规范

28.2.2 请谨慎使用PixelBander,因为它采用类C 的预编译的方法

28.2.3 PixelBander 在处理大量BitmapData 是比ActionScript3 有很大的优势

28.3 有没有流体的开源项目

28.3.1 刚刚演示的StarDust 里面就有,流体也算粒子系统

 

2010 年4 月22 日11:00-12:00

从设计到开发:Flash Catalyst和Flash Builder的整合流程

Bill Heil

 

1 目标

1.1 Flash Catalyst 简介

1.2 探索设计人员和开发人员在FC 和FB 间的工作流程

1.3 需要听众对FC 和FB 有一定的了解

2 Flash Catalyst

2.1 可以快速构建应用的有男过户体验和交互内容,无需编码

3 Flash 平台工具

3.1 FL—>FC—>FB

3.2 FL:创建生动的视频和内容

3.3 FC:将美术设计转换为可执行的应用程序

3.4 FB:创建跨平台的应用程序

4 当前工作流程

4.1 设计

4.1.1 PS/FW/AI

4.1.2 视觉设计

4.1.3 定义用户体验

4.2 开发

4.2.1 FX

4.2.2 导入视觉设计资源

4.2.3 实现用户体验

4.2.4 开发应用

5 在Flex3 设计和开发中存在的问题

5.1 开发人员在整个产品流程中负责整个Flex 项目

5.2 设计人员只提供图形的应用外观部分

5.3 开发人员通过ActionScript 导入资源

6 Catalyst 工作流程

6.1 RIA 应用程序产品组中的人员角色:美术创意->框架布局->交互定义->MXML/As

开发->整合发布

6.2 仅仅为设计人员

6.2.1 美术创意(AI),交互定义(FL)

7 细节和背后的机制

7.1 Think about what I do with make scence into the flow (such as PS/Ai layer and group)

7.2 演示

8 组件的光环模型

8.1 应用程序是一个组件在其内,外观在其外的光环模型

8.2 外观包括:图形,布局,动画,部件,状态

8.3 组件包括:行为,逻辑,数据

9 从Flash Catalyst 中导出项目

9.1 FXP,FXPL,Flash Catalyst 库

9.2 主Flex 应用和相关的资源定义

10 Flash Catalyst 项目中包含的内容

11 Catalyst 工作流程—RIA 开发人员的子集

11.1 应用设计与开发

11.2 迭代应用开发#1

11.3 应用原型开发和设计

11.4 迭代应用开发#2

12 高效率的设计修改

12.1 需要在多个项目中重用组件

13 演示—怎么用lib 实现自定义皮肤

13.1 用Calalyst 定义lib 并在FlexBuilder 中重置默认的组件

 

分享到:
评论

相关推荐

    Keil MDK4.22a 破解及注册机

    Keil MDK4.22a 破解及注册机

    keil4.22 破解软件

    keil4.22 破解软件,使用可以获得破解码,有效期可达2020

    P2P终结者 4.22

    《P2P终结者 4.22:网络流量管理工具详解》 P2P终结者 4.22是一款绿色完美的网络流量管理软件,它主要用于控制局域网内P2P(Peer-to-Peer)协议的流量,帮助用户合理分配网络资源,尤其在共享网络环境下,能有效...

    飞凌官方JLINK V4.22驱动

    飞凌官方JLINK V4.22驱动。此外还有V412与V440。会陆续上传

    arcgis-js-api-4.22

    《ArcGIS JavaScript API 4.22:前端开发与本地部署详解》 ArcGIS JavaScript API 是Esri公司推出的一款强大的地图开发工具,主要用于构建交互式的Web GIS应用。本篇文章将深入探讨API的4.22版本,以及在前端开发中...

    锐捷认证客户端V4.22

    在V4.22这个版本中,锐捷认证客户端可能包含以下重要知识点: 1. **身份认证**:锐捷认证客户端的核心功能是进行用户身份验证,通常需要用户提供学号或工号以及对应的密码。这种认证方式可以防止未经授权的人员访问...

    MemTest 4.22.dmg

    **MemTest 4.22 for Mac:内存测试详解** MemTest 4.22.dmg 是一个专为Mac用户设计的内存诊断工具,用于检测和检查计算机内存(RAM)的稳定性和错误。这个版本是4.22,提供了一个可靠的方式来确保你的Mac电脑的内存...

    MDK4.22 keygen

    MDK4.22注册机,已经测试过了,可以用,激活后时间很长

    MDK 4.22a 註冊機

    Keil 最新版本注册机, 试过可以用 MDK 4.22a 註冊機

    ArcGIS API for JavaScript 4.22版 API+SDK

    ArcGIS API for JavaScript用于构建高性能的WebGIS应用程序,同时结合现代网络技术和强大的地理空间功能,利用ArcGIS Online、ArcGIS Server发布的地图服务以及网络上的其他服务内容,使用户在web端能够进行应用程序...

    nrf connect_4.22.3

    最新安卓版本的nrf connect 4.22.3,帮忙大家无法上google play下载

    KEIL MDK 4.22(附破解补丁).part6

    KEIL MDK最新版4.22版(共六个压缩包,请全部下载后解压),更新了大部分固件库,支持器件种类更多。附破解补丁,多生成几次即可破解……

    KEIL MDK 4.22(附破解补丁).part4

    KEIL MDK最新版4.22版(共六个压缩包,请全部下载后解压),更新了大部分固件库,支持器件种类更多。附破解补丁,多生成几次即可破解……

    android源码开发实战4.22.zip

    在Android源码开发实战4.22的压缩包中,我们很显然会深入探讨与Android系统相关的编程技术,特别是从源码级别的理解。这通常包括Android操作系统的基本架构、组件系统、UI框架、运行时环境、服务框架以及应用程序的...

    KEIL MDK 4.22(附破解补丁).part5.ra

    KEIL MDK最新版4.22版(共六个压缩包,请全部下载后解压),更新了大部分固件库,支持器件种类更多。附破解补丁,多生成几次即可破解……

    Android4.22 telephony

    在Android系统中,Telephony模块是负责处理手机通信功能的核心组件。这个模块涵盖了与蜂窝网络、通话、短信等相关的服务和接口。Android 4.2.2版本的Telephony框架主要分布在`frameworks\base\telephony`和`...

    TW狩猎助手ForV4.22

    《TW狩猎助手ForV4.22:深入解析与应用》 在IT行业中,针对特定游戏或平台的辅助工具往往能为玩家带来极大的便利。"TW狩猎助手ForV4.22"就是这样一款专为17tw 一起天翼 v4.22版本设计的狩猎辅助软件。它以其独特的...

    【WordPress插件】2022年最新版完整功能demo+插件v4.22.zip

    "【WordPress插件】2022年最新版完整功能demo+插件v4.22 Ajax Search Pro - Best Live WordPress Search & Filter Plugins Ajax Search Pro - 最佳Live WordPress搜索和过滤器插件" ---------- 泰森云每天更新发布...

    ADS转keil4.22工程的TQ2440按键程序(无中断)

    在本文中,我们将深入探讨如何将一个原本基于ADS(ARM Development Studio)的工程转换为Keil uVision 4.22版本,并以TQ2440开发板上的按键程序为例,详细介绍转换过程以及工程配置的关键步骤。TQ2440是一款基于...

    KEIL MDK 4.22(附破解补丁).part2

    KEIL MDK最新版4.22版(共六个压缩包,请全部下载后解压),更新了大部分固件库,支持器件种类更多。附破解补丁,多生成几次即可破解……

Global site tag (gtag.js) - Google Analytics