Condividi tramite


Sviluppo di Marble Maze, un gioco UWP (Universal Windows Platform) creato con C++ per DirectX

Questo argomento descrive come usare DirectX e C++ per creare un gioco 3D per la piattaforma UWP (Universal Windows Platform). Il gioco, chiamato Marble Maze, abbraccia diversi fattori di forma, ad esempio tablet, PC desktop tradizionali e PC portatili.

Nota

Per scaricare il codice sorgente di Marble Maze, vedere l'esempio in GitHub.

Importante

Marble Maze illustra modelli di progettazione ritenuti procedure consigliate per la creazione di giochi UWP. È possibile adattare molti dei dettagli di implementazione in base alle proprie pratiche e ai requisiti unici del gioco che si sta sviluppando. È possibile usare tecniche o librerie diverse quando queste sono più adatte alle proprie esigenze. Tuttavia, assicurarsi sempre che il codice passi il Kit di certificazione app Windows. Quando un'implementazione mostrata in questa documentazione è ritenuta essenziale per il successo dello sviluppo di giochi, verrà detto espressamente.

Introduzione a Marble Maze

Abbiamo scelto Marble Maze perché è relativamente semplice e dimostra allo stesso tempo l'ampiezza delle caratteristiche riscontrate nella maggior parte dei giochi. Illustra come usare grafica, gestione degli input e audio. Illustra inoltre i meccanismi di gioco, ad esempio regole e obiettivi.

Marble Maze somiglia a quei giocattoli a forma di labirinto contenenti una biglia intrappolata in una scatola, con vari fori lungo il percorso. L'obiettivo di Marble Maze è lo stesso del giocattolo: inclinare il labirinto per guidare la biglia nel labirinto nel minor tempo possibile, senza lasciare cadere la biglia in uno dei fori. Marble Maze aggiunge il concetto di checkpoint. Se la biglia cade in un foro, il gioco viene riavviato nell'ultima posizione di checkpoint superata dalla biglia.

Marble Maze offre diversi modi per consentire a un utente di interagire con la plancia del gioco. Se si ha un dispositivo attivato per il tocco o attivato per l'accelerometro, lo si può usare per spostare la plancia. È possibile anche usare un controller o un mouse per controllare il gameplay.

screenshot del gioco marble maze.

Prerequisiti

  • Windows 10 Creators Update
  • Microsoft Visual Studio 2017
  • Conoscenza di programmazione C++
  • Familiarità con DirectX e la sua terminologia
  • Conoscenza di base del COM

A chi è rivolto questo articolo?

Se si è interessati a creare giochi 3D o altre applicazioni a elevato utilizzo di grafica per Windows 10, questa è l'esercitazione giusta. I principi e le procedure descritti in questa documentazione sono ideali per creare un gioco UWP personalizzato. Un background o un forte interesse per la programmazione C++ e DirectX aiuterà a sfruttare al meglio questa documentazione. Se non si ha esperienza con DirectX, questa documentazione risulterà utile a che ha esperienza con ambienti di programmazione grafica 3D simili.

Il documento Procedura dettagliata: creare un semplice gioco UWP con DirectX descrive un altro esempio che implementa un gioco sparatutto 3D di base usando DirectX e C++.

Informazioni su questa documentazione

Questa documentazione illustra come:

  • Usare l'API di Windows Runtime e DirectX per creare un gioco UWP.
  • Usare Direct3D e Direct2D per lavorare con contenuto visivo, ad esempio modelli, texture, vertex shader e pixel shader e sovrimpressioni 2D.
  • Integrare meccanismi di input come tocco, accelerometro e controller di gioco.
  • Usare XAudio2 per incorporare effetti musicali e audio.

Argomenti non trattati in questa documentazione

Questa documentazione non tratta gli aspetti seguenti dello sviluppo di giochi. Questi aspetti sono trattati in risorse aggiuntive.

  • Principi di design di gioco 3D.
  • Nozioni di base sulla programmazione C++ o DirectX.
  • Come progettare risorse come texture, modelli o audio.
  • Come risolvere i problemi di comportamento o prestazioni nel gioco.
  • Come preparare il gioco per l'uso in altre parti del mondo.
  • Come certificare e pubblicare il gioco in Microsoft Store.

Marble Maze usa anche la libreria DirectXMath per lavorare con la geometria 3D ed eseguire calcoli fisici, ad esempio collisioni. DirectXMath non è trattato in dettaglio in questa sezione. Per informazioni dettagliate sul modo in cui Marble Maze usa DirectXMath, vedere il codice sorgente.

Anche se Marble Maze fornisce molti componenti riutilizzabili, non è un framework di sviluppo di giochi completo. Quando Marble Maze viene trattato come componente riutilizzabile nel gioco che si sta creando, verrà sottolineato in questa documentazione.

Passaggi successivi

È consigliabile iniziare con i concetti fondamentali dell'esempio Marble Maze per conoscere la struttura di Marble Maze e alcune delle linee guida per la codifica e lo stile del codice sorgente di Marble Maze. La tabella seguente descrive i documenti in questa sezione in modo che sia possibile farvi riferimento facilmente.

In questa sezione

Posizione Descrizione
Nozioni fondamentali sull'esempio di Marble Maze Fornisce una panoramica della struttura del gioco e di alcune delle linee guida relative al codice e allo stile del codice sorgente.
Struttura dell'applicazione Marble Maze Spiega come è strutturato il codice dell'applicazione Marble Maze e come la struttura di un'app UWP DirectX differisce da quella di un'applicazione desktop tradizionale.
Aggiunta di contenuto visivo all'esempio Marble Maze Descrive alcune delle procedure chiave da tenere presenti quando si lavora con Direct3D e Direct2D. Descrive anche come Marble Maze applica queste procedure per il contenuto visivo.
Aggiunta di input e interattività all'esempio Marble Maze Descrive il funzionamento di Marble Maze con input di accelerometro, tocco e controller di gioco per consentire agli utenti di spostarsi tra i menu e interagire con la plancia. Vengono inoltre descritte alcune delle procedure consigliate da tenere presenti quando si lavora con l'input.
Aggiunta di audio all'esempio di Marble Maze Descrive il funzionamento di Marble Maze con l'audio per aggiungere musica ed effetti audio all'esperienza del gioco.