goodspeedzq 发表于 2005-12-24 15:26:56

解决游戏中load,文件变得巨大的问题[转贴]

在游侠看到的,坛子里的技术达人不妨研究一下可行性

FM2006的游戏运行过程中,会不断将临时数据保存在硬盘中,这就是内存即使超过1GB,玩游戏时候也硬盘不断响的原因。从这一点发现了搞定这个的办法。

FM2006临时文件会保存在“系统temp\Football Manager 2006”中,有几十上百个文件,根据文件名大家也可以猜测到,都是一些新闻、球员属性、受伤状态等记载。而当我们lsave时候,会在此目录下建立“savegame”目录,将内存中和这些临时文件的数据保存到“savegame”目录下,然后进行压缩成1个单一文件xxx.fm,也就是说,我们保存的存档xxx.fm实际是很多数据文件的一个打包合集(类似.rar文件),只是不知道它的打包算法(如果游戏中选择压缩,那么游戏就是打包+压缩了)。我想,这也是“FMSaveCleaner.exe”能够对存档文件进行减肥的原因吧,把一些垃圾历史记录都可以删除了。

那么反过来,当我们load时候,游戏也会先将xxx.fm解包到“系统temp\Football Manager 2006\savegame”下,然后再将解包出来的百来个小文件一一读入内存,再删除这个savegame目录。

在我的390MB存档文件中,load时候,我发现解压缩出来有一个文件“regeneration_manager.dat”居然是350多MB,显然是不合理的。而且根据文件名猜测(重生成_经理.dat),估计这就是SI用来整人的垃圾文件了。如果搞定此文件,是不是可以解决?

尝试删除“regeneration_manager.dat”,结果游戏提示load失败,看来是不能删除的。找一个小的替代?我重新开了一个档(随便选一个最简单的),通过上面了解的save和load原理,搞到一个“regeneration_manager.dat”,才1KB。用此文件覆盖原有340MB那个(在load过程中),系统顺利通过!!!

再选择save,哈哈,游戏存档变小了,只有110MB了,玩了半个赛季,没有发现其他问题,搞定!!!现在存盘读盘都只要20~30秒,呵呵!

BTW:无论是现在的110MB存档,还是原来的390MB存档,选择压缩方式,都只有30MB,可见那个“regeneration_manager.dat”果然就是用来整人的。

特别说明:

1)游戏load时候,是先把xxx.fm解包为一个个小文件,全部解包完毕,再一个个读取到内存并删除,所以用小文件覆盖“regeneration_manager.dat”时候,一定要照准时机!应该在游戏load过程中,此文件已经被完整解包到savegame下完毕,同时还没有应load完毕被删除前覆盖,才是有效的。多练习一下任务切换吧。

2)游戏save时候,先将内存数据保存到savegame下,成为一个个小文件,全部小文件生成完毕,会开始打包,打包过程应该也是打一个删一个。因此获得这个1KB的“regeneration_manager.dat”,应该在系统生成“regeneration_manager.dat”但还没删除前copy到其他目录下!

3)附件是1KB的“regeneration_manager.dat”,供难以获得此文件的朋友使用。load时候,覆盖savegame下文件即可。

希望有高手可以做个软件,分析存档文件格式,类似“FMSaveCleaner.exe”,直接将此1KB文件插入fm格式文件内替代原有的,就更方便了。

pzhy 发表于 2005-12-24 16:52:25

太危险,一不小心档就坏了。

sdlewei 发表于 2005-12-24 17:25:16

ding!!!!

playroma 发表于 2005-12-24 18:19:05

厉害,但我不用

火生 发表于 2005-12-24 18:30:13

支持一下!!!!

羊哈哈 发表于 2005-12-24 18:30:44

看来可行,哪位高人把那个软件做出来造福大众啊
页: [1]
查看完整版本: 解决游戏中load,文件变得巨大的问题[转贴]