Posts mit dem Label Unity werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Unity werden angezeigt. Alle Posts anzeigen

Montag, 30. März 2015

Super Mario 64 mit Unity als Browsergame

Roystan Ross hat mit der Unity Engine das erste Level aus dem Nintendo 64 Klassiker Super Mario 64. Es sieht nicht nur erstaunlich gut aus (von der Grafik deutlich besser als das Original). Es spielt sich auch prima. Die Animationen wirken identisch mit dem Original und auch den Sound ist man gewohnt.


Auf seinem Blog schreibt Ross viel zu Unity. Vor allem natürlich zu seinem Projekt Super Mario 64 HD. Aber auch andere Themen im Hinblick zu Spielerstellung mit Unity. Beispielsweise hat er den Charakter Controller aus dem Mario Spiel also Customer Version freigegeben und jedem zur Verfügung gestellt.















Achja, Super Mario 64 HD kann man über diesen Link direkt im Browser spielen (Unity Player wird evtl. geblockt --> zulassen).

Freitag, 20. März 2015

Fertiges Spiel in Unity

Nachdem scripten ist es nur noch ein Schritt bis zum fertigen Spiel. Dieser ist dank Unity verhältnismäßig einfach. Über File --> Build & Run kann man das Spiel generieren. Hier kann man auch noch auswählen, für welche Plattform es erstellt werden soll. Ich habe es einmal als .app für Mac konfiguriert und einmal als Browser Spiel.
Unter diesem Link habe ich das Browser-Game bereitgestellt. Hier muss man beide Dateien downloaden. Anschließend die HTML-Datei öffnen, dann der Anweisung folgen und den Unity-Player herunterladen. Anschließend nur noch darauf achten, dass Pop-Ups nicht geblockt werden.

Als Anschauungsmaterial habe ich hier ein Ingame-Video:


Abschließend möchte ich noch ein kurzes Fazit zum gesamten Projekt loswerden:
Unity und Blender bieten eine Vielzahl an Möglichkeiten, wie man etwas macht. Tutorials im Internet unterstützen dabei enorm. Man kann sich viel anschauen und für sein eigenes Projekt anpassen. Die Community ist wirklich fantastisch. Ebenso wie die beiden erwähnten Programm. Vor allem Blender hat einen hohen Einstiegs- und zu Beginn vor allem Frustrationsgrad. Doch nach einer Weile kommt man damit ganz gut klar.
Auch muss ich sagen, dass ich mich mit den Themen, welche ich behandelt habe, nun ganz gut zurecht finde. Nach meinem Gefühl ist das aber nicht einmal ein Bruchteil von dem Gesamtmöglichen, was die Programme bieten. Aber das freut mich auch, da ich einen Einstieg gefunden habe und es jetzt eigentlich erst richtig losgehen kann.
An dieser Stelle bedanke ich mich bei meinem Projektpartner Roland. Es hat sehr viel Spaß gemacht und ohne unsere Zusammenarbeit wäre dieses Projekt wohl nicht zustande gekommen. Ebenfalls danke an die PH, für die Räumlichkeiten, Hardware und Software.

Zu unserem Spiel möchte ich sagen, es sieht zwar optisch nicht schön aus, hat einige Bugs, aber es läuft. Wir haben es geschafft, aus Blender 3D-Modelle, samt Animationen zu generieren, diese in Unity zu importieren und per Script daraus ein Spiel zu erstellen.

Zu aller Letzt noch zwei offene Themengebiete, dich ich unbedingt noch nennen möchte.
  1. Wieso haben wir mit C# und nicht mit Java Script programmiert? - Das war mehr oder weniger Zufall. Unser erster Beispielcode war in C#, dann haben wir einfach gedacht, machen wir so weiter. Die offiziellen Unity Tutorials zeigen immer beide Varianten an. Code in C# und JS. Da wird man hervorragend unterstützt. 
  2. Die neuste Version von Unity (Unity 5) bietet weitere tolle Features, die wir aufgrund der Vorgängerversion nicht nutzen konnten. Wir wollten mitten im Projekt kein Risiko eingehen und haben deshalb kein Update des Programms durchgeführt. Ein neues Feature, welches uns durchaus hilfreich gewesen wäre ist die UI Scrollbar. Leicht modifiziert hätten wir so eine interaktive Healtbar einbauen können, welche nach jedem Treffer abnimmt. Ein Tutorial dazu gibt es hier.

Charakter in Unity integrieren

Nach einigen Feinarbeiten am 3D-Modell steht nun der Export nach Unity an. Dazu habe ich den Charakter in Blender im Autodesk FBX (.fbx) exportiert. Diese Datei enthält das 3D-Modell, die Armature (Bones) und alle Animationen.
In Unity kann man diese Datei anschließend per Drag & Drop zu den Assets ziehen. Nun muss man die Texture noch einmal neu Verknüpfen. Dazu in der Hierarchy auf der linken Seite den Charakter auswählen, dann den eigentlichen Body (Mesh) anklicken. In meinem Fall heißt er eye.green (durch das importierte Auge, gab es Bennenungskomplikationen). 
















Beziehungsweise hat Unity meinen Charakter in fünf Dateien (Mesh Part0 - 1) unterteilt, da mein Model zuviel Vertices (Punkte) bzw. Faces (Flächen) besitzt. Durch mehrfache Anwendung des Subdivision Surface Modifiers hab ich meinen Charakter in sehr viel Polygone unterteilt, was mir jetzt nachteilig erscheint. Deshalb der Tip, sparsam mit diesem Modifier umgehen.

Hat man das Mesh ausgewählt, kann man im Inspector auf der rechten Seite die Textur verknüpfen. Dazu einfach die PNG-Texturdatei, welche auch in Blender verwendet wird, in das Feld rechts unten ziehen, bzw. über "Select" auswählen.















Im Inspector kann man ebenfalls, die Positionierung und Größe des Charakters auswählen. Wir haben ein Terrain gebastelt und die beiden Modelle auf einem Berg positioniert. Dazu mussten wir sie noch um den Faktor 200 vergrößern.














Auf dem vorherigen Screenshot sind auch schon die ganzen Animationen gelistet, die Blender ohne Probleme übernommen hat. Dabei ist es wichtig, dass man in den Import Settings unter "Rig" den Animation Type auf "Legacy" einstellt (Die Import Settings erreicht man, indem man auf den Charakter unter Assets klickt).








Legacy bedeutet, dass die Animationen aus Blender vererbet werden. Unity bietet auch die Möglichkeit einer automatischen Knochenerkennung. Stellt man den Animation Type auf "Humanoid" erkennt Unity die Bones des 3D-Modells und verknüpft sie mit dem sogenannten Unity Avatar.

Unter dem Punkt Animations, kann man alle Animationen des Modells ansehen, abspielen und sogar schneiden. In meinem Fall musste ich den Jab um einen Frame am Anfang kürzen. Auch kann man Loop Frames automatisch einfügen lassen, um die Bewegung runder darzustellen.















Tip: Bei mehreren Modellen, für jedes einen eigenen Ordner in den Assets anlegen. Jeden Charakter einzeln nacheinander einfügen, Textur zuweisen und positionieren.

In Unity sah das Ganze dann so aus:












Mein Charakter musste mit dem Rücken zu dem anderen Charakter positioniert werden, damit die Animationen später im Spiel auf die richtige Seite abgespielt werden. Mehr dazu aber im nächsten Beitrag...

Mittwoch, 15. Oktober 2014

Unity - Download und Installation

Parallel zu meinem Blender Projekt habe ich heute die aktuelle und kostenlose Version 4.5.5 der Spiele-Engine Unity geladen. Als zweites Projekt auf diesem Blog werde ich ich mich nun also in diese Software einarbeiten.
Die Downloaddatei ist 1,2 GB groß und für Mac zügig und ohne Probleme zu installieren. Vor der ersten Benutzung des Programms muss man einen Account erstellen. Name, E-Mail und Passwort sind einzugeben. Anschließend soll man noch einen kleinen Fragebogen beantworten. Diesen kann man aber auch überspringen, indem man einen entsprechenden Button ganz unten rechts drückt. Hat man das geschafft, öffnet sich die Benutzeroberfläche und das ganze sieht dann so aus.