Table of Contents

使用 Wine 安装编辑器

中级

虽然你可以在 Linux 上编译和运行 Stride 游戏,但由于编辑器使用 WPF 作为其 UI 框架,它仍然仅限 Windows 使用。不过,从 4.4.0-beta5 版本开始,已经可以借助 Proton 等兼容层在 Linux 上使用编辑器。

Note

编辑器正在重写为跨平台版本。

Warning

通过兼容层运行 Game Studio 不受支持! 请做好途中遇到问题的准备。

限制

  • 你可能会在编辑器中遇到图形显示异常。
  • 引擎的一次更新可能会破坏你的环境配置。
  • 无法通过编辑器构建。 你必须原生构建游戏来进行测试。
  • stride studio 命令将无法打开编辑器。

前言

虽然可以使用 Wine 运行 Game Studio,但在 Proton 上的体验要好得多。本指南将使用 ge-proton11-5,这是撰写本文时 GE-Proton 的最新版本。

此外,本指南将提供针对 Bottles(一个 Wine/Proton 管理器)的详细说明。如果你希望使用其他应用,例如 UMU Launcher 或 Heroic Game's Launcher,总体步骤仍然适用。

先决条件与准备

开始之前,请确保你的 Linux 系统已准备就绪。

  1. 安装 Bottles。 可以从 flathub 下载。

  2. 安装 Linux 前置依赖。 了解更多请访问设置与要求。

  3. 安装适用于 Linux 的 .NET 10 SDK。 下载并安装最新的 .NET 长期支持(LTS)版本(目前为 .NET 10)。详情请参阅在 Linux 上安装 .NET。

  4. 安装 Stride.CLI。 该工具可以让你在 Linux 机器上管理不同版本的引擎,无需使用启动器。

    dotnet tool install -g stride.cli # 安装 CLI 工具
    

    有关 Stride CLI 工具的更多信息,请访问 Stride CLI

此外,你还需要下载几个 Windows 应用程序。

  1. 下载适用于 Windows 的 .NET 10 SDK 安装程序。 我们需要通过兼容层安装它,Game Studio 才能正常工作。可以从此页面获取。
  2. 下载 Stride 安装程序。 我们实际上只需要用它来安装 Stride 的 Windows 前置依赖。可以从官方网站获取。

安装步骤

  1. 安装 Proton 运行器。 打开 Bottles,通过菜单(位于右上角)> Preferences > Runners 安装 Proton。本指南将使用 ge-proton11-5,但通常建议使用最新版本。

    Note

    你之后随时可以更改 Proton/Wine 的版本。

  2. 创建新的前缀(prefix)。 在 Bottles 中点击左上角的 ➕ 按钮即可完成。

    为你的 bottle(前缀)取一个名称,并确保选择正确的 Proton 运行器。

    bottle 创建完成后,点击它进入。

  3. 使用 Proton 运行适用于 Windows 的 .NET 10 SDK 安装程序。 在 Bottles 中,点击 ▶️ Run Executable... 并选择 SDK 安装程序的 .exe 文件。如果你在先决条件一节中漏掉了这一步,可以从此页面获取安装程序。

    按照屏幕上的说明完成安装。

  4. 运行 Stride 安装程序。 在 Bottles 中,点击 ▶️ Run Executable... 并选择 StrideSetup.exe 文件。如果你在先决条件一节中漏掉了这一步,可以从此页面获取安装程序。

    按照屏幕上的说明操作,直到安装成功或崩溃(只要它成功装好了前置依赖,就没问题)。

  5. 在你的系统上安装引擎。 Stride CLI 让你直接通过命令行管理引擎的安装。我们将用它来下载编辑器应用程序。

    # 安装最新版本(包括 beta 版)
    stride sdk install --prerelease
    
  6. 创建指向系统 NuGet 缓存的符号链接。 编辑器需要访问 NuGet 缓存文件夹。在大多数 Linux 发行版中,它位于 ~/.nuget。

    对于 Bottles,点击 Browse C:/ drive 旁边的按钮,找到你的用户文件夹(应在 drive_c/users/<nameOfUser> 中)。

    在你的用户文件夹中打开终端,并用以下命令创建符号链接:

    ln -s ../../../path/to/system/user/folder/.nuget .nuget
    
    Warning

    对于 bottles 以及所有 flatpak 应用,符号链接必须是相对路径!

  7. 安装所需的 NuGet 包。 我们还需要向缓存中下载几个包。最简单的方式是:

    • 创建一个新的 C# 项目

      dotnet new classlib -n StrideProtonFix && cd StrideProtonFix
      
    • 编辑 .csproj 文件并添加对这些包的引用

      <ItemGroup>
          <PackageReference Include="runtime.any.System.Runtime" Version="4.3.0" />
          <PackageReference Include="runtime.any.System.IO" Version="4.3.0" />
          <PackageReference Include="runtime.win.System.Diagnostics.Debug" Version="4.3.0" />
          <PackageReference Include="runtime.any.System.Reflection.Primitives" Version="4.3.0" />
          <PackageReference Include="runtime.any.System.Diagnostics.Tools" Version="4.3.0" />
          <PackageReference Include="runtime.any.System.Text.Encoding.Extensions" Version="4.3.0" />
          <PackageReference Include="runtime.any.System.Globalization.Calendars" Version="4.3.0" />
          <PackageReference Include="runtime.any.System.Globalization" Version="4.3.0" />
          <PackageReference Include="runtime.win.Microsoft.Win32.Primitives" Version="4.3.0" />
          <PackageReference Include="runtime.win.System.Net.Primitives" Version="4.3.0" />
          <PackageReference Include="runtime.win.System.Console" Version="4.3.0" />
          <PackageReference Include="runtime.any.System.Reflection.Extensions" Version="4.3.0" />
          <PackageReference Include="runtime.win.System.Runtime.Extensions" Version="4.3.0" />
          <PackageReference Include="System.Security.Principal.Windows" Version="4.3.0" />
          <PackageReference Include="System.Private.Uri" Version="4.3.0" />
          <PackageReference Include="runtime.any.System.Text.Encoding" Version="4.3.0" />
          <PackageReference Include="runtime.any.System.Runtime.Handles" Version="4.3.0" />
          <PackageReference Include="runtime.any.System.Reflection" Version="4.3.0" />
          <PackageReference Include="runtime.any.System.Resources.ResourceManager" Version="4.3.0" />
          <PackageReference Include="runtime.win.System.Net.Sockets" Version="4.3.0" />
          <PackageReference Include="System.Net.NameResolution" Version="4.3.0" />
          <PackageReference Include="runtime.any.System.Threading.Timer" Version="4.3.0" />
          <PackageReference Include="runtime.any.System.Threading.Tasks" Version="4.3.0" />
          <PackageReference Include="runtime.any.System.Diagnostics.Tracing" Version="4.3.0" />
          <PackageReference Include="runtime.any.System.Collections" Version="4.3.0" />
          <PackageReference Include="runtime.any.System.Runtime.InteropServices" Version="4.3.0" />
          <PackageReference Include="System.Security.Claims" Version="4.3.0" />
          <PackageReference Include="runtime.win.System.IO.FileSystem" Version="4.3.0" />
      </ItemGroup>
      
    • 构建项目

      dotnet build StrideProtonFix.csproj
      
  8. 确保 icu.dll 和 icuuc.dll 使用 Windows 版本。 在编写本指南时,我们发现我们的前缀会尝试使用上述 DLL 的 Linux 版本,导致 Game Studio 启动时崩溃。这个问题可能仅限于我们当时使用的 Proton 版本,因此你可能不需要这一步。

    在 Bottles 中,进入 Settings > Compatibility > DLL Overrides,并将 icu.dll 和 icuuc.dll 添加到列表中。现在可以将它们的覆盖设置为 Native (Windows)。

  9. 启动 Game Studio。 最后,我们可以使用前缀启动编辑器。

    在 Bottles 中,点击 ➕ Add shortcuts... 按钮,并从 drive_c/users/<nameOfUser>/.nuget/packages/stride.gamestudio/<engineVersion>/tools/net10.0-windows7.0/Stride.GameStudio.exe 中选择 Game Studio 可执行文件。

    Tip

    在快捷方式名称中加入引擎版本,以免混淆。

到这里你应该已经可以正常运行了。如果编辑器仍然无法工作,请查看故障排除。

故障排除

如前所述,这种方式使用引擎并不受支持,因此你可能会遇到一些问题。以下是其中几个问题及其解决方案/临时办法:

出现隐藏窗口

使用多个缩放比例不同的显示器时可能会遇到这个问题。作为临时办法,你可以启用虚拟桌面(virtual desktop),它会为窗口创建一个虚拟的桌面环境。

在 Bottles 中,可以进入 Settings > Display > Advanced Display Settings > Virtual Desktop 来完成。也可以按快捷方式分别调整。

StrideSetup.exe 在完成前崩溃

如安装步骤中所述,只要它成功安装了前置依赖,这不应造成任何问题。

Game Studio 提示安装 .NET Runtime

这可能意味着:

  • 你在安装过程中漏掉了一步,没有运行 .NET SDK 安装程序。
  • 你需要运行更新版本 .NET 的安装程序。
  • Game Studio 因为你所使用的 Proton/Wine 版本而无法检测到 .NET。

要解决这个问题,你需要重新运行 Windows .NET SDK 安装程序、尝试安装更新版本的 Windows .NET SDK,或者尝试更改前缀所使用的运行器。

Game Studio 启动时崩溃

原因可能有很多,因此最好尝试从命令行运行 Game Studio。

在 Bottles 中,进入 Tools > Command Line,并尝试用以下命令启动 Game Studio。

dotnet drive_c\users\<nameOfUser>\.nuget\packages\stride.gamestudio\<engineVersion>\tools\net10.0-windows7.0\Stride.GameStudio.dll

Can't recognize 'dotnet' as an internal or external command

这表示你的前缀中没有 .NET 10 运行时安装程序。

要解决这个问题,请按照安装步骤重新运行 Windows .NET SDK 安装程序。

与 .dll 文件相关的错误

这可能是因为 Game Studio 试图使用某些库的 Linux 原生版本,而不是 Windows 版本。你需要覆盖这些 DLL,并将它们显式设置为使用 Windows 版本。

在 Bottles 中,进入 Settings > Compatibility > DLL Overrides,并将出问题的 DLL 添加到列表中。现在可以将它们的覆盖设置为 Native (Windows)。

Note

重试之前,请务必重启终端!

它居然能用了!

这意味着 Game Studio 检测不到 .NET 运行时,很可能是前缀所使用的运行器导致的。尝试更换为其他版本后重试。

我的问题不在列表中

如果是这种情况,你可以尝试以下做法:

  • 尝试更改前缀所使用的运行器。
  • 尝试在 Stride Discord 上求助——可能有人遇到过同样的问题。
  • 使用全新的前缀重新按照指南操作。