Steam Deck在掌机模式下运行日文Galgame时的坑

虽然Steam Deck已经入手一段时间了,但是基本都在用来玩玩爬塔或者神之天平之类的原生游戏。前几天把神之天平通关以后,忽然发觉三角社新作马上就要出了。所以开始琢磨一下怎么在Steam Deck上运行小黄油来充实每天的睡前时间。

Steam Deck使用的Steam OS本质上是Linux,通过Proton来模拟(确切说是兼容)Windows应用。Proton其实就是SteamOS用的Wine分支。原理和使用方法上和Wine大同小异。所以Wine的使用方法和技巧基本上都可以原样复刻。Steam Deck如何运行非Steam游戏的教程其实百度一搜已经有很多了,也没必要再特地水一篇文章。但是一旦来到了古早小黄油上,问题就突然变得复杂了起来,拜其所赐,在度过了一个充满了沮丧、挫折、贤者时间、空欢喜、不断插拔鼠标的下午后,我终于成功地把硬盘里想要回顾的古早小黄油全都搬上了Steam Deck。

兜底的策略:安装Win11。

为了防止意料之外的劝退,本该放在文章最后的小节被挪到了这里。请记住,下面的各种繁琐操作,归根到底是因为想要试图在SteamOS的掌机模式下转区运行日区小黄油Galgame而产生的。实际上Steam Deck有一了百了的解决方案,那就是安装Win11的双系统,可谓包治百病。所有Steam OS本身无论如何都运行不了的游戏在原生的Win11下几乎都可以无碍运行。Steam Deck安装Win11需要其他电脑的辅助,但是并不复杂,也不会把Steam Deck原本的系统覆盖掉,所以可以放心大胆的折腾。相关教程有很多,这里就不再赘述了。

1.转区运行不需要安装的小黄油

在开始接下来的部分之前,我首先假定看到这里的读者对Steam Deck有着最基本的了解,知道如何进入Steam OS的桌面模式(其实很简单,按Steam键,选择电源,然后选择进入桌面模式即可)。Steam OS的桌面模式其实就是图形界面的Linux。操作起来虽然和Windows有所区别,但是大差不差。桌面模式下的Steam和Windows下的Steam界面完全相同,添加非Steam游戏的方法也一模一样,唯一需要注意的就是选择游戏时,它的列表默认只会显示*.desktop文件,需要手动将文件类型改为“全部文件”然后选中游戏的exe文件本体。

对于不需要安装的游戏,最简单的方法自然就是先在Windows环境下安装好后直接将游戏文件夹复制到Steam Deck。要么通过U盘TF卡,要么通过SMB文件共享。如果家里有NAS的话用SMB共享显然会方便一些。这里以三角社早年的新游戏《幻聖神姫LINEAGE》和其FD《幻聖神姫セイクリッドFD》为例。之所以选择这两部是因为它们比较有代表性。三角社早年的游戏转区也是个相当麻烦的任务,而幻聖神姫的FD虽然紧接着本体推出,但是引擎上却有了一些看似细微实则非常麻烦的区别,具体来说就是打了免DVD补丁的FD版只要用普通的转区手段就可以正常运行了,然而本体却依然留有上个时代的余毒,这个在下面一段会讲到。这里先讲比较容易的FD。FD在打过免认证补丁以后,其实就已经相当于是绿色游戏了,将游戏文件夹复制到Steam Deck本地后(我这里是复制到/home/deck/Games/下,每个游戏独立一个文件夹),添加EXE主程序,设置兼容层后直接运行即可直接通过Steam启动游戏。

如果不想污染自己的系统的话,可以直接在Win10或Win11自带的沙盒Sandbox中安装,然后复制出来。

在添加游戏成功后,需要在右键的属性或者点击齿轮打开的设置页面中选中“兼容性”,选中“强制使用兼容性文件”并为游戏指定一个proton版本。一般直接选最新版就可以,这里作为范例的2个游戏我均使用了proton 7.0.4版本作为兼容层。

当你添加游戏并第一次运行后,proton就会为这个游戏创建一个独立的沙盒并赋予一个10位数的id。这里需要注意,沙盒其实并不绑定这个游戏,只是它为了运行你的游戏而创造了一个沙盒,在后续的操作中,你其实可以在这个沙盒中进行各种各样的操作,修改注册表、安装字体、甚至于把原本游戏的东西删得一干二净,然后在这个沙盒中安装另一个完全不同的游戏也没有任何问题。这个沙盒并不是跟你前面选择的游戏exe文件绑定到死的。实际上即使对同样路径下的同一个游戏,如果你重新在steam中进行添加的话,proton也会再单独创建一个全新的沙盒,和之前的沙盒并不共通。对于不熟悉沙盒概念的用户来说,在这里可能会产生误解,一定要注意。

到这一步,其实已经可以运行游戏了,近几年的小黄油随着技术的进步逐渐的都不再需要强硬转区,做到这一步其实就已经可以正常运行了。但是对于古早的小黄油来说,这样是不行的,游戏启动后只会出现大量乱码。把我们带回到了那个每天熟练使用NTLEA和Locale Emulator的时代。

在当年使用转区软件的经历中,有一些顽固的小黄油比如铃铛社的看家作品系列,即使你使用了转区软件也依然会毫不留情的乱码,必须要修改系统的默认Unicode字符页,甚至必须要在日文的操作系统下才能正常运行。不过在proton这里,我们就不再需要单独使用转区软件了。proton本身就相当于是一个windows环境的沙盒(这么说其实很不严谨,不过为了方便理解就先按照这么讲了),所以你是可以指定用于启动这个exe文件的沙盒环境所使用的语言区域的。这是Wine原本就有的功能,相关教程已经很多了。

Wine(自然也包括proton)使用系统的当前Locale设置(可以通过LANG来指定),或LC_ALL参数来来决定具体使用哪一个ANSI代码页。按理说只要我们传递了ja_JP.UTF-8给它,它就应该可以正常加载日区游戏了,网上的大多数教程也都是啥这么写的。只要在前面提到的游戏属性页,在启动参数处写上LANG=ja_JP.UTF-8 %command%即可。

然而很不幸的是,这样操作是行不通的,起码在我测试的最新版SteamOS3上是不可行的。SteamOS3似乎并没有提供ja_JP.UTF-8。因此这个设置将会导致Locale回落至ASCIIC)。和完全没转区的效果一样。

最直接的方法自然是给SteamOS本身加上ja_JP.UTF-8支持。但是这就涉及到了修改系统文件,需要取得root访问权限,需要解除系统的只读保护,而且最关键的是每次系统更新后都需要重新操作,对一般玩家来说并不具有可行性。

不过天无绝人之路,我在gayhub上找到了这样一篇教程Solution for locale and character encoding issues in Japanese games on Steam Deck。里面详细的解释了问题的所在,并给出了不需要如此操作的方法。只需要下载 steam-deck-jp-locale-utf8.tar.zst 文件,然后解压至SteamOS的home文件夹中(/home/deck)。并将游戏的启动参数填为 LANG=ja_JP.UTF-8 ~/locales/run.sh %command% ,即可将proton的代码页设置为日文UTF-8从而顺利转区。

注意:
路径不能错误(对Linux不熟悉的新手很容易将SteamOS的/home/deck/home路径弄混)。并且,在运行之前,需要确认解压后的/home/deck/locales/run.sh文件是可执行的(右键,属性,权限,勾选权限下的允许执行的复选框)。否则点击启动游戏后,Steam不会有任何反应(按钮变绿然后马上就恢复成了未启动状态)。

经过以上操作以后,大多数可以免安装运行的日区游戏就已经可以正常运行了。

2.需要安装的小黄油

古早的小黄油往往有着特别的运行限制。例如安装时候需要输入CD Key,而这份CD Key是保存在注册表中的,每次游戏启动时会需要检查。或者比如会往%AppData%里拉屎,会要求特定的字体文件等。这里作为例子的《幻聖神姫LINEAGE》本体就有这样的问题。它的免认证补丁仅有2DJ放出的版本,但是这个版本的补丁做得很有问题,和FD版本直接NoDVD相比,本体虽然免认证了,但是没有完全免。游戏在安装和运行时候依然还是会检查你的光驱。具体来说就是你在安装的时候,必须要把安装文件挂载在虚拟磁盘或者虚拟光驱上运行安装程序,如果你是复制到硬盘某个目录下安装的话是没用的。游戏启动后依然会要求你插入DVD光盘。

虽然2DJ放出的免认证补丁要求你在安装后修改注册表,把安装路径改为光盘盘符,但是实际上这步是没有效果也不必要的。虽然安装程序会将游戏安装到的路径与安装时的来源路径写入注册表,但是只要你安装完成,即使你修改注册表里的内容、修改本地游戏的路径、把原本挂载iso的虚拟光驱弹出,都不会影响游戏正常运行,很容易给人一种其实游戏压根没有验证的错觉。但是如果你直接把游戏的安装目录拷到其他电脑上或者Steam Deck上就会发现是不能运行的。而如果你一开始没有从光盘或者虚拟光驱安装游戏,那么即使事后再怎么修改注册表修改路径,游戏启动时依然会报要求插入光盘的错误。

很显然,安装程序在我们没看到的地方拉屎了,这怎么办呢?

跟踪分析逆向安装程序自然是个办法,但是这对绝大多数用户来说难度过高了,而且对每个游戏都这么搞也不切实际。最简单的办法自然就是正攻法,直接在proton中用“正规”的方法进行正规安装。前面说过,proton对每一个游戏实际上是开了一个独立的沙盒。这个沙盒其实并不绑定某个具体的exe文件,我们完全可以在这个沙盒中正常的执行安装程序,然后运行这个沙盒中安装好的游戏exe文件。

那么最简单的办法自然就是将整个光盘的内容包括安装程序一起全都复制到Steam Deck,然后运行安装程序。例如我在这里将安装目录复制到/home/deck/ISO/SL/下,然后直接运行,可以看到安装程序正常地启动了,并且可以正常地安装游戏到c:\Triangle\Sacred_Lineage目录下。然而到这里就出现问题了,游戏启动时候依然会报错要求插入DVD盘,为什么会这样呢?

其实很显然,我们这样直接运行安装程序,那么就回到了最前面的问题,安装程序的运行路径并不是在光驱下运行的。如同上面所说,如果你只是把安装程序复制到硬盘的某个路径上运行安装,是无法通过游戏自己的检测的。想要验证这点其实很简单,只要看一看这个沙盒中安装后安装程序写入注册表的内容就好了。

在桌面模式的应用商店中搜索安装protontricks,这个是我们用于管理proton不同沙盒的非常方便的工具。毋需多言,每一个沙盒都有着自己的注册表、进程列表乃至目录文件。它们各自独立,且和宿主机不共通。因此要想具体的打开编辑某一个沙盒的配置就需要使用protontricks,在对应的沙盒中打开各自的任务管理器、注册表编辑器、资源管理器等。来查看、修改、运行其中的配置。通过protontricks打开我们刚刚建立的沙盒,选择“Select the default wineprefix”然后“run regedit”。

在Steam Deck中通过protontricks启动沙盒或者其中的工具可能会需要长达半分钟甚至1分钟的等待,在此期间Steam OS虽然不会卡死,但是也不会有进度提示,所以需要耐心等待,不要看到窗口没弹出来就以为启动失败了

熟悉的注册表编辑器出现了。直接定位至HKEY_CURRENT_USER\Software\TRIANGLE\Sacred_Lineage, 查看安装路径,目标路径确实是c:\Triangle\Sacred_Lineage,但是CDDir却是Z:\home\deck\ISO\SL。这样显然不行。

实际上,这个路径就是Wine(和proton)对windows程序的兼容方式。例如我们这里的例子,安装程序在一个linux文件结构的沙盒中运行了自身,然后它需要获取自己所在的路径,写入注册表,并且可能需要调用自己同目录下的其他文件,那么他应该用什么路径访问这些文件呢?Wine的做法就是将整个linux的目录全部挂载在Z盘符下。例如我们运行了home/deck/ISO/SL/setup.exe。那么程序就会认为自己所在的目录是Z:\home\deck\ISO\SL,并在这个目录下寻找所有和自己同路径的文件。

对于一般的Windows程序来说,这样的处理就已经可以让他们正常工作了。但是对我们来说却让人非常头大。因为我们需要的显然不是让它运行在随意一个目录下就行。直接通过Steam方式启动游戏是做不到这点的。所以我们还是需要在protontricks里做这些操作

回到上一步,选择Run winecfg。wine默认只有C盘和Z盘两个路径,我们需要在这里创建一个虚拟光驱的盘符,挂载我们前面的安装目录。在Drivers页面选择Add,添加D盘盘符,Path设置为我们安装程序的路径。在这里我将安装目录挪到了沙盒的路径/home/deck/.local/share/Steam/steamapps/compatdata/1234567890/下(数字是这个沙盒对应的ID,每个沙盒都不一样,我这里只是随便举个例子)和drive_c文件夹放在同一目录下并命名为SL。因此Path我们也直接设置为../SL即可。

随后点开show Advanced按钮,在Type选项中选择CD-ROM。这对很多游戏来说应该是没必要的,但是对于这里例子中的《幻聖神姫LINEAGE》来说是必须的,因为它会检测安装路径是否是光驱,如果是硬盘的话,游戏在安装好后是无法启动的。

执行完上面的操作后,我们就成功地把安装文件所在的文件夹在沙盒中挂载为了光驱D盘。此时回到上一步,选择Run Explorer,经过一段等待后,在打开的资源管理器中,打开D盘并运行其中的Setup.exe进行安装。随后可以打开注册表编辑器,可以看到这次的安装路径的CDDir项终于正常显示为D:了!

到这里基本就大功告成了,回到Steam页面属性部分,将游戏的指向路径改为我们安装到的目标路径,/home/deck/.local/share/Steam/steamapps/compatdata/1234567890/drive_c/Triangle/Sacred_Lineage/SL.exe,并按照上一部分所述配置好转区和兼容层的版本后,就可以正常加载游戏了

结尾

由于Steam Deck本身不方便直接截图,所以就只是大概的在关键环节拍了两张图片,实际操作起来只要跟着步骤一步步来是一点也不难的。整个过程中最让人困惑的地方主要就在于对proton的工作原理的理解上。如果能够理解到proton的类似沙盒的兼容实现方式的话,就不难想到用正常windows下的安装方式就是最简单方便的。所幸近些年的大多数小黄油不但不再有转区的困扰,甚至有的自己就上了Steam,再也不用这么折腾了,真是懒癌福音。

评论

  1. 匿名
    Windows Edge 109.0.1518.61
    1年前
    2023-1-24 16:21:56

    感谢!作为编程小白,也能顺利玩上了,谢谢大佬!

  2. 匿名
    Windows Edge 109.0.1518.70
    1年前
    2023-1-31 18:50:33

    很有用的文章,但最近玩的素晴日汉化很奇怪,一定要在中国区才能正确显示汉化,其他区都是乱码。老游戏是不方便

  3. hakokolo
    Windows Edge 114.0.1823.67
    9月前
    2023-7-02 18:22:33

    请问有办法将 proton 的代码页设置为中文UTF-8来转区吗?
    我玩有些老游戏,如洞窟物语(非Steam版)、英雄无敌3的中文是乱码.
    我也不想修改系统文件。
    有办法象你提供的steam-deck-jp-locale-utf8.tar.zst附件那样实现吗?

  4. 匿名
    Windows Chrome 117.0.0.0
    6月前
    2023-10-05 19:46:04

    可以转载到b站专栏吗,留个存档

    • 夏影
      博主
      匿名
      Windows Edge 118.0.2088.69
      5月前
      2023-10-30 2:54:22

      可以的

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇