Moonlight, una settimana di gaming in remoto.

Dalla scorsa settimana, sono ripartiti i corsi alla mia facoltà (informatica) e, causa qualche esame già dato e qualche altro rimandato, mi sono ritrovato con un orario dei corsi con alcune ore buca.
Andare in università da parte mia vuol dire due treni, un autobus e una passeggiata a piedi, inoltre ho corsi anche in tre diversi edifici nella stessa giornata, ció vuol dire per me cercare di limitare il più possibile i pesi.

Sopravvivo quindi con una comoda borsa a tracolla (La classica borsa Vespa) contenente: Quaderni, penne, matita, Tablet Microsoft Surface Pro, mouse, caricabatteria Tablet (e telefono), cuffie e pranzo al sacco, oltre a smartphone e portafogli. Portare per me la borsa grande con il portatile da 15 pollici per giocare per me (e la mia schiena!) è molto scomodo considerando quell’ora e mezza che posso farmi di gioco durante la giornata.

Una borsa piccola ma bella imbottita.

Dal canto suo nonostante le dimensione il Surface Pro si è rivelato un ottimo compagno con una autonomia che ha anche superato comodamente le quattro ore: Lettura e scrittura di appunti, social, qualche video, programmazione in C, videochiamata e anche un po di lavoro tramite Team Viewer. Ma quando ho quell’ora con il cervello in fumo che vorrebbe una pausa ahimè, anche se con un processore i5 resta un tablet, assolutamente inadatto al gioco, seppur con i driver Intel Intellimodder modificati Borderlands 2, Civilization e Rocket League siano giocabili.

Non è proprio il più portatile dei tablet o il più comodo dei notebook, ma svolge egregiamente il suo lavoro.

Poi inizio settimana mi è venuta un’idea:
Nvidia Game Stream.
A casa possiedo, oltre al 15 pollici con GPU Nvidia GTX 860, un computer fisso con una GTX 1070 che ancora non sono riuscito a spremere a fondo e di recente sono passato a fibra Vodafone (100 Mega in download e 20 in upload). Mi è capitato spesso di giocare dal cellulare steso sul letto usando Nvidia Game Stream tramite una app gratuita, Moonlight, usando un joystick bluetooth. Avrei potuto fare una cosa simile da remoto?

Ufficialmente per Nvidia Shield, praticamente per qualsiasi dispositivo.

Prima di tutto la questione della connessione:
Giocare collegati tramite WiFi a 5 GHz alla propria rete locale è diverso da essere collegati tramite WiFi pubblico al proprio pc di casa usando la propria connessione a internet. Giocando a 2560×1440 a 60 FPS da telefono infatti il bitrate si aggira sui 40 Mbit al secondo. Sono tanti, Ma fortunatamente si può facilmente trovare un compromesso: 720p a 30 fps. È strano giocare a 30 FPS, ma vista la dimensione dello schermo non si nota più di tanto, lo stesso dicasi per la risoluzione. In questo modo, grazie anche all’uso del più efficiente codec h265 (al posto del più anziano h264) il bitrate si aggira dai 3 ai 5 Mbit, e qui devo fare due premesse:

  1.  Benché la mia banda upload spesso sia tra i 16 e i 19, ultimamente causa guasti non ancora identificati di Vodafone ho cadute pomeridiane fino a 5 Mbit, rientrando appena in questo caso nell’intervallo di qualita/prestazioni che ho trovato.
  2. Il Wi-Fi pubblico universitario è una rete Wi-Fi basata sul vecchio standard g, ossia a 21 Mbit. Spesso in realtà viaggio a molto meno non essendo tutti gli access point liberi da interferenze o congestione, ma tutto sommato riesco ad avere sempre almeno 10 Mbit simmetrici (la connessione in università si basa su decine di linee in fibra connesse direttamente sui rack, collegandomi ad uno di essi con cavo da 1 Gbit ho il massimo che la mia porta ethernet possa reggere!).

Calcoli alla mano aspettando un professore in aula avvio moonlight da smartphone mentre mi collego con il tablet al fisso da remoto usando Team Viewer, la mia idea era usare una VPN tra fisso, Tablet e Smartphone. Tuttavia mentre eseguo alcuni test tra banda e ping, mi rendo conto di come la VPN influenzi abbastanza il secondo. Tuttavia non avevo considerato una cosa: Moonlight permette di immettere direttamente l’IP dell’host. E se l’host non fosse per forza locale?
Una rapida configurazione NAT del router di casa (Vodafone Station Revolution) e moonlight mi riconosce il computer, già precedentemente associato!
Da qui la prova del nove, avvio Borderlands 2 e…
“Wow, si trova nel Play Store?”.
Il commento di un mio collega studente alle mie spalle, il gioco era infatti incredibilmente nitido e con un ottimo framerate! La mia idea funzionava.
Durante l’intervallo sono andato oltre, avviando GTA Online.
Qui i miei conoscenti si sono riuniti attorno a me e il mio smartphone che mostrava in tempo reale la partita a GTA Online che stavo tenendo da casa, a circa 20 Km di distanza!
“Ma è incredibile! Come fai!”, “Lo posso fare anche io?”, “Cioè non sembra proprio avere ritardo!”.

Anche se l’emulatore purei sta facendo passi avanti, al momento il caro pcsx2 sul pc di casa é la soluzione migliore.

In realtà un po di ritardo c’è: Secondo Moonlight la latenza media dei frame è di circa 16 ms. Questi vuol dire: Il pc elabora il frame, qualche ms di codifica e lo invia tramite internet al mio dispositivo, arrotondiamo a 20 ms. Ma al momento della ricezione di questo frame magari io ho fatto un azione, altri venti ms che la mia azione raggiunge il fisso e dopo altri 20 ms (quindi circa 40) vedo la mia azione. Il lag apparente è quindi di circa 40 ms, che in caso di gioco online vanno a sommarsi al ping del server. Esempio: Rocket League, ping di Rocket League: 64 ms, che sommati a 40ms danno 104ms, Sul limite della giocabilità. Questo comunque nei giochi single Player  (Ad esempio Rise of the Tomb Rider) non viene assolutamente avvertito. Per me è un successo.

Ma trattiamoci con un po di lusso con tablet e gamepad!

Giocare da smartphone, benché munito di apposito gamepad non è molto comodo, specialmente in FPS dove il mouse e la tastiera sono decisamente più comodi e, benché moonlight supporti input nativo da mouse e tastiera connessi allo smartphone, non posso portarmi una tastiera da casa!!
Ma per mia fortuna, esistono due versioni di moonlight anche per SO Windows: Una basata su Java e l’altro una semplice estensione per Chrome. Benché non usi Chrome sono andato per la seconda… Che non funziona affatto! La prima tuttavia funziona, benché data la mancanza di decoding hardware consuma un po’ di risorse extra.

Oggi senza Laboratorio di Sistemi Operativi. Ok, approfittiamone.
Una grafica simile su un economico Tablet Android ti lascia così…

Dopo un paio di giorni che riesco a sfruttare la mia 1070 anche da remoto, posso dirmi soddisfatto. posso prendermi quell’ora e mezza di relax riprendendo i giochi che avevo lasciato in sorpreso, anche nel treno usando il telefono. Sto anche valutando di ricomprami una PSVita, console che ho tristemente venduto per la mancanza di contenuti, in quanto Moonlight è stato ufficialmente portato su tale console che, ricordo, su alcuni modelli è perfino dotato di modem 3G (3,6 MBit, il minimo appunto). Sarebbe fantastico anche una implementazione della tecnologia di Nvidia anche su Switch, ma dubito fortemente che Nintendo sia di questa idea…

La procedura da seguire è inoltre abbastanza semplice, purché siano soddisfatti questi due requisiti:

  1. Una GPU Nvidia GTX (da x60 in poi) dalla 660 in poi.
  2. Una connessione a internet di tipo Fibra se volete giocare da fuori casa, con almeno 5 MBit di banda upload (Potete verificare da speedtest.net di Ookla).

La procedura da seguire non è complicata:

  1. Prima di tutto, bisogna scaricare Moonlight da Play Store o App Store (Se avete un Android roottato, usate la versione di Moonlight apposita).
  2. Da computer installate l’ultima versione di Nvidia GeForce experience, solitamente integrati anche nell’ultima versione dei driver video e apritelo.
  3. Loggatevi o registratevi se non lo avete ancora fatto e apire le preferenze. Li andate sulla scheda “Shield” e assicuratevi che Gamestream sia abilitato.
  4. Da smartphone (O computer client) aprite Moonlight e aggiungete il vostro PC inserendo il vostro indirizzo IP Locale (Solitamente 192.168.1.x) o hostname (Solitamente NomeComputer-PC). Se tutto va bene vi ritroverete nella schermata precedente con l’icona del vostro PC. Se tuttavia il programma dovesse dare errore, controllate di essere nella stessa rete e di aver settato il giusto IP.
  5. Aprendo da smartphone l’icona del vostro PC vi verrà mostrato un codice PIN da inserire solo questa volta nella finestra che si aprirà al PC.
  6. Fatto,  da smartphone potete selezionare il gioco da avviare. Sono nativamente supportati i gamepad android (Che verranno visti come gamepad xbox da PC) e, se state usando la versione per android roottati, anche mouse e tastiere connesse. Ma se vogliamo giocare fuori casa?
  7. Tornate al menù principale di Moonlight e aprite le preferenze. Da li settate la risoluzione e il bitrate a seconda della vostra connessione: Non c’è un settaggio perfetto, dovreste fare varie prove. Con una connessione con 4 Mbit in upload potete reggere tranquillamente una risoluzione 720p a 60fps o, sacrificando un po’ di qualità, anche 1080 a 30 fps. Ovviamente anche il vostro dispositivo remoto deve contare una connessione capace di avere le stesse prestazioni in download (Qualsiasi connessione 4G LTE supporta velocità anche maggiori, in 3G dipende dai vari operatori).
  8. Da computer tornate su speedtest.net, in basso a sinistra durante il test troverete il vostro IP internet, appuntatevelo.
  9. Qui vi è la parte più difficile, dovete entrare nel apnnello di configurazione del router (Solitamente 192.168.1.1) e settare il port fowarding della porta 48010 UDP al vostro PC, o direttamente DMZ. Sulla Vodafone Station Revolution ho dovuto ripiegare sul secondo metodo.
  10. Tornate su Moonlight e aggiungete un nuovo dispositivo, questa volta inserite il vostro IP internet, se tutto va bene dovreste tornare alla schermata principale. NOTA: Dovete essere su due reti diverse per questo passaggio o il router non saprà a quale dei due dispositivi concedere la porta 48010, consiglio di usare la connessione dati cellulari per questo passaggio!
  11. Fate una prova usando una rete internet diversa, come quella cellulare. Se è tutto a posto siete a cavallo. Se vi da errore RTSP Handshaking dovete ritentare la configurazione porte del router.
  12. Dato che l’IP internet della vostra connessione può variare (Lo fa sempre dopo un ravvio del modem o perdita di connessione), potreste valutare l’utilizzo di un servizio come no-ip o ddns per associare il vostro IP ad un loro hostname.

E ditemi, avete veramente bisogno di Playstation Now ora?

About RonyeTBF

Studente di infromatica con passioni in informatica, motori, manga, videogiochi, tecnologia e pupazzi moe.

  • Giorgio Marzo

    se mai qualcuno leggerà questo commento (spero te RonyeTBF) su un post di 3 mesi fa, potreste aiutami sul punto 9 (port fowarding della porta 48010 UDP o DMZ) ? tengo fastweb come router e il suo pannello di configurazione è molto incasinato (dovrei aver aperto la porta UDP 48010 ma se anche fosse non funziona, ho provato anche DMZ).

    Tuttavia non avevo considerato una cosa: Moonlight permette di immettere direttamente l’IP dell’host. E se l’host non fosse per forza locale? (quindi hai reso l’ip pubblica ? e se si, è statica o dinamica ?).

    le mie intenzioni sono molto simili alle tue, tuttavia il mio pc di casa, non si trova a 20 km di distanza ma 100 km, e se mi va bene, lo uso nel weekend (fuori sede che torna a casa 1 weekend si e 2 no).

    • Hyde

      Girerò la domanda al signor RonyeTBF, risponderà il prima possibile 😉

    • RonyeTBF

      Fastweb per la sua struttura di rete non permette di accedere direttamente da remoto (in quanto il router fastweb non è direttamente in internet, Ma in una grande intranet). Dovresti fare qualche prova con una VPN.

      • Giorgio Marzo

        Grazie per la risposta RonyeTBF, quindi devo richiedere una ip pubblica alla fastweb, bene. Scusa posso chiederti come fare con un VPN (può linkarmi una pagina web con un tutorial per fare prima), la teoria c’è l’ho presente, mentre la pratica….. e se non la scoccia, l’ultimo chiarimento riguardante l’ip pubblica e se meglio statica o dinamica.
        Ancora grazie per avermi risposto e grazie anche a Hyde per aver fatto girare la domanda.

        • RonyeTBF

          Con fastweb L’IP dinamico è gratis, statico sono 10 euro al mese.
          Ti consiglio dinamico e poi sfrutti no-ip