《Skyrim》PC 补丁降低了 RAM 限制

新的《Skyrim》PC 补丁使该游戏需要 Steam,从而取消了允许游戏访问超过 2GB RAM 的第三方修复程序。已发布适用于该更新的新修复程序。

上古卷轴 V:天际昨天收到了 PC 补丁,但显然该补丁带来了意想不到的后果。该补丁要求 Steam 运行,这会带来不幸的副作用,即禁用第三方解决方案以达到相对较低的 RAM 限制。

石头纸霰弹枪指出,允许游戏访问超过 2GB RAM 的第三方修复程序会带来很大的不同。也就是说,它允许用户在其之上运行更多的模组,这会对视觉效果产生很大的影响,正如所指出的由 Xav 和 Shacknews 社区提供。一个新的解决方法修复了 RAM 问题而不影响新补丁,但 RPS 对 Bethesda 本身是否会正式提高 RAM 限制持怀疑态度。

作为报道昨天,主机补丁正在进行认证,计划在感恩节后的一周内发布。这些补丁预计将解决 Xbox 360 上的安装问题以及 PS3 上的延迟/帧率问题。

      • 他们并不是故意限制 RAM。 Skyrim 可执行文件是一个 32 位程序,这意味着它最多只能寻址 2GB RAM。如果出于某种原因尝试分配超过 2GB 的 RAM(这种情况偶尔会发生),游戏就会悄无声息地崩溃。旧的可执行文件没有以任何方式加密,因此有人发现它可以很容易地被黑客攻击,使其能够识别大地址,从而支持超过 2GB 的 RAM。修复了崩溃问题,并且可以支持更出色的效果。

        昨晚的补丁对可执行文件进行了加密,因此需要 Steam 才能运行,但这也破坏了现有的大型地址感知黑客攻击。所以现在人们创造了新的黑客。

        • 除了 32 位可以寻址最大 4GB 而不是 2GB

          • 理论上,32 位可以寻址 4GB 内存。实际上,如果没有启用大地址识别标志,32 位 Windows 可执行文件的大小将被限制为每个 2GB。

          • 除非在链接器选项中设置了 laa 标志,否则它是 2gb。 laa 标志允许将负整数值用作指针值。

            这归咎于遗留代码和许多不良实践。

            • 如果您在 64 位操作系统上运行 Skyrim,则没有理由不启用 LAA 标志。 Skyrim 与之交互的操作系统上的驱动程序将知道如何处理 >2GB 的地址,并且 Skyrim 自己的代码应该能够处理相同的问题。

                • 在 Windows 7 64 上运行的显卡和声音驱动程序必须接受 >2GB 的地址。

                  如果《Skyrim》自己的代码或中间件的指针运算不正确,或者在地址的 MSB 中填充某些内容,那么这就是糟糕的开发。显然,启用 LAA 后《Skyrim》崩溃的频率会降低,因此用户代码似乎可以很好地处理 >2GB 的指针。

                  • ... 好的?遗留代码是个混蛋,在 64 位成为主流之前,laa 充其量只是一个创可贴。你无法真正控制十五年前老派的 C 程序员所做的事情,当时 1 GB 的内存还只是一个白日梦。

                    学术理想主义是伟大的,但并不能映射到现实世界的限制。 LLA 只影响一小部分客户群,如果它被排除在外也就不足为奇了。

                      • 在 C 语言中,将负值放入返回的指针中并不是一种不常见的做法。这将与 laa 不同。由于溢出等原因,指针算术也容易与 laa 发生冲突。

                        是的,启用它是一个简单的编译器标志。确保它不会在您的软件中引入其他错误是一项更大的工作。

                          • 我最初回复的帖子声称没有理由不启用它。他的理由是他们的代码库应该是健壮的——这是一个理想主义的立场。

                            不启用 laa 有非常正当且真实的原因,但是,是的,我明白这个网站上的运作方式。

                            • 《天际》没有理由避免它。司机不再是一个理由。 2011 年跨主机游戏的哪些部分使用了他们无法找到和修复的古老 C 代码?很少。

            • 我认为他们应该这样做,因为《天际》的 PC 版本已经有一个用于调整和作弊的开发者控制台。过去,Crytek 为 Crysis 所做的就是这样:他们发布了 32 位和 64 位可执行文件。 Steam 本身还支持一款游戏的多个加密游戏可执行文件(MW2、MW3、黑色行动等)。

      • 他们不知道游戏机用户会因为 PC 游戏玩家可以将《天际》在 PC 上变成他们永远不会拥有的东西而感到恼火。

        这是我唯一能想到的事情,但这毫无意义……他们会一起删除模组,但随后就会发生一场狗屎风暴,所以也许这是唯一的方法。

        我真的不知道它搞砸了。

        • 什么秘密上面说的就是我觉得是怎么回事。不过,新补丁已经提供了更多 RAM 的新修复。

        • 如果他们想操纵社区,他们会使用 IdTech 5。

      • 我认为贝塞斯达这样做的原因是为了强制区域锁定。从所在地区(俄罗斯)以外购买密钥的人必须通过 VPN 激活才能解密。从那时起,他们必须从 TES V.exe 运行游戏,基本上绕过了 Steam 的区域锁定。

    • 即使没有改进的视觉效果,我也需要提高 RAM 限制以使游戏稳定。如果没有它,游戏经常会默默地崩溃到桌面。

      我真的希望 Bethesda 能够自己实现对更大内存空间的支持,或者更好的是,发布真正的 64 位可执行文件。

        • 他们应该做的是发布一个包含两个可执行文件和一个新启动器的更新。
          一种可执行文件可以识别大地址,而另一种则不能。启动器检查它是否在 64 位操作系统上运行。如果是,它将运行大地址感知可执行文件。如果它在 32 位操作系统上运行,它将运行非 LAA 可执行文件。每个人都赢了!

          • 我希望所有 PC 游戏都带有 64 位可执行文件。

      • 你必须问问自己,为什么我们在游戏中看不到更多 64 位 exe?

        现在使用 64 位没有任何好处吗?

        • 我知道“控制台”的笑话很普遍,但说真的,控制台比最新的 PC 硬件/软件落后了很多年,所以在为控制台开发时,你不是吗?为 32 位系统编写代码,因为控制台基本上都是小型计算机?

        • 也许在 Microsoft 仅发布 64 位 WIndows 后我们就会看到它。即便如此,也还需要一段时间。仍然会有人运行 32 位 WIndows,明智的商业举措是尝试迎合大多数人的需求。

          • 啊。所以整个“一切都是控制台端口”基本上是……真的吗? :(

            • 嗯……差不多……你可以想象如果不是这样的话会怎样。

              如果在 PC 硬件上运行相同的代码库(几乎)就可以让游戏变得更好,你可以想象经过大量努力后游戏会是什么样子。

              考虑到它们的年龄和硬件,在没有从控制台上拿走任何东西的情况下,它们所取得的成就令人惊叹。

              并不是我在抱怨,只是有时我想知道真正可以做什么,我认为这会很棒。

            • 并不真地。问题是所有的控制台都是 32 位的。 PC 上的每个人都支持 32 位。添加对 64 位 PC 用户的支持实际上就像添加另一个平台(尽管希望只是为了 QA)。

              但可能会有一些奇怪的错误,只有当您使用 64 位数据大小运行时才会暴露出来,等等。因此,仅仅删除 64 位可执行文件并不是“没有作用”。

              同时,如果游戏机都是 64 位的,我想开发人员只会说“操,32 位 PC 只占 PC 用户的 40%,而这又只占我整个市场的一小部分,我就将它们删除并仅发布 64 位。”

                • 有趣的。维基百科有信息表明它们是这样的,但没有来源支持它。如果它们是 64 位,那将是相当令人惊讶的(尽管并非不可能),因为 360 没有足够的 ram 让您需要 64 位来访问所有存储区域(尽管您确实需要 64 位来访问所有数据)在 DVD 驱动器上)。

                  64 位应用程序比 32 位应用程序大得多,因为可执行文件中到处都存储着指针。 (例如,考虑来自 nvidia.com 的驱动程序 - 对于任何特定版本和操作系统,32 位驱动程序都比 64 位驱动程序小很多)。

                  • > 指针存储在可执行文件中的各处
                    我认为指针不会占用应用程序内存占用的很大一部分(与为游戏存储的其他数据相比)。我无法想象它会超过几MB。

                    >来自 nvidia.com 的驱动程序 - 对于任何特定版本和操作系统,32 位驱动程序都比 64 位驱动程序小很多
                    这是因为 64b 软件包包含 64b *和* 32b 驱动程序(此外 64b 驱动程序稍大)。如果您查看驱动程序尺寸(x 为 64b),尺寸并不会非常不成比例

                    nvd3dum.dll 为 12,341KB
                    nvd3dumx.dll 为 14,712KB

                    nvwgf2um.dll 为 6,459KB
                    nvwgf2umx.dll 为 8,161KB

                    • 我几乎不会认为~20% 的开销不算什么。在游戏机上,这就很多了。

                      话虽这么说,我同意可执行文件大小与总内存大小(主要由纹理和 VB 主导)相比在很大程度上无关紧要。然而,可执行文件的大小与性能非常相关。如果可以的话,您不想从磁盘对可执行文件进行分页(并且您也不希望出现虚假的 I$ 未命中)。

                  • PS3 CPU 也是 64 位。当他们过去支持 64 位 Linux 内核时,您需要安装 64 位 Linux 内核。该平台甚至不支持 32 位内核。

                    我几乎可以肯定 PS3 开发套件也是 64 位,并且 PS3 和 Xbox 360 的开发环境实际上都是 64 位。两个系统中的 CPU 也都具有全套 64 位寄存器。

        • 原因有两个:一是控制台,但更重要的一个是并不是每个人都运行 64 位。

          为什么我无法理解,因为只能运行 32 位的 CPU 在 2004 年末左右就停产了,但这会限制可以玩的人数,而且从 64 位开始也需要更多的资源来玩由于内存访问方式的差异,可执行文件比 32 位可执行文件多使用约 10-15% 的资源。

          • 并非所有 64 位软件都像 32 位软件一样功能齐全。

            我记得在某处读过,如果您安装 64 位 MS Office,您将遇到共享点问题。

            • 我相信sharepoint 2010也只有64位O_o

              • 从 2008R2 开始的所有 Windows Server 版本都仅限 64 位。让我工作起来很开心。

                • 服务器环境中的 64 位寻址更为可取,因为许多服务最终可能会使用超过 2 GB 的 RAM,或者强调 32 位内核限制(我亲眼目睹过)。就游戏而言,真正重要的只是是否使用了超过 2 GB 的内存。对于大多数游戏来说,我们还没有做到这一点,主要来自目标小于 512 MB 的多平台游戏,或者来自 64 位安装的“小用户群”(由于 Windows 7 非常稳定,该用户群正在变得越来越大)。

                  令人遗憾的是,微软并没有像推动 64 位服务器应用程序开发那样大力推广 64 位游戏。我们已经超过了 2 GB 视频 RAM 的界限,但没有动力将这么多用于纹理以及游戏资产内存空间。

                  • 一款需要 64 位、DX11、四核、1GB VRAM、6GB RAM 的可靠编码游戏会是什么样子?

                      • 我觉得有趣的是,一款游戏是如何在没有任何控制台限制的情况下制作的,而是为 SB 游戏设备制作的,作为基准运行。完全围绕四核架构,并产生线程、大量 RAM、VRAM 和 DX11。我们能否以稳定的 120 最低 fps 和 4 倍全屏超级采样来制作 Crysis Ultra/modded?

        • 实际上,由于缓存未命中次数增加(因为指针占用了两倍的缓存内存),64 位 exe 的运行速度要慢一些。另外,还有一个事实是,很大一部分市场仍然没有从 Win32 升级,而另一大部分市场购买了 32 位版本的 Vista/7,因此您必须支持最低公分母。

          同时支持 32 位和 64 位 exe 在技术上是可行的,但很难证明其合理性,因为必须完成大量代码工作,并且它增加了您的测试负担

          • 我认为转换到 64 位时的性能或多或少会受到影响,因为您可以访问 CPU 上更通用的寄存器。

        • 另一个问题是,如果 3rd 方库没有 64 位版本……他们可能不想花时间在 64 位版本上。
          天哪,他们甚至不会打开 LAA 标志,为什么他们要为 64 位版本烦恼呢?

      • 启用 LAA 相当简单——它只是一个编译标志。

        问题是需要进行大量的回归测试来确保它不会破坏任何东西,或者确保他们的所有代码和中间件没有做一些糟糕但常见的事情(你知道,对于速度!)用指针。如果《天际》的引擎是一次大规模的检修,他们真的应该从一开始就把这个作为一个目标。

        • 至少在 64 位系统上,该引擎似乎对 LAA hack 确实很可靠。比没有更稳定,比《湮灭》更稳定。这让我想知道他们是否确实完成了大部分工作,但没有打开开关。

          昨晚有人说,由于愚蠢的驱动程序等原因,启用 LAA 标志可能会在 32 位系统上导致问题,所以也许这就是它不启用的原因。

          • 我不记得《湮没》曾经崩溃过,而《天际》每天至少崩溃两次(即时 CTD)。我确实记得音频编解码器弄乱了《Oblivion》,但如果没有它们,它在发布时是稳定的。

            • 即时 CTD 可能是可执行文件无法识别大地址的症状。我敢打赌,如果你使用 LAA hack,它们就会消失。

              即使我解决了奇怪的编解码器问题,我也遇到了更多关于《遗忘》崩溃的问题。

        • 我不认为这是他们声称的大规模改革。从图形上看,它确实看起来更好,但 FO3/Oblivion 的所有潜在怪癖仍然存在,修复也同样存在。

    • 如果我在 64 位操作系统上总共只有 4GB RAM,那么使用此修复是一个坏主意吗?

      • 不会。虽然确实没有必要这样做,除非您在 .ini 中进行了更改,从而增加了内存需求,或者您看到桌面持续无声地崩溃。

        • 哦,没关系,我使用 ini 修复将其从 500-600 增加到约 1.6 GB,不超过 2GB

    • 有人遇到鹰眼不起作用的问题吗?我无法让它缩放。我交换了左/右鼠标按钮,认为这就是问题所在,但将它们切换回去似乎没有帮助。

      • 没有。请记住,它会消耗耐力,所以这可能是你的问题。

    • 在此补丁之后还有其他人注意到一些严重的性能问题吗?我从未启用过 LAA,但在这个补丁之后我得到了

        • 在我获得 20-30 fps 的区域中,速度低于 10 fps。

    • 各位,不是在这里吐槽,只是一个想法:
      阅读有关需要安装的内容、可以做什么或不能做什么、可以尝试禁用或启用什么、或者安装解决方法等……只是让我头疼。我意识到这些游戏机在性能和图形方面提供的体验较差,但是天啊……阅读这篇文章确实让我可以轻松地继续在 360 上玩游戏,而不必担心任何问题。这几乎就像我愿意放弃我的电脑提供的卓越性能(包括模组),只是因为我更容易打开我的 360 并在较低的 720P 分辨率、较低的帧率和绘图中享受游戏距离和较低分辨率的纹理荣耀。游戏本身就有足够的技术问题,我当然不想担心其他任何事情。