Tecnologie di gioco per le app UWP

In questa guida si scopriranno le tecnologie disponibili per lo sviluppo di giochi piattaforma UWP (Universal Windows Platform).

Vantaggi di Windows 10 per lo sviluppo di giochi

Con l'introduzione di UWP in Windows 10, i titoli di Windows 10 sono in grado di estendersi su tutte le piattaforme Microsoft. Con la migrazione gratuita dalle versioni precedenti di Windows, il numero di client Windows 10 è in costante crescita. La combinazione di queste due cose fa sì che i titoli di Windows 10 saranno in grado di raggiungere un numero enorme di clienti tramite il Microsoft Store.

Inoltre, Windows 10 offre molte nuove funzionalità particolarmente vantaggiose per i giochi:

  • Riduzione del paging della memoria e riduzione delle dimensioni complessive del sistema di memoria
  • Il miglioramento della gestione della memoria grafica alloca attivamente e protegge più memoria per il gioco in primo piano

Giochi UWP con C++ e DirectX

I giochi in tempo reale che richiedono prestazioni elevate devono usare le API DirectX. DirectX è una raccolta di API native per la creazione di giochi e applicazioni multimediali che richiedono prestazioni elevate, ad esempio giochi 3D.

Ambiente di sviluppo

Per creare giochi per la piattaforma UWP, sarà necessario configurare l'ambiente di sviluppo installando Visual Studio 2015 o versione successiva. È consigliabile installare la versione più recente di Visual Studio, per potere avere accesso agli aggiornamenti di sviluppo e sicurezza più recenti. Visual Studio consente di creare app UWP e fornisce strumenti per lo sviluppo di giochi:

  • Strumenti di Visual Studio per la programmazione di giochi DX: Visual Studio offre strumenti per la creazione, la modifica, l'anteprima e l'esportazione di risorse di immagini, modelli e shader. Sono disponibili anche strumenti che è possibile usare per convertire le risorse in fase di compilazione ed eseguire il debug del codice grafico DirectX. Per maggiori informazioni, vedere Usare gli strumenti di Visual Studio per la programmazione di giochi.
  • Funzionalità di diagnostica della grafica di Visual Studio: gli strumenti di diagnostica della grafica sono ora disponibili in Windows come funzionalità opzionale. Gli strumenti di diagnostica consentono di eseguire il debug della grafica, l'analisi dei fotogrammi grafici e monitorare l'utilizzo della GPU in tempo reale. Per maggiori informazioni, vedere Usare il runtime DirectX e le funzionalità di diagnostica della grafica di Visual Studio.

Per maggiori informazioni, vedere Preparare le piattaforma UWP (Universal Windows Platform) e la programmazione DirectX.

Introduzione ai modelli di progetto di gioco DirectX

Dopo avere configurato l'ambiente di sviluppo sarà possibile usare uno dei modelli di progetto correlati a DirectX per creare il gioco DirectX UWP. Visual Studio 2015 include tre modelli disponibili per la creazione di nuovi progetti DirectX UWP: App DirectX 11 (Windows universale), App DirectX 12 (Windows universale) e App DirectX 11 e XAML (Windows universale). Per maggiori informazioni, vedere Creare un piattaforma UWP (Universal Windows Platform) e un progetto di gioco DirectX da un modello.

API Windows 10

Windows 10 offre una vasta raccolta di API utili per lo sviluppo di giochi. Esistono API per quasi tutti gli aspetti dei giochi, tra cui grafica 3D, grafica 2D, audio, input, risorse di testo, interfaccia utente e rete.

Esistono molte API correlate allo sviluppo di giochi, ma non tutti i giochi devono usare tutte le API. Ad esempio, alcuni giochi usano solo grafica 3D e fanno uso solo di Direct3D, alcuni giochi possono usare solo grafica 2D e solo Direct2D, oppure ancora altri giochi possono usare entrambi. Il diagramma seguente mostra le API correlate allo sviluppo di giochi raggruppate per tipo di funzionalità.

game platform technologies

  • Grafica 3D: Windows 10 supporta due set di API 3D, Direct3D 11 e Direct3D 12. Entrambe queste API offrono la possibilità di creare grafica 3D e 2D. Direct3D 11 e Direct3D 12 non vengono usati insieme, ma entrambi possono essere usati con una delle API nel gruppo grafica e interfaccia utente 2D. Per maggiori informazioni sull'uso delle API grafiche nel gioco, vedere Grafica 3D di base per giochi DirectX.

    API Descrizione
    Direct3D 12

    Direct3D 12 introduce la versione successiva di Direct3D, l'API di grafica 3D alla base di DirectX. Questa versione di Direct3D è progettata per essere più veloce ed efficiente rispetto alle versioni precedenti di Direct3D. Il compromesso per l'aumento della velocità di Direct3D 12 è che è di livello inferiore e richiede di gestire autonomamente le risorse grafiche e avere un'esperienza di programmazione grafica più estesa per realizzare la maggiore velocità.

    Quando utilizzare

    Usare Direct3D 12 quando si devono ottimizzare le prestazioni del gioco e il gioco è associato alla CPU.

    Per altre informazioni

    Vedere la documentazione di Direct3d 12.

    Direct3D 11

    Direct3D 11 è la versione precedente di Direct3D e consente di creare grafica 3D usando un livello superiore di astrazione hardware rispetto a Direct3D 12.

    Quando utilizzare

    Usare Direct3D 11 se si dispone di codice Direct3D 11 esistente, se il gioco non è associato alla CPU o se si desidera il vantaggio di avere risorse gestite.

    Per altre informazioni

    Vedere la documentazione di Direct3D 11.

     

  • Grafica e interfaccia utente 2D: API relative a grafica 2D, ad esempio testo e interfacce utente. Tutte le API grafiche e dell'interfaccia utente 2D sono opzionali.

    API Descrizione
    Direct2D

    Direct2D è un'API grafica 2D accelerata dall'hardware che offre prestazioni elevate e rendering di alta qualità e con prestazioni elevate per geometria 2D, bitmap e testo. L'API Direct2D è basata su Direct3D ed è progettata per interagire con GDI, GDI+ e Direct3D.

    Quando utilizzare

    Direct2D può essere usato anziché Direct3D per fornire grafica per giochi 2D puri, ad esempio uno side-scroller o un gioco da tavolo, oppure può essere usato con Direct3D per semplificare la creazione di grafica 2D in un gioco 3D, ad esempio un'interfaccia utente o un display a testa.

    Per altre informazioni

    Vedere la documentazione di Direct2D.

    DirectWrite

    DirectWrite offre funzionalità aggiuntive per l'uso del testo e può essere usato con Direct3D o Direct2D per fornire output di testo per le interfacce utente o altre aree in cui è necessario il testo. DirectWrite supporta la misurazione, il disegno e l'hit testing di testo multiformato. DirectWrite gestisce il testo in tutte le lingue supportate per le applicazioni globali e localizzate. DirectWrite offre anche un'API per il rendering di glifi di basso livello per gli sviluppatori che vogliono eseguire il proprio layout e l'elaborazione da Unicode a glifo.

    Quando utilizzare

    Per altre informazioni

    Vedere la documentazione di DirectWrite.

    DirectComposition

    DirectComposition è un componente di Windows che consente una composizione bitmap ad alte prestazioni con trasformazioni, effetti e animazioni. Gli sviluppatori di applicazioni possono usare l'API DirectComposition per creare interfacce utente accattivanti che presentano transizioni animate avanzate e fluide da un oggetto visivo a un altro.

    Quando utilizzare

    DirectComposition è pensato per semplificare il processo di composizione di oggetti visivi e la creazione di transizioni animate. Se il gioco richiede interfacce utente complesse, è possibile usare DirectComposition per semplificarne la creazione e la gestione.

    Per altre informazioni

    Vedere la documentazione di DirectComposition.

     

  • Audio: API relative alla riproduzione di audio e all'applicazione di effetti audio. Per informazioni sull'uso delle API audio nel gioco, vedere Audio per i giochi.

    API Descrizione
    XAudio2

    XAudio2 è un'API audio di basso livello che fornisce una base per l'elaborazione e la combinazione dei segnali. XAudio è pensato per essere molto reattivo per i motori audio di gioco mantenendo al tempo stesso la possibilità di creare effetti audio personalizzati e catene complesse di effetti audio e filtri.

    Quando utilizzare

    Usare XAudio2 quando il gioco deve riprodurre suoni con sovraccarico e ritardo minimi.

    Per altre informazioni

    Vedere la documentazione di XAudio2.

    Grafici audio

    Per le funzionalità che è possibile implementare con XAudio2, è possibile usare invece le API del grafico audio di Windows Runtime. Per decidere tra le due alternative, vedere Scelta di Windows Runtime AudioGraph o XAudio2.

    Quando utilizzare

    Usare grafici audio quando il gioco deve riprodurre suoni con un sovraccarico e un ritardo minimi, ma con un'API notevolmente più facile da usare rispetto a XAudio2 e con l'opzione di supporto per C#.

    Per altre informazioni

    Vedere la documentazione relativa ai grafici audio.

    Media Foundation

    Microsoft Media Foundation è pensato per la riproduzione di file multimediali e flussi, sia audio che video, ma può essere usato anche nei giochi quando sono necessarie funzionalità di livello superiore rispetto a XAudio2 ed è accettabile un sovraccarico aggiuntivo.

    Quando utilizzare

    Media Foundation è particolarmente utile per scene di stampo cinematografico o componenti non interattivi del gioco. Media Foundation è utile anche per decodificare i file audio per la riproduzione con XAudio2.

    Per altre informazioni

    Vedere la panoramica di Microsoft Media Foundation

     

  • Input: API relative all'input dalla tastiera, dal mouse, dal gamepad e da altre origini di input dell'utente.

    API Descrizione
    XInput

    L'API game controller XInput consente alle applicazioni di ricevere input dai controller di gioco.

    Quando utilizzare

    Se il gioco deve supportare l'input gampad e si ha codice XInput esistente, è possibile continuare a usare XInput. XInput è stato sostituito da Windows.Gaming.Input per UWP e, se si sta scrivendo un nuovo codice di input, devi usare Windows.Gaming.Input anziché XInput.

    Per altre informazioni

    Vedere la documentazione di XInput.

    Windows.Gaming.Input

    L'API Windows.Gaming.Input sostituisce XInput e offre le stesse funzionalità con i seguenti vantaggi rispetto a Xinput:

    • Riduzione dell'utilizzo delle risorse
    • Minore latenza delle chiamate API per il recupero dell'input
    • Possibilità di lavorare con più di 4 gamepad contemporaneamente
    • Possibilità di accedere a funzionalità aggiuntive del gamepad, ad esempio i motori di vibrazione del grilletto
    • Possibilità di ricevere una notifica quando i controller si connettono/disconnettono tramite evento anziché eseguire il polling
    • Possibilità di attribuire l'input a un utente specifico (Windows.System.User)

    Quando utilizzare

    Se il gioco deve supportare l'input del gamepad e non usa il codice XInput esistente o se si ha bisogno di uno dei vantaggi elencati in precedenza, si dovrebbe usare Windows.Gaming.Input.

    Per altre informazioni

    Vedere la documentazione di Windows.Gaming.Input.

    Windows.UI.Core.CoreWindow

    La classe Windows.UI.Core.CoreWindow fornisce eventi per la pressione e lo spostamento del puntatore di rilevamento, nonché gli eventi di tasto giù e tasto su.

    Quando utilizzare

    Usare gli eventi Windows.UI.Core.CoreWindows quando si deve tenere traccia del mouse o dei tasti nel gioco.

    Per altre informazioni

    Per maggiori informazioni sull'uso del mouse o della tastiera nel gioco, vedere Controlli move-look per i giochi.

     

  • Matematica: API relative alla semplificazione delle operazioni matematiche di uso comune.

    API Descrizione
    DirectXMath

    L'API DirectXMath fornisce tipi e funzioni C++ compatibili con SIMD per operazioni matematiche e algebriche lineari comuni ai giochi.

    Quando utilizzare

    L'uso di DirectXMath è opzionale e semplifica le operazioni matematiche più comuni.

    Per altre informazioni

    Vedere la documentazione di DirectXMath.

     

  • Rete: API che riguardano la comunicazione con altri computer e dispositivi tramite Internet o reti private.

    API Descrizione
    Windows.Networking.Sockets

    Lo spazio dei nomi Windows.Networking.Sockets fornisce socket TCP e UDP che consentono comunicazioni di rete affidabili o inaffidabili.

    Quando utilizzare

    Usare Windows.Networking.Sockets se il gioco deve comunicare con altri computer o dispositivi in rete.

    Per altre informazioni

    Vedere Lavorare con la rete nel gioco.

    Windows.Web.HTTP

    Lo spazio dei nomi Windows.Web.HTTP fornisce una connessione affidabile ai server HTTP che possono essere usati per accedere a un sito Web.

    Quando utilizzare

    Usare Windows.Web.HTTP quando il gioco deve accedere a un sito Web per recuperare o archiviare informazioni.

    Per altre informazioni

    Vedere Lavorare con la rete nel gioco.

     

  • Utilità di supporto: librerie basate sulle API di Windows 10.

    Libreria Descrizione
    Kit di strumenti DirectX

    DirectX Tool Kit (DirectXTK) è una raccolta di classi helper per la scrittura di codice DirectX 11.x in C++.

    Quando utilizzare

    Usare DirectX Tool Kit se si è uno sviluppatore C++ che cerca una sostituzione moderna con il codice di utilità D3DX legacy o se si è uno sviluppatore di XNA Game Studio che esegue la transizione a C++nativo.

    Per altre informazioni

    Vedere la pagina del progetto DirectX Tool Kit, https://github.com/Microsoft/DirectXTK.

    Win2D

    Win2D è un'API di Windows Runtime facile da usare per il rendering grafico 2D in modalità immediata.

    Quando utilizzare

    Usare Win2D se si è uno sviluppatore C++ e si desidera usare un wrapper WinRT per Direct2D e DirectWrite oppure si è uno sviluppatore C# che vuole usare Direct2D e DirectWrite.

    Per altre informazioni

    Vedere la pagina del progetto Win2D, https://github.com/Microsoft/Win2D.

Xbox Live Services

I programmi per sviluppatori Xbox consentono a qualsiasi sviluppatore di integrare Xbox Live nel gioco UWP e pubblicare in Xbox One e Windows 10. Integrare le esperienze social di Xbox Live, ad esempio l'accesso, la presenza, le classifiche e altro ancora nel titolo, con un tempo di sviluppo minimo. Le funzionalità social di Xbox Live sono pensate per aumentare in modo organico il pubblico, diffondere la consapevolezza su oltre 55 milioni di giocatori attivi.

Se si desidera accedere ad altre funzionalità di Xbox Live o al supporto dedicato per marketing e sviluppo e avere la possibilità di essere in primo piano nel principale store Xbox One, fare richiesta per il programma ID@Xbox. Per vedere quali funzionalità sono disponibili per il programma Xbox Live Creators Program e ID@Xbox, vedere la tabella delle funzionalità.

Per maggiori informazioni, vedere Aggiunta di Xbox Live al gioco.

Alternative alla scrittura di giochi con DirectX e UWP

Giochi UWP senza DirectX

Giochi più semplici con requisiti di prestazioni minimi, ad esempio giochi di carte o giochi da tavolo, possono essere scritti senza DirectX e non devono necessariamente essere scritti in C++. Questi tipi di giochi possono usare qualsiasi linguaggio supportato dalla piattaforma UWP, ad esempio C#, Visual Basic, C++e HTML/JavaScript. Se le prestazioni e l'uso intensivo della grafica non sono un requisito per il gioco, vedere l'esempio di gioco touch JavaScript e HTML5.

Motori di gioco

In alternativa alla scrittura di un motore di gioco personalizzato usando le API di sviluppo di giochi di Windows, sono disponibili molti motori di gioco di alta qualità che si basano sulle API di sviluppo di giochi Windows per lo sviluppo di giochi su piattaforme Windows. Quando si considera un motore di gioco o una libreria, sono disponibili più opzioni:

  • Motore di gioco completo: un motore di gioco completo incapsula la maggior parte o tutte le API di Windows 10 che si userebbero quando si scrive un motore di gioco da zero, ad esempio grafica, audio, input e rete. I motori di gioco completi possono anche fornire funzionalità logiche del gioco, ad esempio intelligenza artificiale e pathfinding.
  • Motore di grafica: i motori di grafica incapsulano le API grafiche di Windows 10, gestiscono le risorse grafiche e supportano un'ampia gamma di modelli e formati mondiali.
  • Motore audio: i motori audio incapsulano le API audio di Windows 10, gestiscono le risorse audio e forniscono effetti ed elaborazione audio avanzati.
  • Motore di rete: i motori di rete incapsulano le API di rete di Windows 10 per aggiungere al gioco supporto multiplayer peer-to-peer o basato su server e possono includere funzionalità di rete avanzate per supportare un numero elevato di giocatori.
  • Intelligenza artificiale e motore pathfinding: i motori di intelligenza artificiale e pathfinding forniscono un framework per controllare il comportamento degli agenti nel gioco.
  • Motori a scopo speciale: esiste un'ampia gamma di motori aggiuntivi per la gestione di quasi tutte le attività correlate allo sviluppo di giochi, ad esempio la creazione di sistemi di inventario e alberi di dialogo.

Invio di un gioco al Microsoft Store

Una volta che si è pronti per pubblicare il gioco, si dovrà creare un account per sviluppatore e inviare il gioco a Microsoft Store.

Per informazioni sull'invio del gioco al Microsoft Store, vedere Invio e pubblicazione del gioco.