ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

游戏串流应用配置不再头疼:Sunshine 应用管理从零到实战

游戏串流应用配置不再头疼:Sunshine 应用管理从零到实战 游戏串流应用配置不再头疼Sunshine 应用管理从零到实战【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine把客厅电视变成游戏机、把手机变成掌机Sunshine 这套自托管串流服务搭配 Moonlight 客户端就能轻松实现。但很多人在添加游戏应用这一步卡了壳同样是游戏Steam 的启动方式和 Epic 不同Linux 和 Windows 又各有一套规矩。别急这篇文章把 Sunshine 的应用管理拆成一条最短路径从第一次添加应用到踩平常见坑一次讲透。读完你将获得一条 3 分钟跑通的最短配置路径apps.json 核心字段与运行机制的完整认知Windows / Linux / macOS 三平台可复制的配置片段3 个高频问题的症状诊断与修复命令3 分钟上手用 Web 界面添加你的第一个应用Sunshine 启动后浏览器打开https://localhost:47990首次会要求设置 PIN 配对进入Applications页面。点击Add New填入名称和启动命令保存后重启 Moonlight 客户端即可看到新应用——界面下方那句Applications are refreshed only when Client is restarted就是在提醒你这一点。想体验最省事的配置直接复制这段最简 JSON{ name: 我的游戏, cmd: C:\\Games\\mygame.exe, working-dir: C:\\Games }关键就两点cmd是启动命令working-dir是工作目录——留空时默认取应用所在文件夹所以只要命令是完整路径工作目录通常可以不写。揭开面纱一个 JSON 如何撑起整条启动链应用管理的本质是 Sunshine 把 Web UI 的每一次点击翻译成apps.json里的一条记录再由执行引擎拉起游戏进程。数据流向大致是这样先认识最常用的几个字段字段类型含义示例namestring显示在客户端的名称Cyberpunk 2077cmdstring/array主执行命令需等待其结束game.exedetachedarray分离命令启动即视为成功[steam://rungameid/1091500]prep-cmdarray预备命令含do与undo两步[{do: ..., undo: ...}]working-dirstring进程工作目录C:\\Games\\Cyberpunkimage-pathstring应用图标路径cyberpunk.pngelevatedbool是否以管理员权限启动Windows 服务模式trueauto-detachbool是否自动转为分离模式true理解这条链就理解了 Sunshine 最核心的设计思想cmd和detached的区别决定了串流会话何时结束。前者等进程退出后者启动后立即放行。实战进阶三个平台的正确打开方式Steam 游戏永远优先用 URISteam 的进程会自更新、父进程会被杀掉直接塞进cmd极容易导致会话误判退出。正确姿势是走 URI{ name: Surviving Mars, detached: [steam://rungameid/464920], auto-detach: true }为什么这样写URI 方式在 Windows、Linux、macOS 下行为一致macOS 需加open前缀且不依赖游戏安装路径是跨平台最稳的选择。Epic 同理把detached换成com.epicgames.launcher://apps/...?actionlaunch即可。Linux Flatpak 环境别忘了沙箱前缀Flatpak 版的 Sunshine 运行在沙箱里直接执行命令访问不到宿主系统所有命令都要加flatpak-spawn --host{ 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 } ] }为什么这样写undo让串流结束时自动关掉大画面模式避免每次退出都留个残影进程。动态分辨率让画面跟着客户端走客户端要 4K 你主机还是 1080p用预备命令 环境变量自动切换。Windows 下用 QRes{ 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:3840 /Y:2160 /R:120 } ] }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 } ] }为什么这样写do在启动前把分辨率切到客户端请求值undo在结束后退回原生分辨率串流完不留后遗症。KDE 用户把 xrandr 换成kscreen-doctor output.HDMI-A-1.mode.${SUNSHINE_CLIENT_WIDTH}x${SUNSHINE_CLIENT_HEIGHT}${SUNSHINE_CLIENT_FPS}即可macOS 则用 displayplacer。预备命令能用的环境变量常用这几个变量含义示例值SUNSHINE_CLIENT_WIDTH客户端请求宽度1920SUNSHINE_CLIENT_HEIGHT客户端请求高度1080SUNSHINE_CLIENT_FPS客户端请求帧率60SUNSHINE_CLIENT_HDR客户端 HDR 请求true/falseSUNSHINE_APP_NAME当前应用名Cyberpunk 2077三个高频坑位症状、原因与解法坑位一游戏一启动串流会话就结束症状点开游戏画面闪一下就回到桌面。原因启动器进程退场即被判定为应用退出游戏本体其实是独立进程。解法改用detached命令或给主命令补上auto-detach: true让 Sunshine 不再等待进程树。坑位二分辨率切过去就再也回不来症状串流结束后显示器还停在低分辨率。原因只写了do忘了undo或undo里的固定值写得不对。解法给每个do配对称的undo并验证恢复值是否是该显示器原生模式。Windows 下如需管理员权限操作可给该条 prep-cmd 单独设elevated: true。坑位三Linux 下手柄没反应症状键盘鼠标正常手柄纹丝不动。原因Sunshine 运行用户不在input组读不到 /dev/uinput。解法sudo usermod -a -G input 你的用户名注销重新登录后生效。把配置打磨到位六条经验清单能用 URI 就别用二进制Steam / Epic 优先steam://rungameid/与com.epicgames.launcher://方案最省心也最一致。预备命令要成对do负责切状态undo负责还原缺一不可。全局命令单独维护所有应用都要执行的操作如切换显示器放进配置文件的global_prep_cmd避免逐个应用重复粘贴。别堆砌预备命令每多一条do启动就慢一截exit-timeout: 3能避免退出时卡在等待上exclude-global-prep-cmd: true可让个别应用跳过全局步骤。图标用 PNG在image-path填相对路径即可轻量格式加载更快。改完必测每次保存后重启 Moonlight 客户端走一遍完整的启动—退出流程再进下一个配置。配置不复杂关键在于理解主命令、分离命令、预备命令这三者的分工谁负责拉起游戏、谁决定会话生命周期、谁收拾残局。搞清这三件事你的游戏库管理就成功了大半。下一步行动现在就打开https://localhost:47990按上面的最短路径添加你的第一款游戏再挑一个分辨率动态切换的示例加上——从今天起让串流体验配得上你的游戏阵容。【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表