Benieuwd naar 3D-game-ontwikkeling? Nu is het tijd om te leren! Deze vijfdelige tutorialserie laat zien hoe je een eenvoudig spel kunt bouwen met ShiVa3D Suite, een platformonafhankelijke 3D-game-engine en een ontwikkeltool. Deze serie was oorspronkelijk alleen bedoeld voor leden van Tuts + Premium, maar wordt in plaats daarvan gratis aan de community weggegeven, waarbij elke portie in de komende vijf dagen back-to-back wordt gepubliceerd. Lees verder om uw reis naar 3D-programmering te beginnen!
In deze tutorialserie introduceren we 3D-game-ontwikkeling voor Android-platform met ShiVa3D Suite. Het ontwikkelen van een Android-applicatie met 3D-graphics kan om verschillende redenen een uitdaging zijn. Ontwikkelaars moeten bekend zijn met de OpenGL API en de specifieke Android API die dit ondersteunt. Ook kan de ontwikkeling van 3D-graphics naast de Java / Objective-C-code ook om de performance-redenen native C / C ++ -code bevatten. Dit verhoogt het kennisniveau en de inspanning die vereist is voor het ontwikkelen van een 3D-Android-applicatie. Bovendien omvat het maken van 3D-afbeeldingen unieke expertise onafhankelijk van Java of C / C ++ programmeercompetentie. Samenvattend vereist 3D-applicatie-ontwikkeling geavanceerde vaardigheden van verschillende disciplines.
ShiVa3D Suite is een set hulpprogramma's die is ontwikkeld om 3D-toepassingen met meerdere platforms te ontwikkelen. Met deze hulpmiddelen kunt u uw toepassing eenvoudiger ontwerpen en opstellen op basis van specifieke taken en concepten. U kunt bijvoorbeeld een 3D-visueel model scheiden van zijn gedrag en onafhankelijk aan die aspecten werken. Daarnaast maakt game-ontwikkeling in de ShiVa3D Suite het mogelijk om het spel van het specifieke doelplatform af te spelen. Games die met deze suite zijn ontwikkeld, kunnen onder meer worden ingezet op meerdere doelplatformen, waaronder Windows, iOS en Android OS.
Deze tutorial geeft een voorbeeld van hoe je een 3D-game voor Android-platform kunt ontwikkelen met behulp van twee hoofdelementen van de ShiVa3D Suite, de ShiVa-editor en de ShiVa Authoring Tool. Het doelbesturingssysteem van deze zelfstudietoepassing is Android 3.2 (Honeycomb). We zullen echter ook een bespreking geven over het overbrengen van de game naar iOS-apparaten, zoals de iPhone / iPod Touch en de iPad / iPad2.
Deze tutorial is georganiseerd als een 5-delige serie. In deel 1 introduceren we de tutorial applicatie, bespreken we verschillende ShiVa3D concepten en de belangrijkste tools in de ShiVa3D Suite. In deel 1 zullen we ook de bestanden in het downloadarchief bij deze zelfstudie uitleggen. In deel 2 zullen we beginnen met het beschrijven van hoe het spel te ontwikkelen met behulp van de ShiVa-editor. We zullen de ShiVa Editor-modules introduceren die worden gebruikt bij het ontwikkelen van de zelfstudietoepassing. Vervolgens zullen we het hebben over de Collada-modelbestanden die de hoofdpersonen in de toepassing vertegenwoordigen. Ten slotte bespreken we enkele eerste stappen om de toepassing te maken, zoals het maken van het spel en de scène, evenals het importeren van de Collada-modellen.
In deel 3 zullen we laten zien hoe we de scène van onze applicatie kunnen bewerken. We beginnen ook met het invoeren van de code voor de AIModels van het spel. In deel 4 stoppen we met het coderen van de resterende AIModels en voeren we eenheidstests uit door het spel te animeren. We exporteren het spel vervolgens vanuit de ShiVa-editor voor importeren in de Shiva Authoring Tool. Ten slotte bespreken we twee verschillende authoringopties in de Shiva Authoring Tool, een voor het genereren van een Android-uitvoerbaar bestand en een ander voor het genereren van een Eclipse-project.
In deel 5 beginnen we met het aanpassen van het spel in Eclipse. Dit omvat de Eclipse-projectinstellingen, codewijzigingen en het bouwen van de Java-code en native bibliotheken. Op dat moment hebben we de tutorial voltooid in termen van ontwikkeling en implementatie. In de rest van deel 5 zullen we de code herzien, bespreken hoe de game naar iOS-apparaten moet worden overgedragen en enkele afsluitende opmerkingen maken.
Het Collada-model en de bijbehorende afbeeldingsbestanden voor de gele badeend en het Collada-model voor het ei zijn afkomstig van Sony Computer Entertainment Inc. Deze modellen zijn gedownload van de sectie Basic Samples van de collada.org Model Bank en zijn gelicentieerd onder de voorwaarden van de SCEA Shared Source-licentie.
De 'marmeren' textuur die op de achtergrond wordt gebruikt, is gedownload van http://www.texturewarehouse.com en is gelicentieerd onder de Creative Commons-licentie, Attribution-NonCommercial-ShareAlike 2.0.
De auteur heeft enorm geprofiteerd van een boek over ShiVa3D, getiteld Introduction to 3D Programming with ShiVaÆ. Bovendien leende de multitouch event-verwerkingscode die wordt uitgelegd in 'Code Review' een techniek die is geïntroduceerd in een zelfstudie op de ShiVa3D-ontwikkelaarswebsite Multitouch Management.
Het spel begint met een opstartscherm met de hoofdpersonen van het spel: een gele badeend op de voorgrond en een ei erachter, zoals hieronder weergegeven.
Vervolgens verschijnt het hoofdscherm van het spel met twee objecten, de eend en het ei. De eend maakt een hoekige beweging in een 3D-ruimte op een vast vlak gedefinieerd door y = 3. Het ei kan alleen langs een rechte lijn bewegen die wordt gedefinieerd door x = 0, y = 3. De beweging van eenden en eieren in de algemene x-, y-, z-assen wordt hieronder weergegeven.
Tegelijkertijd roteert de eend rond zijn lokale x, y, z-assen, onafhankelijk van zijn globale rotatie, zoals hieronder weergegeven.
Evenzo draait het ei rond zijn lokale x-as onafhankelijk van zijn globale beweging (zie hieronder).
De (globale) beweging van het ei langs het lineaire pad kan worden bestuurd door de enkele aanraking van de gebruiker op het scherm. Als de vinger van de gebruiker van links naar rechts beweegt, beweegt het ei in de negatieve z-richting. Omgekeerd, als de vinger van de gebruiker van rechts naar links beweegt, beweegt het ei in de positieve z-richting. (Zie hieronder.)
Bekijk aan de hand van de geometrie in figuur 2 dat het lineaire pad dat de mondiale beweging van het ei beschrijft, zich op het vaste vlak bevindt waarop de eend zijn mondiale beweging maakt. Daarom kunnen de eend en het ei botsen op de twee snijpunten die worden gedefinieerd door het lineaire pad van het ei en het hoekige pad van de eend. De botspunten worden weergegeven in het onderstaande schema.
Als de eend en het ei botsen, zal de rotatie van de eend van richting veranderen, van rechtsdraaiend naar tegen de klok in, of vice versa.
Het doel van het spel is om het ei en de eend zo vaak mogelijk in botsing te brengen. Telkens wanneer een botsing plaatsvindt, wordt de score van de gebruiker, weergegeven in de rechterbenedenhoek van het scherm, verhoogd. Bovendien trilt het Android-apparaat gedurende 100 milliseconden.
De gebruiker kan het spel opnieuw starten door een dubbele aanraakactie toe te passen (bijvoorbeeld door twee vingers op het scherm te bewegen) zoals hieronder wordt weergegeven.
Voordat de toepassing opnieuw wordt opgestart, wordt een informatiebericht ongeveer een seconde weergegeven, zoals hieronder wordt weergegeven.
Wanneer de toepassing opnieuw start, worden de posities van de eend en het ei en de beginscore allemaal gereset.
In deze sectie bespreken we basisconcepten van 3D-game-ontwikkeling met ShiVa3D. Het grootste deel van de discussie hier is ontleend aan de originele ShiVa3D-documentatie. Voor meer informatie, zie http://www.stonetrip.com/developer/doc/ en de gebruikershandleiding die bij ShiVa-editor wordt geleverd.
Spel staat voor een spel, de belangrijkste entiteit van de applicatie. Het omvat al het andere in de toepassing, zoals camera's, scènes, modellen, enz. Spel is een op zichzelf staande implementatie-eenheid.
Tafereel staat voor een plaats of een weergave die bij het spel hoort. Er is een reeks objecten of modellen gekoppeld aan een scène. Een game kan meerdere scènes hebben. Voor de eenvoud heeft de game in de zelfstudietoepassing één scène.
Camera vertegenwoordigt een gezichtspunt in het spel. De gebruiker ziet het spel via de camera. Een camera kan van de ene positie naar de andere gaan of de richting kan worden gewijzigd. In onze zelfstudie blijft de camera gefixeerd.
Model is een object of een verzameling objecten met verschillende kenmerken, zoals vorm, licht en sensor. In onze game zijn er twee modellen: een eend en een ei. Dat zijn driedimensionale objecten met een bepaalde 'rol' in onze game. Elke rol van de eend en het ei heeft zijn eigen AIModel (zie hieronder) om die rol via code te beschrijven.
AIModel impliceert 'kunstmatige intelligentie' en vertegenwoordigt gedrag. Een AIModel kan worden geassocieerd met een gebruiker die het spel of een object in het spel speelt. In deze zelfstudie gebruiken we alleen het object AIModels. Een AIModel kan functies, handlers, toestanden en variabelen hebben om het specifieke gedrag te beschrijven.
Script bevat de code in een AIModel, bijvoorbeeld code voor een functie of handler. De scripttaal in ShiVa3D is Lua. (Http://www.lua.org)
Sensor kan bepaalde fysieke gebeurtenissen detecteren. In onze game hebben de eend en het ei botsingssensoren om een botsing te detecteren. Wanneer een sensor een gebeurtenis detecteert, kan deze worden afgehandeld door de juiste gebeurtenishandler in het AIModel dat is gekoppeld aan het object dat de sensor bevat.
HUD staat voor "head-up display" en is een term die wordt gebruikt om verschillende widgets voor gebruikersinterfaces weer te geven, zoals knoppen, labels, lijsten en schuifregelaars, zodat de gebruiker met het spel kan communiceren. De enige HUD-componenten die we in onze game gaan gebruiken, zijn de tekstlabels.
Om onze tutorial applicatie te ontwikkelen gebruiken we de gratis versie van de ShiVa3D Suite (http://www.stonetrip.com/download.html), die de ShiVa Editor PLE (persoonlijke leereditie) en de ShiVa Authoring Tool bevat. Het onderstaande schema geeft een overzicht van het ontwikkelingsproces dat we met deze hulpmiddelen hebben gebruikt.
Laten we de afzonderlijke stappen van dat proces bespreken.
De ShiVa-editor heeft verschillende componenten voor het volledig opnieuw ontwikkelen en testen van een 3D-game. Een belangrijk kenmerk van de ShiVa-editor is dat een met die tool ontwikkeld spel kan worden ingezet (nadat het is geschreven in de ShiVa Authoring Tool) op verschillende apparaten met verschillende besturingssystemen (bijv. Een pc met Windows OS of een tablet met Android OS of iPhone).
Enkele van de basisacties die u met de ShiVa-editor kunt uitvoeren, zijn als volgt.
Het belangrijkste doel van de Shiva Authoring Tool is om een game, gemaakt via de ShiVa-editor, om te zetten in een applicatie die kan worden ingezet op een bepaald apparaat (bijvoorbeeld een iPhone, iPad of Android-tablet). Bepaalde beperkingen zijn van toepassing met betrekking tot het besturingssysteem van de machine waarop de Shiva Authoring Tool wordt uitgevoerd en het doelapparaat voor conversie. De Shiva Authoring Tool die op een Windows-computer draait, kan bijvoorbeeld geen iPad- of iPhone-applicatie genereren. In deze zelfstudie hebben we een Windows-pc gebruikt als ontwikkelingsmachine en ons doelplatform is Android. De onderstaande informatie is van toepassing op deze specifieke omgeving.
Enkele van de basisacties die u met de Shiva Authoring Tool kunt uitvoeren, zijn de volgende.
Opmerking: voor elk authoringtype zijn er twee build-opties: Distributie en Ontwikkeling. In deze zelfstudie bespreken we alleen het buildtype Ontwikkeling.
Je kunt het spel als volgt in Eclipse aanpassen.
Om de ShiVa Authoring Tool in de Windows-omgeving voor Android-ontwikkeling te gebruiken, hebben we de volgende vereiste software gebruikt. Merk op dat Eclipse en ADT voor Eclipse alleen nodig zijn als u een Eclipse-project wilt genereren voor het aanpassen van de code. Zie http://www.stonetrip.com/developer/doc/authoringtool/installation voor meer informatie.
Software | Versie gebruikt in zelfstudie-applicatie |
Android SDK | revisie 13 (Android 3.2) |
Android NDK | herziening 7 |
Cygwin, GNU make package | versie 3.82.90 |
Apache Ant | versie 1.8.0 |
Java SDK | versie 1.6 |
Verduistering | versie 3.7 |
ADT voor Eclipse | versie 16.0.1 |
Merk op dat ons hoofddoel in deze tutorial Android 3.2 (Honeycomb) is, waarvoor de applicatie is getest.
In deze sectie geven we een beschrijving van de bestanden in het archiefbestand bij deze zelfstudie.
Het archiefbestand heeft drie submappen: set1, set2 en set3.
In deel 1 van deze tutorial hebben we de tutorial applicatie geïntroduceerd, verschillende ShiVa3D-concepten besproken, evenals de belangrijkste tools in de ShiVa3D-suite. We hebben ook de bestanden uitgelegd in het downloadarchief bij deze zelfstudie. In deel 2 zullen we beginnen met het beschrijven van hoe het spel te ontwikkelen met behulp van de ShiVa-editor. We zullen de ShiVa Editor-modules introduceren die worden gebruikt bij het ontwikkelen van de zelfstudietoepassing. Vervolgens zullen we het hebben over de Collada-modelbestanden die de hoofdpersonen in de toepassing vertegenwoordigen. Vervolgens bespreken we enkele eerste stappen om de applicatie te maken, zoals het maken van het spel en de scène en het importeren van de Collada-modellen.