Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Journals>Making of lucky cats 3D - ein iPhone Spiel>Ein iPhone Spiel mit unity 3D erstellen

Ein iPhone Spiel mit unity 3D erstellen

Vor ein paar Monaten kam ich auf die Idee für ein Car Configurator Projekt einmal Unity3D auszuprobieren. Dabei handelt es sich um eine Game Engine mit der man 3D Spiele erstellen kann und diese dann für Mac und PC als Anwendung exportieren kann. Auch der Export für das Unity Browser Plug In ist möglich.

Viel interessanter war damals aber die Nachricht, dass das iPhone unterstützt wird! Das musste ich ausprobieren. Zunächst also Unity für iPhone gekauft, erst mal die kleine Version für ca 200 Euro und dann ein paar Tutorials abgearbeitet.
Das Zusammenspiel von Unity und den verwendeten Assets, sei es Sound, Grafik oder eben 3D Modelle funktionierte fantastisch. Es ist kein spezielles Format notwendig (Einschränkung Video und Sound, dass müssen eben iPhone fähige Formate sein). Einfach eine Maya, Cinema 4D, dfx oder sonstwas Datei ablegen und sie kann sofort verwendet werden.

Nach etwas Einarbeitungszeit beschloss ich dann zu versuchen, einen einfachen Auto Konfigurator sowie ein anschliessendes Simples Rennspiel aufzusetzen und das einmal einer Agentur für die ich arbeite zu präsentieren. Kurz: Die Leute waren begeistert, nach ein paar Wochen erteilte der Endkunde einen entsprechenden Auftrag. Nach einer Projektzeit von 4 Wochen hatte ich den Konfigurator fertig. Man kann die Nobelkarosse nun lackieren, mit ein paar Extras versehen, Leder und Holzfarbe setzen sowie Bilder und Videos betrachten. Während des Projektes wurde der geplante 3D Part leider immer kleiner, so dass ich hier Rückblickend den Einsatz von Unity eher kritisch sehe. Die ganzen Slidshow und Videogeschichten hätte man besser mit XCode umsetzen können. Ganz besonders im Hinblick auf Apples dauerndes Ändern der Developer Verträge, die Momentan bekannterweise darin Gipfeln, dass man nur noch Apple Tools benutzen darf. Unity verwendet aber Monotouch und das darf eigentlich nicht. Naja, man wird sehen was passiert...


Um weiter zu lernen und eher zum Spaß fing ich dann an ein Spiel zu entwickeln.
Ich hatte mich entschlossen, ein 3D Brettspiel auf Basis von Pachisi zu entwickeln – mit animierten Spielfiguren, computergesteuerten Gegnern, rundenbasiert. Zusätzlich einige Specials, um die normalerweise recht lange Spielzeit eines Brettspiels deutlich zu verkürzen. Ferner entschloss ich mich dem ganzen einen asiatischen Touch zu geben.

Nach anfänglichen Layoutarbeiten ging es dann ans Eingemachte:

1. 3D modelling, texturing und Animation.
Das wurde alles mit Maya erstellt. Die Modelle (chinesische Glückskatzen) sind extrem Low Poly. Sie haben bis zu 300 Polygone. Da ich bei diesem Spiel bis zu 16 Figuren gleichzeitig auf dem Screen haben würde, durfte es auch nicht mehr sein. Der Import in Unity gestaltete sich, wie gesagt, sehr einfach. Die Maya Scene in den Unity Projekt Ordner speichern, fertig.

2. Den Würfel erstellen
Auch dies ist ein sehr einfaches Maya Mesh. In Unity wird einfach eine Rigidbody Componente angehängt und schon steht er unter Einfluss der Gravitation. Noch einen Boden hinzufügen und mit Collider Componente versehen, schon prallt er ab.
Ganz so einfach ist es aber dann doch nicht. Z.B. spielt die Szenengröße in Unity eine Rolle. Man muss aufpassen, das man alles in eine annähernd realistische Größe bringt. Obwohl es optisch keinen Unterschied macht, sollte die Scene eher in Zentimetern angelegt sein. Falls der Würfel mehrere Meter groß ist, verhält er sich auch so und fällt eher seltsam langsam. Das Tweaken der Physik Einstellungen und der Szenengröße hat recht lange gedauert, bis der Würfel endlich einigermaßen realistisch fiel.
Ausserdem kann es passieren, dass der Würfel durch die umgebenden Collider ins Unendliche fällt. Dafür mussten Abfragen her, die dies prüfen und den Würfel dann ggfls zurücksetzen.
Zu guter letzt muss man nach dem Wurf auch noch ermitteln können, welche Seite oben liegt. Vermutlich geht das irgendwie über Berechnungen mit Quarternions. Dann wird man aber ohne Mathematik Professur garantiert wahnsinnig.
Die einfache Variante: Je ein leeres Object innerhalb des Würfels gruppieren und an die entsprechende Fläche verschieben. Nun kann man abfragen, welches dieser Objecte den höchsten position.y Wert hat.

3. Das Spiel programmieren
Die Programmierung erfolgt in Unity entweder in einer Javascript Syntax oder in C#. Dabei kann man die Sprachen auch mischen, also einige Scripte in JS und andere in C verwenden. Das kann aber schnell hinderlich werden, denn die Scripte werden getrennt kompiliert. So kann ein JS Script ohne weiteres nicht wissen, ob es das angesprochene C# Script gibt oder nicht. Man kann zwar die C# zuerst kompilieren, indem man sie in bestimmten Ordnern speichert. Aber dann kennt ein C Script umgekehrt die Javascripte nicht.
Meine Empfehlung: Wenn ihr könnt, nehmt c.

Es würde hier zu weit führen mehr über Programmierung zu schreiben, daher will ich nur einen kurzen Überblick der notwendigen Teile vermitteln

- prüfen der Spracheinstellung, laden von lokalisierten Texten
- laden / speichern / prüfen / wiederherstellen von Spielständen
- Spieler Einstellungen
- das Regelwerk des Brettspiels fixieren
- Die computer "intelligenz" programmieren
- allgemeinen Spielablauf programmieren
- touch eingaben des Geräts lesen
- animationskurven für den Zug via Scripting erstellen, Animationen starten, beenden, Sounds abfeuern
- ermitteln, ob ein Spieler gewonnen hat.
- und vieles mehr

Dieser Teil ist mit einigem Abstand der langwierigste.

4. Sound und Music
Die Musik habe ich selbst in Garageband "komponiert". Garageband und Soundtrack sind ausserdem ein großartiger Fundus für Soundeffekte. Die "Sprachausgabe" wurde eingesprochen, unter anderem von meiner nicht einmal 2 Jahre alten Tochter.


5. Export
Zum Testen und finalem Export gibt es in Unity den magischen Button "Build and run".
Im Ergebnis wird ein XCode Projekt erzeugt, XCode gestartet und der Build erzeugt, danach automatisch auf dem angeschlossenen Gerät installiert und da läuft es dann. Oder auch nicht. Je nachdem
Vorraussetzung hierfür ist:

- Man muss eine Apple Developer Lizenz haben
- Man muss zu allererst unter developer.apple.com Provisioning seine Testgeräte eintragen, Zertifikate und Provisioning Profiles erstellen und downloaden. Wie das im einzelnen geht ist auf der entsprechenden Apple Seite sowie im Unity Manual erklärt.
- Dieses Prozedere kann einem übrigens den letzten Nerv rauben.

6. Das Ganze in den Appstore bringen
Im Unterschied zum Test Export benötigt man zusätzliche Distributions Profile und Zertifikate.
Diese müssen erstmal erstellt und installiert werden.

Vorher kann man sich schon unter https://itunesconnect.apple.com/ einloggen und die Appstore Beschreibungen vorbereiten. Einer der ersten anzugebenden Punkte ist die Standardsprache. Und hier gleich ALARM. Nehmt nicht Deutsch!!!!! Nehmt Englisch, falls ihr diese Sprache unterstützt. Ansonsten wird in internationalen Stores, z.B. Taiwan, nicht die englische, sondern die deutsche Beschreibung angezeigt. UND DIESER PUNKT KANN EINMAL EINGETRAGEN NICHT MEHR GEÄNDERT WERDEN!!!!! AARGGHHHH!!! Woher ich das wohl weiss?

Danach gebt ihr für die Standardsprache den Namen, die Beschreibung sowie Suchworte ein, ladet Icons und Preview Bilder hoch und so weiter. Falls ihr eine App verkaufen und nicht umsonst anbietet wollt, müsst ihr zuerst einen weiteren Vertrag mit Apple eingehen sowie eure Bankverbindung eintragen.

Zusätzlich kann man noch weitere Sprachen anlegen und hier die Übersetzungen eintragen.

Die eigentliche Binary kann man später hochladen.

Dazu muss man wie gesagt noch sein Programm mit distribution Certificates und Profilen kompilieren und anschliessend die app zippen. Diese Datei, und nichts anderes, lädt man dann hoch.

Und dann heisst es warten. In meinem Fall hat es 5 Tage gedauert, bis die App erschienen ist und das ist... heute!!!


Falls Ihr ausprobieren möchtet, was denn nach ca 6 Monaten dabei herausgekommen ist, ihr findet lucky cats 3D hier:

Und nein, sie ist nicht kostenlos. Allerdings auch gerade mal so teuer, dass ich meiner Tochter pro Kopie ein Eis kaufen kann.

Zum Thema "reich werden" vielleicht noch folgendes:
Ein kommerzieller Erfolg kann nahezu ausgeschlossen werden. Es gibt viel zu viel Konkurrenz. Die Apps sind schwer zu finden, wenn man nicht gerade von Apple gefeatured wird.
Im Unity Forum findet sich gerade ein Blog, in dem die Entwickler sich über ihre Verkaufszahlen austauschen. Die meisten berichten von bis zu 100 Downloads in den ersten 10 Tagen. Dann geht es rapide bergab. Nur eine Handvoll haben Glück und können sich über mehrere tausend downloads freuen, das war vor allem in der frühen Appstore Phase so.

Kurz: Reich wird nur Apple. Man muss den Devoper Account haben, einen Apple Rechner, mindestens ein Testgerät (aber eher drei mit unterschiedlichen OS Versionen), sowie demnächst ein iPad.
Zusätzlich natürlich die geballte notwendige Software.


Puuuh, das wars erstmal. Falls der eine oder andere nun selbst loslegen möchte, wünsche ich viel Spaß und Glück und hoffe, dass ich einige für den Anfang notwendige Informationen vermittlen konnte.

Abschliessend vielleicht noch ein paar weiterführende Links:






















Kommentare

Request
Request22.05.10 16:35
Der Punkt mit den Sprachen finde ich jetzt verwirrend...C# dürfe von Apple eigentlich gar nicht zugelassen sein und du sprichst im Text dann teilweise auch wieder von C...was stimmt denn nun?

Ansonsten, SEHR interessant...
1984 - Think different - Macintosh - iPhone / iPad - Think nothing - 2014
goldgeist
goldgeist22.05.10 17:56
naja, also INNERHALB von Unity3D iPhone kannst Du das Spiel mit einer C Syntac oder einer JS Syntax skripten. Die Betonung liegt dabei auf SYNTAX.
Das Javascript dort ist keines Falls ein echtes Javascript. Ich habe bereits schmerzlich viele Klassen und Methoden vermisst, besonders im Zusammenhang mit Arrays.

Aber wer an Javascript oder auch Actionscript 3 gewöhnt ist, wird vermutlich auch damit starten, einfach weil man schneller loslegen kann.

Im normalen Unity auch noch mit etwas, das Boo heisst. Hab ich vorher auch noch nie gehört. Intern kompiliert Unity das ganze dann in... sonstwas. Ich weiss es auch nicht.

Die Definition von Apple ist sowieso schwammig. Da gibt es bestimmt hunderte Punkte wo die vorgeschriebenen Sprachen nicht zum Einsatz kommen können. Wie sollte man denn z.B. Shader Programmieren? Soll jeder nun das Rad komplett neu erfinden?

Der Knackpunkt bei Unity ist eher das dahinter liegende MonoTouch, ein Open Source .NET.
goldgeist
goldgeist22.05.10 18:04
Irgendwie habe ich das Gefühl ich mache hier Werbung für Unity. Das will ich gar nicht. Aber über Torque und Unreal kann nichts sagen, weil ich die beide noch nie benutzt habe.

Als Anmerkung für die Einsatzgebiete vielleicht noch folgendes:
Ich muss öfter mal irgendwelche Animationen für Veranstaltungen machen. Manchmal etwas simples wie das Abspielen von Logos in 3D.
Die Kunden wollen die ganze Zeit Full HD (auch wenn sie gar nicht wissen, was das ist) und die Logos sollen gaaaaaaaanz langsam in Bewegung sein.
Wenn man das rendert kommen schnell tausende von Einzelbildern zusammen, die Rechenzeit und das anschliessende Komprimieren dauert viele Stunden. Mal eben ändern kann man das nicht.

So etwas kann man eher mit einer 3D Engine machen. Zumal das dann auch interaktiv sein kann.

Auch Dinge, die man sonst in Flash, z.B. für Kiosk Terminals, erstellen würde kann man damit umsetzen.

Ich denke mit derartigen Auftragsarbeiten ist auch mehr Geld zu verdienen als über den Versuch eigene Apps zu erstellen.
Request
Request22.05.10 19:08
So etwas kann man eher mit einer 3D Engine machen. Zumal das dann auch interaktiv sein kann.
Nur dass du dabei auf Polygone setzen musst und nie die selbe Grafikpracht erreichst

Danke für die Erläuterungen, wie schon gesagt, war sehr spannend zu lesen...
1984 - Think different - Macintosh - iPhone / iPad - Think nothing - 2014
andreas-5824.05.10 09:59
Vielen Dank erst einmal für den interessanten Bericht. So als Nicht-Programmierer ist das schon sehr sannend was es alles bedarf, um ein App auf den Markt zu bringen.

Was für mich aber noch interessanter war ist die Tatsache, dass nur Apple an all dem Verdient. Ich habe mir das schon so gedacht.

Klickst du dich im App-Store durch, dann wirst du fast verrückt, bei all den Apps. Und gute Apps zu finden ist schon fast ein Unding angesichts der Masse von Müll-Apps.

Ob Apple da jemals Nutzerfreundlicher wird. Ich würde mir auf jeden Fall eine umfangreichere Suche nach Apps wünschen.
Peco25.05.10 23:48
Schöner Bericht. Befürchte nur, dass genau dieser Ansatz eben nicht mehr erlaubt sein wird lt. Apple. Und das ist und bleibt einfach nur peinlich.

Stefab
Stefab12.06.10 11:24
goldgeist: Für Live-Visuals, 3D-Figuren und so, da ist doch der Quartz-Composer sehr praktisch, oder findet ihr nicht? Habe zwar noch keine als 3D-Modelle abgespeicherte Dateien probiert, aber schon mal Visuals (die auf ein Konzert reagierten) damit gemacht, nach gerade ein paar Stunden Einarbeitung.

Und ansonsten ist doch irgendwie klar, dass Englisch die Standard-Sprache sein muss …

Und nochwas: Du schreibst, du gabest deine Bankdaten an, für die Einnahmen. Das verwirrt mich jetzt etwas. Ich dachte, man kann NUR per Kreditkarte zahlen als auch Geld von Apple überwiesen bekommen. Geht das jetzt doch auch übers Konto oder was?
goldgeist
goldgeist18.06.10 12:01
Stefab:

Bankdaten: Ja, man kann seine Bankverbindung angeben, um die Umsätze darauf gutgeschrieben zu kommen.

Habe schon meine erste "Lohnauszahlung" über unglaubliche 7,50 Euro bekommen. Ich werde also doch noch reich :'( .

Das Spiel liegt nun auch in einer iPad Version vor. Die wurde immerhin am ersten Tag 10 mal geladen.

Kommentieren

Sie müssen sich einloggen, um diese Funktion nutzen zu können.