Dezvoltare 3D a jocului cu ShiVa3D Suite Prezentare generală a proiectului

Curios despre dezvoltarea jocurilor 3D? Acum este momentul să înveți! Această serie de tutori din cinci părți va demonstra cum să construiți un joc simplu cu ShiVa3D Suite, un motor de joc cu platforme 3D și un instrument de dezvoltare. Această serie a fost inițial destinată numai membrilor Tuts + Premium, dar va fi în mod gratuit acordată comunității pentru fiecare porție publicată înapoi în spate în următoarele 5 zile. Citiți mai departe pentru a începe călătoria dvs. în programarea 3D!


Introducere seria

În această serie de tutori, vom introduce dezvoltarea jocului 3D pentru platforma Android folosind ShiVa3D Suite. Dezvoltarea unei aplicații Android cu grafică 3D poate fi o provocare din mai multe motive. Dezvoltatorii ar trebui să fie familiarizați cu OpenGL API și API-ul Android specific care îl acceptă. De asemenea, dezvoltarea grafică 3D poate include codul nativ C / C ++ din motive de performanță, în plus față de codul Java / Obiectiv-C. Acest lucru crește nivelul de cunoștințe și efort necesar pentru dezvoltarea unei aplicații 3D Android. În plus, crearea graficii 3D implică o experiență unică independentă de competența de programare Java sau C / C ++. În concluzie, dezvoltarea aplicațiilor 3D necesită abilități avansate din diferite discipline.

ShiVa3D Suite este un set de instrumente concepute pentru a dezvolta aplicații 3D multi-platformă. Aceste instrumente ușurează proiectarea și compunerea aplicației pe baza unor sarcini și concepte specifice. De exemplu, puteți separa un model vizual vizual de comportamentul său și puteți lucra independent asupra acelor aspecte. În plus, dezvoltarea jocului în Suite ShiVa3D permite abstractizarea jocului de pe platforma țintă. Jocurile dezvoltate cu această suită pot fi implementate în mai multe platforme țintă, inclusiv Windows, iOS și Android OS printre altele.

Acest tutorial oferă un exemplu de dezvoltare a unui joc 3D pentru platforma Android utilizând două elemente principale ale suitei ShiVa3D, Editorului ShiVa și Instrumentului de creație ShiVa. Sistemul de operare țintă al acestei aplicații tutorial este Android 3.2 (Honeycomb). Cu toate acestea, vom oferi, de asemenea, o discuție despre cum să porți jocul pe dispozitive iOS, cum ar fi iPhone / iPod Touch și iPad / iPad2.


Organizarea seriei

Acest tutorial a fost organizat ca o serie de 5 părți. În partea 1, vom introduce aplicația tutorial, vom discuta diferite concepte ShiVa3D și instrumentele principale din ShiVa3D Suite. În partea 1, vom explica, de asemenea, fișierele din arhiva de descărcare care însoțește acest tutorial. În partea a 2-a, vom începe să descriem cum să dezvoltăm jocul folosind editorul ShiVa. Vom introduce modulele Editor ShiVa utilizate în dezvoltarea aplicației tutorial. Apoi, vom vorbi despre fișierele modelului Collada reprezentând caracterele principale din aplicație. În cele din urmă, vom discuta câțiva pași inițiați pentru crearea aplicației, cum ar fi crearea jocului și a scenei, precum și importul modelelor Collada.

În partea a 3-a, vom arăta cum să editați scena aplicației noastre. De asemenea, vom începe să introduceți codul pentru modelele AIM ale jocului. În partea a 4-a, vom termina codarea pentru restul AIModelurilor și vom efectua testarea unităților prin animarea jocului. Apoi vom exporta jocul din ShiVa Editor pentru a fi importat în Shiva Authoring Tool. În cele din urmă, vom discuta două opțiuni de autorizare diferite în Instrumentul de editare Shiva, unul pentru generarea unui executabil Android și altul pentru generarea unui proiect Eclipse.

În partea a 5-a, vom începe prin personalizarea jocului în Eclipse. Aceasta va include configurarea proiectului Eclipse, modificările de cod și construirea codului Java și a bibliotecilor native. În acest moment, vom fi finalizat tutorialul în ceea ce privește dezvoltarea și implementarea. În restul părții 5 vom examina codul, vom discuta cum să portăm jocul pe dispozitivele iOS și să dăm câteva remarci finale.


credite

Modelul Collada și fișierele imagine asociate pentru rața galbenă pentru cadă, precum și modelul Collada pentru ou sunt datorate de Sony Computer Entertainment Inc. Aceste modele au fost descărcate din secțiunea Basic Samples a modelului collada.org Model Bank și sunt licențiate în condițiile licenței Sursă partajată SCEA.

Textura "marmură" utilizată în fundal a fost descărcată de pe http://www.texturewarehouse.com și este licențiată sub licența Creative Commons License, Attribution-Noncommercial-ShareAlike 2.0.

Autorul a beneficiat foarte mult de o carte despre ShiVa3D, intitulată Introducere în programarea 3D cu ShiVa®. În plus, codul de gestionare a evenimentelor multitouch explicat în "Review Code" a împrumutat o tehnică introdusă într-un tutorial de pe site-ul dezvoltatorului ShiVa3D, numit Multitouch Management.


Descrierea jocului

Jocul începe cu un ecran de pornire care afișează personajele principale ale jocului: o rață de cadă galbenă în prim-plan și un ou în spatele acesteia, după cum se arată mai jos.

figura 1. Ecran splash

Apoi, ecranul principal al jocului apare cu două obiecte, rața și oul. Rasa face o mișcare unghiulară într-un spațiu 3D pe un plan fix definit de y = 3. Oul se poate deplasa numai de-a lungul unei linii drepte definite de x = 0, y = 3. Mișcarea rață și ou în axele globale x, y, z este prezentată mai jos.

Figura 2. Duck și ou - Global Motion

În același timp, rața se rotește în jurul axelor sale locale x, y, z, independent de rotația sa globală, după cum se arată mai jos.

Figura 3. Duck - Mișcarea locală

În mod similar, Oul se întoarce în jurul axei sale locale x independent de mișcarea sa globală (vezi mai jos).

Figura 4. Ouă - mișcare locală

Mișcarea (globală) a oului de-a lungul căii liniare poate fi controlată prin acțiunea unică a utilizatorului de pe ecran. Dacă degetul utilizatorului se mișcă de la stânga la dreapta, atunci oul se mișcă în direcția negativă z. Dimpotrivă, dacă degetul utilizatorului se mișcă de la dreapta la stânga, atunci oul se mișcă în poziția z pozitivă. (Vezi mai jos.)

Figura 5. Mutarea Oului

Din geometria din Figura 2, observați că calea liniară care descrie mișcarea globală a ouălor se află pe planul fix pe care rața face mișcarea globală. Prin urmare, rața și oul se pot ciocni la cele două puncte de intersecție definite de calea liniară a ouăi și de calea unghiulară a raței. Punctele de coliziune sunt prezentate în diagrama de mai jos.

Figura 6. Puncte de coliziune

Dacă rața și oul se ciocnesc, rotația raței va schimba direcția, de la sensul acelor de ceasornic până la cealaltă, sau invers.

Scopul jocului este de a coliza oul și rața de câte ori este posibil. De fiecare dată când apare o coliziune, scorul utilizatorului afișat în colțul din dreapta jos al ecranului va crește. De asemenea, dispozitivul Android va vibra pe o durată de 100 de milisecunde.

Utilizatorul poate reporni jocul prin aplicarea unei acțiuni dublu de atingere (de exemplu, deplasarea a două degete pe ecran) după cum se arată mai jos.

Figura 7. Repornirea jocului

Înainte ca aplicația să repornească, se afișează un mesaj informațional timp de o secundă, după cum se arată mai jos.

Figura 8. Repornirea jocului

Când aplicația se repornește, pozițiile rață și oul și scorul inițial sunt toate resetate.

ShiVa3D Mediu de dezvoltare

Concepte ShiVa3D

În această secțiune, vom discuta despre conceptele de bază ale dezvoltării jocurilor 3D cu ShiVa3D. Majoritatea discuțiilor de aici sunt împrumutate din documentația originală ShiVa3D. Pentru mai multe informații, consultați http://www.stonetrip.com/developer/doc/ și manualul de utilizare livrat împreună cu editorul ShiVa.

Joc reprezintă un joc, entitatea principală a aplicației. Încapsulează tot ceea ce este în aplicație, cum ar fi camerele, scenele, modelele etc. Jocul este o unitate de desfășurare independentă.

Scenă reprezintă un loc sau o viziune asociată jocului. Există un set de obiecte sau modele asociate unei scene. Un joc poate avea mai mult de o scenă. Pentru simplitate, jocul din aplicația tutorial are o singură scenă.

aparat foto reprezintă un punct de vedere în joc. Utilizatorul va vedea jocul prin camera. O cameră poate trece de la o poziție la alta sau poate fi schimbată direcția acesteia. În tutorialul nostru, camera va rămâne fixă.

Model este un obiect sau un set de obiecte cu diferite atribute, cum ar fi forma, lumina și senzorul. În jocul nostru există două modele: o rață și un ou. Acestea sunt obiecte tridimensionale cu un anumit "rol" în jocul nostru. Fiecare rol al rață și ou are propriul AIModel (vezi mai jos) pentru a descrie acest rol prin cod.

AIModel implică "inteligență artificială" și reprezintă comportament. Un AIModel ar putea fi asociat cu un utilizator care joacă jocul sau un obiect în joc. În acest tutorial, vom folosi doar obiectele AIModels. Un AIModel poate avea funcții, manipulatoare, stări și variabile pentru a descrie comportamentele specifice.

scenariu conține codul într-un AIModel, de exemplu, codul pentru o funcție sau un manipulator. Limba de scripting în ShiVa3D este Lua. (Http://www.lua.org)

Senzor pot detecta anumite evenimente fizice. În jocul nostru, rața și oul au senzori de coliziune pentru a detecta o coliziune. Când un senzor detectează un eveniment, acesta poate fi manipulat de către dispozitivul de tratare a evenimentelor corespunzător din AIModelul asociat obiectului care conține senzorul.

HUD înseamnă "afișare în sus" și este un termen folosit pentru a reprezenta widget-uri de interfață cu utilizatorul, cum ar fi butoane, etichete, liste și glisoare, permițând utilizatorului să interacționeze cu jocul. Singurele componente HUD pe care le vom folosi în jocul nostru sunt etichetele de text.

ShiVa3D Tools

Pentru a dezvolta aplicația noastră tutorial vom folosi versiunea gratuită a ShiVa3D Suite (http://www.stonetrip.com/download.html), care include ShiVa Editor PLE (ediția personală de învățare) și ShiVa Authoring Tool. Diagrama de mai jos oferă o prezentare generală a procesului de dezvoltare pe care l-am folosit cu aceste instrumente.

Figura 9. Procesul de dezvoltare ShiVa3D

Să discutăm pașii individuali ai acestui proces.

ShiVa Editor

Editorul ShiVa are diverse componente pentru dezvoltarea și testarea unui joc 3D de la zero. O caracteristică importantă a Editorului ShiVa este că un joc dezvoltat cu acest instrument poate fi implementat (după ce a fost autorizat în ShiVa Authoring Tool) pe diferite dispozitive cu diferite sisteme de operare (de exemplu, un PC care rulează Windows OS sau o tabletă cu sistem de operare Android sau iPhone).
Unele dintre acțiunile de bază pe care le puteți efectua cu editorul ShiVa sunt următoarele.

  • Dezvolta:
    • Creați un joc nou.
    • Creați o nouă scenă și asociați-o cu jocul.
    • Importați modele 3D, editați atributele acestora și poziționați-le într-o scenă.
    • Creați AIModeluri, asociați-le cu modelele și scrieți scripturi pentru modelele AIM.
    • Atașați senzorii la modele și scrieți scripturi pentru a gestiona evenimentele asociate cu acești senzori.
    • Compilați scripturile din joc.
  • Test:
    Puteți efectua un test inițial al jocului dvs. în mediul de dezvoltare înainte de al implementa într-un dispozitiv destinație. Testarea este efectuată prin caracteristica Animate a Editorului ShiVa. Pentru animație, puteți schimba setările pentru dimensiunea ecranului pentru a vedea cum va fi afișat jocul în dispozitivul țintă real. Puteți introduce mouse-ul și evenimentele cheie de pe mouse-ul și tastatura mașinii dvs. de dezvoltare. Pentru a emula evenimente tactile, este posibil să aveți nevoie de alte prevederi. De exemplu, pentru a testa un handler pentru evenimente touch, o opțiune este să scrieți un handler pentru evenimentele cheie care încorporează funcționalitatea handlerului evenimentului tactil. (A se vedea http://www.stonetrip.com/developer/1720-mix-mouse-and-multitouch.) O altă opțiune este instalarea Device Development Tools (http://www.stonetrip.com/download.html). Apoi, integrați dispozitivul țintă real, care rulează Simulatorul de intrare 3D al dispozitivului ShiVa, cu editorul ShiVa în mașina de dezvoltare printr-o rețea Wi-Fi. Cu această opțiune, puteți simula intrările direct utilizând dispozitivul destinație.
  • Export:
    După terminarea testării, exportați jocul. Aceasta va genera un fișier cu o extensie .stk. Jocul exportat va fi folosit de Shiva Authoring Tool, care este discutat în continuare.

Instrumentul de creație ShiVa

Scopul principal al instrumentului Shiva Authoring Tool este de a converti un joc creat prin ShiVa Editor într-o aplicație care poate fi implementată într-un anumit dispozitiv (de exemplu, un iPhone, iPad sau tabletă Android). Anumite restricții se aplică în ceea ce privește sistemul de operare al mașinii care rulează Shiva Authoring Tool și dispozitivul țintă pentru conversie. De exemplu, instrumentul Shiva Authoring Tool care rulează pe o mașină Windows nu poate genera o aplicație iPad sau iPhone. În acest tutorial, am folosit un PC Windows ca mașină de dezvoltare și platforma țintă este Android. Informațiile de mai jos se aplică acestui mediu particular.

Unele dintre acțiunile de bază pe care le puteți realiza cu instrumentul Shiva Authoring Tool sunt următoarele.

  • Import: Importați jocul care a fost exportat prin Editorul ShiVa.
  • Autorizări: Există două tipuri de redactare: pachetul APK și proiectul.
    • Dacă tipul de creație este selectat ca pachet APK, acesta va crea un fișier apk gata de implementare în dispozitivul destinație. Opțional, puteți alege opțiunea de instalare în timpul construcției. Aceasta va instala automat fișierul APK în dispozitiv ca parte a procesului de construire. Dacă nu alegeți opțiunea de instalare în timpul construcției, pachetul APK rezultat poate fi instalat din nou în dispozitivul destinație utilizând instrumentul SDK Android SDK.
    • Dacă tipul de autor este selectat ca proiect, acesta va crea o arhivă zip care poate fi importată în Eclipse ca proiect Android. Proiectul va conține fișiere Java și C create de Shiva Authoring Tool. Puteți edita aceste fișiere pentru a personaliza în continuare aplicația pentru dispozitivul vizat. Rețineți că nu este nevoie să alegeți tipul de redactare ca proiect decât dacă doriți să personalizați în continuare aplicația în Eclipse.

    Notă: Pentru fiecare tip de autor, există două opțiuni de construire: Distribuție și dezvoltare. În acest tutorial, vom discuta doar despre tipul de dezvoltare.

Eclipsă

Se poate personaliza jocul în Eclipse după cum urmează.

  • Import: Importați aplicația Android în Eclipse.
  • Dezvoltați: personalizați codul. Puteți schimba atât codul Java, cât și codul C care a fost generat automat de instrumentul Shiva Authoring Tool.
  • Build: Compilați codul Java prin Eclipse. Compilați codul C și construiți bibliotecile native prin intermediul utilitarului Cygwin.
  • Instalați: Instalați aplicația în dispozitivul destinație prin Eclipse.

Condiții preliminare de software

Pentru a utiliza ShiVa Authoring Tool în mediul Windows pentru dezvoltare Android, am folosit următorul software pre-requisite. Rețineți că Eclipse și ADT pentru Eclipse sunt necesare numai dacă doriți să generați un proiect Eclipse pentru personalizarea codului. Pentru detalii, consultați http://www.stonetrip.com/developer/doc/authoringtool/installation.

Software-ul Versiunea folosită în aplicația Tutorial
Android SDK versiunea 13 (Android 3.2)
Android NDK revizuirea 7
Cygwin, GNU face pachet versiunea 3.82.90
Apache Ant versiunea 1.8.0
Java SDK versiunea 1.6
Eclipsă versiunea 3.7
ADT pentru Eclipse versiunea 16.0.1

Rețineți că obiectivul nostru principal în acest tutorial este Android 3.2 (Honeycomb), pentru care aplicația a fost testată.


Fișiere în arhiva de descărcare

În această secțiune, vom oferi o descriere a fișierelor din fișierul de arhivă care însoțește acest tutorial.

Fișierul arhivă are trei sub-dosare: set1, set2 și set3.

  • Setul de dosare1 constă din duck.dae, duckCM.tga, marble.jpg și sphere.dae folosite pentru a crea jocul în Editorul ShiVa. Consultați secțiunea "Dezvoltarea jocului în editorul ShiVa" pentru detalii despre utilizarea acestor fișiere.
  • Setul de dosare2 este format din app_icon.png, app_icon_72x72.png, app_splash.png și app_splash_800x1280.png. Vedeți secțiunea numită "Shiva Authoring Tool" pentru detalii despre cum se utilizează app_icon.png și app_splash.png. Consultați "Personalizarea jocului în Eclipse" pentru detalii despre utilizarea app_icon_72x72.png și app_splash_800x1280.png.
  • În set3, există trei fișiere: Duck.ste, Duck.stk și Duck_Android_final.zip.
    • Duck.ste este un export al jocului tutorial Duck de la editorul ShiVa. Acesta vă oferă o versiune completă a jocului cu toate resursele sale, inclusiv codul, precum și duck.dae, duckCM.tga, marble.jpg și sphere.dae. Acesta reprezintă starea finală a jocului în secțiunea "Dezvoltarea jocului în editorul ShiVa". Dacă întâmpinați o problemă în timp ce urmați instrucțiunile din acea secțiune, Duck.ste ar trebui să fie deosebit de util. Puteți deschide două instanțe separate ale Editorului ShiVa, puteți importa Duck.ste într-o singură instanță ca referință și lucrați la cealaltă instanță pentru a efectua instrucțiunile. (Pentru a importa Duck.ste în Editorul ShiVa, mergeți la Main -> Projects pentru a afișa dialogul Settings și faceți clic pe Add pentru a adăuga un nou proiect. Apoi, în acest proiect deschideți Data Explorer și selectați Import -> Archive. În câmpul de text Import arhiva specificați calea completă spre Duck.ste.)
    • Duck.stk este un export al jocului tutorial Duck de la ShiVa Editor ca un pachet de runtime Android. Aceasta este o intrare în Instrumentul de creație ShiVa. Dacă doriți, puteți sări peste toți pașii din "Dezvoltarea jocului în Editorul ShiVa", mergeți la secțiunea numită "Shiva Authoring Tool" și începeți creația importând Duck.stk.
    • În cele din urmă, Duck_Android_final.zip este o arhivă de proiect Android în care personalizarea codului a fost deja făcută. Această arhivă a proiectului poate fi benefică în mai multe moduri:
      • Puteți să o utilizați ca referință în timp ce urmați instrucțiunile din "Personalizarea jocului în Eclipse".
      • Dacă doriți să săriți instrucțiunile din "Personalizarea jocului în Eclipse", pur și simplu importați-o în Eclipse. Nu efectuați modificări de cod, apoi implementați jocul pe dispozitiv. (Notă: Eclipsa dvs. trebuie să aibă locația SDK Android setată în Preferințe Eclipse, așa cum este descris în "Personalizarea jocului în Eclipse".)
      • Această arhivă conține fișierul de aplicații Android Duck.apk din folderul Duck \ bin \ classes care poate fi instalat cu ușurință într-un dispozitiv compatibil Android 3.2 prin intermediul instrumentului Android SDK ADB fără Eclipse.

Notele de închidere pentru partea 1

În partea a 1 a acestui tutorial, am introdus aplicația tutorial, am discutat diverse concepte ShiVa3D, precum și instrumentele principale din suita ShiVa3D. De asemenea, am explicat fișierele din arhiva de descărcare care însoțește acest tutorial. În partea a 2-a, vom începe să descriem cum să dezvoltăm jocul folosind editorul ShiVa. Vom introduce modulele Editor ShiVa utilizate în dezvoltarea aplicației tutorial. Apoi, vom vorbi despre fișierele modelului Collada reprezentând caracterele principale din aplicație. Vom discuta despre pașii inițiali de creare a aplicației, cum ar fi crearea jocului și a scenei, precum și importul modelelor Collada.


Cod