设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
楼主: 美兽
打印 上一主题 下一主题

承接各种算法类脚本。

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
60
在线时间
41 小时
注册时间
2008-3-5
帖子
2072
11
发表于 2008-6-21 07:15:48 | 只看该作者
要不给做个能打败 深蓝 的算法
你它囧一字母君谁记得……
当时那把剑离我的喉咙只有0.01工分。可是一柱香之后,这个女主人会深深的爱上我,虽然本人平生说了无数的谎话,可是这句最有效:“你应该这么做,我也应该死。
曾经有一取ID的机会放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。你的剑在我的咽喉上割下去吧!不用再犹豫了!如果上天能够给我一个再来一次的机会,我绝对会取个汉字君。如果非要给这ID加点修饰的话,我希望是……红色加粗……

回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

12
发表于 2008-6-21 07:19:22 | 只看该作者
感觉上选择适合的算法比写算法难得多
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

有事烧纸

梦石
0
星屑
154
在线时间
509 小时
注册时间
2005-10-22
帖子
6982

贵宾VX城市地图大赛冠军第1届RMTV比赛冠军第1届TG大赛冠军

13
发表于 2008-6-22 05:23:04 | 只看该作者
不知道兽兄接不接A*算法结果路径平滑优化算法?
神隐中,偶尔诈尸
回复 支持 反对

使用道具 举报

Lv1.梦旅人

月下可怜人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2005-11-23
帖子
4085

第1届短篇游戏比赛亚军

14
 楼主| 发表于 2008-6-22 06:21:26 | 只看该作者
以下引用雷欧纳德于2008-6-21 21:23:04的发言:

不知道兽兄接不接A*算法结果路径平滑优化算法?


路径之所以弯折在于拐点的存在,可以避免拐点的出现,例如设定转弯比直行消耗的G权值要高,对于RM大格子形式的游戏路径,可很大程度平滑路径,而且增加的消耗很小。

稍微复杂一些则可以先生成最短路径,之后前一拐点保持直行,依次寻找后面拐点与该拐点延长线的交点是否可通(逆序搜索),建议在前期搜索时建立拐点记录,相对第一个方法效果较好,但开销可能大些。



纵然千里外,我等雁归来。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

有事烧纸

梦石
0
星屑
154
在线时间
509 小时
注册时间
2005-10-22
帖子
6982

贵宾VX城市地图大赛冠军第1届RMTV比赛冠军第1届TG大赛冠军

15
发表于 2008-6-24 00:09:28 | 只看该作者
呵呵,并不是拐弯这种平滑

我说的平滑路径是指在整个寻路结束后,再次对结果路径进行的一种优化算法

在3D环境中,使用导航网络寻路,就会发现不管如何寻路,结果总会出现冗余路径

最合理的做法是对每一个点进行直线碰撞检测,如果能直线抵达目标点,则抛弃该点之前的所有点,反复检测知道到达目的地

但是实际上3D游戏不可能这么做,因为碰撞检测的消耗不亚于寻路,所以我们把碰撞检测改为利用几何学原理来修正路径



如图,红色路径是寻路所得的结果,绿色是我们用人脑计算出的最优路径
显然,我们无法优化出绿色的那条路径,但是我们的目标是由红色路径优化出蓝色的那条





另外再问一个问题:
基于A*算法寻路的一个特点,从一个大区域向一个小区域寻路时,会耗费大量时间检测无用路点。这种情况有个很简单的解决办法,就是逆转,从小区域向大区域寻路的话则不会发生这种情况。那么如何来检测、并且决定是应该正向寻路还是应该逆向寻路呢?


呵呵,我也不要求写算法,一起探讨探讨~
神隐中,偶尔诈尸
回复 支持 反对

使用道具 举报

Lv1.梦旅人

WG后援团
此人已死 有事烧纸

梦石
0
星屑
69
在线时间
12 小时
注册时间
2008-1-12
帖子
1829

贵宾

16
发表于 2008-6-24 02:12:26 | 只看该作者
这个难哦雷子
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

17
发表于 2008-6-24 02:16:10 | 只看该作者
npc 弱智拉直线的飘过{/gg}
期待你们的成果{/se}
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv2.观梦者


  • 更新完成啦

梦石
0
星屑
799
在线时间
6267 小时
注册时间
2006-6-7
帖子
8462
18
发表于 2008-6-24 02:18:28 | 只看该作者
以下引用link006007于2008-6-23 18:16:10的发言:

npc 弱智拉直线的飘过
期待你们的成果

这个有点像CS的Z.ROBOT自动生成寻找MAP路点一样
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

19
发表于 2008-6-24 02:41:37 | 只看该作者
对a*完全理解不能的人飘过
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
238 小时
注册时间
2006-10-2
帖子
417
20
发表于 2008-7-2 16:02:04 | 只看该作者
以下引用雷欧纳德于2008-6-23 16:09:28的发言:

基于A*算法寻路的一个特点,从一个大区域向一个小区域寻路时,会耗费大量时间检测无用路点。这种情况有个很简单的解决办法,就是逆转,从小区域向大区域寻路的话则不会发生这种情况。那么如何来检测、并且决定是应该正向寻路还是应该逆向寻路呢?


为什么不用空间换时间呢(虽然这种方法比较奔-_-b):
事先做地图的时候把坐标划为大小两个区域,同区域或小区域向大区域用正向,大区域往小区域的则用逆向,开销就只一次比较。用布尔值来做标记(反正只有大小两种情况),空间也不会增加多少吧。

另外个人觉得,根据地图复杂情况设置一个合适的H值,或许能减少无用点的搜索……
山寨产品龟速制作中……
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 16:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表