gamemaker吧 关注:13,587贴子:94,214
  • 25回复贴,共1

一个困扰本人多年的掉帧问题。

只看楼主收藏回复

以前在使用gms2的时候,是因为它导出来的游戏在我的电脑上面运行会发生掉帧的现象。
就比如说,明明设置的是60帧,但画面表现却跟30帧的流畅程度一样。(别问我为什么知道,反正就是这样)
然而我在gm8上也设置了60帧,画面表现却比gms2流畅很多。
我是用一个实例进行平移验证的。
然后我又借助了录制软件,然而录制软件上显示两个引擎导出来的游戏都是60帧。
然而很奇怪的是gms2的画面就是不比gm8流畅。但到最后平移相同时间的结果几乎不会有差。
然后问题来了,现在我的gm8的游戏也会掉帧了,然而跟gms2的掉帧有所不同,它是直接步数下降。(但这次我没有用录制软件进行测量,因为不是一直持续是,是间歇性的。有时候有,有时候没有,游戏内容固定且轻量,大概就是像素鸟的那种级别)
请不要考虑我电脑配置的问题…我因为这些问题曾经转去过godot和unity3d,这两款引擎完全没有发生过一次像gm8或gms2这样奇怪的问题。(为什么没有gms1,因为gms1疯狂报错,连正常用都无法正常用)说实话我一直很喜欢gm系列,但并不希望是因为一些莫名其妙的原因而放弃。


IP属地:广东1楼2019-08-25 10:33回复
    gm8掉帧其实比较“正常”,我以前也遇到过很轻量的游戏在某些配置肯定达标的机器上间歇性/稳定掉帧,原因未知。
    另外gm系列(不管gm8还是gms1 gms2)从未有自带补帧,如果掉帧,同等时间内步数必然减少。如果视觉上感觉gms2游戏掉帧,那就用gms2自带的调试器看fps曲线图,如果显示一切正常那就是没有掉帧,心理作用。或者也可以试试录像之后逐帧慢放。


    IP属地:上海来自Android客户端2楼2019-08-26 09:19
    收起回复
      其实造成这种现象有很多种情况。
      第一种是。。你只是设置了房间速度是60帧,但是比如导入的精灵,gm8和gms2默认的播放速度其实不一样的,如果使用image_speed控制的话,可能会出先类似的事情。
      第二种。。其实gm8比gms2加载快,为什么我也不知道,红鸡视频里总是唱gm双击秒开切克切克闹。gms2加载要慢不少,尤其是做的工程很大的情况。。我现在做的就是,导入了好几G素材,写了很多东西,但是导出来的时候,刚打开会产生不流畅,过一段时间会好。这个。。。要用到读条的功能吧。
      我也不知道说的是不是一个东西,原则上gms2的性能比gm8强大太多了。我以前试过空房间里创建object,每次创建1w个。。gm8创建3w个的时候帧数就已经下降了,gms2创建了9w个的时候,帧数才会下降,但是下降一会儿,又慢慢恢复到60了


      IP属地:河南3楼2019-08-29 08:33
      收起回复

        room_speed 是60,
        有时候fps会掉到30或者27。


        IP属地:广东4楼2019-09-07 20:32
        回复
          应该是代码出问题了,以前我也出现过这种情况,然后从步事件里找到了原因,你可以这样,你从游戏场景里一个一个试obj,去掉这个obj还卡吗,如果当你试到去掉某个obj后就不卡了,然后你再检查这个obj的代码,剪切一组代码试试,看看还卡嘛,如果还卡就把刚才那一组代码粘贴到原处,再剪切下一组,一点一点试,早晚能把原因试出来


          IP属地:山东来自Android客户端5楼2019-09-08 16:50
          收起回复





            真的,为了说服那些认为是我的代码或者配置问题的人(qq群),我都专门找人来实验了嗷。
            聊天记录是测试的人的配置和帧数,反则是我的配置和帧数。
            请不要说那些很蠢的原因就比如说我软件开多了,就算我软件全关,杀毒软件也关,桌面壁纸也关,把explorer关了也照样会掉帧(steam上的游戏从来没掉过帧,大部分情况下流畅运行雨中冒险2和求生之路2还有星际战甲,monster girl island等)。
            如果需要游戏源代码我也可以提供。
            所以请考虑一下代码和配置之外的问题,能不能考虑一下可能是某些补丁没安装,又或者是没装什么框架,又或者是系统上的问题(我的是众多个Win10版本之中的其中一个Win10,所以你的win10正常,但我的可能不是。)
            不要感觉我态度好像很差,因为就算我详细描述了,他们都认为是代码和配置的问题…心累。


            IP属地:广东6楼2019-09-11 19:50
            收起回复
              并没有觉得你态度不好只是在说法上有些问题,掉帧只是说画面看起来是有帧被丢掉了,但实际上只是运行速度变慢,没有哪一帧真的被“丢掉”了没有执行,所以“丢步”的说法不太准确。
              另外关于问题本身,我之前也说过gm8导出游戏的确我也出现过你说的情况,原因未知。如果是gms的游戏,有强大的debug功能可以跟踪代码性能,如果不是代码问题,在工程设置里有个sleep margin选项可以某种程度上解决这个问题。而gm8,,,好像并没有类似设置。。?


              IP属地:上海来自Android客户端7楼2019-09-12 08:16
              收起回复
                虽说“其他软件没问题,只有自己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的版本问题,是原生版、超强汉化版还是加了很多插件的版本


                IP属地:北京8楼2019-09-12 09:00
                收起回复
                  另外补充说明,
                  1.就算只有一个房间,房间里只有一个实例,实例只有检测按键,然后直接x,y增减,不做任何判断的。也会步数下降。仅凭这点我就认为可以排除是代码的问题了。如果对代码存有疑问,我也可以提供。(注:在别人的配置比我低的机器上运行能满步,我则会不满。)
                  2.并不是所有的我做的gm8游戏都会发生卡顿,尽管代码量比(1)中多了数百倍。
                  3.所有我做的gm8游戏,我没有进行任何设置(房间步数和房间标题之类的除外)改动。
                  4.gms2偶尔也会出现这样的情况。


                  IP属地:广东9楼2019-09-12 10:06
                  回复


                    新补充,在gm8中直接运行游戏占用的cpu和内存均比导出在桌面的exe占用的更低,大概降低了5%左右,内存占用为桌面直接运行的二分之一左右。桌面的exe是刚导出然后执行的,并不是老版本。
                    执行的时候,gm8编辑器全屏,无论是桌面的还是直接运行的,都是用gm8编辑器全屏当背景。
                    即使把杀软和wallpaper鲨了也无济于事,甚至占用都会蹭蹭往上涨。

                    而且会一直上升,而在gm8直接运行的没有这种情况。
                    额外补充:在玩部分游戏的时候,刚开始会卡顿,后面会流畅(不包括上面提到的所有的我制作的gm8游戏),如3300英雄。


                    IP属地:广东10楼2019-09-12 10:16
                    回复
                      说真的 我也总是遇见这种卡顿的问题
                      但是目前来讲还没这么严重 因为目前我只在一个地图里写了一个精灵的移动
                      但我发现一个问题 似乎我开着bandicam的时候它就不会卡
                      而不开的时候就有时候会卡
                      不过我放弃使用任何里面的控件,基本一页代码往下写。
                      用录制软件看的时候 它是基于dx8的 可能这是它卡顿的一个原因 你可以尝试下个dx8
                      如果不嫌弃麻烦 还是推荐用edgamemaker或者unity这样的引擎来开发制作
                      目前我觉得最好最方便开发2d的引擎还是edgamemaker
                      不过最大的缺点就是画地图不是内置的,如果你只需要一个背景的地图,edgamemaker绝对能达到最好的游戏速度。


                      11楼2019-12-23 06:08
                      回复