上古卷轴吧 关注:1,612,313贴子:27,976,167

【技术】滚5机制和内存原因引起ctd的解决方法

只看楼主收藏回复


大家好,我是零逗。
滚5ctd的原因多种多样,有比较低端的,例如esp没有master,骨骼和身形不搭配等等..
也有比较高端的,例如脚本错误,随机事件触发错误等等...
然而,在你的MOD环境完全没有问题,存档完全干净,几个INI配置参数完全正确的情况下,依然会发生一些随机CTD,最简单的例子就是进游戏第一次读档闪退。
随机性质的ctd中,很大一部分是滚5本身的机制和内存管理导致的。
这就需要一个MOD:Crash Fixes
N网地址:http://www.nexusmods.com/skyrim/mods/72725/
其实关于这个mod,3dm有更好的教程.....
http://bbs.3dmgame.com/thread-5022289-1-1.html
好了,本帖结束。
======================================================================
3dm这个贴讲的比较详细,我可以说说比较清晰的安装教程。
1.安装SKSE Plugin Preloader
下载地址:http://www.nexusmods.com/skyrim/mods/75795/
把d3dx9_42.dll解压到tesv.exe所在目录即可。
2.安装Crash fixes
下载地址上面有。
把CrashFixPlugin.dll,CrashFixPlugin.ini,CrashFixPlugin_preload.txt三个文件解压到DATA/SKSE/Plugins
3.修改几个ini
CrashFixPlugin.ini:把UseOSAllocators=0改成1。这个文件内的参数都有注释,想深入学习可以看一下。
enblocal.ini:
ExpandSystemMemoryX64=false (可以先设置true试一下,如果出现闪退或者bug,改成false)
ReduceSystemMemoryUsage=true
DisableDriverMemoryManager=true
这三项要这样设置。如果没有enb就跳过这个ini设置。
skse.ini:
[Memory]
defaultHeapInitialAllocMB=768
scrapHeapSizeMB=256
推荐设置这两个数。
4.其他ini设置
上面这几个是必须要改的,设置错了会出现很大问题。下面是几个根据自身情况修改的ini。
Skyrim.ini:
[General]
uExterior Cell Buffer=
室外缓冲区大小。默认是36. 有一种算法是ugird+1之后平方。但你的室外材质装的很多,可以适当增加这个数值。如果改完,发生随机ctd,那么就改回去。
iPreloadSizeLimit=
在内存中预载的总大小。当ugrid和uecb发生改动之后,这个也要随之改动。设置的过低会造成频繁卡顿,设置的过高可能会让tesv爆内存直接卡死或者闪退。我个人设置的256M,也就是上面那个数。
[Papyrus]
fUpdateBudgetMS=2.0
fExtraTaskletBudgetMS=2.0
fPostLoadUpdateTimeMS=2000
iMinMemoryPageSize=256
iMaxMemoryPageSize=512
iMaxAllocatedMemoryBytes=2457600
我用的这一套数据,如果出现问题,删掉整段即可恢复默认。想深入研究可以参考http://bbs.3dmgame.com/thread-3316784-1-1.html
enblocal.ini:
ReservedMemorySizeMb=
低配设置64。显存大于等于4g设置768,其他情况设置在128 256 512中调整。设置太高会导致闪退,设置太低会导致卡顿,这个数值需要摸索,因为它和你装的模型材质总量有关。
VideoMemorySizeMb=
内存+显存-2048,例如8g内存,4g显存,就是8192+4096-2048=10240 最高值为10240,不能再高。求稳定可以直接设置成显存大小。
EnableCompression=TRUE
内存压缩功能,建议开启。如果不开,内存占用会非常非常大,一旦超过32位程序限制的3.1G,直接闪退。
当然,这些参数可以保持默认!如果对这些参数不熟悉,保持默认是最好的。如果不懂ini机制,建议去学,而不是问我。
5.进入游戏。
========================================================================
建议看一下Crash fixes这个mod的N网说明。
解释一下为什么需要skse插件预载。在tesv.exe开启之后,内存区块已经被tesv申请完毕。skse插件默认加载在 tesv之后,无论skse插件怎样修改内存区块,都是无效的。需要让skse插件优先于tesv启动,所以要安装skse插件预载。
在使用这个mod之后,任何有关防闪退的mod都可以删除,包括但不限于ssme,hdtskyrimmempatch,memerypatch。safetyload也可以删掉了。同时使用可能会造成闪退。
这个mod只能解决由于滚5本身机制和内存管理导致的ctd,不能解决其他类型的ctd,比如脚本错误,存档损坏等等。这个mod也解决不了进入游戏读档闪退,这依然需要二段读档或者continue game no crash这个mod。
就这样。


IP属地:辽宁1楼2017-02-17 11:55回复
    零神好久不见


    IP属地:上海来自Android客户端4楼2017-02-17 12:01
    收起回复
      前排留名


      来自Android客户端5楼2017-02-17 12:05
      回复
        看了还是不懂~


        IP属地:安徽7楼2017-02-17 12:06
        回复
          好帖


          IP属地:广东来自Android客户端10楼2017-02-17 12:06
          回复
            所以说,我还是期待特别版


            IP属地:四川来自Android客户端11楼2017-02-17 12:09
            收起回复
              如果开启UseOSAllocators=1的话,skse.ini就不用改了。。。。不开的话要改,所以说还是看n网说明,我向来不靠谱


              IP属地:辽宁12楼2017-02-17 12:09
              回复
                马克


                IP属地:陕西来自iPhone客户端13楼2017-02-17 12:13
                回复
                  我的垃圾enb没有enblocal怎么办_()」∠)_


                  IP属地:广西来自iPhone客户端14楼2017-02-17 12:21
                  收起回复
                    感觉我每次重新玩都要学习一次


                    IP属地:广东来自Android客户端16楼2017-02-17 12:32
                    收起回复
                      害怕


                      IP属地:辽宁来自Android客户端17楼2017-02-17 12:43
                      回复
                        很强


                        IP属地:上海来自手机贴吧18楼2017-02-17 12:47
                        回复
                          如果我把原版Textures.bsa里面的材质换成2千的材质 显存会不会减少啊


                          IP属地:河北19楼2017-02-17 12:51
                          收起回复
                            我已抛弃32位老滚入64位重制


                            IP属地:广东20楼2017-02-17 13:01
                            回复
                              感谢,学习一下


                              IP属地:四川来自Android客户端21楼2017-02-17 13:08
                              回复