Moonlight-Switch:Nintendo Switch平台的Moonlight游戏串流客户端

Moonlight port for Nintendo Switch

分支9Tags35
文件最后提交记录最后更新时间
1 个月前
1 个月前
30 天前
7 天前
7 天前
1 年前
7 天前
2 个月前
2 年前
7 天前
1 个月前
1 年前
8 个月前
7 天前
2 年前
2 年前
1 年前
7 个月前

Moonlight-Switch

Moonlight-Switch 是 Moonlight 游戏串流项目 的任天堂 Switch 平台移植版本。

截图

预览

安装方法

Switch

  1. 下载最新的 Moonlight-Switch 发布版本
  2. 将 Moonlight.nro 文件放入 sdcard:/switch/Moonlight-Switch 目录;
  3. 通过 Title Redirection(标题重定向)启动 hbmenu(以获取完整内存访问权限);
  4. 启动 Moonlight。

或者从 HB App Store 下载。

Tip

若要使用高比特率设置,尤其是在 1080p 分辨率下,您需要对主机的 CPU/GPU 进行超频。

要了解更多相关信息,您可以查看 Sys-Clk 自制程序,或完整的 Atmosphere 构建包 - 4IFIR,其中包含超频主机所需的一切工具。

Warning

若因使用本软件导致您的主机出现任何损坏,本人概不负责!

我自己正在使用 4IFIR,并未发现任何问题,但任何情况都有可能发生。因此,请自行判断并对您对设备所做的操作负责!

iOS、tvOS 和 macOS

接受 TestFlight 邀请 并从其中下载应用。

Discord

欢迎加入 Moonlight discord server,你可以在“switch-help”频道找到我。

控制方式

鼠标

通过触摸屏可以移动光标,轻点即为左键点击,双指滑动可实现滚动。

触摸屏幕时,ZR 和 ZL 按钮将分别作为鼠标左键和右键使用。

同样在触摸屏幕时,左摇杆(L)和右摇杆(R)可当作滚轮使用。

USB 鼠标同样适用。

键盘

你可以使用屏幕键盘,三指轻点屏幕即可调出。

USB 键盘同样适用。

游戏手柄

默认情况下,Switch 手柄配置为 X360 手柄(A/B 与 X/Y 按键互换)。按键映射可在应用设置中进行调整。

最多支持 5 个游戏手柄(包括掌机模式)。单独的 Joy-Con 也支持。

六轴感应(SixAxis)

若要使用陀螺仪和加速度计,你需要将 Sunshine 服务器配置为将控制器识别为 DS4 控制器。此功能仅对 1 号玩家控制器有效。

游戏内覆盖层

默认情况下,同时按下“-”和“+”键或按住键盘上的 ESC 键可打开覆盖层。

按键组合和按住时间可在设置中进行配置。

NSP 转发器

应用支持 NSP 转发器,可使用预定义配置立即启动串流。请先将想要启动的应用添加到收藏列表中。你可以使用 NSP Forwarder Generator 生成转发器。

手动创建

如果你希望不借助生成器手动创建转发器,需要创建一个能向应用传递以下参数的转发器:

  • --ip - 你的 PC 的 IP 地址
  • --appid - 要启动的应用 ID,该应用必须已添加到“收藏列表”中(你可以在 /switch/Moonlight-Switch/settings.json 中找到它)
  • --appname - 应用名称,不包含任何空格

示例: --ip=192.168.1.101 --appid=1233211234 --appname=Steam

iOS 转发器 / 深度链接

iOS 版本注册了 moonlightswitch:// URL scheme。支持的深度链接使用与 Switch 转发器相同的参数:

moonlightswitch://launch?ip=192.168.1.101&appid=1233211234&appname=Steam

启动时,可以使用 host 代替 ip 来通过主机 MAC 地址进行连接。

iOS 16+ 版本还支持快捷指令操作。“启动游戏”操作接受一个 Moonlight“游戏”值。使用“获取收藏游戏”从已保存的收藏中选择,或使用“创建游戏”通过“主机”、“应用 ID”和“应用名称”手动构建游戏,然后将结果传递给“启动游戏”。使用“获取游戏详情”可提取所选游戏的“应用 ID”、“主机”、“应用名称”或“显示主机”,使用“获取游戏深度链接”可从“游戏”创建 moonlightswitch:// URL。收藏的游戏行在可用时会使用缓存的游戏封面。“主机”接受已配对的 PC IP 地址或 MAC 地址。

收藏的应用可以生成 iOS 快捷指令转发器。转发器操作会打开快捷指令编辑器,并将生成的深度链接复制到剪贴板作为备用。在 iOS 16+ 上,建议优先使用 Moonlight 的“启动游戏”操作;在旧版 iOS 上,可添加“打开 URL”操作并粘贴复制的 moonlightswitch:// URL。使用快捷指令的“添加到主屏幕”选项来创建图标。

本地化

  • 英语 (100%)
  • 俄语 (100%)
  • 德语 (86%)
  • 西班牙语 (72%)
  • 日语 (70%)
  • 中文(简体)(86%)
  • 捷克语 (70%) - 暂不支持,因为 HOS 没有该系统语言

贡献方式

如果您想改进现有语言或添加新语言,请按照以下说明操作:

  1. 此处申请修改语言的权限
  2. 通过创建 issue 通知我,标题为“[Localization] - {语言名称}”,在描述中注明您在 POEditor 上的昵称
  3. 翻译完成后,在之前创建的 issue 中通知我

您有两种方式添加翻译:

  1. 如果希望在“贡献者”部分显示您的个人资料,您可以通过创建 PR 来添加本地化内容
  2. 如果不介意,我可以自行添加

如果您想测试您的翻译,可以按照构建说明操作,或者让我创建一个包含您本地化内容的构建版本,我会将该构建版本附加到 issue 中。

Warning

目前应用内无法选择语言,语言是从系统设置中获取的,因此无法添加 HOS 不支持的本地化(例如捷克语就出现了这种情况)。

构建 Moonlight-Switch

cd 'folder/to/store/the/sources'

# Clone this repo with submodules
git clone https://github.com/XITRIX/Moonlight-Switch.git --recursive
cd Moonlight-Switch

Switch

要为 Switch 构建,必须先搭建标准开发环境。搭建方法请参考入门指南

cmake -B build/switch -DPLATFORM_SWITCH=ON
make -C build/switch Moonlight.nro -j$(nproc)

个人电脑(Windows/Linux/MacOS)

要为个人电脑构建项目,需满足以下组件要求:

  • cmake/make 构建系统
  • 支持 C++17 标准的 C++ 编译器

请参考适用于您特定操作系统的常用信息来源。通常,构建此项目所需的命令如下所示:

cmake -B build/pc -DPLATFORM_DESKTOP=ON -DCMAKE_BUILD_TYPE=Release
make -C build/pc -j$(nproc)

另外,请注意 resources 文件夹必须位于工作目录中,否则程序将无法找到着色器。

Windows (MSYS2)

通过 MSYS2 系统软件包支持 Windows 桌面版构建,包括 x64 和 ARM64 架构。

建议将 MSYS2 安装在 C:\msys64 目录下。

x64 (UCRT64)

安装所需软件包:

pacman -S --needed --noconfirm \
  mingw-w64-ucrt-x86_64-gcc \
  mingw-w64-ucrt-x86_64-cmake \
  mingw-w64-ucrt-x86_64-ninja \
  mingw-w64-ucrt-x86_64-pkgconf \
  mingw-w64-ucrt-x86_64-SDL2 \
  mingw-w64-ucrt-x86_64-ffmpeg \
  mingw-w64-ucrt-x86_64-curl \
  mingw-w64-ucrt-x86_64-mbedtls \
  mingw-w64-ucrt-x86_64-jansson \
  mingw-w64-ucrt-x86_64-libpng \
  mingw-w64-ucrt-x86_64-opus \
  mingw-w64-ucrt-x86_64-expat \
  mingw-w64-ucrt-x86_64-zstd

使用捆绑预设进行构建:

这些 Windows 预设默认使用原生 D3D11(DirectX 11)。仅当你希望强制使用旧版 OpenGL 路径时,才在配置时传递 -DUSE_D3D11=OFF

cmake --preset windows-ucrt64-release
cmake --build --preset windows-ucrt64-release

生成的可执行文件位于 build/windows-ucrt64 目录中。构建过程会将所需的 MSYS2 UCRT64 DLL 放置在 Moonlight.exe 旁边;请同时保留生成的 resources 目录,因为 UCRT64 构建使用外部资源而非 libromfs

ARM64 (CLANGARM64)

要构建原生 Windows ARM64 可执行文件,请安装 CLANGARM64 软件包:

pacman -S --needed --noconfirm \
  mingw-w64-clang-aarch64-clang \
  mingw-w64-clang-aarch64-cmake \
  mingw-w64-clang-aarch64-ninja \
  mingw-w64-clang-aarch64-pkgconf \
  mingw-w64-clang-aarch64-SDL2 \
  mingw-w64-clang-aarch64-ffmpeg \
  mingw-w64-clang-aarch64-curl \
  mingw-w64-clang-aarch64-mbedtls \
  mingw-w64-clang-aarch64-jansson \
  mingw-w64-clang-aarch64-libpng \
  mingw-w64-clang-aarch64-opus \
  mingw-w64-clang-aarch64-expat \
  mingw-w64-clang-aarch64-zstd

使用 ARM64 预设进行构建:

cmake --preset windows-clangarm64-release
cmake --build --preset windows-clangarm64-release

生成的可执行文件位于 build/windows-clangarm64。构建过程会将所需的 MSYS2 CLANGARM64 DLL 放置在 Moonlight.exe 旁边;请同时保留生成的 resources 目录,因为桌面 ARM64 构建也使用外部资源,而非 libromfs

iOS / tvOS:

# build libromfs generator
./build_libromfs_generator.sh

# prepare vcpkg
./extern/vcpkg/bootstrap-vcpkg.sh

1. 为 arm64 iphoneOS 构建

# 1. Generate a Xcode project
cmake -B build/ios -G Xcode -DPLATFORM_IOS=ON

# 2. open project in Xcode
open build/ios/*.xcodeproj

# 3. Set up Team and Bundle Identifiers in Xcode, then connect devices to run.

2. 为 arm64 tvOS 构建

# 1. Generate a Xcode project
cmake -B build/tvos -G Xcode -DPLATFORM_TVOS=ON

# 2. open project in Xcode
open build/tvos/*.xcodeproj

# 3. Set up Team and Bundle Identifiers in Xcode, then connect devices to run.

致谢

非常感谢 Rock88 及其 Moonlight-NX,本项目借鉴了其中大量的流媒体代码👍。

感谢 XfangfangBorealis 库的维护。没有它,iOS 移植将无法实现。

感谢 Averne 将 NVDEC 实现整合到 FFmpeg 中,并提供了有关如何启用它的有益指导。

同样要特别感谢 Cooler3D 在 Deko3D 实现以及解决性能问题方面提供的帮助。

Switch 的 deko3d upscale 路径包含 AMD FidelityFX Super Resolution 1.0 的 EASU 和 RCAS 代码,这些代码译自 MIT 许可的 GPUOpen FidelityFX-FSR 参考实现。版权所有 (c) Advanced Micro Devices, Inc. 保留所有权利。

项目介绍

任天堂Switch平台的Moonlight端口【此简介由AI生成】

定制我的领域
161.56 K98访问 GitHub