1.1主程序SFF读取崩溃的解决方法

众所周知,在1.1中经常出现类似这样的错误:

Error Loading P1

Can't Load XXX.SFF

Out of Memory


我查阅了一些相关的帖子,有以下几种说法:

  1. 由于部分人物的SFF过大,导致内存占用超出MUGEN所能承受而崩溃

  2. 由于此错误经常发生于1.1主程序,可能是因为1.1不稳定

  3. 由于电脑配置不够高导致崩溃

  4. 由于人物不兼容1.1


经过实验,最后证明1和3这两种说法是有关系的,具体操作如下:

  1. 找一个经常报错的大人物,以Hige为例

  2. 打开游戏,开启对战,1P为Hige,2P为kfm,内存大约占用920M

  3. 重启游戏,开启对战,1P为Hige,2P为Hige,内存占用大约920M

  4. 复制三个一模一样的Hige,修改文件夹名字和Def文件名,例如Hige2、Hige3、Hige4

  5. 重启游戏,开启对战,1P为HIge,2P为Hige2,内存占用大约1.77G

  6. 返回选人界面,此时内存占用依旧为1.77G

  7. 继续开启对战,1P为Hige3,2P为Hige4,内存占用从1.77G开始递增,之后崩溃,出现上述错误


由2和3可知,相同的人物进行对战时,内存中数据只储存一份,而不是两倍

由4和5可知,人物文件夹不同的人物进行对战时,内存中数据储存了两份

由6可知,对战后内存没有释放,而是继续占用

由7可知,因为内存没有释放,递增到一定值后崩溃


Q:为什么1.77G的内存不被释放?
A:

MUGEN不会立刻销毁对战过的人物所占用的内存,而是为了保证下一次使用的速度而保留

由于MUGEN这个内存保留机制,导致你不断地进行对战,内存占用就不断地上升,最后崩溃

具体操作如下:

  1. 打开游戏,开启对战,1P为Hige,2P为Hige2,黑屏停留时间:30s

  2. 返回选人界面,继续进行跟第1步相同的对战,黑屏停留时间:1s


Q:内存占用多大的时候才有可能崩溃呢?
A:

在刚刚的对战中,1.78G的内存占用导致了崩溃,经过查阅资料,发现在MUGEN1.1发布的那个年代,很多2D游戏其能使用的内存最高临界点都在2G,经过多次的实验,发现内存占用在1.5G-2G时,发生崩溃的几率最高


Q:如何让MUGEN不保留内存呢?
A:

在mugen.cfg中,你可以看到Misc下有一个名为PlayerCache的参数
;Number of extra players to cache in memory.
 ;Set to a lower number to decrease memory usage, at cost of
 ;more frequent loading.
PlayerCache = 2
这个参数指定额外缓存人物的数量,此参数的最小值为0

我们设置为0,然后重复上面的5、6、7,发现内存会在返回选人界面的时候释放,避免了内存过高


Q:那如果有两个人物运行后各自内存占用为1G,当他们互相对战的时候如何解决崩溃问题?
A:

由于MUGEN的最高临界点为2G,实际上超过1.5G就很容易崩溃,只要两个内存占用750M以上的人物进行对战时就已经到达了易崩溃区域,那么我们要解决的问题则是
“能否提高MUGEN能使用的内存最大值?”
答案是肯定的,在外国有一位大佬已经开发出了内存限制补丁,可以让早些时候的游戏突破限制,内存最高临界点提升到4G,工具是一键化的,仅20kb,选择文件后秒成功,极其方便


Q:容易内存崩溃是否是因为1.1不稳定?
A:答案是否定的,在1.0下重复以上实验,发现1.0也存在这样的机制问题


Q:人物兼容性是否影响?
A:一般情况下不影响,因为1.1向下兼容,而且SFF读取崩溃经常出现于大人物上,小人物基本不崩溃,所以不应该是人物兼容的问题


解决办法:
1.修改PlayerCache为0(最小化缓存机制的效果)
2.打入4G补丁(增大内存最高临界点),运行exe文件,然后选择要运行的主程序,然后运行主程序就行了
3.修改UnloadSystem为1(在任何可行的情况下释放画面包占用的内存)
4G补丁对于所有版本的MUGEN主程序都有一定的效果
下载地址:/s/1o7Q73T4


另:
Win的SFF崩溃也可以通过修改上述办法来解决,Win的内存最高临界点为1.5G
Q:为什么Hige在Win版运行仅占用400M的内存,而在1.X中占用900M的内存?
A:

在1.X中,MUGEN首次支持了OpenGL,OpenGL的支持最大的意义在于显示24/32位图像
但Hige是一个纯8位人物,所以用OpenGL来显示8位图像就没有DirectX和System更加高效
假如你没有24/32位需求,我推荐你1.1主程序渲染模式设置为DirectX或者System,前者更好,Depth设置为16,那么运行Hige的时候内存就和Win差不多了,不过宽屏对于内存的影响不是很大,不必修改

当然这一切都是基于人物使用SFFV1.01的情况下

在1.X中使用V1.0的SFF已经不被推荐,1.0建议使用V2.00的SFF,1.1建议使用V2.01的SFF,那么效果比V1.0好很多

Outbreak 评论于

以上方法都用上为何还有报错情况?

菜鸡 评论于
菜鸡

@白绝  怎么修改UnloadSystem为1,求具体教程?!

@菜鸡 ?!

菜鸡 评论于
白绝

@菜鸡 确保打了4G补丁,如果打了还是不行的话,建议贴上错误信息看看

@白绝  怎么修改UnloadSystem为1,求具体教程?!

白绝 评论于
菜鸡

@菜鸡 难道是我的电脑配置不够???

@菜鸡 确保打了4G补丁,如果打了还是不行的话,建议贴上错误信息看看

菜鸡 评论于
菜鸡

修改PlayerCache为0,打入4G补丁还是没有解决问题啊!“修改UnloadSystem为1”到底怎么修改,急求?!

@菜鸡 难道是我的电脑配置不够???

菜鸡 评论于

修改PlayerCache为0,打入4G补丁还是没有解决问题啊!“修改UnloadSystem为1”到底怎么修改,急求?!

根据相关规定,发布评论前必须绑定手机前往绑定
你,确定要这么做吗?
正在处理中...