游戲加進(jìn)你的串流庫(kù))
零門檻搞定 Sunshine 游戲串流手把手把第一個(gè)游戲加進(jìn)你的串流庫(kù)【免費(fèi)下載鏈接】SunshineSelf-hosted game stream host for Moonlight.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/su/Sunshine如果你剛接觸 Sunshine 游戲串流多半會(huì)遇到同一個(gè)坎Sunshine 裝好了、Moonlight 也能連上主機(jī)了可打開(kāi)客戶端一看能串流的只有桌面想玩的游戲卻一個(gè)都沒(méi)有。這篇文章就是帶你走完把新游戲添加進(jìn) Sunshine 串流庫(kù)的完整流程從認(rèn)識(shí)應(yīng)用配置的原理到用 URI 一鍵拉起 Steam 游戲再到用預(yù)備命令解決分辨率不匹配全程像朋友在旁邊帶著你操作。本文適合游戲串流新手和普通玩家不需要任何編程基礎(chǔ)跟著步驟點(diǎn)就行。先把話說(shuō)清楚Sunshine 里的應(yīng)用到底是什么在正式開(kāi)始之前先花 30 秒建立一個(gè)直覺(jué)。你可以把 Sunshine 當(dāng)成一個(gè)遙控器管家Moonlight手機(jī)/平板/電視上的串流客戶端把你想玩的程序告訴 SunshineSunshine 負(fù)責(zé)在主機(jī)上把這個(gè)程序啟動(dòng)起來(lái)再把畫面和聲音實(shí)時(shí)傳回客戶端。而你每添加一個(gè)應(yīng)用其實(shí)就是給 Sunshine 一張啟動(dòng)卡片卡片上寫著這個(gè)程序叫什么名字顯示在 Moonlight 里用什么方式把它叫醒直接執(zhí)行 exe還是發(fā)一個(gè)steam://鏈接啟動(dòng)之前和結(jié)束之后要不要做一些準(zhǔn)備工作比如臨時(shí)改分辨率這些卡片被集中存放在一個(gè)名為apps.json的配置文件里。好消息是你完全不需要手寫這份文件Sunshine 的 Web 界面會(huì)替你把卡片生成好你只需要填表。第一步找到應(yīng)用管理的大門打開(kāi)瀏覽器訪問(wèn) Sunshine 的管理界面默認(rèn)地址是https://localhost:47990第一次登錄會(huì)讓你設(shè)置用戶名和密碼。登錄后頂部導(dǎo)航欄里找到Applications標(biāo)簽頁(yè)這里就是你管理所有串流應(yīng)用的總控制臺(tái)。在這個(gè)頁(yè)面上你會(huì)看到已有的應(yīng)用卡片比如 Sunshine 預(yù)置的Desktop桌面和Steam Big Picture每張卡片都帶Edit編輯和刪除按鈕底部有一個(gè)醒目的Add New按鈕。接下來(lái)的所有操作都從點(diǎn)這個(gè)按鈕開(kāi)始。小提示Sunshine 預(yù)置了Desktop應(yīng)用它就是你在 Moonlight 里看到的桌面入口別刪它關(guān)鍵時(shí)刻能救命。第二步看懂一張啟動(dòng)卡片上要填什么點(diǎn)下Add New后彈出的編輯表單對(duì)應(yīng)到配置文件里就是一條應(yīng)用的 JSON 記錄。核心字段其實(shí)沒(méi)幾個(gè)用大白話解釋一遍表單里的叫法配置文件字段一句話解釋舉個(gè)小例子應(yīng)用名稱name顯示在 Moonlight 列表里的名字賽博朋克2077主命令cmd直接執(zhí)行的啟動(dòng)命令C:\\Games\\cyberpunk\\bin\\x64\\Cyberpunk2077.exe分離命令detached發(fā)出去就撒手不管的命令[steam://rungameid/1091500]預(yù)備命令prep-cmd啟動(dòng)前/結(jié)束后自動(dòng)做的準(zhǔn)備工作[{do: 關(guān)閉壁紙, undo: 恢復(fù)壁紙}]工作目錄working-dir以哪個(gè)文件夾作為命令的家C:\\Games\\cyberpunk圖標(biāo)image-path顯示在列表里的小圖片cyberpunk.png看到prep-cmd可能有點(diǎn)懵它是新手最容易忽略、卻是最實(shí)用的功能??梢园阉斫鉃橛螒騿?dòng)前的自動(dòng)準(zhǔn)備工作比如很多游戲在非標(biāo)準(zhǔn)分辨率下會(huì)黑屏你就可以在do里寫一條命令把分辨率切到客戶端請(qǐng)求的值在undo里寫一條命令等游戲退出后把分辨率改回來(lái)。第三步按啟動(dòng)方式給游戲選配方同一個(gè)游戲不同的平臺(tái)和渠道最適合的啟動(dòng)方式完全不一樣。填表前先問(wèn)自己一個(gè)問(wèn)題這個(gè)游戲能被一條鏈接或命令直接叫醒嗎判斷方法看下面這張決策圖三種方式的適用場(chǎng)景一句話各說(shuō)清楚主命令cmd適合老老實(shí)實(shí)的可執(zhí)行程序雙擊能直接跑的那種。Sunshine 會(huì)盯著這個(gè)進(jìn)程游戲一退串流就結(jié)束。分離命令detached適合叫醒即走的啟動(dòng)方式比如給 Steam 發(fā)steam://鏈接。命令發(fā)出后 Sunshine 不追蹤進(jìn)程所以像 Steam 這種自己更新自己、舊進(jìn)程會(huì)退出的程序必須用這種否則串流會(huì)瞬間斷掉。URI 鏈接本質(zhì)是被系統(tǒng)注冊(cè)表翻譯成命令的啟動(dòng)方式Steam、Epic、Ubisoft 都支持。它是跨游戲最穩(wěn)定的方案因?yàn)槟呐掠螒驌Q了安裝路徑URI 依然有效。第四步實(shí)戰(zhàn)演示——把一款 Steam 游戲加進(jìn)來(lái)現(xiàn)在動(dòng)真格的。以某款 Steam 游戲?yàn)槔螒?ID 用 1091500 占位你換成自己的即可我們走一遍完整流程。1. 填寫基礎(chǔ)信息在編輯表單里應(yīng)用名稱填游戲名比如我的 Steam 游戲啟動(dòng)方式選擇分離命令在命令框里填[steam://rungameid/1091500]2. 順手填上退出后的善后工作如果希望游戲退出后自動(dòng)幫你關(guān)掉 Steam 的大屏幕模式可以在預(yù)備命令里加一條撤銷操作。Sunshine 內(nèi)置的 Steam 應(yīng)用就是這么干的[ { do: , undo: steam://close/bigpicture } ]do是啟動(dòng)前執(zhí)行的undo是串流結(jié)束時(shí)執(zhí)行的。這里do留空意思是啟動(dòng)前啥也不用干。3. 保存并重啟客戶端保存后注意一個(gè)容易踩的坑Moonlight 里的應(yīng)用列表是客戶端啟動(dòng)時(shí)讀取的不是實(shí)時(shí)刷新的。所以添加完應(yīng)用要把 Moonlight 客戶端整個(gè)退出重開(kāi)新的游戲才會(huì)出現(xiàn)在列表里。第五步Linux 用戶請(qǐng)看——Flatpak 應(yīng)用怎么啟動(dòng)如果你在 Linux 上裝的是 Flatpak 版 Steam 或游戲直接在detached里寫steam://會(huì)失敗因?yàn)?Flatpak 應(yīng)用運(yùn)行在沙箱里。正確姿勢(shì)是用flatpak-spawn --host把命令遞出沙箱交給宿主機(jī)執(zhí)行{ 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 } ] }同理其他沙箱化的應(yīng)用Snap 等也可以套用這個(gè)思路先查清楚如何從沙箱外啟動(dòng)它再填進(jìn)分離命令。第六步分辨率不對(duì)用預(yù)備命令一鍵修正這是應(yīng)用配置里性價(jià)比最高的一招。很多串流新手遇到的畫面模糊比例不對(duì)全屏黑邊根源是主機(jī)分辨率沒(méi)跟著客戶端走。解決辦法讓預(yù)備命令讀取客戶端請(qǐng)求的分辨率動(dòng)態(tài)切換。Sunshine 會(huì)把客戶端的信息通過(guò)環(huán)境變量傳給預(yù)備命令常用的是這幾個(gè)環(huán)境變量含義典型值SUNSHINE_CLIENT_WIDTH客戶端要求的畫面寬度1920SUNSHINE_CLIENT_HEIGHT客戶端要求的畫面高度1080SUNSHINE_CLIENT_FPS客戶端要求的幀率60SUNSHINE_CLIENT_HDR客戶端是否支持 HDRtrue / falseSUNSHINE_APP_NAME當(dāng)前正在啟動(dòng)的應(yīng)用名我的 Steam 游戲SUNSHINE_APP_ID當(dāng)前應(yīng)用的唯一編號(hào)3比如在 Linux 的 X11 環(huán)境下用xrandr做動(dòng)態(tài)分辨率的do/undo一對(duì)命令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這類命令行切分辨率的工具。要點(diǎn)只有兩個(gè)do里用環(huán)境變量跟隨客戶端undo里寫死你自己的常用分辨率做恢復(fù)。配置完先過(guò)一遍驗(yàn)收清單再歡呼游戲加進(jìn)去不等于萬(wàn)事大吉按下面這份清單快速驗(yàn)收能省下你大把排查時(shí)間客戶端Moonlight重啟后列表里能看到新應(yīng)用點(diǎn)擊啟動(dòng)后10 秒內(nèi)主機(jī)上能看到游戲進(jìn)程起來(lái)串流畫面與主機(jī)分辨率一致無(wú)黑邊、無(wú)拉伸退出游戲后串流正常結(jié)束、分辨率恢復(fù)原樣如果游戲起不來(lái)先查日志W(wǎng)eb 界面右上角菜單里能看到運(yùn)行日志里面有啟動(dòng)命令的完整輸出新手最常栽的三個(gè)坑也提前預(yù)告游戲啟動(dòng)即斷開(kāi)八成是把需要分離啟動(dòng)的程序?qū)戇M(jìn)了cmd改成detached或加auto-detach: true就好。Linux 下按鍵沒(méi)反應(yīng)確認(rèn) Sunshine 的運(yùn)行用戶屬于input組執(zhí)行sudo usermod -a -G input 你的用戶名重啟后生效。列表里看不到新應(yīng)用記住那句口訣——客戶端不刷新應(yīng)用不出現(xiàn)重啟 Moonlight 而非只是切回主頁(yè)。結(jié)尾現(xiàn)在就動(dòng)手打開(kāi)你的 Sunshine Web 界面https://localhost:47990點(diǎn)下Add New把最常玩的那款游戲加進(jìn)串流庫(kù)然后用 Moonlight 實(shí)測(cè)一次。從今天起躺在沙發(fā)上用平板串流 Steam 游戲、或者臨時(shí)把桌面分辨率切成電視支持的規(guī)格都只是一次點(diǎn)擊的事。配置過(guò)程中卡住了也別慌Sunshine 官方文檔對(duì)每個(gè)配置項(xiàng)都有詳細(xì)說(shuō)明社區(qū)里也有一堆現(xiàn)成的配置示例可以參考大膽試就行?!久赓M(fèi)下載鏈接】SunshineSelf-hosted game stream host for Moonlight.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/su/Sunshine創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考