Guest Post - Sviluppiamo per Xbox

Questo post è stato scritto da Alessio Iafrate, MVP e leader della Community DotNet Abruzzo.

Con il rilascio dell’Anniversary Update per Windows 10 anche l’Xbox è entrata a far parte dei dispositivi che possono far girare le UWP, in questo momento quindi le nostre app potranno girare su praticamente tutti i dispositivi che fanno girare Windows 10 nelle varie versioni.

Utilizzare la piattaforma UWP ci permette anche di non avere più la necessità di acquistare costosi devkit o eseguire sblocchi particolari per utilizzare la nostra console come ambiente di Test.

Di cosa abbiamo bisogno

Per poter sviluppare su XBox One abbiamo bisogno di

· una XBox One

· un account sviluppatore necessario per poter attivare la console (se non lo avete il costo è di circa 20€ una tantum)

· un pc con installato Visual Studio 2015 update 3 (va bene qualsiasi versione, io ho utilizzato la community)

· Windows 10 SDK 1607

Attiviamo la modalità sviluppatore sulla nostra XBox

Innanzi tutto abbiamo bisogno di una comune XBox One su cui dovremo installare dallo store XBox l’app  Dev Mode Activation e seguire le semplici operazioni a schermo che ci guideranno all’attivazione della nostra console tramite il nostro account developer.

Tutto quello che dovremo fare è raggiungere la pagina https://developer.microsoft.com/en-us/XboxDevices ed inserire il codice fornito. Da questa stessa pagina sarà anche possibile disattivare le console che abbiamo precedentemente attivato.

Una volta seguiti tutti i passaggi ci verrà chiesto di scaricare un aggiornamento del sistema operativo.

ATTENZIONE: l’installazione non comporterà la perdita di nessun dato.

Una volta che la nostra console si sarà riavviata potremo tornare all’app Dev Mode Activation e utilizzare il pulsante Switch and Restart per passare alla modalità sviluppatore. clip_image002

L’XBox a questo punto dopo qualche secondo di attesa si riavvierà (non preoccupatevi se il riavvio sarà più lungo del solito, è una cosa normale) e vi troverete davanti una schermata di home molto più scarna di quella a cui siamo abituati, con poche tile e senza i giochi che abbiamo installato.

Sulla destra avremo una nuova app Dev Home fondamentale per avere i dettagli della nostra console per poterci connettere da Visual Studio. Nella parte superiore sinistra è infatti possibile visualizzare l’indirizzo ip della nostra console, mentre nella colonna centrale sarà possibile generare un pin per visual studio oppure rimuovere un pin già utilizzato. clip_image004

Lanciamo la nostra app da Visual Studio

Ogni app UWP può essere potenzialmente eseguita sulla nostra console, tutto quello che dobbiamo fare è impostare come piattaforma x64 o x86 e come destinazione “Remote Machine“. Al primo tentativo di avvio ci verrà richiesto l’indirizzo ip della macchina a cui connettersi ( come detto precedentemente è disponibile nell’app dev home), è necessario che l’autenticazione sia impostata su Universal, altrimenti la connessione non avrà successo.

I parametri di connessione saranno modificabili in ogni momento nelle impostazioni della soluzione nella sezione debug. clip_image006

Come ultimo passaggio (necessario solo la prima volta) ci verrà chiesto di inserire un pin generato dall’app Dev Home di cui abbiamo parlato in precedenza.

A questo punto la nostra app sarà finalmente eseguita sulla console.

Limitazioni

Al  momento altre a molti bug conosciuti più o meno gravi di cui è possibile trovare una lista QUI quella che abbiamo a disposizione è una primissima versione dell’ambiente di sviluppo basato sulla piattaforma UWP e quindi con molte api non ancora implementate. Una lista delle implementazioni mancanti è disponibile QUI.

La mancanza dell’implementazione non porterà alla non esecuzione dell’applicazione che utilizza queste API, ma i metodi semplicemente ritorneranno valori nulli o porteranno allo store per scaricare eventuali app, anche se al momento non sarà possibile installarle nella modalità dev. Ad esempio il FolderPicker una volta richiamato non visualizzerà nulla ma ritornerà un semplice valore null come se l’utente avesse annullato la selezione, il FilePicker funzionerà correttamente permettendoci di selezionare un file ma solo su un hard disk esterno mentre il CameraCaptureUI tenterà di accedere allo store per scaricare l’app camera (che è disponibile anche su Xbox) ma non riuscirà nell’intento visto che non è possibile scaricare app in modalità developer.

Particolarità

Safe area

Non tutti i televisori consentono di visualizzare il contenuto fino ai bordi dello schermo per motivi storici e tecnologici. Per impostazione predefinita, la piattaforma UWP lascerà quindi un’area sicura intorno alla nostra app per evitare che una porzione dell’app possa essere non visibile e la riempirà con il colore di fondo dell’applicazione come è possibile vedere nell’immagine seguente. clip_image008

L’impostazione potrà naturalmente essere disabilitata con una semplice riga di codice che andrà inserita nello start dell’applicazione. Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().SetDesiredBoundsMode(Windows.UI.ViewManagement.ApplicationViewBoundsMode.UseCoreWindow);

Controllo in modalità XY e Mouse

Per le app Xbox è stato implementata una doppia tipologia di controllo dell’applicazione in modo da poter avere una tipologia di controllo adattabile alle varie tipologie di app.

La modalità XY (che non è altro che l’utilizzo del Game Pad o del Telecomando) mappa lo spostamento con i tasti direzionali sulla croce direzionale (e anche sulla levetta sinistra sul game pad), mentre la selezione degli elementi è mappata sul tasto INVIO/Seleziona (vedi immagine relativa a Game pad e telecomando seguente).

In questo modo se l’app gestisce correttamente la tastiera non dovremmo aver nessun tipo di problema. clip_image010

Per mantenere la compatibilità con le altre piattaforme sia la tastiera che il game pad genereranno gli eventi KeyDown e KeyUp e il focus passerà solo tra gli elementi che hanno le proprietà IsTabStop="True" e Visibility="Visible".

La modalità Mouse che invece è abilitata di default utilizza la croce direzionale per spostare il cursore sullo schermo, il pulsante INVIO/Seleziona per il click sinistro ed il tasto Menu per il click destro, simulando in maniera completa un classico mouse. clip_image012

La modalità mouse è abilitata per impostazione predefinita per le app UWP, per disabilitarla ed abilitare la navigazione XY, basterà impostare la proprietà RequiresPointerMode su WhenRequested nel costruttore della nostra applicazione

public App()

{

this.InitializeComponent();

this.RequiresPointerMode =

Windows.UI.Xaml.ApplicationRequiresPointerMode.WhenRequested;

this.Suspending += OnSuspending;

}

Lo store

Applicazioni

La pubblicazione per le app è disponibile nel Dev Center da pochi giorni, basterà selezionare come dispositivo di destinazione anche l’Xbox. Le app UWP create e testate in una Xbox One commerciale seguiranno lo stesso processo di inserimento, revisione e pubblicazione applicato attualmente per le normali applicazioni, con delle revisioni aggiuntive per soddisfare gli attuali standard Xbox One. clip_image014

Giochi

Per pubblicare giochi UWP il processo è leggermente più macchinoso, occorre essere registrati su ID@XBOX e richiedere una approvazione ufficiale per il gioco a questo indirizzo oltre a maggiori controlli in fase di approvazione. ID@XBOX inoltre offre agli sviluppatori accesso completo alle API Xbox Live per i propri giochi, tra cui quelle per punteggio giocatore e obiettivi, oltre alla possibilità di sfruttare tutti i vantaggi del multiplayer tra dispositivi, dei salvataggi nel cloud e di tutte le funzionalità di Xbox Live in Xbox One.

Questa serie di approvazioni è necessaria per permettere di mantenere elevato il livello di qualità dei giochi che per una console sono fondamentali.

Conclusioni

Il rilascio dei tool di sviluppo UWP per XBox è stato accolto con molto entusiasmo, prima però di poter rendere le nostre app disponibili anche su questa piattaforma bisogna testarle in modo approfondito.

La differenza nella modalità di controllo ed alcune API non ancora implementate o implementate in modo diverso su questa piattaforma rispetto alle altre potrebbero dare dei problemi nell’utilizzo da parte degli utenti.

Bisogna ammettere che veder girare le proprie app su una console è decisamente una bella soddisfazione, anche perchè sulle altre piattaforme presenti sul mercato questa cosa non è possibile per sviluppatori senza un grande team alle spalle.

Se avete una XBox One e siete sviluppatori adesso non dovete far altro che dar sfogo alla vostra fantasia e sviluppare app che potranno veramente entrare nei salotti di tutte le case!

Buon Coding!!

Links Gestione XBox registrate ID@XBOX https://msdn.microsoft.com/windows/uwp/input-and-devices/gamepad-and-remote-interactions http://blog.infernored.com/building-apps-for-xbox-one-with-uwp

https://msdn.microsoft.com/it-it/windows/uwp/xbox-apps/frequently-asked-questions\#posso-pubblicare-la-mia-app