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补丁(增大内存最高临界点)
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好很多