Project1

标题: 【插件】双地图渲染,无缝衔接地图转场【版本:1.0.1】 [打印本页]

作者: gg123wtf    时间: 2020-3-18 23:32
标题: 【插件】双地图渲染,无缝衔接地图转场【版本:1.0.1】
本帖最后由 gg123wtf 于 2020-7-14 13:56 编辑

类似口袋妖怪那种大地图移动,各城市和道路都是分开的小地图,但角色移动时感觉像在一张地图里

上图很明显使用了不同的地图以及图块集,地图1自动事件下雨,地图4自动事件下雪,另外还使用了常规的转场到地图2
[line]1[/line]
也许还会有人问我这个跟日本那个FTKR_ConnectingMapGenerator,用于把N张地图拼成一张的插件,有什么不同,回复请看10楼(设置超链接无效。。那你们就自己翻楼层吧)
[line]1[/line]
首先感谢一下Lanza Schneider大神,帮我解决了同时渲染两张图卡顿的问题

用法什么的写插件帮助里了,这里还是提一下:
一共两个脚本,C47_SeamlessMap.js 和 pixi-tilemap2.js,前者依赖后者,因此pixi-tilemap2.js要放在C47_SeamlessMap.js上面,配置参数应该不需要去动
地图备注的格式:<cmap:方位1 地图ID X Y 方位2 地图ID X Y 方位3...>
比如上面动图中,下方地图1写的是<cmap:u 2 7 0>,上方地图2写的是<cmap:d 1 6 12>
<cmap:u 2 7 0>意思是跟上方(u)地图ID为(2)的地图拼接,地图1用来对准的点是(7,0)
<cmap:d 1 6 12>意思是跟下方(d)地图ID为(1)的地图拼接,地图2用来对准的点是(6,12)
最终效果是地图1的(7,0)会跟地图2的(6,12)黏在一起,其它点就各自对应了
[line]1[/line]
1.0.0是本插件的初版,只做了最简单的一些测试,若你们使用后发现什么bug,可以在此帖回复

以后版本若有更新也在此帖

新版本:https://rpg.blue/thread-482343-1-1.html
作者: gg123wtf    时间: 2020-3-19 11:53
更新了一下


作者: Zeldashu    时间: 2020-3-19 12:01
很有潜力的插件。我还没有测试过,就快速提问一下:

1.渲染出来的地图是仅仅作为一个图形(类似远景图),还是玩家可以直接走到那里呢?(不需要设置场所移动事件)
2.如果是后者,假设被渲染的地图上有事件,并且它会移动,是否会存在走到其他地图的情况。
3.如果渲染地图时有不可避免的卡顿,是否可以设置一个“渐变”的效果,从而在视觉上优化“卡顿”呢?
作者: gg123wtf    时间: 2020-3-19 12:25
Zeldashu 发表于 2020-3-19 12:01
很有潜力的插件。我还没有测试过,就快速提问一下:

1.渲染出来的地图是仅仅作为一个图形(类似远景图), ...

1. 不是远景,而是真实地图,玩家可以直接走过去,不需要额外事件,当然地图需要写一行备注才有这个效果,不然还是得自己转场

2. 不会,甚至有可能事件都不会移动,仅仅显示初始化的状态,只有玩家走到那张地图之后,事件才会运作,当然,我还没做到这步,具体怎么实现到时候再看,说不定可以两张图事件一起跑,这种情况事件可以走到别的图,但依然属于它原本所在的地图,相当于没有其它地图,仅仅只是当前地图的事件走出了地图范围而已

3. 这个可以考虑,但目前测试的结果是只有第一次渲染第二张地图会卡,后面好像都不卡了
作者: gg123wtf    时间: 2020-3-19 12:48
Zeldashu 发表于 2020-3-19 12:01
很有潜力的插件。我还没有测试过,就快速提问一下:

1.渲染出来的地图是仅仅作为一个图形(类似远景图), ...

按照现在的测试结果,也就是“第二张地图第一次渲染会卡,后续无论换什么图都不卡了”,可能是因为第二张图需要一块新的储存空间来进行渲染操作,第一次开辟这块空间会造成卡顿
如果真是这样,那说不定可以解决一下,我只要提前创建这块空间并初始化即可,但如果不是这个原因,那估计无解了。。
作者: gg123wtf    时间: 2020-3-19 20:16
更新了一波,解决了两个崩溃,另外能穿地图走了,不过还不能判断第二张地图的地形,所以能穿过一些不能走的地方
[attach]366427[/attach]
作者: gg123wtf    时间: 2020-3-19 20:17
更新了一波,解决了两个崩溃,另外能穿地图走了,不过还不能判断第二张地图的地形,所以能穿过一些不能走的地方

作者: gg123wtf    时间: 2020-3-20 10:52
事件能显示了,并且走到相邻地图也能避开障碍了,我特地用了鼠标移动,让MV自动寻路避开障碍

作者: play337    时间: 2020-3-20 22:09
抱歉 大大... 想請問一下

這個跟日本人寫的 拼接多張地圖成一張大地圖有甚麼不同呢 ?

https://github.com/futokoro/RPGM ... gMapGenerator.ja.md


作者: gg123wtf    时间: 2020-3-21 08:50
本帖最后由 gg123wtf 于 2020-3-21 08:57 编辑
play337 发表于 2020-3-20 22:09
抱歉 大大... 想請問一下

這個跟日本人寫的 拼接多張地圖成一張大地圖有甚麼不同呢 ?


又有人问这个。。

区别可大了,要是他那个好用我也不会自己写了

他那个是把N张地图直接拼成一张,在游戏内作为一张地图展示,不改动MV底层渲染方式,这是他的核心思路,然而这个做法有很多问题

首先最致命的一点,因为是作为一张地图,你就只能用同一个图块集,也就是地图1你用了世界(World)图块集,那么其它所有跟地图1拼接的地图必须全部使用世界,否则进游戏后你会发现其它地图的图块被替换成了相同索引的世界图块

然后,大地图加载慢并且还有一个合并过程

其次,同一张地图不能出现重复的事件ID,这个是MV的管理事件方式,因此地图2跟地图1合并的时候地图2的事件ID会加一个偏移量,这个偏移量等于地图1事件的总数,然后地图3的事件ID加上前两张地图事件总和的数量,这也就意味着封锁了用事件ID来启动事件的做法,因为事件ID会根据拼接地图的数量和顺序发生改变

最后,因为是同一张地图,也就意味着所有事件都会启动,本来你要主角进入某个村子才会启动的事件,依照MV的做法,是切换到该村子地图后事件自启动,现在拼接大地图后,主角还在出生点,村子事件就启动了,因此所有此类事件都需要做额外处理,比如判断主角所在区域啥的
[line]1[/line]
我的插件则是让MV同时处理两张完全不同的地图,你可以使用不同的图块集,事件ID也不会改变,事件只有在进入对应地图区域后才会启动,因为是两张小地图,所以也不存在数据过多这一说,如果有,在不影响事件处理的情况下,可以分割成更小的地图

当然问题也是有的,比如以MV的性能,虽然可以显示更多的地图,但是我怕会卡顿,所以就显示两张,不能更多了,另外切换地图的时候可能会有点小卡顿,毕竟是进入不同地图,转场还是需要的,相当于完成一步无淡入淡出的转场
作者: gg123wtf    时间: 2020-3-21 16:44
初版1.0.0完成了,已在顶楼更新
作者: gg123wtf    时间: 2020-3-21 21:15
之前的附件有问题,下不了,重新补传了一下
作者: tseyik    时间: 2020-3-21 23:00
可以轉載嗎?
作者: gg123wtf    时间: 2020-3-21 23:02
tseyik 发表于 2020-3-21 23:00
可以轉載嗎?

可以

字数太少不让回。。
作者: gg123wtf    时间: 2020-3-25 20:11
更新至v1.0.1,修复了检测是否显示衔接地图的算法一些小问题,一是计算距离并不完全正确,二是即便屏幕已经超出左右地图范围,需要显示相邻地图了,但人物却离上下边更近的话,左右的相邻地图不会显示
作者: 茬小然    时间: 2020-3-26 11:28
看起来很不错的样子,大大加油!
作者: 94218    时间: 2020-5-19 12:39
大大这个是只能大地图接小地图吗?小地图实验的时候都正常,
用到两个大地图就是,位置不对齐能绘制下一张地图,但是走不过去,对齐就就不绘制了一片黑,都是在连接处走不动,要CATRL才能过去
作者: 94218    时间: 2020-5-19 13:41
不断往大扩大地图,发现到100*100会产生黑色区域,经常从一边倒另一边可以通行,反过来走不动需要穿透C:\Users\许燮\Desktop
作者: 94218    时间: 2020-5-19 13:44
不断往大扩大地图,发现到100*100会产生黑色区域,经常从一边倒另一边可以通行,反过来走不动需要穿透

BUG.PNG (157.21 KB, 下载次数: 48)

BUG.PNG

作者: 94218    时间: 2020-5-19 14:08
地图再大就这样了

ZD.PNG (181.3 KB, 下载次数: 56)

ZD.PNG

作者: chyj4747    时间: 2020-5-21 21:58
本帖最后由 chyj4747 于 2020-5-21 22:00 编辑
94218 发表于 2020-5-19 13:41
不断往大扩大地图,发现到100*100会产生黑色区域,经常从一边倒另一边可以通行,反过来走不动需要穿透 ...


大概是个bug,我看看,可能需要几天时间,最近加班有点忙

另外我刚换账号,这个才是我常用账号,你如果需要回复最好回复我这个帖或者直接at我

话说是两张100x100地图拼接吗?
作者: chyj4747    时间: 2020-5-23 11:11
94218 发表于 2020-5-19 13:44
不断往大扩大地图,发现到100*100会产生黑色区域,经常从一边倒另一边可以通行,反过来走不动需要穿透 ...

我自测100x100两张图上下衔接并没有出现你遇到的问题

所以,以你的截图来看,是不是Y坐标设置不对?有张地图的Y坐标写多了,于是两张地图间产生了间距
作者: 凡小满    时间: 2020-5-31 13:50
chyj4747 发表于 2020-5-23 11:11
我自测100x100两张图上下衔接并没有出现你遇到的问题

所以,以你的截图来看,是不是Y坐标设置不对?有张 ...

大佬,请问这个插件和哪个虚拟按键兼容比较好,我用的ALOE_MobileUI虚拟按键,走到下一个地图时虚拟按键会消失,比如按住前进虚拟键到了下一张图,它会按键消失然后一直走下去
作者: chyj4747    时间: 2020-6-1 08:39
本帖最后由 chyj4747 于 2020-6-1 08:42 编辑
凡小满 发表于 2020-5-31 13:50
大佬,请问这个插件和哪个虚拟按键兼容比较好,我用的ALOE_MobileUI虚拟按键,走到下一个地图时虚拟按键 ...


你用的那个虚拟按键插件,发来我看下,因为我的插件直接改了底层,所以不兼容很正常,一般这种按键都直接贴在地图层上的吧,所以第二张地图没贴,换地图也不是走正常的流程,所以就挂了
作者: 凡小满    时间: 2020-6-1 13:47
chyj4747 发表于 2020-6-1 08:39
你用的那个虚拟按键插件,发来我看下,因为我的插件直接改了底层,所以不兼容很正常,一般这种按键都直接 ...

就是这个虚拟按键,顺带上了按键素材

虚拟按键.zip

217.83 KB, 下载次数: 61


作者: chyj4747    时间: 2020-6-1 20:35
本帖最后由 chyj4747 于 2020-6-1 21:48 编辑
凡小满 发表于 2020-6-1 13:47
就是这个虚拟按键,顺带上了按键素材


简单改了下,应该可以用了,我只测了方向键,还有问题你再回帖
对了,记得要放到我的插件下面

ALOE_MobileUI.rar (6.81 KB, 下载次数: 80)
作者: 凡小满    时间: 2020-6-2 13:24
chyj4747 发表于 2020-6-1 20:35
简单改了下,应该可以用了,我只测了方向键,还有问题你再回帖
对了,记得要放到我的插件下面

感谢,试了一下,按键都正常显示
作者: 蘑菇汶    时间: 2021-1-5 15:24
想询问是否有mz版本呢?




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1