3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

楼主: ele
打印 上一主题 下一主题

[推荐] 天际内存补丁3.0-Skyrim Memory Patch-fixing ILS, uGrids CTD, freezes(SKSE已加入该功能)

  [复制链接]

45

主题

4023

帖子

3739

积分

游戏精英

electra

Rank: 8Rank: 8

贡献度
342
金元
23707
积分
3739
精华
0
注册时间
2006-10-29
跳转到指定楼层
主题
发表于 2014-1-22 03:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ele 于 2015-5-27 17:55 编辑

这个迅速被Boris放到ENB网站首页推荐了,不知道这里大家有没看到和讨论,论坛未恢复搜索不方便。

MOD装多了之后,特别是多脚本或高材质的,或者uGrid改大了,会遇到很多莫名其妙的无限读取、CTD或画面停止,在路上跑着、打开物品栏、地图甚至按ESC想保存都可能会突然CTD,让人非常抓狂,就算ini优化调整了,SafetyLoad、Cell Stabilizer都用上了都不能消除,还可能有副作用。如果有这种情况的必须看看 ENB 论坛 sheson 发表的这个帖子,通过修改SKSE以plugin方式来改变TESV.exe加载内存区块大小,可能彻底解决了以上问题,号称继4GB LAA补丁和Boris的ENBoost之后的天际内存补丁3.0。sheson 给出了说明了补丁的原理和修改方法,你可以按照他的代码或其他人在其基础上调整的代码自己修改,也可以直接下他们已经编译好的文件,具体步骤细节看该帖。

sheson原版的改动只针对skse_steam_loader.dll是适合steam版的,对于我们广大的非steam版还要修改skse_loader.exe,或用其中Uriel24编译的独立dll文件而不用动skse_steam_loader.dll,当然记得还要修改skse.ini。

现在SafetyLoad不需要了,不改uGrid的话Cell Stabilizer可以不要,效果的确不错,谁用谁知道。目前该补丁还在讨论和改进中,不过基本的原理、思路和代码都确定了。

Skyrim Memory Patch - fixing ILS, uGrids CTD, freezes,最近ENB网站设了trap page可能不能直接点击链接打开,ENB网站首页有该帖链接,或直接进ENB论坛找该帖。


请注意:

1、游戏默认第一和第二内存区块都为256MB,sheson的代码默认是MEMBLOCK1增加到512MB,这个数值不是越大越好,因为补丁只能告诉游戏怎样分配内存而不能让游戏用上更多内存,512MB是sheson测试过比较适中并满足大多数情况的数值,太高会有部分空间浪费了,建议在sheson的基础上通过VMMap这个工具观察内存分配和使用情况,以确定适合自己的数值,最高建议不超过1024MB,可能会程序出错。MEMBLOCK2建议别动。


为了便于大家检测自己需要用多大的MEMBLOCK,sheson做了一个SKSE插件MemoryBlocksLog,运行游戏找一些最人多怪多事多的地方(通常大城市附近),一段时间后打开插件产生的日志文件MemoryBlocksLog.log查看Block1最大值(通常在文档最后),作为参考设置自己的MEMBLOCK,确定了之后可以关闭或删除此插件。

2、此补丁的作用和SafetyLoad其实一样,可以取而代之并且没有副作用。如果你不打算尝试更高的uGrids,甚至可以不要Stable uGridsToLoad(Cell Stabilizer),但即使在默认设置下它也可以修复一个有潜在可能导致CTD的循环错误,所以留着也无妨。

3、SKSE通过loader加载启动游戏实现加注功能,而sheson通过对修改skse loader改变游戏分配内存的管理,而不是一般的SKSE Plugins(所以上面说以plugin的方式应该是不太正确的,是对SKSE打patch的方式),因为一般的SKSE补丁优先级不够高,等到加载时已经太晚了。但SKSE并不是唯一的途径,而SKSE Team是明确不允许修改和二次发布SKSE的,所以已经有人通过其他方式实现了sheson的补丁功能并在N网发布了SSME - Skyrim Startup Memory Editor,貌似是通过DX层面(这下Boris说不定可以直接集成到ENB中),完全不用动SKSE了。

注:有防错修复指南建议,如果Skyrim.ini中有iLargeIntRefCount=262144的话,使用SSME时请删掉,此项优化目的是加载一个大的室内区域时防止崩溃,现在可能是不需要了。

4、SKSE Team也注意到sheson的补丁,由1.7.0 Alpha开始其中一项改进就是加入sheson的修改,目前最新版本是1.07.03(点击下载)。为了使其生效,特别是对于非Steam版,要做如下处理:

1)通过在SKSE.ini中加入以下参数调整MEMBLOCK大小:
[Memory]
DefaultHeapInitialAllocMB=768(默认512MB,设768MB相当于MEMBLOCK1为512MB,修改该值skse_steam_loader.log中会有相应提示)
ScrapHeapSizeMB=256(建议维持默认值)

2)非Steam版必须给skse_loader.exe加参数“-forcesteamloader”以强制加载skse_steam_loader.dll运行,方法就是给skse_loader.exe建立快捷方式了。成功的话就可以在我的文档\My Games\Skyrim\SKSE下看到skse_steam_loader.log。

5、关于 SSME,本质上和 SKSE 1.7.x 加入的内存补丁功能是一样的,原理和方式都是 sheson 那套,建议任选其一但不要同时使用。SKSE Team 关于这个问题的回复:http://forums.bethsoft.com/topic ... age-4#entry23691591

关于这个补丁的讨论分流之类可以到yinghanwen的帖子发表,这里只有ENB论坛成员放出的一些直接下载链接。

最后补充一下这个补丁到目前为止大概出现的经过:

1、最初由sheson在ENB论坛发表他(或她?)的研究成果,提出了补丁的原理和修改方法,给出了最基本和核心的代码,之后大家产生的东西基本都是在易用性和适用性方面改进。sheson最初的方案只需改动skse_steam_loader.dll,并在SKSE.ini中加入[NotPlacebo]GiveFirstBornToSheson=1,适合steam版使用。
2、Daetarek为了便于测试两个内存区块大小使用不同数值的效果而不用每次都编译新文件,修改了一下代码,内存区块大小可通过SKSE.ini加入MemBlock1和MemBlock2两个参数修改。
3、为了使非steam版也能用上,thalixte提出了修改skse_loader.exe的代码,至此不管是否steam版,skse_loader.exe都会加载 skse_team_loader.dll,也就是补丁都会生效了。
4、Tase得到thalixte的启发,干脆做了一个独立的mempatch.dll文件,把sheson代码放进去,可以完全不动skse_steam_loader.dll,并修改skse_loader.exe加载mempatch.dll。
5、Uriel24根据Tase给出的代码编译了新文件并提供下载,他要做一个通用的skse_loader,并把mempatch.dll像其他SKSE插件那样放在Data\SKSE\Plugins下而不是TESV根目录下,当然steam版的话还是需要含sheson代码的skse_steam_loader.dll。
6、Tase重新编译了文件放出下载,详情就是19楼那个,他把mempatch.dll放在TESV根目录下。
7、过程中还有其他人对代码进行一些优化和参与测试,但核心代码还是sheson的没变。
8、N网放出不用通过SKSE实现sheson构思的SSME - Skyrim Startup Memory Editor。
9、SKSE Team表示关注,将很快在新的测试版中加入类似功能。


评分

10

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2026-4-1 00:36 , Processed in 0.027441 second(s), 17 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表