Linux 下使用 Proton 转译 Windows 游戏的时候经常会出现单核被吃满的问题,而我的迷你主机单核性能比较孱弱,Low 帧不稳且显卡功耗/占用率经常偏低,刚好最近闲鱼捡了一台小主机,干脆装了个 Windows 当串流服务器,而且实话实说虽然我更喜欢用 Linux Server 但是 Windows 不管是游戏生态、监控工具还是串流生态明显还是更胜一筹的。
我之前在 Linux 下 使用 SIGSTOP 和 SIGCONT 实现了 Steam 和游戏进程的快速暂停和恢复,刚巧我之前参考的 Nyrna 项目 也有 Windows 版本,所以读了一下代码,自己重新实现了一套暂停/恢复脚本的 Windows 版本。
实际效果如下,接入到了 Home Assistant,效果与 Linux 平台几乎无异,整机功耗在暂停之后跑到 30 瓦左右,作为一个专门的串流服务器,我可以接受这样的功耗表现。
暂停恢复的两个 PS1 脚本可以直接用到 Sunshine 的 Do/Undo Command 中,与之前无异。但如果想提供接口给外部(Home Assistant)触发暂停/恢复开关,以及实时获取状态,就不像之前直接走 SSH 那么方便了。
我的方案是 Home Assistant 端安装 MQTT 集成,Windows 端则启动一个服务订阅 MQTT Broker 发布的主题,当收到特定主题的时候根据里面的值触发对应的启动/暂停脚本,或是做状态汇报。最后过 Windows 的 Task Scheduler 实现 MQTT Subscriber 服务的开机自启。