
Unity Logo
In der iX 2/2010 war ein Bericht über die Game-Entwicklungsugebung Unity.
Da ich mich auch mit der Entwicklung von Lernspielen, sog. Serious Games, beschäftige und deshalb seit einigen Jahren immer wieder verschiedene Game Engines ausprobiere, habe ich mir das mal angesehen.
Es gibt für einzelne Entwickler und kleine Firmen eine kostenlose Lizenz. Die Professional Edition kostet aber auch “nur” 1099,- Euro, was ich für eine solche Software ok finde.
Ich habe die Software also gleich geladen und auf meinem MacBook Pro installiert. Die ersten Tutorials befassen sich erst mal mit grundsätzlicher Bedienung und ein bischen Skripting. Soweit kein Problem.

Die Beispiel-Projekte sind dann doch deutlich umfangreicher und ich wußte nicht so recht, wo ich weitermachen sollte.
Das Buch zum Einstieg
Zum Glück gibt’s aber auch schon ein Buch über Unity: “Unity Game Developer Essentials” von Will Goldstone, erschienen bei Packt Publishing. Statt dem PDF-Download habe ich mir das dann bei Amazon bestellt. Manchmal will man ja auch reinschreiben und das Abtippen bringt mehr (Lernerfolg und Spaß) als Copy&Paste
.
Im Laufe des Buches erstellt man ein einfaches funktionsfähiges 3D-Spiel mit allem Drum und Dran. Es geht damit los, eine Insel mit einem Vulkan zu modellieren, dort eine Hütte, eine Feuerstelle und weitere Elemente zu platzieren und schließlich alles zu programmieren, so dass ein einfaches Spiel dabei herauskommt.
Das Buch ist sehr gut und verständlich geschrieben, die Beispiele sind realistisch (zumindest für 3D First Person Spiele) und man bekommt sehr schnell ein Gefühl für Unity und die Möglichkeiten.
Ich habe das Buch in etwa einer Woche komplett durchgearbeitet, wobei ich so etwa 2 bis 3 Stunden am Tag investiert habe. Insgesamt also so etwa 1 – 2 Arbeitstage. Dabei habe ich brav alle Source-Codes eingetippt und das Insel-Spiel entwickelt. Zwischendurch habe ich auch ein wenig an den bestehenden Grafiken und Skripten optimiert bzw. herumgespielt.
Mit jeder Seite dieses wirklich flüssig zu lesenden Buches habe ich mich wohler in der Unity-Entwicklungsumgebung gefühlt. Die wenigen inhaltlichen Fehler sind mir sofort aufgefallen (weil dann schlicht weg irgendetwas nicht funktioniert hatte) und ich habe diese auch bereits dem Autor zugemailt….
.
Was mich allerdings ziemlich gestört hat, ist der “Programmierstil”. Auf den ersten Blick sieht die Spieleprogrammierung ja eigentlich recht objektorientiert aus.
Im Detail allerdings wird der Sourcecode aus meiner Sicht an die falschen Objekte gehängt. So hat der “First Person Controller”, also das Objekt, das den Spieler repräsentiert, in seinem “Collision Sctipt” recht schnell den Sourcecode zum Öffnen von Türen, Einsammeln von Batterien, Werfen von Kokosnüssen auf Zielscheiben, Entzünden eines Lagerfeuers und Einblenden von Texthinweisen versammelt. Ausserdem gibt’s auch mal doppelten Sourcecode in if- und else-Zweig.
Der Autor begründet dies so: “In game development, it is often more efficient to write a single script for an object that will interact with many other objects, rather than writing many individual scripts that check for a single object.”. Dieses Argument kann ich leider überhaupt nicht nachvollziehen, im Gegenteil: Selbst bei dem im Buch entwickelten einfachen Beispiel wird der Code des Collision Scripts bereits sehr komplex und unübersichlich. Ich denke, dass die Aufteilung des Skripes auf die jeweils betroffenen Objekte einen wesentlich saubereren und wartbareren Code erzeugen würde.
Allerdings sollen ja angeblich beim “game programming” manchmal ganz andere Regeln des Software Engineering gelten….
Mehr als eine Game Engine
Unity ist nicht nur eine Game Engine, sondern eine komplette integrierte Entwicklungsumgebung (IDE).
Die Programmierung von Unity erfolgt mit Skripten, im Gegensatz zu vielen anderen Game Engines, die man “richtig” (meist mit C++) programmieren muss.
Als Skriptsprache dient bei Unity normalerweise JavaScript, allerdings sind auch C# und Boo (ein Python-Dialog) möglich. Im Hintergrund kompiliert Unity die Skripten.
Die Entwicklungsumgebung ist vollständig in die Game Engine integriert, wodurch es sehr leicht möglich ist, Sachen auszuprobieren. Sobald man das Spiel fertig programmiert hat, kann es dann für verschiedene Plattformen gebaut werden.
Die Zielplattformen in der Standardversion sind dabei:
- Webplayer (mit Plugin)
- Mac OS X
- Mac Dashboard Widget
- Windows
Ausserdem gibt es spezielle Varianten für iPhone und Wii
. Allerdings kosten die leider extra und bedingen ausserdem die Teilnahme am entsprechenden Developer-Programm, um beispielsweise den Vertrieb über den Apple AppStore zu ermöglichen.
Dass Unity als .NET-Anwendung daherkommt, merkt man nirgends. Anscheinend läuft Mono auf meinem Mac ohne jegliche Probleme
.
Fazit
Wer in Gameprogrammierung einsteigen will sollte sich Unity und das Buch Unity Game Development Essentials mal genauer ansehen.
Für die weitere Beschäftigung mit Unity gibt es auch eine Community und eine Seite mit Video-Tutorials.
Meine Insel
Natürlich wollte ich euch das Ergebnis meiner Bemühungen nicht vorenthalten. Damit es funktioniert, müsst ihr den Unity Player installieren.
Laufen kann man mit den Pfeiltasten oder mit den Tasten “W” (vorwärts) und “S” (rückwärts), Umschauen kann man sich mit der Maus. Die linke Control-Taste dient zum Werfen der Kokosnüsse.
Hier klicken für das Inselspiel….. (Achtung: Das Spiel ist etwa 6 MB groß)
no comment untill now