Switch Remote Play es una aplicación que nos permite jugar en Switch a juegos de PC de forma remota, de una forma similar a lo que lo hace Steam Link o el Remote Play de Sony o el servicio similar que tiene Microsoft para Xbox).
Este proyecto está inspirado en In-Home-Switching y SkyNX. El objetivo es crear una aplicación cliente y streamer estable para poder jugar a los juegos de PC de forma remota en Nintendo Switch.
In-Home-Switching y SkyNX ya ofrecen esta funcionalidad, pero les faltan algunas características que me ha parecido conveniente añadir, a la vez que practico con C++.
Nota
El flujo de video depende de la CPU, ya que en este momento utiliza la opción ffmpeg de hwaccel auto, lo que generalmente hace que ffmpeg elija la CPU para el proceso de captura de pantalla. En mi fase inicial de creación de prototipos, encontré que elegir la opción de GPU AMD para ffmpeg conducía a resultados de transmisión inconsistentes. Veré la posibilidad de configurar la opción hwaccel en el futuro, pero por ahora solo tenga en cuenta que la CPU es importante.
Si está jugando un juego que consume mucha CPU, existe una alta probabilidad de que la transmisión tenga saltos o contratiempos. Si su CPU es débil, entonces será difícil que produzca y empuje los cuadros lo suficientemente rápido.
Para mi PC, cuando juego Nier Automata no hay contratiempos y puedo obtener cerca de 60 fps dependiendo de la configuración de transmisión (resolución de escritorio de 1280 x 720 y tasa de bits de 5mb / s). Pero cuando intenté jugar RE3 2020 a 30 o 56 fps, tenía hipo y saltos. Así que tenga esto en cuenta.
Características
- El sistema no se bloquea cuando se va a dormir (la transmisión se desconectará y la aplicación se puede cerrar)
- Aplicación de escritorio para alojar la transmisión de conexión remota
- Transmita la entrada desde el interruptor a la conexión remota
- Transmita audio desde la conexión remota al conmutador
- Conecte automáticamente aplicaciones de transmisión de PC y conmutador
- Silenciar automáticamente la PC cuando el audio se transmite al Switch
- Permitir la configuración manual del conmutador a la conexión a PC
- Configurar los ajustes de transmisión desde el conmutador
- Desconectar / volver a conectar la transmisión a voluntad
- Cambiar el modo de entrada a ratón
- Alternar el modo de entrada al controlador DS4 (PS4)
- Alternar el modo de entrada al controlador Xbox
General tips
- Preset value controls how the encoder should work: ultrafast means the encoder performs to get the image out as fast as possible ignoring quality, and veryslow means the encoder can take its time to preserve image quality.
- Codec value can help performance however I have tested both the AMF and standard h264 and don't notice much of a difference.
- Quality control factor is what controls how good the image should be. The lower the value the harder your PC must work to maintain quality. (this value and 'Preset' are what will dictate your CPU's workload)
- For more info see the ffmpeg documentation.
Config examples
-
Great image quality config:
- Preset - veryslow
- Quality control factor - less than 10 (0 = perfect image)
- Bitrate - around 5000 - 8000
- Vsync Mode - variable frame rate
-
Latency oriented config:
- Preset - ultrafast
- Quality control factor - 20+
- Bitrate - around 5000
- Vsync Mode - variable frame rate
I haven't tested all configuration combinations (and these are dependent on my PC specs), so if you find one that works great please feel free to send it to me with your PC specs and network environment configuration 🙂
Rare crash when opening some homebrew apps
The crash issue in v0.7.2 has been found and patched. (it was due to the network discovery feature not being shutdown correctly) The app still crashes however it is harder to reproduce now and I haven't found a proper 100% way to reproduce the crash yet. The current crashing issue is rare and only crashes hbloader/hbmenu when opening an app after streaming for a certain while. I can't reproduce it but it's gone for now. If anyone figures out how to reproduce the crash, please let me know.
Agradecimientos
- jakibaki for the original In-Home-Switching switch application
- DevL0rd for the updated streaming application SkyNX
- FFmpeg for an exhaustingly extensive library
- nefarius for the ViGEm Client SDK. It's such a nice SDK/library to use
- rdp for screen-capture-recorder. Made streaming audio via FFmpeg on PC very easy
- SwitchBrew for libNX
- devkitPro bloody legends for letting us have a toolchain to compile stuff for the Switch
- SciresM, TuxSH, hexkyz, and fincs for Atmosphere. Absolute madlads these lot are. Also a shoutout to the champs that help contribute to the repo.
- Jonathan Dearborn for SDL_FontCache
- cucholix for the app icon 🙂
Aplicación creada por Moehammered.
Que novedades incluye la versión 1.0.0
Released
Cambios en la aplicación de Switch
- Se agregó compatibilidad con la configuración táctil y la entrada virtual # 17
- Se agregó una nueva pantalla de menú de configuración para 'Configuración táctil'
- Hay 2 modos de interfaz táctil virtual disponibles: Virtual Touch y Simulated Mouse
-
Toque virtual
- Hace que la pantalla táctil del Switch se comporte como un monitor táctil para la PC
-
Ratón simulado
- Hace que la pantalla táctil del Switch se comporte como un mouse (similar al trackpad de una computadora portátil)
-
Incluye soporte para el comportamiento absoluto y del trackpad.
- El comportamiento absoluto significa que el mouse estará debajo de su dedo
- El comportamiento del trackpad significa que el mouse coincide con el movimiento de su dedo (como el trackpad de una computadora portátil)
- Tenga en cuenta que, como su nombre lo indica, es un comportamiento simulado, por lo que tuve que imitar cómo funcionaría un mouse. No será perfecto, pero está ahí por motivos de compatibilidad.
- Disfruté usando el modo trackpad personalmente (no pensé que lo haría) pero siempre que uso el modo absoluto, siempre prefiero cambiar al Virtual Touch. Recomiendo Virtual Touch siempre que puedas usarlo.
- Probado usándolo con cemu y el modo Virtual Touch funcionó sin problemas mientras jugaba a Super Mario Maker
- Selección de monitor agregada en la pantalla de configuración del codificador # 21
- Se agregó la capacidad de seleccionar el monitor para la transmisión.
- El número comienza en 0 para el monitor principal y aumenta para los monitores secundarios
Soporte para múltiples controladores, botón de guía y JoyCon
-
Configuración del botón Inicio (PS4) / Guía (X360) agregada # 24
- Se agregó la capacidad de vincular la tecla de acceso rápido del botón Inicio en el menú del controlador
- Se agregó la capacidad de configurar el tiempo de activación de la tecla de acceso rápido del botón de inicio (cuánto tiempo se debe mantener presionada la tecla de acceso rápido del botón de inicio para activarla)
-
Se agregó soporte para múltiples controladores # 22 (¡yay!: D)
- Se agregó la capacidad de configurar cuántos controladores virtuales se crean y transmiten a la PC
- IMPORTANTE: el modo de controlador de PS4 no respetará el orden del número de jugador (es posible que el joycon 1 no sea el controlador 1 de DS4 en la PC)
- El modo Xbox 360 parece estar bien y no he tenido problemas con el pedido del controlador / reproductor fuera de servicio.
- No puedo controlar cómo el controlador asigna los números de jugador, así que por ahora esto se considera un inconveniente menor. Si necesita ordenar el jugador, configúrelo en el juego, use el modo Xbox 360 o simplemente entregue el controlador.
-
¡Los JoyCons se pueden separar y usar como controladores individuales!
- Deberá separar y emparejar los JoyCons individualmente en Switch OS
- Los botones siempre se reasignan en orientación horizontal de la siguiente manera:
- Botones faciales = ABXY
- Stick analógico = Stick analógico izquierdo
- SL / SR = L / R
- Más / Menos = Más
- No hay planes para hacer esto configurable en un futuro cercano (pero lo volveré a visitar una vez que se haya completado el puerto de Linux)
Pantalla de configuración del mouse agregada # 27
- Las opciones de configuración del mouse se han eliminado del menú 'controlador' y se han promovido a su propia pantalla de menú
- La rueda del mouse (desplazarse hacia arriba / abajo e izquierda / derecha) ahora es configurable y asignable al joystick analógico izquierdo o derecho
- La tecla de acceso rápido para alternar el modo de mouse / controlador ahora es configurable y asignable
- El tiempo de alternancia del modo de mouse / controlador ahora es configurable
Pantalla de configuración del teclado agregada # 38
- Las teclas del teclado de la PC ahora se pueden simular cuando el programa está en 'modo Mouse'
- Los botones del teclado se pueden configurar y asignar a los botones del interruptor
- Inicialmente, esto era solo una solicitud para implementar las teclas de flecha, pero no pude ayudar a planificar el futuro en caso de expansión de la función. Disfrutar 🙂
Entrada de configuración de usuario del teclado de software # 40
- El teclado del software Switch integrado ahora se ha utilizado en todos los lugares aplicables
- Las entradas numéricas se han reemplazado con indicaciones de entrada de teclado
- La entrada de la dirección IP en la pantalla de configuración de red ahora se realiza a través del teclado del software
Limpieza del menú de configuración de red # 41
- Creó un nuevo menú de configuración para permitir a los usuarios configurar todos los aspectos de la conexión a la PC
- Se pueden configurar IP, dirección de transmisión, cambio manual de IP y puertos de datos
-
El programa de PC también tiene un archivo de configuración de red respectivo para permitir la configuración de los puertos de datos
- Asegúrese de que la configuración del conmutador coincida con la configuración del archivo de configuración de red de la PC
Proyecto de refactorización y limpieza # 43
- Hice una limpieza muy atrasada a través de la base de código para la aplicación Switch y PC
- Código redundante eliminado
- Reemplazo de variables mágicas con constantes.
- El código de transmisión se movió a clases auxiliares separadas para la aplicación Switch y PC
- Se agregó la capacidad de configurar el registro. El registro de archivos y la verbosidad son configurables.
-
Código refactorizado para separar el código común en una carpeta compartida entre Windows y el proyecto Switch
- Esto se hizo como preparación para iniciar la versión # 32 de la aplicación de host de Linux.
- Para el usuario final, esto no debería importar mucho
Cambios en la aplicación de PC
Centrado del mouse en el monitor seleccionado # 21 # 27
- Cuando comience la transmisión, el programa centrará el mouse en el medio de la pantalla
Opciones de configuración agregadas # 41, # 43
- Ahora puede controlar la ventana de la consola, minimizar / restaurar en transmisión, conectar / desconectar
- La verbosidad del registro es controlable
- Los archivos de registro se pueden habilitar (para ayudar con la notificación de problemas, con suerte)
- Se puede configurar el comportamiento de silencio del audio de la PC
-
Se pueden configurar puertos de datos de red
- Asegúrese de que coincidan con la configuración de red de la aplicación Switch.
Interfaces virtuales para el tacto, el mouse y el teclado creadas # 17 # 27 # 38
- Se limpió el código del mouse para permitir un comportamiento configurable, como el posicionamiento relativo y absoluto
- Se agregó una interfaz táctil que inyecta mensajes de datos táctiles en Windows, lo que permite simular las entradas táctiles e interpretarlas como entradas táctiles reales en Windows.
- Se agregó una interfaz de teclado que se comporta de manera similar a la interfaz del mouse. Intenta comportarse de manera similar a un teclado normal