Logo
2022-12-25

Moonlight与Parsec简单对比

不在家的时候为了打游戏,尝试远程串流方案,使用 MacBook 远程控制家里的台式机打游戏。之前尝试了多款国产远程桌面软件,效果都很差,日常办公可以,但打游戏卡的不行。最近又尝试了 Moonlight 和 Parse,发现体验还不错。

环境

在遥远的两地,并且受控方和控制方都没有外网IP,只能借助内网穿透的方式。

Parsec

之前以为至少需要一方有外网IP,但后来发现也有一定概率可以内网穿透成功(无需借助额外工具),成功后即可实现P2P直连,速度非常满意。

Parsec 做了很多优化,例如画面在相对静止的时候可以降低帧率,并且对于游戏做了很多优化,尤其是鼠标方面,感觉和在电脑前几乎没有区别。看了记录有30ms的延迟,非延迟敏感的游戏非常足够。

但 Parsec 的内网穿透非常玄学,有时候可以打洞成功,但大多数时候不行,即使反复尝试半小时,均报6023错误。

尝试使用内网穿透工具 frp,将官方宣布的几个UDP端口都映射出去后,仍然无法成功,查看端口流量均为0,无法成功。

看了官方关于 Relay 的文章,这个需要付费版才有的功能,不知道是不是因为这个原因。

使用 ZeroTier 则可以轻松的穿透成功,但看起来是使用中转服务器的,并非P2P,延迟感人,无法使用。

Moonlight

Moonlight 的安装配置略微麻烦一些,不像 Parsec 毕竟是一个商业化很成熟的软件。Moonlight 的基本原理,是使用 Nvidia 内置的 Shield 功能实现串流,所以不需要一个中央服务器进行牵线搭桥。

受控端(Host)配置

根据官方文档安装 GeForce Experience 并开启 Shield。

安装官方工具 Moonlight Internet Hosting Tool,以支持通过网络连接使用 Shield。这个工具只需要下载安装放着就可以了,没有界面,无需配置。

这样的状态下只能接受局域网内的连接,所以还需要进行网络穿透。有公网IP的用户直接在路由器设置端口映射即可,

我这里使用的是 frp,需要借助一台中转服务器。具体可以查看这篇教程。由于我控制端是电脑(MacBook)而非手机,所以只需要完成 frp 配置部分,不需要配置教程后半段安卓项目的支持。

控制端配置

在 MacBook 上下载 Moonlight,并输入中转服务器的IP地址,此时会请求控制,受控端的桌面上会弹出一个输入配对码的提示。这个仅在第一次的时候需要。配对完成后,随便点击一个游戏即可进入。中途退出可以按 control + option + shift + Q。

每一次连接后会出现鼠标加速漂移的情况,操作比较难受。需要进入控制面板的鼠标指针选项那里,自行关闭“提高鼠标精度”的选项,同时恢复一些速度上的选项。

对比

Parsec 优点

  1. 安装和连接都很简单,手柄等外设支持完美
  2. 操作优化很不错,尤其是鼠标

Parsec 缺点

  1. P2P打洞成功率非常低
  2. 网络连接质量较差,经常会出现网络不好的提示

Moonlight 优点

  1. 支持现有的各种内网穿透工具,可用性强
  2. 画面非常清晰流畅,我是用阿里云机器中转的情况下,1080p + 60fps没有任何卡顿,并且延迟十分不明显

Moonlight 缺点

  1. 需要自行解决内网穿透,门槛较高
  2. 没有进行鼠标优化,打游戏时鼠标明显不跟手(即使已经调整设置)
  3. 交互比较蠢,不能直接连接,需要先选择一个游戏,进入后再手动关掉

总结

对于打游戏的场景,Parsec 做了许多看不见的优化,所以总体的游戏体验上是最佳的,即使画面清晰度有时不如 Moonlight,但玩游戏的时候并不是很关键。因此如果 Parsec 能解决内网穿透问题,哪怕允许第三方工具,那也将是首选。