- 23
- 0
- 约2.64万字
- 约 10页
- 2022-05-07 发布于天津
- 举报
GameRes游戏开发资源网
AmitsAstarPage中译文
译序
这篇文章很适合A*算法的初学者,可惜网上没找到翻译版的。本着好东西不敢独享的想法,也为了锻炼一下英文,本人译了这篇文章。
由于本人英文水平非常有限,六级考了两次加一块不超过370分,因此本译文难免存在问题。不过也算是抛砖引玉,希望看到有更多的游戏开发方面的优秀译作出现,毕竟中文的优秀资料太少了,中国的游戏开发者的路不好走。
本人能力有限,译文中有小部分词句实在难以翻译,因此暂时保留英文原文放在译文中。对于不敢确定翻译是否准确的词句,本人用圆括号保留了英文原文,读者可以对照着加以理解。
A*算法本身是很简单的,因此原文中并没有过多地讨论A*算法本身,而是花了较大的篇幅讨论了用于保存OPEN和CLOSED集的数据结构,以及A*算法的变种和扩展。
编程实现A*是简单的,读者可以用STL对本文中的伪代码加以实现(本人已花一天时间实验过基本的A*搜索)。但是最重要的还是对A*本身的理解,这样才可以在自己的游戏中处理各种千变万化的情况。
翻译本文的想法产生于2006年5月,实际完成于2007年4月到6月,非常惭愧。
最后,本译文仅供交流和参考,对于因本译文放到网上而产生的任何问题,本人不负任何责任。
蔡鸿于南开大学软件学院2007年6月9日原文地址:/~amitp/GameProgramming/
相关链接:/%7Eamitp/gameprog.html#Paths
我们尝试解决的问题是把一个游戏对象(gameobject)从出发点移动到目的地。路径搜索(Pathfinding)的目标是找到一条好的路径一一避免障碍物、敌人,并把代价(燃料,时间,距离,装备,金钱等)最小化。运动(Movement)的目标是找到一条路径并且沿着它行进。把关注的焦点仅集中于其中的一种方法是可能的。一种极端情况是,当游戏对象开始移动时,一个老练的路径搜索器(pathfinder)外加一个琐细的运动算法(movementalgorithm)可以找到一条路径,游戏对象将会沿着该路径移动而忽略其它的一切。另一种极端情况是,一个单纯的运动系统(movement-onlysystem)将不会搜索一条路径(最初的“路径”将被一条直线取代),取而代之的是在每一个结点处仅采取一个步骤,同时考虑周围的环境。同时使用路径搜索(Pathfinding)和运动算法(movementalgorithm)将会得到最好的效果。1导言
1.1算法
1.2 Dijkstra算法与最佳优先搜索
1.3 A*算法
2启发式算法
2.1 A*对启发式函数的使用
2.2速度还是精确度?
2.3衡量单位
2.4精确的启发式函数
241予页计算的精确启发式函数
2.4.2线性精确启发式算法
2.5网格地图中的启发式算法
2.5.1曼哈顿距离
2.5.2对角线距离
2.5.3欧几里得距离
2.5.4平方后的欧几里得距离
2.5.5Breakingties
2.5.6区域搜索
Implementationnotes
3.1概略
3.2源代码
3.3集合的表示
3.3.1未排序数组或链表
3.3.2排序数组
3.3.3排序链表
3.3.4排序跳表
3.3.5索引数组
3.3.6哈希表
3.3.7二元堆
3.3.8伸展树
3.3.9HOT队歹U
3.3.10比较
3.3.11混合实现
3.4与游戏循环的交互
3.4.1提前退出
3.4.2中断算法
3.4.3组运动
3.4.4细化
A*算法的变种
beamsearch
4.2迭代深化
4.3动态衡量
4.4带宽搜索
4.5双向搜索
4.6动态A*与终身计划A*
5处理运动障碍物
5.1重新计算路径
5.2路径拼接
5.3监视地图变化
5.4预测障碍物的运动6预计算路径的空间代价
6.1位置VS方向
6.2路径压缩
6.2.1位置存储
6.2.2方向存储
6.3计算导航点
6.4极限路径长度
6.5总结1导言
移动一个简单的物体(object)看起来是容易的。而路径搜索是复杂的。为什么涉及到路径搜索就产生麻烦了?考虑以下情况:
物体(unit)最初位于地图的底端并且尝试向顶部移动。物体扫描的区域中(粉红色部分)没有任何东西显示它不能向上移动,因此它持续向上移动。在靠近顶部时,它探测到一个障碍物然后改变移动方向。然后它沿着U形障碍物找到它的红色的路径。相反的,一个路径搜索器(pathfinder)将会扫描一个更大的区域(淡蓝色部分),但是它能做到不让物体(unit)走向凹形障碍物而找到一条更短的路径(蓝色路径)。
然而你可以扩展一个运动算法,用于对付上图所示的障碍物。或者避免制造凹形障碍,或者把凹形出口标识为危险的(只有当目的地在里面时才进去):
start
比起一直等到最后一刻才发现问题,路
您可能关注的文档
- AutoBDS程序安装及网络认证方法.doc
- AutocadVBA初级教学文章(第九课创建选择集).doc
- AutoCAD中用剖切圆锥精确绘制抛物线.doc
- AVR使用范例AVR外部中断范例.doc
- axure70教程(图文案例).doc
- A公司人力资源现状及改进建议.doc
- B2B电子商务整体构架.doc
- B3U1课文翻译及课后练习答案.doc
- bat批处理教程超级详细教程.doc
- BES最佳商业模式讲义《林伟贤》.doc
- 山西天一大联考2025-2026学年高二上学期期末学情监测语文试题(试卷+解析).docx
- 山西忻州部分学校2025-2026学年高一上学期2月质量检测数学试题(人教B版)(试卷+解析).docx
- 山西运城市2025-2026学年高二第一学期期末调研测试数学试题(试卷+解析).docx
- 陕西省榆林市榆阳区2025-2026学年八年级上学期期末地理试题(试卷+解析).docx
- 陕西西安市碑林区2025-2026学年度第一学期期末八年级生物试题(试卷+解析).docx
- 四川省广元市苍溪县2025-2026年八年级上学期期末道德与法治试题(试卷+解析).docx
- 江苏泰州市姜堰区2025-2026学年七年级上学期1月期末数学试题(试卷+解析).docx
- 江苏省扬州市邗江区2025-2026学年九年级上学期期末考试化学试题(试卷+解析).docx
- 江西上饶市铅山县2025-2026学年第一学期期末考试八年级数学试题(试卷+解析).docx
- 江苏扬州市高邮市2025-2026学年度第一学期期末学业质量监测试题九年级英语(试卷+解析).docx
最近下载
- 2025(人教版)数学六年级下册全册教学设计.docx
- API 682-2014 离心泵和转子泵用轴封系统 第四版(中文).pdf
- 华东师大版八年级数学上册《14.2.3容易误导读者的统计图》同步练习题及答案.docx VIP
- 《从零开始学低压电工技术》,张伯虎,高清版.pdf
- 2026京东智能产发股份有限公司招股说明书.pdf VIP
- 基于交通静化理论的威海市环海路部分路段的优化设计--本科生毕业论文(设计).doc VIP
- 一年级数学20以内破十法减法练习题.pdf VIP
- 一年级数学20以内加减法(凑十法、破十法)专项练习.pdf VIP
- 云南省专业技 职称申报评审表(完整.pdf
- 20以内凑十法专项练习.pdf VIP
原创力文档

文档评论(0)