vamidi / switch-remote-play

Let the switch remotely play PC games (similar to steam link or remote play)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

switch-remote-play

icon

Let the switch remotely play PC games (similar to steam link or remote play)

This project is inspired by the github project In-Home-Switching and SkyNX. The goal is to make a convenient streamer/client application to be used to remote play PC games on the switch.

In-Home-Switching and SkyNX already offer the ability to do so, however there were some convenience features missing that I wanted to add. I also recently was studying multi-threading and when I saw the code, I thought 'this is the perfect chance to try writing it in C++'.

Getting Started

For instructions and help, please see the wiki.

You can also visit the gbatemp release thread to share and interact with other users, or get help with any issues you might have.

Features

  • No system crashing when going to sleep (stream will disconnect though and application is closeable)
  • Desktop application to host remote connection stream
  • Stream input from the switch to remote connection
  • Stream audio from remote connection to the switch
  • Automatically connect switch and PC stream applications
  • Automatically mute PC when audio is streaming to the Switch
  • Allow manual configuration of switch to PC connection
  • Disconnect / Reconnect stream at will
  • Toggle Input Mode to Mouse
  • Toggle Input Mode to DS4(PS4) controller
  • Toggle Input Mode to Xbox controller
  • Rich configuration options for h264 CPU encoder
  • Rich configuration options for h264 AMF encoder (AMD hardware encoder)
  • Multiple controller support
  • Touch screen emulate mouse support
  • Controller gyro support
  • Controller rumble support

Switch-Project

This project consists of an application written for the switch that will decode stream data received from FFMPEG and send its input to an application to emulate a controller. The rendering is done with SDL2 and the project is written in C++.

Compatibility

  • Only Atmosphere CFW is supported. SX OS is not officially supported
  • Program is compiled with latest LibNX libraries (v4.1.3 at the time of this writing)
    • Means it will work with newer firmwares

Windows-Project

This project consists of an application written for Windows that will launch an FFMPEG stream to encode and send data. The application, after launching the FFMPEG stream, will then listen to receive input data and emulate a controller via the ViGEm Client SDK. The ViGEm Client SDK expects the ViGEm Bus Kernel Driver to be installed on the machine in order to work. For more info on the kernel driver code see the ViGEmBus github page. For the driver installation, see the ViGEmBus Releases page.

The Windows project is also written in C++ and uses Winsock to do socket communication with the switch application.

Mac-Project

See the 'mac-readme' file located in the repo's instructions/mac folder.

Thanks

Licence

GPLv3, so please follow the open source licence and be a nice bloke. If you use parts of this project or expand on this project, make it open source. Cheers mate. (You can read more about the GPLv3 licence HERE and HERE)

The ViGEm Client SDK uses an MIT licence and it has been included with the Windows project. (The Windows project itself is still licensed under GPLv3)

About

Let the switch remotely play PC games (similar to steam link or remote play)

License:GNU General Public License v3.0


Languages

Language:C++ 82.9%Language:C 15.9%Language:Makefile 1.0%Language:Rich Text Format 0.2%