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

Project1

 找回密码
 注册会员
搜索
查看: 8435|回复: 12
打印 上一主题 下一主题

[RMVA发布] RGSS3下A星寻路的解说与实现

[复制链接]

Lv4.逐梦者 (版主)

百合控

梦石
0
星屑
6438
在线时间
1274 小时
注册时间
2013-8-21
帖子
3657

开拓者

跳转到指定楼层
1
发表于 2014-8-14 18:30:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 余烬之中 于 2014-9-14 16:19 编辑

写在前面


A星寻路算法


在RGSS3的实现


更好地应用到游戏


成品


结语

评分

参与人数 6星屑 +575 +1 收起 理由
夏末渐离 + 15 塞糖
fux2 + 1 精品文章
千葉玖濑 + 120 塞糖
taroxd + 120 塞糖
myownroc + 200 塞糖
喵呜喵5 + 120 糖[s]

查看全部评分

萌新瑟瑟发抖
看到我请叫我去干活

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21005
在线时间
9337 小时
注册时间
2012-6-19
帖子
7107

开拓者短篇九导演组冠军

来自 13楼
发表于 2015-9-4 20:31:28 | 只看该作者
本帖最后由 喵呜喵5 于 2015-9-4 22:46 编辑

时隔许久过来说一个BUG

RGSS3中图块有一个叫通行方向的混帐玩意儿,这个通行方向呢……无比操蛋的居然能够把某个行走图设置成从某个方向走过去时不可通行

于是,类似下面这样的情况下,目前代码中从终点逆向回到起点的寻路方式就吃瘪了




=================

仔细想想好像也不对,因为自己写的A*脚本没有遇到这个问题能够正常寻路,但是你的脚本却不行……让我想想到底是哪里不对…………

=================

虽然说不清楚,但是感觉差不多明白你的脚本寻路算法为什么用问题了,我这边是直接用要寻路的事件本身的检查能否通行方法进行判断的,这个方法里面会自动检查某个特定图块的某方向是否都能够双向正常通行来保证不会钻进封闭的图块中,而你定义的检查通行的方法只检查了其中一个方向,因此出错了,附带一张测试图片:

地图上那个梯子图块是个下方向无法通行的图块
你的A*

我的A*





评分

参与人数 1星屑 +166 收起 理由
余烬之中 + 166 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2014-8-14 18:33:34 | 只看该作者
本帖最后由 taroxd 于 2014-8-14 18:48 编辑

你知道我怎么更新github脚本的吧……不知道的话就看一下“输出脚本.rb"

于是非原创的脚本就被加进来了(事实上这也是github作为脚本仓库的一个目的:备份)

这种非原创的东西我不会塞到群组里就是了= =

原帖在此:https://rpg.blue/thread-228259-1-1.html

判断通行度别用 $game_map.passable? 用 CharacterBase#passable?

点评

我希望这东西只在行走时有用 因为一般的事件都不能水上漂 所以一开始就把主角在水上(不可通行)的情况刷下来  发表于 2014-8-14 20:35
嗯,传block也可以。禾西用的是 $game_player.passable? ,但是这个在乘上飞艇的时候显然有问题,我改成 character 了  发表于 2014-8-14 20:27
主要是 我希望AStar作为一个通用的路径生成器 更抽象一点  发表于 2014-8-14 20:25
等等 可以传递block 居然忘了这个 现在好办了  发表于 2014-8-14 20:24
我还是先看看禾西的实现吧  发表于 2014-8-14 20:24
回复 支持 反对

使用道具 举报

Lv2.观梦者

bluer
公主殿下

梦石
0
星屑
283
在线时间
533 小时
注册时间
2013-10-19
帖子
2067
3
发表于 2014-8-14 18:55:43 | 只看该作者
触哭了。。太长不看【误
本殿下是事件党但是还是大致的看了一下。
窝也研究过这些东西【捂脸
一对比窝就弱爆了啊qwq
刚把爹!

评分

参与人数 1星屑 +200 收起 理由
余烬之中 + 200 加油

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21005
在线时间
9337 小时
注册时间
2012-6-19
帖子
7107

开拓者短篇九导演组冠军

4
发表于 2014-8-14 19:47:33 | 只看该作者
最终的脚本呢

太长不看

要糖的姿势太明显

删除线好评啦

点评

哪有那么明显ORZ我一直以为很隐蔽的  发表于 2014-8-14 20:07
最终的脚本一直都藏在3rd和4th分栏里啊(´゚Д゚`)怎么能不看!(´゚Д゚`)……好吧我把它们独立拿出来了……(o゚ω゚o)  发表于 2014-8-14 20:07
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
帖子
1698

开拓者

5
发表于 2014-8-14 20:08:03 | 只看该作者
为什么要叫上我我只是什么都不懂的渣渣

评分

参与人数 1星屑 +48 收起 理由
余烬之中 + 48 这样说我就只能给你我的全部(啥?.

查看全部评分


  -fk: -azogi:
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2744
在线时间
2630 小时
注册时间
2013-1-16
帖子
5657

贵宾

6
发表于 2014-8-14 20:31:10 | 只看该作者
唯一看得懂的A*……
A*应该是加了一定筛选的广度优先(个人感觉),然后效率因此提高很多。
不过广度优先搜索的一定是最短路径,但是效率相对较低。
另外,估值函数那么处理一直感觉欠妥当(但又找不到更方便的了)。
最后问一下:例如战棋中移动到某个节点就要消耗一定体力(体力有上限),这样估值函数是不是会变得复杂许多?

点评

因为每个节点都会以第一个发现它的节点为父节点  发表于 2014-8-15 11:13
事实上“谁是父节点”本质上就是路径的选取 如果对于一个特定的点 G永远是定值(因为H也是定值) 那么就无法启发“哪一条路径更好”  发表于 2014-8-15 11:13
如果以g为当前点到终止点的直线距离……那么F=当前点到两个端点距离之和 那么G函数的启发性也就没有了……  发表于 2014-8-15 11:11
话说如果g = 两点之间线段距离,那•如果子节点是已被搜索过的节点,且不是根节点的判断貌似是不需要了?  发表于 2014-8-14 22:08
呃……好像也不用……  发表于 2014-8-14 21:35
(Created by @喵kano)


施工现场:hotege.github.io
回复 支持 反对

使用道具 举报

菜鸟飞呀飞 该用户已被删除
7
发表于 2014-8-14 20:44:10 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
117
在线时间
552 小时
注册时间
2012-8-18
帖子
1429
8
发表于 2014-8-14 21:16:27 | 只看该作者
啊 看起来好厉害【
刚和兰触学了SPFA,我感觉我现在什么都不会写了【噗
不过以前看过一篇关于A*的文章,估值函数可以仅仅选择曼哈顿距离,但也可以通过一些相对复杂的处理来实现一些复杂的东西,比如避免多个对象都走一条路(次优解),以及更加复杂的消耗(我觉得对不同类别的消耗统一比较本身就是一种估值了),反正这些东西我都不会【大雾
祝你们翻译文档做的更好咯☆

评分

参与人数 1星屑 +100 收起 理由
余烬之中 + 100 我很赞同

查看全部评分

我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2744
在线时间
2630 小时
注册时间
2013-1-16
帖子
5657

贵宾

9
发表于 2014-8-14 23:07:16 | 只看该作者
话说我VB里A*比广度优先还慢?还是我没做好……

点评

取最小的时候可能拖慢速度,一般是用堆来取最小,排序或者遍历都慢了  发表于 2014-12-2 11:07
那我就不知道了……  发表于 2014-8-15 11:43
估值函数没变……  发表于 2014-8-15 11:14
不会吧……也许是上面的估值函数的问题?  发表于 2014-8-15 11:14
(Created by @喵kano)


施工现场:hotege.github.io
回复 支持 反对

使用道具 举报

Lv2.观梦者 (暗夜天使)

梦石
0
星屑
266
在线时间
2355 小时
注册时间
2009-3-13
帖子
2309

贵宾

10
发表于 2014-8-15 20:58:08 | 只看该作者
不错,研究得挺仔细的样子。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-7 20:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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