Sviluppo di giochi 3D con ShiVa3D Suite panoramica del progetto

Sei curioso di sviluppare il gioco in 3D? Ora è il momento di imparare! Questa serie di tutorial in cinque parti mostrerà come creare un semplice gioco con ShiVa3D Suite, un motore di gioco 3D multipiattaforma e uno strumento di sviluppo. Questa serie era stata originariamente pensata solo per i membri di Tuts + Premium, ma sarà invece distribuita gratuitamente alla community con ogni porzione pubblicata back-to-back nei prossimi 5 giorni. Continua a leggere per iniziare il tuo viaggio nella programmazione 3D!


Introduzione di serie

In questa serie di tutorial, introdurremo lo sviluppo di giochi 3D per piattaforma Android utilizzando ShiVa3D Suite. Lo sviluppo di un'applicazione Android con grafica 3D può essere difficile per diversi motivi. Gli sviluppatori devono avere familiarità con l'API OpenGL e con l'API Android specifica che lo supporta. Inoltre, lo sviluppo di grafica 3D può includere codice C / C ++ nativo per motivi di prestazioni oltre al codice Java / Objective-C. Ciò aumenta il livello di conoscenza e sforzo richiesto per lo sviluppo di un'applicazione Android 3D. Inoltre, la creazione di grafica 3D implica competenze esclusive indipendenti dalla competenza di programmazione Java o C / C ++. In sintesi, lo sviluppo di applicazioni 3D richiede competenze avanzate di diverse discipline.

ShiVa3D Suite è un set di strumenti progettati per sviluppare applicazioni 3D multipiattaforma. Questi strumenti semplificano la progettazione e la composizione dell'applicazione in base a compiti e concetti specifici. Ad esempio, è possibile separare un modello visivo 3D dal suo comportamento e lavorare su questi aspetti in modo indipendente. Inoltre, lo sviluppo del gioco nella Suite ShiVa3D consente l'astrazione del gioco dalla particolare piattaforma di destinazione. I giochi sviluppati con questa suite possono essere distribuiti su più piattaforme di destinazione, tra cui Windows, iOS e Android OS.

Questo tutorial fornisce un esempio di come sviluppare un gioco 3D per piattaforma Android utilizzando due elementi principali della Suite ShiVa3D, l'Editor di ShiVa e lo Strumento di authoring di ShiVa. Il sistema operativo di destinazione di questa applicazione tutorial è Android 3.2 (Honeycomb). Tuttavia, forniremo anche una discussione su come portare il gioco su dispositivi iOS, come l'iPhone / iPod Touch e l'iPad / iPad2.


Organizzazione della serie

Questo tutorial è stato organizzato come una serie in 5 parti. Nella parte 1, introdurremo l'applicazione tutorial, discuteremo i vari concetti di ShiVa3D e gli strumenti principali in ShiVa3D Suite. Nella parte 1, spiegheremo anche i file nell'archivio di download che accompagna questo tutorial. Nella parte 2, inizieremo a descrivere come sviluppare il gioco usando l'Editor ShiVa. Introdurremo i moduli di ShiVa Editor usati nello sviluppo dell'applicazione tutorial. Quindi, parleremo dei file di modello Collada che rappresentano i personaggi principali nell'applicazione. Infine, discuteremo alcuni passaggi iniziali per creare l'applicazione come la creazione del gioco e della scena, nonché l'importazione dei modelli Collada.

Nella parte 3, mostreremo come modificare la scena della nostra applicazione. Inizieremo anche a inserire il codice per gli AIModels del gioco. Nella parte 4, termineremo la codifica per i rimanenti AIModel ed eseguiremo test unitari animando il gioco. Eseguiremo quindi il gioco dall'Editor ShiVa per l'importazione nello Strumento di authoring di Shiva. Infine, discuteremo due diverse opzioni di authoring nello Shiva Authoring Tool, uno per generare un eseguibile Android e un altro per generare un progetto Eclipse.

Nella parte 5, inizieremo personalizzando il gioco in Eclipse. Ciò includerà l'impostazione del progetto Eclipse, le modifiche al codice e la creazione del codice Java e delle librerie native. A quel punto avremo completato il tutorial in termini di sviluppo e implementazione. Nel resto della parte 5 esamineremo il codice, discuteremo come portare il gioco su dispositivi iOS e fare alcune osservazioni conclusive.


Titoli di coda

Il modello Collada ei relativi file di immagine per l'anatra da bagno gialla e il modello Collada per l'uovo sono la cortesia di Sony Computer Entertainment Inc. Questi modelli sono stati scaricati dalla sezione Campioni di base della banca di modelli collada.org, e sono concessi in licenza secondo i termini della licenza di condivisione condivisa SCEA.

La texture "marmo" utilizzata in background è stata scaricata da http://www.texturewarehouse.com ed è stata rilasciata sotto licenza Creative Commons, Attribution-NonCommercial-ShareAlike 2.0.

L'autore ha tratto grande beneficio da un libro su ShiVa3D, intitolato Introduzione alla programmazione 3D con ShiVaÆ. Inoltre, il codice di gestione degli eventi multitouch spiegato in 'Code Review' ha preso in prestito una tecnica introdotta in un'esercitazione sul sito degli sviluppatori di ShiVa3D, denominata Gestione multitouch.


Descrizione del gioco

Il gioco inizia con una schermata iniziale che mostra i personaggi principali del gioco: una anatra da bagno gialla in primo piano e un uovo dietro, come mostrato sotto.

Figura 1. Schermata iniziale

Quindi, la schermata principale del gioco appare con due oggetti, l'anatra e l'uovo. L'anatra crea un movimento angolare in uno spazio 3D su un piano fisso definito da y = 3. L'uovo può muoversi solo lungo una linea retta definita da x = 0, y = 3. Il movimento di anatra e uovo negli assi globali x, y, z è mostrato sotto.

figura 2. Anatra e uovo - Global Motion

Allo stesso tempo, l'anatra ruota attorno ai suoi assi x, y, z locali, indipendentemente dalla sua rotazione globale, come mostrato di seguito.

Figura 3. Anatra - Movimento locale

Allo stesso modo, l'uovo gira intorno al suo asse x locale indipendentemente dal suo movimento globale (vedi sotto).

Figura 4. Egg - Local Motion

Il movimento (globale) dell'uovo lungo il percorso lineare può essere controllato dall'azione a tocco singolo dell'utente sullo schermo. Se il dito dell'utente si sposta da sinistra a destra, allora l'uovo si muove nella direzione z negativa. Viceversa, se il dito dell'utente si sposta da destra a sinistra, allora l'uovo si muove nella direzione z positiva. (Vedi sotto.)

Figura 5. Spostando l'uovo

Dalla geometria in Figura 2, osservate che il percorso lineare che descrive il movimento globale dell'uovo è sul piano fisso su cui l'anatra fa il suo movimento globale. Pertanto, l'anatra e l'uovo possono collidere nei due punti di intersezione definiti dal percorso lineare dell'uovo e dal percorso angolare dell'anatra. I punti di collisione sono mostrati nello schema qui sotto.

Figura 6. Punti di collisione

Se l'anatra e l'uovo si scontrano, la rotazione dell'anatra cambierà direzione, da in senso orario a antiorario, o viceversa.

L'obiettivo del gioco è quello di scontrare l'uovo e l'anatra il maggior numero possibile di volte. Ogni volta che si verifica una collisione, il punteggio dell'utente, visualizzato nell'angolo in basso a destra dello schermo, verrà incrementato. Inoltre, il dispositivo Android vibra per una durata di 100 millisecondi.

L'utente può riavviare il gioco applicando un'azione a doppio tocco (ad esempio, muovendo due dita sullo schermo) come mostrato di seguito.

Figura 7. Riavviare il gioco

Prima che l'applicazione si riavvi, viene visualizzato un messaggio informativo per circa un secondo, come mostrato di seguito.

Figura 8. Riavvio del gioco

Al riavvio dell'applicazione, vengono ripristinate le posizioni dell'anatra e dell'uovo e il punteggio iniziale.

ShiVa3D Ambiente di sviluppo

ShiVa3D Concepts

In questa sezione, discuteremo i concetti di base dello sviluppo di giochi 3D con ShiVa3D. La maggior parte della discussione qui è presa in prestito dalla documentazione originale di ShiVa3D. Per ulteriori informazioni, consultare http://www.stonetrip.com/developer/doc/ e il manuale dell'utente fornito con l'editor ShiVa.

Gioco rappresenta un gioco, l'entità principale dell'applicazione. Incapsula tutto il resto nell'applicazione come telecamere, scene, modelli ecc. Il gioco è un'unità di schieramento indipendente.

Scena rappresenta un luogo o una vista associati al gioco. C'è una serie di oggetti o modelli associati a una scena. Un gioco può avere più di una scena. Per semplicità, il gioco nell'applicazione tutorial ha una singola scena.

telecamera rappresenta un punto di vista nel gioco. L'utente vedrà il gioco attraverso la fotocamera. Una telecamera può spostarsi da una posizione all'altra o la sua direzione può essere modificata. Nel nostro tutorial, la fotocamera rimarrà fissa.

Modello è un oggetto o un insieme di oggetti con vari attributi come forma, luce e sensore. Nel nostro gioco ci sono due modelli: un'anatra e un uovo. Quelli sono oggetti tridimensionali con un particolare "ruolo" nel nostro gioco. Ogni ruolo dell'anatra e dell'uovo ha il suo AIModel (vedi sotto) per descrivere quel ruolo tramite codice.

AIModel implica 'intelligenza artificiale' e rappresenta il comportamento. Un AIModel potrebbe essere associato a un utente che gioca il gioco o un oggetto nel gioco. In questo tutorial, useremo solo l'oggetto AIModels. Un AIModel può avere funzioni, gestori, stati e variabili per descrivere i comportamenti specifici.

copione contiene il codice in un AIModel, ad esempio codice per una funzione o gestore. Il linguaggio di scripting in ShiVa3D è Lua. (Http://www.lua.org)

Sensore in grado di rilevare determinati eventi fisici. Nel nostro gioco, l'anatra e l'uovo hanno sensori di collisione per rilevare una collisione. Quando un sensore rileva un evento, può essere gestito dal gestore eventi appropriato nell'AIModel associato all'oggetto contenente il sensore.

HUD sta per "head up display" ed è un termine usato per rappresentare vari widget dell'interfaccia utente come pulsanti, etichette, elenchi e cursori, consentendo all'utente di interagire con il gioco. Gli unici componenti HUD che useremo nel nostro gioco sono le etichette di testo.

Strumenti ShiVa3D

Per sviluppare la nostra applicazione tutorial utilizzeremo la versione gratuita di ShiVa3D Suite (http://www.stonetrip.com/download.html), che include l'Editor PLE di ShiVa (edizione di apprendimento personale) e lo Strumento di creazione di ShiVa. Lo schema seguente offre una panoramica del processo di sviluppo che abbiamo utilizzato con questi strumenti.

Figura 9. Processo di sviluppo di ShiVa3D

Cerchiamo di discutere i singoli passaggi di quel processo.

ShiVa Editor

L'editor ShiVa ha vari componenti per lo sviluppo e il test di un gioco 3D da zero. Una caratteristica importante di ShiVa Editor è che un gioco sviluppato con quello strumento può essere distribuito (dopo essere stato creato nello strumento di authoring di ShiVa) in diversi dispositivi con diversi sistemi operativi (ad esempio un PC con sistema operativo Windows o un tablet con sistema operativo Android o i phone).
Alcune delle azioni di base che è possibile eseguire con l'Editor ShiVa sono le seguenti.

  • Sviluppare:
    • Crea un nuovo gioco.
    • Crea una nuova scena e associalo al gioco.
    • Importa modelli 3D, modifica i loro attributi e posizionali in una scena.
    • Crea AIModels, associali ai modelli e scrivi script per gli AIModels.
    • Collegare sensori a modelli e scrivere script per gestire eventi associati a tali sensori.
    • Compilare gli script nel gioco.
  • Test:
    È possibile eseguire un test iniziale del gioco nell'ambiente di sviluppo prima di distribuirlo su un dispositivo di destinazione. Il test viene eseguito tramite la funzione Animate di ShiVa Editor. Per l'animazione, è possibile modificare le impostazioni per le dimensioni dello schermo per vedere come verrà visualizzato il gioco nell'attuale dispositivo di destinazione. È possibile inserire il clic del mouse e gli eventi dei tasti dal mouse e dalla tastiera della macchina di sviluppo. Per emulare eventi tattili potresti aver bisogno di ulteriori disposizioni. Ad esempio, per testare un gestore per gli eventi tattili, un'opzione è scrivere un gestore per gli eventi chiave che incapsulano la funzionalità nel gestore di eventi tocco. (Vedi http://www.stonetrip.com/developer/1720-mix-mouse-and-multitouch.) Un'altra opzione è l'installazione di Device Development Tools (http://www.stonetrip.com/download.html). Quindi integrare il dispositivo target effettivo, eseguendo il Simulatore di input dispositivo 3D di ShiVa, con l'Editor ShiVa nel computer di sviluppo su una rete Wi-Fi. Con questa opzione, puoi simulare gli input direttamente usando il dispositivo di destinazione.
  • Esportare:
    Al termine del test, esporta il gioco. Questo genererà un file con estensione .stk. Il gioco esportato verrà utilizzato da Shiva Authoring Tool, che verrà discusso successivamente.

ShiVa Authoring Tool

Lo scopo principale di Shiva Authoring Tool è convertire un gioco, creato tramite l'Editor ShiVa, in un'applicazione che può essere distribuita in un particolare dispositivo (ad esempio un iPhone, un iPad o un tablet Android). Alcune restrizioni si applicano al sistema operativo della macchina che esegue lo Strumento di creazione Shiva e al dispositivo di destinazione per la conversione. Ad esempio, Shiva Authoring Tool in esecuzione su una macchina Windows non può generare un'applicazione per iPad o iPhone. In questo tutorial, abbiamo utilizzato un PC Windows come macchina di sviluppo e la nostra piattaforma di destinazione è Android. Le informazioni di seguito si applicano a questo particolare ambiente.

Alcune delle azioni di base che si possono eseguire con lo strumento di creazione di Shiva sono le seguenti.

  • Importa: importa il gioco che è stato esportato tramite l'editor ShiVa.
  • Authoring: esistono due tipi di authoring: pacchetto APK e Project.
    • Se il tipo di authoring è selezionato come pacchetto APK, questo creerà un file apk pronto per la distribuzione nel dispositivo di destinazione. Opzionalmente è possibile scegliere l'opzione di installazione durante la creazione. Questo installerà automaticamente il file APK nel dispositivo come parte del processo di compilazione. Se non si sceglie l'opzione di installazione durante la creazione, il pacchetto APK risultante può essere installato nel dispositivo di destinazione un'altra volta utilizzando lo strumento ADB di Android SDK.
    • Se il tipo di creazione è selezionato come Progetto, verrà creato un archivio zip che può essere importato in Eclipse come progetto Android. Il progetto conterrà i file Java e C creati da Shiva Authoring Tool. È possibile modificare tali file per personalizzare ulteriormente l'applicazione per il dispositivo di destinazione. Si noti che non è necessario scegliere il tipo di authoring come Progetto a meno che non si desideri personalizzare ulteriormente la propria applicazione in Eclipse.

    Nota: per ogni tipo di autore, ci sono due opzioni di compilazione: Distribuzione e sviluppo. In questo tutorial, discuteremo solo del tipo di sviluppo dello sviluppo.

Eclisse

Uno può personalizzare il gioco in Eclipse come segue.

  • Importa: importa l'applicazione Android in Eclipse.
  • Sviluppa: personalizza il codice. È possibile modificare sia il codice Java che il codice C generati automaticamente da Shiva Authoring Tool.
  • Build: compila il codice Java tramite Eclipse. Compilare il codice C e creare le librerie native tramite l'utility Cygwin make.
  • Installa: installa l'applicazione nel dispositivo di destinazione tramite Eclipse.

Prerequisiti software

Per utilizzare lo strumento di authoring ShiVa nell'ambiente Windows per lo sviluppo Android, abbiamo utilizzato il seguente software pre-requisito. Notare che Eclipse e ADT per Eclipse sono necessari solo se si desidera generare un progetto Eclipse per la personalizzazione del codice. Per i dettagli, consultare http://www.stonetrip.com/developer/doc/authoringtool/installation.

Software Versione utilizzata nell'applicazione Tutorial
SDK Android revisione 13 (Android 3.2)
NDK Android revisione 7
Cygwin, pacchetto GNU make versione 3.82.90
Apache Ant versione 1.8.0
SDK Java versione 1.6
Eclisse versione 3.7
ADT per Eclipse versione 16.0.1

Nota che il nostro obiettivo principale in questo tutorial è Android 3.2 (Honeycomb), per il quale è stata testata l'applicazione.


File nell'archivio download

In questa sezione, daremo una descrizione dei file nel file di archivio che accompagna questo tutorial.

Il file di archivio ha tre sottocartelle: set1, set2 e set3.

  • La cartella set1 è composta da duck.dae, duckCM.tga, marble.jpg e sphere.dae utilizzati per creare il gioco in ShiVa Editor. Si prega di consultare la sezione 'Sviluppare il gioco in ShiVa Editor' per i dettagli su come usare quei file.
  • La cartella set2 è composta da app_icon.png, app_icon_72x72.png, app_splash.png e app_splash_800x1280.png. Vedi la sezione chiamata 'Shiva Authoring Tool' per i dettagli su come usare app_icon.png e app_splash.png. Vedi "Personalizzare il gioco in Eclipse" per i dettagli su come usare app_icon_72x72.png e app_splash_800x1280.png.
  • In set3 ci sono tre file: Duck.ste, Duck.stk e Duck_Android_final.zip.
    • Duck.ste è un'esportazione del gioco tutorial Duck dall'editor ShiVa. Ti fornisce una versione completa del gioco con tutte le sue risorse, incluso il codice e duck.dae, duckCM.tga, marble.jpg e sphere.dae. Rappresenta lo stato finale del gioco nella sezione 'Sviluppare il gioco nell'editor ShiVa'. Se riscontri un problema mentre segui le istruzioni in quella sezione, Duck.ste dovrebbe essere particolarmente utile. È possibile aprire due istanze separate di ShiVa Editor, importare Duck.ste in un'istanza come riferimento e lavorare sull'altra istanza per eseguire le istruzioni. (Per importare Duck.ste nell'Editor di ShiVa, andare su Main -> Projects per aprire la finestra di dialogo Settings e fare clic su Aggiungi per aggiungere un nuovo progetto Quindi, in quel progetto, aprire Data Explorer e selezionare Importa -> Archivia. Nel campo di testo Importa archivio specificare il percorso completo per Duck.ste.)
    • Duck.stk è un'esportazione del gioco tutorial Duck di ShiVa Editor come pacchetto runtime Android. Questo è un input per lo strumento di authoring di ShiVa. Se vuoi, puoi saltare tutti i passaggi in "Sviluppare il gioco in ShiVa Editor", andare alla sezione chiamata "Shiva Authoring Tool" e avviare la creazione importando Duck.stk.
    • Infine, Duck_Android_final.zip è un archivio di progetto Android in cui è già stata eseguita la personalizzazione del codice. Questo archivio di progetto può essere utile in diversi modi:
      • Puoi usarlo come riferimento mentre segui le istruzioni in 'Personalizzare il gioco in Eclipse'.
      • Se vuoi saltare le istruzioni in 'Personalizzare il gioco in Eclipse', semplicemente importalo in Eclipse. Non apportare modifiche al codice, quindi distribuire il gioco sul dispositivo. (Nota: l'ambiente Eclipse deve avere la posizione dell'SDK Android impostato in Preferenze Eclipse, come descritto in "Personalizzazione del gioco in Eclipse".)
      • Questo archivio contiene il file dell'applicazione Android Duck.apk nella cartella Duck \ bin \ classes che può essere facilmente installata in un dispositivo compatibile con Android 3.2 tramite lo strumento ADB Android SDK senza Eclipse.

Osservazioni conclusive per la parte 1

Nella parte 1 di questo tutorial, abbiamo introdotto l'applicazione tutorial, discusso i vari concetti di ShiVa3D e gli strumenti principali nella suite ShiVa3D. Abbiamo anche spiegato i file nell'archivio di download che accompagna questo tutorial. Nella parte 2, inizieremo a descrivere come sviluppare il gioco usando l'Editor ShiVa. Introdurremo i moduli di ShiVa Editor usati nello sviluppo dell'applicazione tutorial. Quindi, parleremo dei file di modello Collada che rappresentano i personaggi principali nell'applicazione. Discuteremo quindi alcuni passaggi iniziali per creare l'applicazione, come la creazione del gioco e della scena, nonché l'importazione dei modelli Collada.