在 Linux 中游玩《星辰之光》
在 Linux 中游玩《星辰之光》
因为一些机缘巧合,现在我改用 Linux 作为主力系统了。然鹅地图我还是得做的,我又没有两台电脑搞远程,那如何在 Linux 里游玩红红、制作地图首先就成了问题。
当然有人马上会想到虚拟机,比如熟悉的 VirtualBox、VMWare,比如winapps
。但虚拟机也好,双系统也罢,都太重量级了,我 128GB 的二手盘不堪重负。
那都玩 Linux 了,Wine 兼容层怎么样呢?不也有过 Wine 跑《原神》的成功案例了嘛。但遗憾的是,自 9.17-1 版本开始,原生 Wine 的 DDraw 兼容都做得十分甚至九分的抽象,无论是红警 2 本体还是 FA2 地图编辑器都无法正常显示,原生 Wine 也就不再适用了。
现阶段也不再建议用 Wine 玩原神,容易被封号。可以试试云原神,但首先需要解决“鼠标无法转动视角”的问题。
所以,兜兜转转,还是回到了 Bottles。
重要
本篇笔记仅以《星辰之光》这个红警 2 模组作为范例,因为它是我这里最早成功跑起来的红警 2 mod。 对于其他 mod,乃至其他游戏和 Windows 程序,本篇笔记的方案可能有一定参考价值,但不保证能够成功运行。
图片大小
本篇笔记的插图原图对于电脑端来说会偏大一些,因此我基本上都做了缩小处理——你可以点击图片查看原图。
如果您在用移动设备阅读,则这种“缩小”效果可能更明显些。还请见谅。
那么正式开始之前,我有必要先说一下我的 Linux 环境。由于 Linux 发行版众多,我无法保证别的包源、别的发行版能否这么操作。
- 操作系统:Arch Linux
- 桌面环境:KDE 6
一、Bottles
Bottles 是由 bottlesdevs 开发的可视化 Wine 配置工具,旨在“让用户便利地在喜欢的发行版里运行 Windows 程序”。
官方推荐通过 Flatpak 安装,在沙箱里运行。但由于「懒加载」问题,游戏本体和地编都无法正常启动。因此还是改用pacman
吧。
懒加载
经实测发现,单文件 exe 才可以在这种情况下直接在 Bottles 里启动。 但凡需要读同级文件、子文件夹的,都需要在 Bottle 里添加快捷方式,并在快捷方式的设置里手动指明工作目录。
首先需要引入archlinuxcn
源。具体步骤参见《Arch 安装流程》,这里不再重复。
接着sudo pacman -Sy bottles
安装。等待进度跑完,就可以从“应用程序菜单栏”运行了。
初次运行 Bottles 会弹出一个向导跟你 blabla,无脑下一步即可。 到最后一步时 Bottles 会下载一些组件包。由于众所周知的原因,可能会花费比较长的时间。
二、部署 Bottle
2.1 新建
进入 Bottles 的主界面,点击“新建 Bottle……”(或者窗口左上角的加号),填些基本信息:
注
我的系统语言是英文,中文翻译仅供参考。
- 名称(Name):自拟(为便于说明,后面用
$venv
表示); - 环境(Environment):建议选自定义(Custom)。
应用程序(Application)和游戏(Gaming)这两个预设,初次新建 Bottle 时会下载巨量的依赖。 如果你网不是特别好,也没走代理,直接“自定义”就可以了。
- 打开共享用户目录(Share User Directory)选项
- 兼容层,或者说运行器(Runner)选
soda-9.0-1
(以最新版为准)
如果你选了预设,这里是改不了兼容层的,得等创建好 Bottle 之后进设置再改。
此外,cn 源的 Bottles 使用系统中装的原生 Wine。在文章开头我就强调过原生 Wine 已不适用红红。所以务必换用别的。
- Bottle 目录(Bottle Directory)可改可不改(为便于说明,后面用
$bottles
表示)。
默认你的环境位于
~/.local/share/bottles/bottles
目录下。
注意
如果你在全局设置里改过默认目录,千万不要在新建这里又改到同一个位置,否则会报符号占用,创建失败。
然后在右上角点击“创建”即可。
注
在 Linux 中,~
和$HOME
①通常指代/home/<user_id>
,比如/home/chloridep
。 类比下 Win7 的%UserProfile%
和C:\Users\chloridep
就知道了。
① Linux 的路径是区分大小写的,终端里的环境变量(通常全大写)也是。
YURI.exe ≠ yuri.EXE;$HOME ≠ $home
2.2 Bottle 选项
点击刚建好的 Bottle 进入详情页,点开设置(Settings):
- 需要开启 DirectX 翻译——将组件(Components)部分的 DXVK 和 VKD3D 打开;
- 可以考虑在显示(Display)部分启用独立显卡(Discrete Graphics,我的笔记本没有捏);
- 性能(Performance)部分的同步(Synchronization)可以考虑 Fsync,除此之外的选项建议不动;
做完设置,退回上一页把依赖(Dependencies)装上:
红警 2 推荐依赖
- 客户端需要:
mono
(Wine mono .NET 依赖) (耗时较长,建议最后安装) - 中日韩字体:
cjkfonts
(避免“口口文学”)
你也可以手动下载(或复制 C:\Windows\Fonts 里的)msyh.ttc 和 simsun.ttc, 并复制到
$bottles/$venv/drive_c/windows/Fonts
里。
- 游戏本体需要:
cnc-ddraw
- Reshade 特效层需要:
d3dcompiler_*.dll
d3dx*
这里的 * 代表全都要,比如 d3dx11 和 d3dx9。
三、部署游戏环境
下载好《星辰之光》大版本包体(如有必要,额外再下载小更新包),用unzip
解压:
sudo pacman -S unzip
# 请根据实际情况替换压缩包路径
unzip -O GBK -o '~/Documents/Extreme Starry v0.6.zip'
# 如果网络不好,不方便更新,并且群里恰有离线更新包,也可以直接下载、覆盖更新
unzip -O GBK -o '~/Documents/0.6.2 离线更新包.zip' -d '~/Documents/Extreme Starry'
unzip 命令行解释
unzip [opt] </path/to/zip> [-d extract_dir]
-O encoding
:指定在 Windows 里打包的 ZIP 采用什么编码打开。-o
(注意大小写不一样):有相同文件名的,一律覆盖。/path/to/zip
:zip 路径。
遇到空格需要加反斜杠转义,或者像我那样直接打引号。
-d extract_dir
:解压到单独的文件夹。
像上面离线包直接解压出来是散装跟
Extreme Starry
并列放的。而~/Documents
可能不止放《星辰之光》。
更多细节还请自行unzip -h
。虽然解说都是英文。
然后点开你的 Bottle 进入详情页,为客户端Extreme Starry.exe
添加快捷方式,这样就不需要每次都点“运行可执行程序”找半天了。
提示
在“选择可执行文件”对话框中,若找不到 exe,请在“过滤”那里改为Supported Executables
。
四、开玩
在做完全部配置之后,点击你建过的快捷方式右边的▶
图标,开耍。……虽然,读条可能会比较慢。
再次启动客户端没有反应
可能是因为进程还驻留在 Wine 环境当中,需要“强制停止所有进程”手动干掉: