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

Project1

 找回密码
 注册会员
搜索

同时渲染两张地图卡顿如何解决或优化?

查看数: 3594 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-3-14 16:27

正文摘要:

本帖最后由 gg123wtf 于 2020-3-17 23:25 编辑 首先声明一下,做以下这个插件是为了实现口袋妖怪那样的地图移动,我搜了很多插件和帖子,国内的国外的,没有找到任何一个方案能完美实现,所以只好自己写了。。 ...

回复

guidayu 发表于 2020-3-17 23:47:26
好厉害!大佬加油!
gg123wtf 发表于 2020-3-17 16:17:12
我知道为啥会卡了。。两张地图两套tilemap,mv在渲染时需要切换图块集(tileset),先用图块集1渲染地图1,切换成图块集2,再渲染地图2,假设地图就是按12的顺序渲染,那么上一帧渲染后,当前图块集是2,下一帧要渲染需要先切回图块集1,渲染地图1,然后再切图块集2。。

所以嘛,图块集这个东西就很大了,不停切换一直在消耗算力,只有一张地图的话只会在进入地图的时候加载一次图块集,所以无论地图多大,渲染耗时基本不变

原因找到了,要实现双地图就得改底层mv的渲染方式了,或者说要改加载图块集的方式……
我得想想有没有别的方法。。
gg123wtf 发表于 2020-3-15 23:24:42
我已经确定是同时渲染两套地图时tilemap算法效率低下造成的卡顿,然而具体原因还不知道,跟地图尺寸没关系,一张17x13x2大小的地图算法只执行一遍,不会卡,两张17x13的地图,虽然跟前面一张图大小相等,但是算法执行两遍,就会卡。。

一张地图的话算法耗时大约70+ms,所以两张图就直接翻倍变成140+ms,甚至更多,因此就能感觉到卡顿了,另外FPS直接掉到6并且升不回去了

尝试过创建新的tilemap、新的sprite、新的spriteset_map,都不行,同一帧计算两张地图就是会卡,于是试了下隔帧渲染,也就是一帧渲染主地图,下一帧只渲染衔接地图,再下一帧只渲染主地图,能解决卡顿问题,但是屏幕会闪

所以最后想来想去还是只能从算法本身入手,要么看懂完整的算法流程,然后再想办法,要么把两个tilemap合并成一个,然后在算法里动手脚,让算法能够识别成两张地图,先尝试后者吧,前者太烧脑了……
gg123wtf 发表于 2020-3-14 21:47:02
wabcmcc 发表于 2020-3-14 21:18
樓主如此熱誠,固執,實在忍不住多言,
單張大地圖劃分兩(多)張不同風格地圖,玩家看不出來.
如要連環地圖.請君 ...

你提的这两点都不行啊,之前几天搜索我都搜到了,但是没法应用,不然我也不会自己写插件了。。

单张大地图划分的那种,首先地图得非常非常大,我要做口袋妖怪那种的,MV的256x256根本不够,再者那么大的地图加载肯定巨慢,另外单张地图的话地图块目测不够用,毕竟任何一个ABCDE类型的图块集MV都限制了素材宽高,能放的不同图块类型有限

合并的那种,最基本的,就要求两张地图使用同一套图块集,肯定不行

点评

666666  发表于 2020-3-15 07:31
wabcmcc 发表于 2020-3-14 21:18:50
樓主如此熱誠,固執,實在忍不住多言,
單張大地圖劃分兩(多)張不同風格地圖,玩家看不出來.
如要連環地圖.請君移步將多個地圖連接到一個大地圖的插件
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2025-2-26 00:15

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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