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

Project1

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

[原创发布] 【插件】双地图渲染,无缝衔接地图转场【版本:1.0.1】

[复制链接]

Lv2.观梦者

梦石
0
星屑
646
在线时间
120 小时
注册时间
2019-12-7
帖子
67
跳转到指定楼层
1
发表于 2020-3-18 23:32:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 gg123wtf 于 2020-7-14 13:56 编辑

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

上图很明显使用了不同的地图以及图块集,地图1自动事件下雨,地图4自动事件下雪,另外还使用了常规的转场到地图2


也许还会有人问我这个跟日本那个FTKR_ConnectingMapGenerator,用于把N张地图拼成一张的插件,有什么不同,回复请看10楼(设置超链接无效。。那你们就自己翻楼层吧)


首先感谢一下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)黏在一起,其它点就各自对应了


1.0.0是本插件的初版,只做了最简单的一些测试,若你们使用后发现什么bug,可以在此帖回复

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

新版本:https://rpg.blue/thread-482343-1-1.html

评分

参与人数 2+2 收起 理由
if216 + 1 塞糖
白嫩白嫩的 + 1 精品文章

查看全部评分

新账号chyj4747,这个账号是我刚来论坛时随便填的,当时没想着要发帖

Lv2.观梦者

梦石
0
星屑
646
在线时间
120 小时
注册时间
2019-12-7
帖子
67
2
 楼主| 发表于 2020-3-19 11:53:16 | 只看该作者
更新了一下

新账号chyj4747,这个账号是我刚来论坛时随便填的,当时没想着要发帖
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22010
在线时间
1057 小时
注册时间
2019-3-5
帖子
1424
3
发表于 2020-3-19 12:01:26 | 只看该作者
很有潜力的插件。我还没有测试过,就快速提问一下:

1.渲染出来的地图是仅仅作为一个图形(类似远景图),还是玩家可以直接走到那里呢?(不需要设置场所移动事件)
2.如果是后者,假设被渲染的地图上有事件,并且它会移动,是否会存在走到其他地图的情况。
3.如果渲染地图时有不可避免的卡顿,是否可以设置一个“渐变”的效果,从而在视觉上优化“卡顿”呢?
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
646
在线时间
120 小时
注册时间
2019-12-7
帖子
67
4
 楼主| 发表于 2020-3-19 12:25:40 | 只看该作者
Zeldashu 发表于 2020-3-19 12:01
很有潜力的插件。我还没有测试过,就快速提问一下:

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

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

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

3. 这个可以考虑,但目前测试的结果是只有第一次渲染第二张地图会卡,后面好像都不卡了

点评

第三个问题貌似和MV的预渲染机制有关(好像看到你在群里提到了),我之前看到过有用于预加载的插件,或许可以直接解决这个问题  发表于 2020-3-19 12:38
新账号chyj4747,这个账号是我刚来论坛时随便填的,当时没想着要发帖
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
646
在线时间
120 小时
注册时间
2019-12-7
帖子
67
5
 楼主| 发表于 2020-3-19 12:48:47 | 只看该作者
Zeldashu 发表于 2020-3-19 12:01
很有潜力的插件。我还没有测试过,就快速提问一下:

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

按照现在的测试结果,也就是“第二张地图第一次渲染会卡,后续无论换什么图都不卡了”,可能是因为第二张图需要一块新的储存空间来进行渲染操作,第一次开辟这块空间会造成卡顿
如果真是这样,那说不定可以解决一下,我只要提前创建这块空间并初始化即可,但如果不是这个原因,那估计无解了。。

评分

参与人数 1+1 收起 理由
Zeldashu + 1 我很赞同

查看全部评分

新账号chyj4747,这个账号是我刚来论坛时随便填的,当时没想着要发帖
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
646
在线时间
120 小时
注册时间
2019-12-7
帖子
67
6
 楼主| 发表于 2020-3-19 20:16:53 | 只看该作者
更新了一波,解决了两个崩溃,另外能穿地图走了,不过还不能判断第二张地图的地形,所以能穿过一些不能走的地方
新账号chyj4747,这个账号是我刚来论坛时随便填的,当时没想着要发帖
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
646
在线时间
120 小时
注册时间
2019-12-7
帖子
67
7
 楼主| 发表于 2020-3-19 20:17:30 | 只看该作者
更新了一波,解决了两个崩溃,另外能穿地图走了,不过还不能判断第二张地图的地形,所以能穿过一些不能走的地方
新账号chyj4747,这个账号是我刚来论坛时随便填的,当时没想着要发帖
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
646
在线时间
120 小时
注册时间
2019-12-7
帖子
67
8
 楼主| 发表于 2020-3-20 10:52:42 | 只看该作者
事件能显示了,并且走到相邻地图也能避开障碍了,我特地用了鼠标移动,让MV自动寻路避开障碍
新账号chyj4747,这个账号是我刚来论坛时随便填的,当时没想着要发帖
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7667
在线时间
1437 小时
注册时间
2018-12-16
帖子
2026
9
发表于 2020-3-20 22:09:47 | 只看该作者
抱歉 大大... 想請問一下

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

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

回复 支持 1 反对 0

使用道具 举报

Lv2.观梦者

梦石
0
星屑
646
在线时间
120 小时
注册时间
2019-12-7
帖子
67
10
 楼主| 发表于 2020-3-21 08:50:33 | 只看该作者
本帖最后由 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的做法,是切换到该村子地图后事件自启动,现在拼接大地图后,主角还在出生点,村子事件就启动了,因此所有此类事件都需要做额外处理,比如判断主角所在区域啥的


我的插件则是让MV同时处理两张完全不同的地图,你可以使用不同的图块集,事件ID也不会改变,事件只有在进入对应地图区域后才会启动,因为是两张小地图,所以也不存在数据过多这一说,如果有,在不影响事件处理的情况下,可以分割成更小的地图

当然问题也是有的,比如以MV的性能,虽然可以显示更多的地图,但是我怕会卡顿,所以就显示两张,不能更多了,另外切换地图的时候可能会有点小卡顿,毕竟是进入不同地图,转场还是需要的,相当于完成一步无淡入淡出的转场

点评

^__________^  发表于 2020-3-22 01:14
只要337说6,那就是真的666  发表于 2020-3-21 21:35
這樣子聽起來...真的差好多...大佬的插件棒很多! 666666  发表于 2020-3-21 11:38
新账号chyj4747,这个账号是我刚来论坛时随便填的,当时没想着要发帖
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-18 19:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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