使用RDP在内网远程游戏思路

随着网络基础设施的建设和完善,现在已经有了很多远程游戏的解决方案。其主要分为两种类型:局域网串流(steam串流PlayStation Portal)和互联网云游戏(云原神网易云游戏平台)。前者利用局域网下的高带宽和低延时实现同一局域网下的设备之间完成高速串流,解决了设备放在房间,人去另外一个房间(或者躺在床上)玩游戏的需求。后者利用压缩编码和延时控制技术,实现在互联网下利用中低带宽进行远程游戏,解决了在低性能终端设备上随时随地玩高性能需求游戏的问题。

然而,这两种解决方案也有其固有问题。局域网串流要求设备都处于同一局域网下,这对于串流的空间范围就有了限制。而云游戏存在竞争资源,账号隐私等问题。那么能不能有一个中间方案,扩大局域网串流的空间范围,同时避免云游戏存在的平台问题呢。我选择的解决方案是使用RDP在内网进行远程游戏。

准备

要实现RDP远程游戏,需要准备:

  • 一台高配置的PC主机,用来实际运行游戏。(后文称其为服务主机)
  • 一台随身携带的设备,能够运行RDP协议即可。通常是windows便携笔记本。(后文称其为客户端主机)
  • 服务主机和客户端主机的内网连接,或服务主机有公网IP或内网穿透。(保证客户端主机能够通过IP或域名访问服务主机即可)

打开并测试RDP连通性

  1. 在服务端主机打开远程桌面功能

  2. 以windows电脑为例,在客户端主机上打开远程桌面连接,输入服务端主机的IP:端口进行连接,通常端口号为3389。用户名填服务端主机的登录用户名。

  3. 点击连接,输入服务端主机的登录密码,能够成功登录到桌面则成功。

提升RDP性能

RDP是点对点的,没有类似于向日葵或者ToDesk这样的远程桌面的带宽瓶颈,所以理论上是可以跑满网络带宽的峰值速度的。但是为了保证使用体验,windows的默认远程桌面设置是对其性能做了一些限制的,接下来在服务端主机进行设置来提升RDP传输画面的性能。

首先在远程主机上打开组策略(搜索找到或者Win+R打开运行,输入gpedit.msc进入)

依次找到 计算机配置->管理模板->Windows组件->远程桌面服务->远程桌面会话主机->远程会话环境

接下来对远程桌面的性能进行调整:

  • 开启显卡加速

    打开将硬件图形适配器应用于所有远程桌面服务会话,将未配置改为已启用

  • 配置图像传输质量和压缩编码

    打开为远程桌面连接设置H.264/AVC444图形模式的优先级,将未配置改为已启用

    打开配置远程桌面连接的H.264/AVC硬件编码,将未配置改为已启用

    打开配置RemoteFX数据的压缩,将未配置改为已启用,RDP压缩算法选择已优化为使用较少的网络带宽

    打开配置RemoteFX自适应图形的图像质量,将未配置改为已启用,图像质量根据网络带宽选择中或者高

  • 更改图形显示驱动

    打开为远程桌面连接使用WDDM图形显示驱动程序,将未配置改为已启用

  • 提高帧率上限

    1. 打开注册表编辑器

    2. 进入以下路径HKEY_LOCAL_MACHINEServer

    3. 新建名为DWMFRAMEINTERVAL,类型为DWORD(32位)的项

    4. 双击修改DWMFRAMEINTERVAL的数值,进制选择十进制,数值与帧率上限的对应关系为:

      15 -> 60fps,8->120fps

解决手柄映射问题

玩游戏嘛,那能用手柄就尽量用手柄了。然而RDP本身是不支持手柄信号的传输的。好在有大佬做了补丁来解决这个问题。解决方案:GitHub - microsoft/RdpGamepad: Remote Desktop Plugin for Xbox Gamepads

参考资料

  1. RDP 优化操作 微软远程桌面 开启显卡加速、60FPS、USB设备重定向_远程桌面调用独立显卡-CSDN博客
  2. Microsoft Remote Desktop(RDP )优化流程 - 哔哩哔哩 (bilibili.com)
  3. Windows远程桌面RDP mstsc 性能优化用显卡异地玩游戏_rdp 显卡-CSDN博客
  4. GitHub - microsoft/RdpGamepad: Remote Desktop Plugin for Xbox Gamepads