Home Homebrew Rilasciato Switch Remote Play v1.0.0 – Host Application Patch

[Scena Switch] Rilasciato Switch Remote Play v1.0.0 – Host Application Patch

678
0

Pubblicato un nuovo e interessantissimo aggiornamento per Switch Remote Play, lo strumento ci permette di riprodurre la console Switch da remoto o in locale tramite un altro dispositivo dotato di tastiera, mouse, controller o dispositivo touchscreen chiaramente ispirato a In-Home-Switching e SkyNX.

Questa nuova versione aggiunge molte funzioni e caratteristiche, come il supporto per la configurazione touch e l’input virtuale, oltre alla selezione del monitor all’interno della schermata di configurazione dell’encoder.

Note

Il flusso video dipende dalla CPU poiché al momento utilizza l’opzione ffmpeg di hwaccel auto che di solito si traduce in ffmpeg che sceglie la CPU per il processo di cattura dello schermo.

Nella mia fase di prototipazione iniziale ho scoperto che la scelta dell’opzione GPU AMD per ffmpeg ha portato a risultati di streaming incoerenti. In futuro cercherò di rendere configurabile l’opzione hwaccel, ma per ora tieni presente che la CPU è importante.

Se stai giocando a un gioco ad alta intensità di CPU, c’è un’alta probabilità che lo streaming abbia salti o singhiozzi. Se la tua CPU è debole, sarà difficile produrre e spingere i frame abbastanza velocemente.

Per il mio PC, quando gioco a Nier Automata non ci sono intoppi e posso avvicinarmi a 60 fps a seconda delle impostazioni di streaming (risoluzione desktop 1280 x 720 e bitrate di 5 MB/s). Ma quando ho provato a giocare a Resident Evil 3 2020 a 30 o 56 fps ho avuto singhiozzi e salti. Quindi tienilo a mente.

Caratteristiche

  • Configura le impostazioni del flusso direttamente dalla console Switch.
  • Nessun arresto anomalo del sistema durante la sospensione (lo stream si disconnette e l’applicazione può essere chiusa).
  • Utilizza ffmpeg per trasmettere video e audio alla console Switch.
  • Streaming dell’input dalla console Switch alla connessione remota.
  • Consenti la configurazione manuale della connessione Passa a PC.
  • Connetti automaticamente le applicazioni Switch e PC stream.
  • Disattiva automaticamente l’audio del PC quando l’audio è in streaming su Switch.
  • Disconnetti/Riconnetti stream a piacimento.
  • Passa dalla modalità di input al mouse.
  • Passa dalla modalità di input al controller DS4 (PS4).
  • Passa dalla modalità di input al controller Xbox.
  • Ricche opzioni di configurazione per l’encoder CPU h264.
  • Ricche opzioni di configurazione per l’encoder AMF h264 (encoder hardware AMD).
  • Controller multipli (fino a 4, inclusi i JoyCon individuali).
  • Supporto per touch screen.

Switch-Project

Questo progetto consiste in un’applicazione scritta per la console Switch che decodificherà i dati stream ricevuti da FFMPEG e invierà il suo input a un’applicazione per emulare un controller. Il rendering viene eseguito con SDL2 e il progetto è scritto in C++.

Compatibilità

  • Supporto per il solo CFW Atmosphere. SX OS non è ufficialmente supportato.
  • Il programma è stato compilato con le ultime librerie LibNX (v4.1.3 al momento della stesura di questo documento).
    • Significa che funzionerà con i firmware più recenti.

Windows-Project

Questo progetto consiste in un’applicazione scritta per Windows che lancerà un flusso FFMPEG per codificare e inviare dati. L’applicazione, dopo aver avviato il flusso FFMPEG, ascolterà per ricevere i dati di input ed emulerà un controller tramite ViGEm Client SDK.

ViGEm Client SDK si aspetta che il driver del kernel ViGEm Bus sia installato sulla macchina per funzionare. Per maggiori informazioni sul codice del driver del kernel vedere la pagina gitHub di ViGEmBus. Per l’installazione del driver, vedere la repository di ViGEmBus.

Anche il progetto Windows è scritto in C++ e utilizza Winsock per la comunicazione socket con l’applicazione Switch.

Mac-Progect

Vedere il file ‘mac-readme’ che si trova nella cartella delle istruzioni/mac del repository.

Problemi noti

Prestazioni in streaming

Le prestazioni di streaming dipendono fortemente dalla connettività di rete e dalle prestazioni della CPU del PC. Le impostazioni di configurazione dovranno essere riprodotte con Trova ciò che funziona bene con la tua rete + ambiente PC.

Si consiglia di giocare con i valori “Encoder Preset” e “Quality Control Factor” mantenendo il bitrate a 8192 o meno.

Suggerimenti generali

  • Il valore preimpostato controlla come dovrebbe funzionare il codificatore: ultraveloce significa che il codificatore esegue per ottenere l’immagine il più velocemente possibile ignorando la qualità, e molto lento significa che il codificatore può impiegare del tempo per preservare la qualità dell’immagine.
  • Il valore del codec può aiutare le prestazioni, tuttavia ho testato sia l’AMF che lo standard h264 e non ho notato molta differenza.
  • Il fattore di controllo della qualità è ciò che controlla la qualità dell’immagine. Più basso è il valore, più il tuo PC deve lavorare per mantenere la qualità (questo valore e ‘Preset’ sono ciò che determinerà il carico di lavoro della CPU).
  • Per maggiori informazioni vedere la documentazione di ffmpeg.

Esempi di configurazione

  • Ottima configurazione della qualità dell’immagine:
    • Preset – veryslow.
    • Fattore di controllo della qualità – inferiore a 10 (0 = immagine perfetta).
    • Bitrate – circa 5000-8000.
    • Vsync Mode – frame rate variabile.
  • Configurazione orientata alla latenza:
    • Preset – ultrafast.
    • Fattore di controllo qualità – 20+.
    • Bitrate – circa 5000.
    • Vsync Mode – frame rate variabile.

Non ho testato tutte le combinazioni di configurazione (e queste dipendono dalle specifiche del mio PC), quindi se ne trovi una che funziona alla grande, sentiti libero di inviarmela con le specifiche del tuo PC e la configurazione dell’ambiente di rete.

Raro arresto anomalo durante l’apertura di alcune app homebrew

Il problema di arresto anomalo nella v0.7.2 è stato trovato e corretto. (era dovuto al fatto che la funzione di rilevamento della rete non veniva arrestata correttamente).

L’app si arresta ancora in modo anomalo, tuttavia è più difficile riprodurla ora e non ho ancora trovato un modo corretto al 100% per riprodurre l’arresto anomalo.

L’attuale problema di arresto anomalo è raro e blocca hbloader/hbmenu solo quando si apre un’app dopo lo streaming per un certo periodo. Non posso riprodurlo ma per ora è andato. Se qualcuno capisce come riprodurre il bug, fammelo sapere.

Aggiornate le istruzioni con ulteriori informazioni sulla risoluzione dei problemi relativi al rilevamento automatico della rete (link esterno): https://github.com/Moehammered/switch-remote-play/blob/master/instructions/Instructions.md

Changelog

[stextbox id=’info’]Questa versione non è affatto compatibile con le versioni precedenti. Assicuratevi di rimuovere completamente le tracce della vecchia versione dalla console Switch e su PC.[/stextbox]

Aggiunto supporto per la configurazione touch e l’input virtuale #17

  • Aggiunta una nuova schermata del menu di configurazione per ‘Touch Configuration’.
  • Sono disponibili 2 modalità di interfaccia con touch virtuale: Virtual Touch and Simulated Mouse.
  • Virtual Touch:
    • Fa sì che il touch screen della Switch si comporti come un monitor tattile per il PC.
  • Simulated Mouse:
    • Fa sì che il touch screen della console Switch si comporti come un mouse (simile al trackpad di un laptop).
    • Include il supporto per il comportamento assoluto e del trackpad.
      • Il comportamento assoluto significa che il mouse sarà sotto il tuo dito.
      • Il comportamento del trackpad indica che il mouse corrisponde al movimento del dito (come il trackpad di un laptop).
    • Si prega di essere consapevoli, poiché il nome implica che si tratta di un comportamento simulato, quindi ho dovuto imitare il funzionamento di un mouse. Non sarà perfetto, ma è lì per motivi di compatibilità.
    • Mi è piaciuto usare personalmente la modalità trackpad (non pensavo che l’avrei fatto) ma ogni volta che utilizzo la modalità assoluta, preferisco sempre passare al Virtual Touch. Raccomando Virtual Touch ogni volta che puoi usarlo.
  • Testato utilizzandolo con Cemu e la modalità Virtual Touch ha funzionato senza problemi durante la riproduzione di Super Mario Maker.

Aggiunto Monitor Selection in Encoder Configuration Screen #21

  • Aggiunta la possibilità di selezionare il monitor per lo streaming.
  • Il numero inizia da 0 per il monitor principale e aumenta per i monitor secondari.

Controller multipli, pulsante guida e supporto JoyCon

  • Aggiunta configurazione del pulsante Home (PS4)/Guida (X360) #24.
    • Aggiunta la possibilità di associare il tasto di scelta rapida del pulsante Home nel menu del controller.
    • Aggiunta la possibilità di configurare il tempo di attivazione del tasto di scelta rapida del pulsante Home (per quanto tempo tenere premuto il tasto di scelta rapida del pulsante Home per attivarlo).
  • Aggiunto supporto per molti controller #22  (yay! :D)
    • Aggiunta la possibilità di configurare quanti controller virtuali vengono creati e trasmessi in streaming al PC.
    • IMPORTANTE: La modalità controller PS4 non rispetterà l’ordine del numero del giocatore (joycon 1 potrebbe non essere il controller DS4 1 sul PC).
      • La modalità Xbox 360 sembra a posto e non ho avuto problemi con l’ordine di giocatori/controller fuori servizio.
      • Non posso controllare come l’autista assegna i numeri dei giocatori, quindi per ora questo è considerato un piccolo inconveniente. Se hai bisogno di ordinare i giocatori, configuralo nel gioco, usa la modalità Xbox 360 o semplicemente consegna il controller.
  • I JoyCon possono essere separati e utilizzati come controller individuali!
    • Dovrai separare e accoppiare i JoyCon individualmente nel sistema operativo Switch.
    • I pulsanti vengono sempre rimappati in orientamento orizzontale come segue:
    • Pulsanti frontali = ABXY
    • Stick analogico = Stick analogico sinistro.
    • SL/SR = L/R
    • Più/Meno = Più.
    • Non ci sono piani per renderlo configurabile nel prossimo futuro (ma lo rivisiterò dopo che il port Linux sarà stato completato).

Aggiunta schermata di configurazione del mouse #27

  • Le opzioni di configurazione del mouse sono state rimosse dal menu “controller” e sono state promosse alla propria schermata del menu.
  • La rotellina del mouse (scorrimento su/giù e sinistra/destra) ora è configurabile e assegnabile alla levetta analogica sinistra o destra.
  • Il tasto di scelta rapida per la modalità mouse/controller ora è configurabile e assegnabile.
  • Il tempo di attivazione/disattivazione della modalità mouse/controller ora è configurabile.

Aggiunta schermata di configurazione della tastiera #38

  • I tasti della tastiera del PC ora possono essere simulati quando il programma è in ‘Mouse mode’.
  • I pulsanti della tastiera possono essere configurati e assegnati ai pulsanti di commutazione.
  • Inizialmente era solo una richiesta per implementare i tasti freccia, ma non ho potuto fare a meno di pianificare in anticipo in caso di espansione della funzione. 

Input configurazione utente tastiera software #40

  • La tastiera software Switch integrata ora è stata utilizzata ovunque sia applicabile.
  • Gli input numerici sono stati sostituiti con i prompt di input da tastiera.
  • L’immissione dell’indirizzo IP nella schermata di configurazione della rete ora viene eseguita tramite la tastiera del software.

Pulizia del menu di configurazione della rete #41

  • Creato un nuovo menu di configurazione per consentire agli utenti di configurare tutti gli aspetti della connessione al PC.
  • IP, indirizzo di trasmissione, commutazione IP manuale e porte dati possono essere configurati.
  • Il programma per PC ha anche un rispettivo file di configurazione di rete per consentire la configurazione delle porte dati.
    • Assicurati che le impostazioni sullo Switch corrispondano alle impostazioni nel file di configurazione di rete del PC.

Refactoring e pulizia del progetto #43

  • Eseguita una pulizia da tempo attesa tramite la base di codice per l’applicazione Switch e PC.
  • Rimosso il codice ridondante.
  • Variabili magiche sostituite con costanti.
  • Il codice in streaming è stato spostato in classi di supporto separate per l’applicazione Switch e PC.
  • Aggiunta la possibilità di configurare la registrazione. La registrazione dei file e la verbosità sono configurabili.
  • Refactoring del codice per separare il codice comune in una cartella condivisa tra il progetto Windows e Switch.
    • Questo è stato fatto in preparazione per l’avvio della versione #32 dell’applicazione host Linux.
  • Per l’utente finale, questo non dovrebbe importare molto.

Modifiche alle applicazioni per PC

Centraggio del mouse sul monitor selezionato  #21#27

  • All’avvio dello streaming, il programma centra il mouse al centro dello schermo.

Aggiunte opzioni di configurazione  #41,  #43

  • Ora è possibile controllare la finestra della console minimizzare/ripristinare durante la connessione/disconnessione del flusso.
  • La verbosità della registrazione è controllabile.
  • I file di registro possono essere abilitati (per aiutare con la segnalazione dei problemi, si spera).
  • Ora è possibile configurare il comportamento di silenziamento dell’audio del PC.
  • Le porte dati di rete possono essere configurate.
    • Assicurati che corrispondano alle impostazioni nella configurazione di rete dell’app Switch.

Create interfacce virtuali per touch, mouse e tastiera #17#27#38

  • Ripulito il codice del mouse per consentire comportamenti configurabili come il posizionamento relativo e assoluto.
  • Aggiunta un’interfaccia touch che inietta messaggi di dati tattili in Windows consentendo di simulare e interpretare gli input tattili come input tattili reali in Windows.
  • Aggiunta un’interfaccia della tastiera che si comporta in modo simile all’interfaccia del mouse. Cerca di comportarsi in modo simile a una normale tastiera.

Download: Switch Remote Play v1.0.0

Download: Source code Switch Remote Play v1.0.0

Fonte: gbatemp.net