S.C
1
我创作的游戏类似Celeste,需要通过不断死亡来试错的平台跳跃。
在我的游戏逻辑里死亡意味着读取再来。
然而我发现AGM在多次读取后帧数会越来越少,这非常迷惑。
以下是我做的测试:
这是最初的游戏帧数,可以看到FPS 120
然后在同一个场景读取存档15次后↓
帧数FPS降低到了100.
同一个场景读取存档20次后↓
同一个场景读取存档35次后↓
同一个场景读取存档60次后↓
最后帧数变得只剩下20,这非常神奇,我怀疑是否AGM在读取时重新生成了新对象却未删除读取前的其他对象导致游戏会随着读取次数变得越来越卡,到最后电脑死机。我让3个朋友不同电脑测试了一遍,都会出现这个问题。这让我非常非常头疼。
我非常想使用对象离开摄像机即删除的功能,
但因为有这个严重的BUG(子节点无法在正确位置复活)↓↓↓↓(https://guild.rpgmakerofficial.com/t/topic/1294)
导致目前无法实现该功能减轻CPU的运作。不知道官方何时可以修复好这个问题。
追加:我尝试单独建了一个空场景用作存档读取测试,即时读取100次也不会出现帧数下降这个问题,但如果我摆放一定数量的瓦片和互动对象后的场景就会出现这个问题。
如果不读取,在同一个场景里游玩30分钟都不会有任何帧数丢失,但只要读取多了,帧数会一直下降,这个问题非常严重…
恳请制作团队给与帮助!!
根据这里的描述,确实似乎存在某种问题。您能否提供出现问题的项目,或者如果可能的话,提供一个最小化的复现项目?
S.C
3
我直接提供导出可以实际游玩的demo 用作测试可以吗?
这是我认为使用AGM以来最严重的BUG,这个BUG可以让所有电脑慢性死机。实在太可怕了,恳请开发团队尽快解决!
Baz
4
我这边用最小化设置(仅一个玩家 GameObject,反复保存和加载)成功复现了该问题,因此我会提交报告。
不过,您的项目似乎每次加载时泄漏的对象更多。能否请您将实际项目发送至 pgmmv-support@gotchagotcha.jp,以便我们进行对比测试?
感谢您在多台机器上进行的详尽测试,截图以及逐步加载次数的数据对缩小问题范围非常有帮助。
1 个赞
S.C
5
项目资产较多容量较大不太方便拆解,概括一下单一场景里可以和player互动的大概有60个GameObject和30个Area2D 组成,不过大部分gameobject都设定了启动条件为:当摄像机靠近时。 所以最初加载并不在场景里。
我打开监视用作参考。
实际运行的活动对象只有25个左右。 tilemap 1500左右
Baz
6
你在游戏中使用 StartingPoints 吗?我认为我们已经找到了帧率下降的根本原因。问题似乎与 AGM 的 StartPoint 到玩家的路径解析有关,而不是存档/读档本身。每次场景加载都会重新运行该解析过程,因此问题会随时间累积。
我想和你确认一下,你的项目中是否也是这个原因。你可以尝试移除所有的 StartingPoints,改为直接实例化玩家场景。然后运行你的存档/读档测试,看看这样是否能防止帧率下降?
S.C
7
请问这里的startingpoints指的是这个节点的吗?
游戏场景里从来没用过这个节点的。甚至不知道它的存在 
同时也没使用过 实例化场景功能(主要不清楚它的功能是什么,没使用过)
Baz
8
我们认为确实需要查看您的具体项目,以便准确评估当前情况。能否将您的项目打包成 zip 文件并发送至 pgmmv-support@gotchagotcha.jp,以便我们调查此特定问题?如果您需要通过云服务的链接来下载,也是可以的。
或者,您也可以等待下一个补丁,该补丁修复了几处性能问题。如果问题仍然存在,再发送您的项目给我们。
S.C
9
好的,非常感谢baz的检测。先看看下一个补丁修复
如果不行,我压缩一下简化单一个场景的项目发送过去以便查看。
我的项目都是只用到比较基础的功能对象链接VS。场景里也没做新增特殊节点…都是用默认的那些…
1 个赞
S.C
10
后来思考了一下越快找到原因会越好。于是把简化的单独场景【game_scene_1】已经发送到邮件,
zip里面可能夹杂着一些和game_scene_1 无关的对象tscn,请无视它们。
我不清楚这种丢失了PNG和音效只有单独的tscn是否还能正常运作,如果有问题请随时联系,谢谢!
Baz
11
感谢发送项目!我测试了一下,发现正如我之前提到的,性能问题依然存在。我们这边已经修复了该问题,预计将在下一个补丁中发布。
更新后请尝试一下,如果帧率(FPS)仍然下降,请告诉我!
S.C
12
如果能修复实在太好了,游戏终于可以正常进行游玩了。 我整个项目都没有使用 StartPoint ,
能否告知一下是出于什么原因导致这个问题的?
Baz
13
帧率下降的问题源于一个在每次保存/加载时都被持有且未清理的对象引用。它与我上面提到的 StartPoint 问题无关(尽管那个问题也已修复),而是你的项目正在遇到的相同问题。
之所以对你的项目影响如此之大,是因为无论场景中有什么,该计数始终保持不变,每次加载都会 +1,但这些额外对象的成本会随着场景中发生的一切而增加,因为它们会在每一帧中被评估。因此,繁忙的场景会比轻量级的场景更快、更显著地感受到这种延迟。这与你所观察到的情况相符。
一旦下一个补丁发布,能否在你的项目中重新测试,并验证它是否为你解决了帧率问题?
非常感谢你报告这些发现!
1 个赞
S.C
14
非常非常感谢,我每天都期待着下一个版本更新的到来!