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: