手把手打造 Sunshine 游戏库:应用添加与串流配置终极指南

📅 2026/8/19 7:37:43
手把手打造 Sunshine 游戏库:应用添加与串流配置终极指南
手把手打造 Sunshine 游戏库应用添加与串流配置终极指南【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine开场那个让我差点放弃串流的周末说个我自己的糗事。第一次折腾 Sunshine 游戏串流我花了一下午把客户端装好、配对完成激动地点开Steam屏幕黑了三秒然后……回到了桌面。再点一次又黑三秒又弹回来。女朋友在旁边幽幽地说你花两小时装了个电视机顶盒后来我才明白问题根本不在 Sunshine 本身而是我把游戏添加的方式搞错了。从那天起我就想写一篇给新手的文章把 Sunshine 的游戏库管理、应用添加与串流配置讲明白让你少走我走过的弯路。如果你正准备把 Steam、Epic 上的游戏搬进 Sunshine 串流库这篇文章就是为你写的。别急跟着我的节奏半小时后你也能实现一键串流。先搞懂一件事Sunshine 到底是怎么开游戏的用发入场券来理解应用添加你可以把 Sunshine 想象成一个剧场管理员每款游戏就是一位演员。管理员手里有一张节目单就是apps.json配置文件上面写着每款游戏的入场方式从哪个门进场、几点上台、散场后要不要关灯。当你从 Moonlight 客户端点开某款游戏时Sunshine 做的只是三件事换句话说Sunshine 自己不运行游戏它只负责按剧本喊人上台。搞清楚这一点很多配置困惑就迎刃而解了。三个最关键的剧本字段在 Web UI 里点Add New新建应用时你看到的表单本质上就是在写 JSON。核心就三样字段作用打个比方cmd直接运行的主命令让演员从正门进场detached后台分离式命令让演员从后门进场不用等他就位prep-cmd预备命令do/undo 成对上台前摆道具、散场后收道具 小提示这些字段在 Web UI 的Applications页面里都有对应的输入框新手完全不需要手写 JSON。源码里预置的应用模板可以参考src_assets/linux/assets/apps.json这类文件。新手必做三步把 Steam 游戏加入串流库第一步拿到你的入场券——游戏的 URI 或路径Steam 游戏有个偷懒神器每个游戏都有专属的启动链接steam://rungameid/游戏ID。游戏 ID 怎么看在 Steam 商店页面游戏主页网址末尾那串数字就是比如《生存火星》是464920。 记住这个规律能走 URI 就走 URI这是官方文档里反复强调的最稳定方案。第二步在 Web UI 里创建应用打开浏览器访问https://localhost:47990首次访问会提示证书问题直接忽略继续即可依次进入Applications → Add New然后这样填应用名称写你一眼能认出来的名字比如 Surviving Mars分离式命令Detached填steam://rungameid/464920没了就这么简单。保存后回到 Moonlight 客户端重启一下应用列表你就能看到它了。第三步搞清楚什么时候用 cmd什么时候用 detached这是新手最常翻车的地方也是我那个周末踩的坑。简单说Steam 这类会自我更新、启动后原进程会退出的程序必须用detached。你如果把它塞进cmdSunshine 会发现主角跑了直接判定演出结束、切断串流——这就是开头黑屏三秒的真相。普通游戏程序比如直接指向某个 exe用cmd就好游戏退出串流自动结束。进阶技巧用预备命令自动切换分辨率为什么你需要预备命令客户端是手机 1080p、电视 4K主机却是 2560×1440Sunshine 在 Windows 上自带分辨率切换能力但其他平台就要靠预备命令手动对暗号了。预备命令是一对组合拳do连接时执行和undo断开时执行。用它们你可以在串流开始前把主机分辨率切到客户端需要的规格结束后再切回来。比如 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 } ] }Windows 下若想用第三方工具 QRes 替代内置切换写法类似只是把环境变量换成%SUNSHINE_CLIENT_WIDTH%这种 Windows 风格。⚠️ 注意xrandr 方案只对已经存在的显示模式有效。手机、平板常请求非标准分辨率需要提前用脚本创建新模式这段脚本可以放在prep-cmd的 do 里调用。别把所有事情都塞进预备命令预备命令虽好用但每一条都会拖慢启动。把wait-all设为false让命令并行、给exit-timeout设个合理值比如 3 秒避免断开时卡在半路。高阶玩法读懂环境变量串流体验再上一个台阶Sunshine 给预备命令发的小纸条Sunshine 每次启动应用时都会往环境变量里塞一批信息你的预备命令可以直接读取。这就是自适应分辨率的魔法来源环境变量含义典型值SUNSHINE_CLIENT_WIDTH客户端请求的宽度1920SUNSHINE_CLIENT_HEIGHT客户端请求的高度1080SUNSHINE_CLIENT_FPS客户端请求的帧率60SUNSHINE_CLIENT_HDR客户端是否请求 HDRtrue / falseSUNSHINE_APP_NAME当前正在串流的应用名Surviving Mars试试看把 do 命令里的分辨率写死成1920x1080和用$SUNSHINE_CLIENT_WIDTH动态取值体验完全是两个档次——前者换个设备就要改配置后者一台主机通吃所有屏幕。跨平台的一次性配置思路Epic 游戏同样优先用 URI格式是com.epicgames.launcher://apps/应用ID?actionlaunchsilenttrue应用 ID 可以在 Epic 客户端的游戏属性里找到。Linux Flatpak 环境因为沙箱隔离所有命令都要加上flatpak-spawn --host前缀比如flatpak-spawn --host setsid steam steam://open/bigpicture。Windows 管理员权限部分反作弊游戏需要管理员运行给应用开启elevated: true即可Sunshine 会以当前用户提权启动、不弹 UAC。避坑清单这些坑我都替你踩过了启动即闪退→ 八成是 Steam/Epic 类程序被塞进了cmd换detached试试分辨率和客户端对不上→ 检查预备命令里环境变量是否生效先手动在终端跑一遍 do 命令验证鼠标键盘没反应→ Linux 下把运行 Sunshine 的用户加进input组命令是sudo usermod -a -G input 你的用户名Windows 检查虚拟手柄驱动预备命令失败导致游戏起不来→ Sunshine 的规则是任何一条 prep 命令失败就中止启动逐条排查 do 命令即可应用列表没刷新→ 官方提示过只有重启 Moonlight 客户端应用列表才会更新别傻等行动路线图从零到一键串流如果你刚拿到 Sunshine按这个顺序走基本不会卡住访问https://localhost:47990完成 Web UI 的首次登录设置确认自带的 Desktop 和 Steam Big Picture 条目存在默认apps.json里就有添加第一款游戏用steam://rungameid/你的游戏ID走 detached 流程在 Moonlight 里配对并重启客户端点开游戏验证满意后再加一条分辨率预备命令让多设备串流更顺手遇到问题就打开 Web UI 的 Troubleshooting 页面看日志至此你的 Sunshine 游戏库已经能拿得出手了。从加了游戏却打不开到一键串流所有设备差的往往只是一个detached、一条预备命令、几个环境变量的认知。配置是死的思路是活的——当你能随手写出自己的预备命令时这个游戏库管家才真正为你所用。别急慢慢来。你的第一款游戏就从把 Steam 加进串流库开始吧。【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考