资讯动态

游戏串流应用配置实战:把游戏装进Sunshine,一次搞懂这三个关卡

发布时间:2026/8/18 10:46:57 来源:尧图企业网站定制
游戏串流应用配置实战把游戏装进Sunshine一次搞懂这三个关卡【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine晚上九点你窝在沙发上面前是电视手里是手柄——但想玩的那款3A大作还被困在书房那台装了一堆游戏平台的电脑里。这就是Sunshine这类自托管游戏串流服务器的用武之地装上它配合Moonlight客户端家里的任何屏幕都能变成你的游戏主机。而这一切的第一步就是把游戏正确地登记进Sunshine的启动列表。本文用三个关卡带你走完游戏串流应用配置的完整路径让游戏能启动、让画面适配屏幕、让体验足够顺手。第一关让游戏能启动——先搞懂两种启动姿势Sunshine的每个游戏应用本质上就是一份写在apps.json里的配置你在Web UI里点几下它替你改的就是这个文件。核心字段只有几个name显示名称、cmd直接执行的命令、detached交给别的程序去拉起的命令、working-dir工作目录、image-path图标。关键分叉在于这游戏是命令启动还是URI启动。直接敲可执行文件路径属于前者适合独立游戏而Steam、Epic这类平台游戏官方推荐用它们的URI协议来拉稳定且不受平台自身更新进程的影响。比如在Steam库里加《火星求生》只需要让它把URI丢给Steam去处理{ name: Surviving Mars, detached: [steam://rungameid/464920], image-path: surviving-mars.png }这段配置解决什么问题detached意味着Sunshine只负责喊一嗓子就撒手Steam自己接管整个游戏进程串流会话不会因为启动器的父子进程关系而误判游戏已退出。Epic平台的游戏走类似的思路只是URI格式不同{ name: Surviving Mars, cmd: com.epicgames.launcher://apps/生存火星的AppID?actionlaunchsilenttrue }这里换成了cmd直接执行URI配一个elevated: true可以让启动器以管理员身份运行避免UAC弹窗打断串流。一句话总结能用URI就别用裸命令平台启动器对自家协议的支持最稳。整条链路跑起来是这样通俗地说Sunshine像个尽职的开球人它做热身准备预备命令、把球传给正确的球员平台启动器、然后退到一边看完整场比赛监控进程生命周期。第二关让画面适配屏幕——环境变量与预备命令游戏能开了但串流画面是1920×1080而你手机屏幕是2400×1080两边总有一个要委屈。Sunshine会把客户端的请求写进环境变量你的预备命令prep-cmd可以读取它们在游戏启动前把显示器切成对应分辨率。以Linux的X11环境为例do是开演前的暖场undo是散场后的复原{ 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 } ] }这段配置解决什么问题它让主机分辨率跟着客户端走——手机横过来要长屏它就给长屏要60帧它给60帧结束时再恢复成你日常的4K120不用手动折腾。Windows下同理只是工具换成QRes这类命令行改分辨率的小程序。prep-cmd能读到的关键环境变量如下环境变量含义典型值SUNSHINE_CLIENT_WIDTH客户端请求的宽度1920SUNSHINE_CLIENT_HEIGHT客户端请求的高度1080SUNSHINE_CLIENT_FPS客户端请求的帧率60SUNSHINE_CLIENT_HDR客户端是否开启HDRtrueSUNSHINE_APP_NAME当前应用名称Cyberpunk 2077第三关让体验顺手——图标、备份与收尾细节最后一公里拼的是细节。给每个游戏配一张图标image-path指向本地PNG客户端列表立刻从一排水晶图变成赏心悦目的游戏墙auto-detach默认开启能自动识别启动器退出了但游戏还在跑的常见局面。还有几个值得记住的收尾字段{ wait-all: false, exit-timeout: 3, exclude-global-prep-cmd: true }这段配置解决什么问题wait-all决定要不要等整棵进程树都退出才结束串流会话exit-timeout设个3秒避免挂死的进程拖住你exclude-global-prep-cmd则让这个游戏跳过全局预备命令——适合我不想为每个游戏都切分辨率的场景。翻车现场三个高频故障的排查思路游戏一开就闪退。九成是进程生命周期判断出错——游戏进程被启动器中转了一次Sunshine以为它退出了。解法就是回到第一关改用detached或打开auto-detach。手柄、键鼠没反应。Linux下先把当前用户加进input组sudo usermod -aG input $USER重启会话后生效Windows则检查虚拟手柄驱动是否装好。分辨率不对。多半是prep-cmd里的do命令没生效——先在终端里手动跑一遍那条xrandr或QRes命令确认你的显示器支持该模式再回看环境变量有没有被正确传递。现在去添加你的第一个游戏三关已过剩下的就是动手。打开Sunshine的Web UI默认地址https://localhost:47990在应用管理页新建一个条目从Steam的URI起步配上图标串流测试一轮然后就可以窝回沙发上继续你的游戏了。下一篇文章我们再聊聊预备命令的进阶玩法——比如用脚本自动生成显示器自定义模式把iOS、macOS的奇怪分辨率也统统驯服。【免费下载链接】SunshineSelf-hosted game stream host for Moonlight.项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价