一个困扰本人多年的掉帧问题。
gamemaker吧
全部回复
仅看楼主
level 11
MikuScarlet 楼主
以前在使用gms2的时候,是因为它导出来的游戏在我的电脑上面运行会发生掉帧的现象。
就比如说,明明设置的是60帧,但画面表现却跟30帧的流畅程度一样。(别问我为什么知道,反正就是这样)
然而我在gm8上也设置了60帧,画面表现却比gms2流畅很多。
我是用一个实例进行平移验证的。
然后我又借助了录制软件,然而录制软件上显示两个引擎导出来的游戏都是60帧。
然而很奇怪的是gms2的画面就是不比gm8流畅。但到最后平移相同时间的结果几乎不会有差。
然后问题来了,现在我的gm8的游戏也会掉帧了,然而跟gms2的掉帧有所不同,它是直接步数下降。(但这次我没有用录制软件进行测量,因为不是一直持续是,是间歇性的。有时候有,有时候没有,游戏内容固定且轻量,大概就是像素鸟的那种级别)
请不要考虑我电脑配置的问题…我因为这些问题曾经转去过godot和unity3d,这两款引擎完全没有发生过一次像gm8或gms2这样奇怪的问题。(为什么没有gms1,因为gms1疯狂报错,连正常用都无法正常用)说实话我一直很喜欢gm系列,但并不希望是因为一些莫名其妙的原因而放弃。
2019年08月25日 02点08分 1
level 15
gm8掉帧其实比较“正常”,我以前也遇到过很轻量的游戏在某些配置肯定达标的机器上间歇性/稳定掉帧,原因未知。
另外gm系列(不管gm8还是gms1 gms2)从未有自带补帧,如果掉帧,同等时间内步数必然减少。如果视觉上感觉gms2游戏掉帧,那就用gms2自带的调试器看fps曲线图,如果显示一切正常那就是没有掉帧,心理作用。或者也可以试试录像之后逐帧慢放。
2019年08月26日 01点08分 2
心理作用的话倒是不至于…很明显的…那个画面流畅差距…有时候直接卡着移动超慢(常量速度)还是平滑移动变移动一个个大间隔走,至于这个问题已经是数个月前的事情了,现在虽然也有,但具体上的细节我已经记不太清了…听别人说好像还跟杀毒软件有关,还有系统。到时候再看一下吧……
2019年08月29日 01点08分
@MikuScarlet 其他非gm游戏会不会这种现象?因为对于gm系列引擎来说,如果掉帧,表现一定是移动变慢,除非代码有意为之,否则理论上不可能出现大间隔跳着走。如果出现,考虑可能是硬件问题或者系统整体卡顿。
2019年08月29日 06点08分
@sunyubokkkkk 其他非gm游戏不会,雨中冒险2和求生之路2,Hero siege都不会,我最近两天又开始用gms2了,并用内置的联机函数写了个聊天室,带人物,说话,换皮肤,移动同步的。另外我了解到了gms2和gm8“掉帧”的不同了,gm8是损失步数,就是整体会卡顿,步数下降,而gms2则是画面丢帧
2019年08月31日 02点08分
这个是直观上的感受,感觉步数没降低,就是帧数降低了,有时候掉一会儿帧就好了,有时候又全程都会掉帧。
2019年08月31日 02点08分
level 6
其实造成这种现象有很多种情况。
第一种是。。你只是设置了房间速度是60帧,但是比如导入的精灵,gm8和gms2默认的播放速度其实不一样的,如果使用image_speed控制的话,可能会出先类似的事情。
第二种。。其实gm8比gms2加载快,为什么我也不知道,红鸡视频里总是唱gm双击秒开切克切克闹。gms2加载要慢不少,尤其是做的工程很大的情况。。我现在做的就是,导入了好几G素材,写了很多东西,但是导出来的时候,刚打开会产生不流畅,过一段时间会好。这个。。。要用到读条的功能吧。
我也不知道说的是不是一个东西,原则上gms2的性能比gm8强大太多了。我以前试过空房间里创建object,每次创建1w个。。gm8创建3w个的时候帧数就已经下降了,gms2创建了9w个的时候,帧数才会下降,但是下降一会儿,又慢慢恢复到60了
2019年08月29日 00点08分 3
其实我们说的不是一个东西…跟精灵完全没关系,我用draw_circle演示的…可能是我的系统问题吧,别人都蛮正常的,gms2效率能保障,可惜我的电脑sb。
2019年08月29日 01点08分
@MikuScarlet 有洁癖的重装个系统吧,不麻烦
2019年08月29日 02点08分
@iloveping5210 试试看吧,到时候真的影响太大了,就重装一下。
2019年08月31日 02点08分
level 11
MikuScarlet 楼主
room_speed 是60,
有时候fps会掉到30或者27。
2019年09月07日 12点09分 4
level 13
应该是代码出问题了,以前我也出现过这种情况,然后从步事件里找到了原因,你可以这样,你从游戏场景里一个一个试obj,去掉这个obj还卡吗,如果当你试到去掉某个obj后就不卡了,然后你再检查这个obj的代码,剪切一组代码试试,看看还卡嘛,如果还卡就把刚才那一组代码粘贴到原处,再剪切下一组,一点一点试,早晚能把原因试出来
2019年09月08日 08点09分 5
如果真的是这样还好,说出来你可能不信,一个房间,一个只有方向键操纵移动(直接操作xy)的对象,帧数都会掉,而且是有概率性的。
2019年09月08日 11点09分
level 11
MikuScarlet 楼主
真的,为了说服那些认为是我的代码或者配置问题的人(qq群),我都专门找人来实验了嗷。
聊天记录是测试的人的配置和帧数,反则是我的配置和帧数。
请不要说那些很蠢的原因就比如说我软件开多了,就算我软件全关,杀毒软件也关,桌面壁纸也关,把explorer关了也照样会掉帧(steam上的游戏从来没掉过帧,大部分情况下流畅运行雨中冒险2和求生之路2还有星际战甲,monster girl island等)。
如果需要游戏源代码我也可以提供。
所以请考虑一下代码和配置之外的问题,能不能考虑一下可能是某些补丁没安装,又或者是没装什么框架,又或者是系统上的问题(我的是众多个Win10版本之中的其中一个Win10,所以你的win10正常,但我的可能不是。)
不要感觉我态度好像很差,因为就算我详细描述了,他们都认为是代码和配置的问题…心累。
2019年09月11日 11点09分 6
另外有一个很迷的现象就是,导出的exe会掉步,而直接在编辑器上进行调试运行的exe不会。
2019年09月11日 11点09分
level 15
并没有觉得你态度不好[滑稽]只是在说法上有些问题,掉帧只是说画面看起来是有帧被丢掉了,但实际上只是运行速度变慢,没有哪一帧真的被“丢掉”了没有执行,所以“丢步”的说法不太准确。
另外关于问题本身,我之前也说过gm8导出游戏的确我也出现过你说的情况,原因未知。如果是gms的游戏,有强大的debug功能可以跟踪代码性能,如果不是代码问题,在工程设置里有个sleep margin选项可以某种程度上解决这个问题。而gm8,,,好像并没有类似设置。。?
2019年09月12日 00点09分 7
说实话我不太好形容,一开始我用的词是掉帧,后面改为丢步。但并不是真的丢掉了某步没有执行,而是步数下降,所以说法确实不准确,但我确实有点懵,不知道咋描述。(gs百度吞了我回复,这是我第二遍写回复)
2019年09月12日 01点09分
之前gm8不会,或者是说卡顿和持续的情况不会很明显,但现在,比gms2更严重了,以前就是因为gms2发生上面所说的情况,我才不去用的。
2019年09月12日 01点09分
吧务
level 13
虽说“其他软件没问题,只有自己GM做的东西发生卡顿”时应该优先检查自己做的是不是有问题,不过既然LZ解释了那么多,还是先排查其他部分吧(笑)
按咱已知的情况,有几个情况的描述可能对LZ有所帮助:
1、上边已经提到过的,GM引擎不经特殊设置的话不会“丢步”,只可能某一步(或几步)因为卡顿而拉长时间。最终结果是room_speed(step per second)的实际值被拉低,不过这种情况会附带“减速”的结果,同样的东西,同样的“速度”从同样的起点出发到同样的终点,用时会延长。
2、第二种情况是“丢帧”,可能某一步完成了步循环,但最终结果并未显示到屏幕上。从引擎本身来说这种情况在GMS2里(我知道的范围内)不存在,GM8也需要特殊设置(更改全局的绘制方式)才能实现。但考虑到引擎外环境就有可能,比如设置了60fps的游戏,而笔记本的屏幕是40Hz刷新率。这种情况下,宽度10,速度10本应该连续覆盖到全部场地的方块,就会从一些格子上“瞬移”过去。其实在对应格子上出现过只是没能显示出来。
之前咱也遇到过GM8游戏开始一段时间后的迷之卡顿(情况1),持续十几秒后恢复正常。当时并没有特别注意什么,GMS2没有发现过类似情况。
不过,如果说编辑状态运行和生成exe运行效果有差别的话,建议看看这两个地方:
1、考虑一下硬盘的原因,毕竟直接运行是在C盘生成了EXE,而导出的话要看选择在哪。
2、考虑一下GM8的版本问题,是原生版、超强汉化版还是加了很多插件的版本
2019年09月12日 01点09分 8
1.上面说的丢步指的是每秒步数直接下降,我觉得叫丢帧不合适,所以改成了这个叫法。 2.笔记本的刷新率不是40Hz,因为在编辑器里直接打开是58步左右,而导出的时候运行是30步 3.直接生成是在c盘生成exe的话,那我导出的地点是桌面。都是c盘,c盘是固态。 4.硬件问题的测试在6楼有详细情况 5.代码可提供
2019年09月12日 01点09分
另外补充说明,就算只有一个房间,房间里只有一个实例,实例只有检测按键,然后直接x,y增减,不做任何判断的。也会步数下降。仅凭这点我就认为可以排除是代码的问题了。如果对代码存有疑问,我也可以提供。(注:在别人的配置比我低的机器上运行能满步,我则会不满。)
2019年09月12日 01点09分
level 11
MikuScarlet 楼主
另外补充说明,
1.就算只有一个房间,房间里只有一个实例,实例只有检测按键,然后直接x,y增减,不做任何判断的。也会步数下降。仅凭这点我就认为可以排除是代码的问题了。如果对代码存有疑问,我也可以提供。(注:在别人的配置比我低的机器上运行能满步,我则会不满。)
2.并不是所有的我做的gm8游戏都会发生卡顿,尽管代码量比(1)中多了数百倍。
3.所有我做的gm8游戏,我没有进行任何设置(房间步数和房间标题之类的除外)改动。
4.gms2偶尔也会出现这样的情况。
2019年09月12日 02点09分 9
level 11
MikuScarlet 楼主
新补充,在gm8中直接运行游戏占用的cpu和内存均比导出在桌面的exe占用的更低,大概降低了5%左右,内存占用为桌面直接运行的二分之一左右。桌面的exe是刚导出然后执行的,并不是老版本。
执行的时候,gm8编辑器全屏,无论是桌面的还是直接运行的,都是用gm8编辑器全屏当背景。
即使把杀软和wallpaper鲨了也无济于事,甚至占用都会蹭蹭往上涨。
而且会一直上升,而在gm8直接运行的没有这种情况。
额外补充:在玩部分游戏的时候,刚开始会卡顿,后面会流畅(不包括上面提到的所有的我制作的gm8游戏),如3300英雄。
2019年09月12日 02点09分 10
level 1
说真的 我也总是遇见这种卡顿的问题
但是目前来讲还没这么严重 因为目前我只在一个地图里写了一个精灵的移动
但我发现一个问题 似乎我开着bandicam的时候它就不会卡
而不开的时候就有时候会卡
不过我放弃使用任何里面的控件,基本一页代码往下写。
用录制软件看的时候 它是基于dx8的 可能这是它卡顿的一个原因 你可以尝试下个dx8
如果不嫌弃麻烦 还是推荐用edgamemaker或者unity这样的引擎来开发制作
目前我觉得最好最方便开发2d的引擎还是edgamemaker
不过最大的缺点就是画地图不是内置的,如果你只需要一个背景的地图,edgamemaker绝对能达到最好的游戏速度。
2019年12月22日 22点12分 11
1