Use RDP to remotely play games on the intranet.

This is an automatically translated post by LLM. The original post is in Chinese. If you find any translation errors, please leave a comment to help me improve the translation. Thanks!

With the construction and improvement of network infrastructure, there are now many solutions for remote gaming. They are mainly divided into two types: LAN streaming (Steam Link, PlayStation Portal) and Internet cloud gaming (Genshin Impact Cloud, NetEase Cloud Gaming Platform). The former uses high bandwidth and low latency in the LAN to achieve high-speed streaming between devices in the same LAN, solving the need to play games in a different room (or lying in bed) when the device is in another room. The latter uses compression encoding and latency control technology to enable remote gaming over the Internet using medium to low bandwidth, solving the problem of playing high-performance demanding games anytime, anywhere on low-performance terminal devices.

However, these two solutions also have their inherent problems. LAN streaming requires devices to be on the same LAN, limiting the spatial range of streaming. Cloud gaming faces issues such as competition for resources and account privacy. So, is there a middle ground solution that expands the spatial range of LAN streaming while avoiding the platform issues of cloud gaming? The solution I choose is to use RDP for remote gaming within the LAN.

Preparation

To implement RDP remote gaming, you need to prepare:

  • A high-configured PC host to actually run the game (referred to as the server host).
  • A portable device capable of running the RDP protocol, usually a Windows laptop (referred to as the client host).
  • An internal network connection between the server host and client host, or the server host has a public IP or internal penetration (to ensure that the client host can access the server host via IP or domain name).

Open and Test RDP Connectivity

  1. Enable Remote Desktop feature on the server host

    Remote Desktop Feature
  2. Using a Windows computer as an example, open Remote Desktop Connection on the client host, enter the IP:port of the server host for connection, usually port 3389. Enter the login username of the server host.

    Remote Desktop Connection
  3. Click connect, enter the login password of the server host, and if you can successfully log in to the desktop, it's a success.

Enhance RDP Performance

RDP is point-to-point and does not have bandwidth bottlenecks like Sunlogin or ToDesk remote desktops, so theoretically, it can run at the peak speed of network bandwidth. However, to ensure user experience, Windows default Remote Desktop settings have some performance limitations. Next, adjust the settings on the server host to improve the performance of RDP screen transmission.

First, open Group Policy on the remote host (search and find or press Win+R to open Run, enter gpedit.msc to access).

Navigate to Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Remote Session Environment

Group Policy

Next, adjust the performance of Remote Desktop:

  • Enable GPU Acceleration

    Open Apply hardware graphics adapters to all Remote Desktop Services sessions, change from Not Configured to Enabled

    GPU Acceleration
  • Configure Image Transmission Quality and Compression Encoding

    Open Set the priority of H.264/AVC444 graphics mode for Remote Desktop connections, change from Not Configured to Enabled

    Open Configure H.264/AVC hardware encoding for Remote Desktop connections, change from Not Configured to Enabled

    Open Configure compression of RemoteFX data, change from Not Configured to Enabled, select RDP compression algorithm optimized to use less network bandwidth

    Open Configure image quality for RemoteFX adaptive graphics, change from Not Configured to Enabled, select image quality as medium or high based on network bandwidth

  • Change Graphics Display Driver

    Open Use WDDM graphics display driver for Remote Desktop connections, change from Not Configured to Enabled

  • Increase Frame Rate Limit

    1. Open Registry Editor

    2. Navigate to HKEY_LOCAL_MACHINEServer

    3. Create a new DWORD (32-bit) item named DWMFRAMEINTERVAL

    4. Double-click to modify the value of DWMFRAMEINTERVAL, select Decimal, and the value corresponds to the frame rate limit as follows:

      15 -> 60fps, 8 -> 120fps

Resolve Gamepad Mapping Issue

When playing games, using a gamepad is preferred. However, RDP itself does not support the transmission of gamepad signals. Fortunately, there are patches available to solve this issue. Solution: GitHub - microsoft/RdpGamepad: Remote Desktop Plugin for Xbox Gamepads

References

  1. RDP Optimization Operations Microsoft Remote Desktop Enable GPU Acceleration, 60FPS, USB Device Redirection - CSDN Blog
  2. Microsoft Remote Desktop (RDP) Optimization Process - Bilibili
  3. Windows Remote Desktop RDP mstsc Performance Optimization for Playing Games Remotely with Graphics Card - CSDN Blog
  4. GitHub - microsoft/RdpGamepad: Remote Desktop Plugin for Xbox Gamepads