Moonlight port for Nintendo Switch
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 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
- 下载最新的 Moonlight-Switch 发布版本。
- 将 Moonlight.nro 文件放入 sdcard:/switch/Moonlight-Switch 目录;
- 通过 Title Redirection(标题重定向)启动 hbmenu(以获取完整内存访问权限);
- 启动 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 没有该系统语言
贡献方式
如果您想改进现有语言或添加新语言,请按照以下说明操作:
- 在此处申请修改语言的权限
- 通过创建 issue 通知我,标题为“[Localization] - {语言名称}”,在描述中注明您在 POEditor 上的昵称
- 翻译完成后,在之前创建的 issue 中通知我
您有两种方式添加翻译:
- 如果希望在“贡献者”部分显示您的个人资料,您可以通过创建 PR 来添加本地化内容
- 如果不介意,我可以自行添加
如果您想测试您的翻译,可以按照构建说明操作,或者让我创建一个包含您本地化内容的构建版本,我会将该构建版本附加到 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,本项目借鉴了其中大量的流媒体代码👍。
感谢 Xfangfang 对 Borealis 库的维护。没有它,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. 保留所有权利。