Sunshine 游戏应用添加与配置:从 3 秒闪退到一键串流
发布时间:2026/8/18 10:25:51 作者:尧图编辑部 阅读量:1,286

Sunshine 游戏应用添加与配置从 3 秒闪退到一键串流【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/SunshineSunshine 是一款自托管的游戏串流服务器它不负责造游戏只负责一件事把你电脑上的游戏变成 Moonlight 客户端里一个可点击的卡片。而游戏应用的添加与配置正是让这个卡片真正跑起来的钥匙——填错一个字段画面就停在黑屏。一、先复盘一次真实的翻车某天晚上你加班回家躺在沙发上摸出平板点开 Moonlight 里刚配好的《赛博朋克 2077》。串流画面亮起桌面出现了……三秒后直接退回主界面屏幕上只剩一句串流已断开。第一次接触 Sunshine 应用配置的人十有八九都经历过这一幕。现象应用刚拉起就断流不是网络问题不是显卡问题而是启动方式选错了。Sunshine 在执行完命令后会盯着这个进程看如果它认为命令跑完、进程退出了就判定应用已经关闭于是顺手掐断串流。而你填在cmd里的 Steam 启动器恰恰是一个开个门就撒手的程序——它把游戏进程交接出去后自己就退出了Sunshine 以为游戏关了。结论启动方式决定生死在往下配置任何游戏之前先记住一句话你得告诉 Sunshine这个应用到底该不该被死死盯住。这就是理解整个应用配置体系的入口也是本文要带你搞懂的全部核心。配置文件本身不难难的是分清三种启动姿势各自的脾气。二、三种启动姿势对应三类游戏Sunshine 的应用配置围绕一个apps.json存放于配置目录展开每个游戏就是其中的一个对象。打开 Web UI 的 Applications 页面你会看到已添加的应用列表点击 Add New 就能新建。用 URI 一键启动 Steam 游戏Steam 提供了一个标准化的协议地址URI可以理解为给程序打电话的号码每个游戏对应一串固定号码。这是跨平台最稳的启动方式因为它不依赖游戏安装路径Steam 自己会找到游戏在哪。{ name: Cyberpunk 2077, detached: [steam://rungameid/1091500], image-path: cyberpunk.png, auto-detach: true }steam://rungameid/1091500里的数字就是游戏的 AppID去 Steam 商店页面 URL 里就能抄到。填完name和detached两个字段这个游戏基本就活了。命令行加工作目录接管 Epic 游戏Epic 这类平台同样有协议地址把它填进cmd即可{ name: Fortnite, cmd: com.epicgames.launcher://apps/fortnite?actionlaunch, working-dir: C:\\Program Files\\Epic Games\\Fortnite, elevated: false }working-dir工作目录的作用是告诉系统在哪个文件夹里执行命令。不填时Sunshine 会默认使用目标程序所在的目录但对于需要相对路径读取资源的老游戏显式指定它常常能救命。detached让进程和串流解耦detached的意思是分离进程这类命令执行后Sunshine 不再傻等它退出游戏和串流会话各活各的。一句话白话解释关掉串流网页游戏也不会跟着死。Steam 大图模式、启动器类程序、部分网游反作弊进程都属于必须分离的类型。如果你拿不准把命令放detached里往往比放cmd里更安全——cmd里跑 Steam 几乎必翻车。三、跨平台作战手册同一个配置思路落到不同系统上会有各自的讲究。Windows 上的小细节路径里带空格时记得加双引号C:\\Program Files (x86)\\Steam\\steamapps\\common\\MarsSteam.exe。需要管理员权限的命令给prep-cmd里的对应项加上elevated: true避免弹 UAC 窗把串流卡住。图标文件建议用 PNG尺寸适中放配置目录下引用即可。Linux 与 Flatpak 沙箱Linux 桌面环境差异大X11 下用xrandr控分辨率Wayland 的 wlroots 系如 Hyprland则用wlr-xrandr。若你的 Steam 装在 Flatpak 沙箱里宿主命令无法直接触达它得借道flatpak-spawn{ name: Steam Big Picture, detached: [flatpak-spawn --host setsid steam steam://open/bigpicture], prep-cmd: [ { do: flatpak-spawn --host setsid steam steam://open/bigpicture, undo: flatpak-spawn --host setsid steam steam://close/bigpicture } ] }flatpak-spawn 可以理解为沙箱里的对讲机让被困在沙箱内的命令向宿主机喊话执行。setsid则负责把进程挂到独立会话避免它跟着终端一起消失。预备命令能读到的环境变量Sunshine 每次启动应用前会把客户端请求的串流参数注入环境变量供你的命令随时读取环境变量含义示例SUNSHINE_CLIENT_WIDTH客户端请求的宽度1920SUNSHINE_CLIENT_HEIGHT客户端请求的高度1080SUNSHINE_CLIENT_FPS客户端请求的帧率60SUNSHINE_CLIENT_HDR是否启用 HDRtrueSUNSHINE_APP_NAME当前应用名称Cyberpunk 2077SUNSHINE_APP_ID当前应用 ID12345四、预备命令给分辨率做一次暖场prep-cmd预备命令是应用配置里最值得投入精力的部分。它像游戏开场前的暖场仪式先替主角把座位灯光调好主角才登场。每个预备命令由一对组成——do在游戏启动前执行undo在游戏退出后执行把环境还原。最经典的用法跟着客户端走的分辨率串流到平板、手机时分辨率往往不是主机的原生分辨率。用预备命令把显示器切到客户端请求的尺寸退出后再切回来体验立刻不一样。Windows 下借助 QRes 这类工具{ name: Game with Dynamic Resolution, cmd: game.exe, prep-cmd: [ { do: cmd /C \C:\\Tools\\QRes.exe /X:%SUNSHINE_CLIENT_WIDTH% /Y:%SUNSHINE_CLIENT_HEIGHT% /R:%SUNSHINE_CLIENT_FPS%\, undo: C:\\Tools\\QRes.exe /X:1920 /Y:1080 /R:60 } ] }Linux X11 下则是 xrandr 的天下{ prep-cmd: [ { do: sh -c \xrandr --output HDMI-1 --mode ${SUNSHINE_CLIENT_WIDTH}x${SUNSHINE_CLIENT_HEIGHT} --rate ${SUNSHINE_CLIENT_FPS}\, undo: xrandr --output HDMI-1 --mode 3840x2160 --rate 120 } ] }注意xrandr 只能切换到已经存在的显示模式。串流到手机这类非标分辨率设备时需要先用cvt生成 modeline 再--newmode添加否则do命令会静默失败。全局预备命令与性能取舍如果每个游戏都要做同样的事比如切分辨率可以在配置的global_prep_cmd里设置全局预备命令对所有应用生效。但全局命令会拖慢每次启动某些应用还可以通过exclude-global-prep-cmd字段选择不继承。原则很简单别让暖场比正片还长。五、三个常见坑附对症解法配置多了翻车点也就那几个。下面每个坑都按现象→原因→解法给你捋清楚。坑一应用 3 秒闪退现象串流画面刚出来就断开日志里提示应用进程退出。原因把启动器类程序填进了cmdSunshine 盯着它直到它退出于是误判游戏关闭。解法改用detached字段或给应用开启auto-detach让 Sunshine 自动放权。坑二串流分辨率跟客户端对不上现象平板上看画面被裁切或者主机显示器被强制改了分辨率不还原。原因没有用预备命令联动客户端参数或undo缺失导致系统停在非原生分辨率。解法按第四节写法配置do/undo成对的分辨率切换命令并确保目标模式真实存在。坑三Flatpak 装的 Steam 点了没反应现象命令在终端能跑放进 Sunshine 就静默失败。原因Flatpak 沙箱隔离了宿主进程Sunshine 的命令够不着 Steam。解法通过flatpak-spawn --host转发到宿主机执行若仍不行检查应用是否有--talk-name等沙箱权限。六、下一步动手配你的第一个应用配置这件事看十遍不如配一遍。接下来你可以这样做打开 Sunshine Web UI默认 https://localhost:47990进入 Applications 页面点 Add New。先添加一个 Steam 游戏用steam://rungameid/你的AppID作为分离命令配一张封面图。再从 Moonlight 客户端发起串流验证启动、输入、退出还原三个环节。想深入的话把官方示例和配置文档翻一遍里面还有大量现成的跨平台样例可供抄作业。最后送你三条黄金法则能用 URI 就别手写路径协议地址是最稳的跨平台启动方式。预备命令永远成对写有do必有undo环境才能有借有还。先分离后盯梢拿不准的进程一律丢进detached。配置本质上是让 Sunshine 听懂你的环境的过程。第一次成功后你会发现那个躺在沙发上的夜晚值得你为它折腾半小时。更多示例可参考官方文档docs/app_examples.md想深挖实现细节可以看配置结构定义 src/config.h、启动与环境变量注入逻辑 src/process.cpp以及随仓库附带的默认应用清单 src_assets/linux/assets/apps.json。【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考