跳转至

在Linux上运行SDVX

前言

虽然spice2x没有官方的兼容,但是通过Wine的模拟也是可以在Linux上运行的

本文会以基于Wayland+KDE环境的Arch Linux作为演示,使用针对wine特化的修改版spice2x和bmsound-wine

详细配置如下:

  • CPU: Intel Core i5-14600KF
  • GPU: NVIDIA GeForce RTX 4060 (Driver: 590.48.01)
    • 使用开源驱动+dkms编译
  • 系统: Arch Linux + KDE Plasma(Wayland)
    • 内核: linux-zen
  • Wine 11.1

Linux下的已知问题

  • 修改版spice与bmsound-wine都处在开发阶段,可能会有意料之外的问题
  • 音频可能会轻微爆音,全屏启动游戏可缓解
  • 全屏启动游戏会导致副屏白屏,如果想要同时使用,可以开启窗口化解决。在cfg里设置无边框窗口可去除标题栏
  • 窗口下游戏可能会突然卡住,然后恢复,全屏可缓解
  • HID灯光不可用

环境准备

显卡驱动 & Vulkan

根据自己的显卡安装显卡驱动与Vulkan环境

并未测试笔记本,如有需要请自行调整相关的包,而不是照抄

NVIDIA

Note

本文案例均使用开源驱动,NVIDIA使用dkms手动根据内核编译。NVIDIA新老显卡的驱动并不相同,老显卡可能需要使用闭源驱动,请参考Arch官方的说明

本文以NVIDIA 40系(NV190/ADXXX)显卡为例:

安装对应内核的头文件,以我的zen内核为例:

sudo pacman -S --needed linux-zen-headers # 如果你是标准内核或者lts内核请自己修改

编译并安装驱动

sudo pacman -S nvidia-open-dkms nvidia-utils lib32-nvidia-utils vulkan-icd-loader lib32-vulkan-icd-loader

AMD

sudo pacman -S mesa lib32-mesa vulkan-radeon lib32-vulkan-radeon xf86-video-amdgpu

Intel

sudo pacman -S mesa lib32-mesa vulkan-intel lib32-vulkan-intel

音频服务器

sudo pacman -S pipewire pipewire-pulse pipewire-alsa pipewire-jack wireplumber

编解码器

sudo pacman -S gstreamer gst-plugins-good gst-plugins-ugly gst-libav

git与编译环境

sudo pacman -S git base-devel cmake

Wine & Winetricks

sudo pacman -S wine wine-mono winetricks

32位源(可选)

编辑/etc/pacman.conf

vim /etc/pacman.conf

取消multilib两行的注释

[multilib]
Include = /etc/pacman.d/mirrorlist

然后更新系统

sudo pacman -Syu

禁用屏幕锁定

记得关闭KDE默认的屏幕自动锁定,你也不想打一半给你锁屏了吧

img

环境搭建

  1. 打开终端,配置WINEPREFIX与游戏路径环境变量,本文使用下方路径,你可以参考

    注意

    环境变量仅在当前终端窗口生效,关闭终端后需重新设置,所以接下来的配置请勿关闭终端窗口

    export WINEPREFIX=~/KFC/wine
    export GAMEDIR=~/KFC/contents   # 游戏记得放到这里面
    mkdir -p ~/KFC
    
  2. 初始化Wine,并安装必备的库

    wineboot --init
    winetricks dxvk d3dcompiler_43 d3dx9_43
    

    img

  3. 安装最新的nixac spice2x

    点此下载

    下载完成后将spice64.exe解压到contents文件夹下,无需cfg。然后将stubs/64文件夹下的所有文件解压到contents/modules

    img

  4. 安装bmsound-wine

    bmsound-wine是游戏的音频引擎bmsound的wine特化版本,原生的引擎在wine下有一些问题,不太稳定

    cd ~/KFC
    git clone https://codeberg.org/nixac/bmsound_wine
    cd bmsound_wine
    git fetch --tags
    git checkout tags/v0.2.3
    git submodule update --init --recursive
    make -Rs build TARGET_ARCH=x64 TARGET_TYPE=Release
    cp bin/Release/x64/bmsound-* $GAMEDIR/modules
    

  5. 启动cfg,配置游戏键位,网络等

    cd $GAMEDIR
    wine spice64.exe -cfg
    

    无边框窗口化配置如图:

    img

    Note

    如果你是2K及以上的分辨率,懒得改系统的分辨率,也可以填写Window Size和Subscreen Size来强制缩放游戏窗口到你的分辨率上,但是会增加卡顿

  6. 启动游戏

    export LD_LIBRARY_PATH="$GAMEDIR/modules"
    export WINEDLLPATH="$GAMEDIR/modules"
    
    wine spice64.exe \
        -audiobackend pipewire \
        -audiodummy 
    

启动脚本

将上述内容配置好以后,之后可通过编写脚本一键启动,内容如下

#!/bin/sh
export GAMEDIR=~/KFC/contents
export WINEPREFIX=~/KFC/wine
export LD_LIBRARY_PATH="$GAMEDIR/modules"
export WINEDLLPATH="$GAMEDIR/modules"

cd $GAMEDIR
wine spice64.exe \
    -audiobackend pipewire \
    -audiodummy 

我将其放置在了 ~/KFC 目录下,命名为start.sh并给与执行权限

sudo chmod +x start.sh

之后在脚本所在路径下执行即可

./start.sh

参考文献:
Arcade Linux Research
Two Torial