Skip to content

Latest commit

 

History

History
386 lines (251 loc) · 7.82 KB

File metadata and controls

386 lines (251 loc) · 7.82 KB

Twins Remote

日本語版ReadMeはこちら

Low-latency peer-to-peer remote play system for Windows.

This is a version of a system I originally created to play games with my twin brother, customized for public use.

There are two reasons behind the name:

  • It started as a system for me to play with my twin brother.
  • I wanted the two devices to operate with low latency, as if they were a single device.

For Those Who Want to Support Us

TwinsRemote incurs ongoing maintenance costs.

Server fees (production + TURN + staging) + domain fees = 2,300 yen/month (14.38 USD/month)

If you like TwinsRemote and want it to continue for a long time, or if you’d like us to keep working hard to develop new features, please consider supporting us.

Table of Contents


Features

Low Latency Streaming

  • Peer-to-peer communication using WebRTC
  • Very low latency under stable network conditions
  • Designed for interactive gameplay, not just video playback

Browser-Based Client

  • No client installation required

  • Open the client page in a Chromium-based browser and connect

  • Confirmed working on:

    • Google Chrome
    • Brave

Client URL:

https://play.twins-remote.com

Supported Features

Video Streaming

  • Hardware encoding using NVIDIA NVENC
  • Multiple predefined streaming modes
  • User-created custom modes
  • Tunable for unstable network environments
  • IPv4 / IPv6 support
  • TURN relay support for NAT traversal

Audio Sharing

Three audio sharing modes are available:

  1. Full PC system audio
  2. Application-specific audio sharing
  3. Audio disabled

Controller Input

Supported and tested controllers:

  • Xbox Controllers
  • DualShock 4
  • DualSense

Controller input is transmitted through WebRTC DataChannels with very low latency.


Architecture

Host Side

Rust

Responsible for:

  • WebRTC communication
  • DataChannel processing
  • Controller input handling
  • TURN/STUN support
  • NAT traversal

Uses:

  • WebRTC
  • ViGEm for virtual controller emulation

ViGEm installation is required on the host PC to allow remote controller input.

C++

Used for:

  • Video capture and NVENC encoding
  • Audio capture

C#

Windows Forms application used for:

  • Host UI
  • Streaming configuration
  • Session connection management

The host application supports:

  • Japanese
  • English

Client Side

Vanilla JavaScript

  • No frontend framework
  • Browser-based WebRTC client
  • Session ID generation and connection handling

How To Use

Host

  1. Launch TwinsRemoteHost.exe
  2. Select a streaming mode
  3. Enter the session ID shared by the client
  4. Press the connect button

Streaming will start automatically after the connection is established.


Client

  1. Open:
https://play.twins-remote.com
  1. A session ID will be generated automatically
  2. Send the session ID to the host
  3. Wait for the host to connect

After the host finishes processing, the stream will begin automatically.

The audio is muted by default, so please unmute it as needed.


Troubleshooting

If you try to run the host on a gaming laptop, it may not work properly.

You may need to review your PC settings. Click here for more details


Requirements

Host PC

  • Windows
  • NVIDIA GPU with NVENC support
  • Chromium-based browser is NOT required on the host

Client

  • Chromium-based browser

    • Chrome
    • Brave

Current Limitations

Not Yet Implemented

The following are examples.

It is not yet determined whether these will be implemented in the future.

  • Dynamic resolution switching during streaming
  • Multi-monitor selection
  • CPU encoding

Current Restrictions

  • Windows host only
  • Main monitor capture only
  • NVIDIA NVENC required

Networking

Twins Remote supports:

  • P2P WebRTC communication
  • IPv4
  • IPv6
  • TURN relay fallback
  • NAT traversal

Currently, a TURN server is deployed in Tokyo.


Development

Technologies Used

Host

  • Rust
  • C++
  • C#
  • WebRTC
  • NVENC
  • ViGEm

Client

  • Vanilla JavaScript
  • WebRTC

Building

Visual Studio is required for development.

The repository contains multiple projects including:

  • NvEnc
  • ProcessAudioCapture
  • SystemMicCapture
  • TwinsRemoteHost

These projects are managed through a Visual Studio solution.


Future Plans

Please feel free to submit any feature requests or bug reports.

Please submit your reports via GitHub Issues or in the comments section of the X post below.

We plan to actively incorporate any suggestions that do not stray too far from the core philosophy of Twins Remote.

Here is some examples:

  • Keyboard and mouse input support
  • Host-side input permission settings
  • Dynamic resolution switching
  • Additional streaming optimizations
  • More flexible display selection

Report

For Developers

I also welcome GitHub issues

Feature Request

Please reply to This Post on X

Bug Report

Please reply to This Post on X

Other Questions or Reports

Please reply to This Post on X

FAQ

Does this only work with Steam games?

No.

Twins Remote is not tied to Steam and can be used with:

  • Non-Steam games
  • Emulators
  • Desktop applications

Does the client need to install anything?

No.

The client only needs a supported browser.


Why is ViGEm required?

ViGEm is used to emulate virtual game controllers on the host PC so that remote controller input can be recognized by games.


Project Background

This project originally started as a system built for the developer and their twin brother to play games remotely together.

The name "Twins Remote" comes from:

  • The original use case between twins
  • The goal of making two distant PCs feel as synchronized as possible

Status

This project is currently under active development.

Features and behavior may change significantly over time.


Disclaimer

This project is provided as-is without warranty.

Use at your own risk.