我发现我需要 Wine 来运行任何基于 Windows 的东西。我发现我需要 DirectX 来做任何重要的事情,而这又需要 .NET 框架。使用这个(http://www.dedoimedo.com/games/wine-directx.html) DirectX 教程并从 WineTricks 下载 Wine 3.5 后,我以为我已经搞定了一切。不幸的是,事实并非如此。在 Windows 上运行良好的程序要么不起作用,要么运行起来像卡在糖浆里一样。现在,我知道有很多程序与 Wine 存在兼容性问题,但我不明白的是运行缓慢的程序部分。以下是我的系统规格:
Toshiba Satellite L455D-S5976
CPU: AMD Sempron SI-42 Single-core 2.1 GHz
RAM: 3GB (2.7 technically)
HDD: 500GB
GPU: ATI Mobility Radeon HD 3100
以下是我尝试过的游戏的部分列表:
- 最高指挥官
- 命令与征服:将军(零时)
- 刺客的信条
- 冲突的世界
- 星辰统治者 (Blind Mind Studios)
- 赛道狂飙 (Nadeo)
- 战地 2
- X3:地球冲突 (Egosoft)
- 橡胶忍者模拟城市 4
我认为只是我的系统速度慢——我的系统要求并不高,无法真正运行 AC——但奇怪的是,在开场介绍中,它会以 10FPS 左右的速度运行大约 3 秒,然后以 60FPS 左右的速度运行,比我之前的笔记本电脑运行速度要快,而之前的笔记本电脑实际上比现在的这台笔记本电脑要好。例如,Rubber Ninjas、C&C、SupCom 和 WiC 等游戏都可以在我的第一台笔记本电脑上流畅运行,这台笔记本电脑的配置与这台笔记本电脑类似。
哦!还有一个小问题——当我第一次安装 WINE 时,没有配置,我安装了 Derek Smart 的 Universal Combat,它运行良好。现在,在玩了一些其他游戏并重新配置后,它根本不起作用,即使我重置为默认设置。
那么,我做错了什么吗? Wine 是否需要进行不同的配置? 我完全迷路了,非常感谢任何帮助,谢谢。 我真诚地为这里的长篇大论道歉,但我不想遗漏任何细节,因为这往往会使所有相关方的事情变得更加困难。
PS:我最近发现了 ClockGen,地址在这里(http://www.techspot.com/community/topics/overclocking-a-toshiba-satellite-laptop.32667/):我想知道超频是否可行?我不记得我用什么命令来查找我的 CPU 速度——但它显示我当前的速度是 2100MHz(即 2.1 GB),但问题是我的“最大”速度是 4,000 MHz。现在,我做梦也不会想到将笔记本电脑,甚至台式机超频到如此荒谬的速度,但即使我能得到 2.4 或 5……我会为我招致的笔记本电脑之神的愤怒承担全部责任。我永远不会在不插电的情况下运行这台电脑——反正我已经不插电了,所以电池对我来说几乎毫无意义……而且我的笔记本电脑下面一直都有一个高速风扇在转——我的第一台笔记本电脑把我的裤子烧焦了,从那以后我就一直很谨慎。
答案1
TL;DR:这篇文章解释了如何运行任何游戏使用质子
质子是一款可以在Linux上运行Windows游戏的软件,由Valve开发。
它本质上是一个“Wine 发行版”,因为它在后台使用 Wine,但功能得到了增强。
随附的 Wine 版本已使用可提高速度的参数进行编译。最重要的是,将 DirectX 调用转换为 OpenGL 的 wined3d 堆栈已被替换。如果游戏在 DirectX 9/10/11 上运行,DXVK用于将 DirectX 调用转换为 Vulkan。如果游戏在 DirectX 12 上运行,三维扫描仪将 DirectX 调用转换为 Vulkan。这些实现比原生实现快得多。
尽管 Proton 通常被 Steam 用于运行 Steam 本身下载的游戏,但您可以用它来运行任何您想要的游戏。例如,我正在使用 Proton 运行《守望先锋》(通过 Battle.net 下载)。
这是关于如何使用 Proton 运行任何游戏的证明概念。
我们不会从源代码编译 Proton。相反,我们将使用 Steam 附带的预编译包。因此,首先,下载蒸汽,运行它,并让它下载一个版本的 Proton。
找到 Proton 文件夹。这通常是 下的子文件夹
$HOME/.local/share/Steam/steamapps/common
。在此文件夹中,您可以找到不同版本的 Proton,每个版本都在其自己的子文件夹中。选择一个 Proton 版本(您很可能想要最新版本)。在此示例中,我们将使用 Proton 5.13。将“Proton 5.13”子文件夹复制到其他地方,比如$HOME/bin/Proton
打开
$HOME/bin/Proton/proton
(这是一个 Python 3 脚本)并注释掉以下行self.env["WINEPREFIX"] = g_compatdata.prefix_dir
通过在前面添加 # 来解决这个问题。我们不希望 Proton 运行上述代码。我们将提供自己的
WINEPREFIX
。找到 Steam 的 COMPATDATA 文件夹。这通常是 的子文件夹
$HOME/.local/share/Steam/steamapps/compatdata
。在该文件夹中,您会发现不同的子文件夹,其名称完全由数字组成。这些仅由数字组成的子文件夹是 COMPATDATA 文件夹。例如,我的 COMPATDATA 子文件夹是$HOME/.local/share/Steam/steamapps/compatdata/389730
。将最后一部分替换为您自己的数字。如果出现多个编号文件夹,请选择最高数字。很重要:如果您有多个显卡,例如集成显卡和专用显卡(像大多数笔记本电脑一样),DXVK 会要求您指定要使用哪一个(您将需要使用专用显卡)。请参阅DXVK 自述文件如何实现这一点。基本上运行:
vulkaninfo | grep "GPU id :"
你将获得如下输出:
GPU ID:0(GeForce GTX 1060):
GPU id:1(英特尔(R)UHD 显卡 630(CFL GT2))
括号中的名称是您的显卡名称。为 DXVK 选择一个。在本例中,我们将选择 NVIDIA GeForce。DXVK 可以匹配子字符串!因此使用“GeForce”就足够了。这是非歧义的,并且 DXVK 可以匹配子字符串。所以它会知道使用哪一个。
选择一个 WINEPREFIX(基本上是一个位置)来安装您的游戏。
$HOME/.wine
对于大多数用户来说都可以。这是使用 Proton 运行游戏的脚本的概念证明。将其保存在某处并命名为
launch_proton.sh
。像这样调用它:./lunch_proton.sh game.exe
。(当然记得chmod +x launch_proton.sh
)。使用您在前面的点中找到的值替换脚本开头的变量。
#!/usr/bin/env bash
# Modify these
export DXVK_FILTER_DEVICE_NAME="GeForce"
protonfolder="$HOME/bin/Proton"
export STEAM_COMPAT_DATA_PATH="$HOME/.local/share/Steam/steamapps/compatdata/389730"
# Modify if needed
export WINEPREFIX=$HOME/.wine
# This should be fine for most users
sudo sysctl dev.i915.perf_stream_paranoid=0
"$protonfolder"/proton run "$1"
该脚本需要 sudo 权限,因为
sudo sysctl dev.i915.perf_stream_paranoid=0
这会提高性能。如果删除此行,脚本将运行没有sudo 权限。
答案2
您可能不想听到这个,但如果您喜欢很多仅适用于 Windows 的软件并且需要它像在 Windows 上一样运行,那么双启动(实际的裸机 Windows 安装)是实现此目的的最佳方式。
任何类型的模拟层和 Wine是无论人们现在说这个名字代表什么,模拟层都有可能降低性能。
尤其是 DirectX 是一个庞大而复杂的怪物,为其提供完整的模拟 API 会增加大量的负担,因此任何 3D 游戏在 Wine 下都会受到很大影响。在 Windows 中硬件加速的子程序可能在 Wine 下以软件方式模拟,或者它们可能以不同的、效率较低的方式进行硬件加速。最重要的是,很多时候您会严重降低性能。
Wine 在为 Windows 应用程序提供 API 兼容性方面做得很好,它在这方面取得的成功值得称赞,但人们永远不要期望任何东西能像在 Windows 本身中一样运行。
注:一些不错的游戏是Linux 原生支持 Steam 或其他方式,在 Linux 上运行应该足够好。但 Windows 独占的游戏运行效果就不好了,尤其是如果它们使用 DirectX,在 Wine 上模拟起来会更繁重、更慢。
答案3
在启动 wine 之前,请阅读有关vblank=0
可以使用的设置的信息。一些 ATI 驱动程序将垂直同步设置为显示器,或者在 catalyst 中禁用无泪模式和垂直同步。
答案4
使用 opengl 通过终端运行游戏wine /path/to/file/filename.exe --opengl