Unity (Spiel-Engine)

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Unity
Entwickler Unity Technologies
Aktuelle Version 5.1.2
(Juli 2015)
Betriebssystem Windows, Mac (Entwicklungs- und Zielplattformen), Linux, PS3, Xbox 360, Wii, iOS, Android, PSV (nur Zielplattformen)

Webbrowser über WebGL (ab Unity 5) oder Plugin: Unity Web Player

Programmier­sprache C#, UnityScript (vergleichbar mit JavaScript)[1][2], Boo, C++
Kategorie Game-Engine
Lizenz Endbenutzer-Lizenzvertrag[3]
unity3d.com

Unity ist eine Laufzeit- und Entwicklungsumgebung für Spiele (Spiel-Engine) des in Kopenhagen von einem Dänen, Isländer und Deutschen gegründeten Unternehmens Unity Technologies mit Hauptsitz in San Francisco. Die Entwicklungsumgebung erlaubt die Entwicklung von Computerspielen und anderer interaktiver 3D-Grafik-Anwendungen. Die Umgebung läuft auf den Betriebssystemen Windows und Mac. Zielplattformen sind neben PCs auch Spielkonsolen, mobile Geräte und Webbrowser.

Entwicklungsumgebung[Bearbeiten]

Die Entwicklungsumgebung (Unity Editor) ist gängigen 3D-Animationsprogrammen nachempfunden. Ein Hauptfenster stellt die 3D-Szene dar, diverse Menüs und Formulare erlauben die Manipulation von Kamera und Szene. Mit der Maus können Teile der Szene angewählt, skaliert, verschoben und gedreht werden. Die Szene ist als Szenengraph aus so genannten „Game-Objekten“ organisiert. Diesen Game-Objekten können Komponenten (Materialien, Klänge, physikalische Eigenschaften, Skripte) zugeordnet werden. Einfache Objekte wie Lichtquellen, Grafische Primitive (Ebenen, Würfel, Kugeln) können direkt im Editor erzeugt werden. Komplexe Komponenten (sogenannte „Assets“), wie 3D-Modelle, Animationen, Texturen und Sounds, die in anderen Programmen erstellt wurden, werden per Drag&Drop importiert. Werden sie im Laufe der Produktion verändert, aktualisiert der Unity-Editor sie automatisch. Im „Game-View“ können grafische Darstellung und Verhalten des Spiels simuliert werden. Die Exportfunktion erlaubt schließlich die Erzeugung von ausführbaren Anwendungen.

Technische Eigenschaften[Bearbeiten]

Gone Home - Unity

Grafik[Bearbeiten]

Unity bietet grafische Darstellung gemäß dem Stand der Technik. Die Grafik-Engine verwendet ein Deferred Shading Verfahren und basiert auf OpenGL oder Direct3D, abhängig von der Zielplattform.[4] Aktuelle (Shader-basierte) Beleuchtungsmodelle werden unterstützt: Bumpmapping, Environment Mapping, Parallax Mapping, Umgebungsverdeckung, dynamische Schatten (basierend auf Shadow Maps), Render-To-Texture und Vollbild-Postprocessing-Effekte (z. B. Spiegelungen und Glühen, basierend auf Framebufferobjekten). Die eingebauten Beleuchtungseffekte können durch selbst entwickelte Shader erweitert werden.

Animation[Bearbeiten]

Game-Objekte können über vordefinierte Pfade, Skripte oder physikalische Kräfte (eingebaute PhysX-Engine) bewegt werden. Character Animation ist über die Skin and Bones-Technik möglich. Dabei wird eine Figur als Polygonnetz grafisch dargestellt, welches über ein nicht sichtbares Skelett animiert wird. Die Skelettanimationen werden in externen Programmen vorbereitet und importiert, können aber auch abhängig vom Geschehen zur Laufzeit über inverse Kinematik gesteuert werden. Ab Unity 4 ermöglicht die neue Komponente „Mecanim“ weitgehende Kontrolle von Character Animation innerhalb des Unity-Editors.[5] Partikelsysteme ermöglichen die Darstellung von gasförmigen Phänomenen wie Feuer, Explosionen und Rauch.

Musik und Geräusche[Bearbeiten]

Für das Abspielen von Musik, Klängen und Geräuschen verwendet Unity die Programmbibliothek FMOD. Klangquellen können beliebig in der Szene platziert und animiert werden. Der Hörort wird typischerweise gemeinsam mit der Kamera bewegt. Die räumliche Darstellung von Geräuschen und Klängen für Mehrkanal-Tonsysteme erfolgt automatisch über FMOD. Die akustische Umgebung kann zusätzlich über Doppler-, Hall-, Echo- und Filtereffekte simuliert werden. Eine echte, physikalisch basierte Auralisation ist aber nicht möglich.[6] Im März 2014 wurde mit der Ankündigung von Unity 5 ein grundlegend überarbeitetes Sound-System vorgestellt. Damit soll in Zukunft eine direkte Bearbeitung von Sounddateien in Unity möglich sein.[7][8]

Programmierung[Bearbeiten]

Die in Unity eingebauten Mechanismen können über selbst geschriebene Programme, sogenannte Skripte, ergänzt werden. Skripte sind notwendig, um Spielablauf und -logik zu beschreiben. Das Skripting in Unity basiert auf Mono[9] und bietet die Skriptsprachen UnityScript (vergleichbar mit JavaScript),[10][11] C# und Boo. Seit Version 3.4 verwendet Unity standardmäßig die Entwicklungsumgebung MonoDevelop. Diese unterstützt alle drei Skriptsprachen und erlaubt die schrittweise Fehlersuche und den direkten Zugriff auf die Dokumentation (per Mausklick).

Skripte und andere Assets (etwa 3D-Modelle) können in so genannten „Prefabs“ zusammengefasst werden. Dies ist sinnvoll, wenn gleichartige Objekte mehrfach in einer Szene enthalten sind. Prefabs machen es möglich, eigene selbst entwickelte Bausteine (Charaktere, GUI-Komponenten) wie eingebaute Komponenten zu verwenden. Selbst entwickelte Werkzeuge (z.B. Skriptsammlungen) werden in „Packages“ zusammengefasst und anschließend exportiert. Mit Hilfe von Skripten, die im Unity-Editor laufen, können auch der Entwicklungsumgebung selbst Funktionen hinzugefügt werden. So lassen sich etwa für Prefabs eigene Editoren entwickeln, die sich in das Fenstersystem der Unity Entwicklungsumgebung nahtlos einfügen.

Für plattformabhängige, hardwarenahe oder performancekritische Erweiterungen kann Unity durch C++ Programme (DLLs) erweitert werden. Dies ist aber nur mit der Pro-Version von Unity möglich. Die Grafik-Engine von Unity kann durch selbst geschriebene Shader Programme in Cg und HLSL innerhalb der Umgebung „ShaderLabs“ erweitert werden.[12]

Multiplayer-Spiele[Bearbeiten]

Für Spiele mit mehreren Benutzern müssen die Rechner aller Spieler über ein Netzwerk (typischerweise das Internet) miteinander kommunizieren. Sie tauschen Positionen von Spielern, NPCs, Punktestände, den Zustand der Spielszene (Tageszeit, Wetterbedingungen) miteinander aus. Im Idealfall hat jeder Spieler zu jedem Zeitpunkt den gleichen Blick auf die Spielszene. Stand der Technik ist hier das Client-Server-Modell. Ein zentraler Server verwaltet das Spiel, die Spieler melden sich als Clients bei dem Server an. Für die Synchronisierung zwischen Client und Server bietet Unity die Mechanismen Remote Procedure Call und Replikation an.[13]

Werkzeuge[Bearbeiten]

Unity kann über eine Reihe von kostenlos verfügbaren Werkzeugen erweitert werden. Diese können als Plug-ins in den Unity-Editor eingebunden werden und erweitern den Unity Editor um Funktionen und Assets. Folgende Werkzeuge stehen zur Verfügung

  • Terrain-Modellierer
  • Baum- und Pflanzen-Editor[14]
  • Werkzeuge für Partikeleffekte
  • Bewegungssteuerung für Charaktere[15]

Zusammenarbeit im Netz[Bearbeiten]

Der Zusammenarbeit in vernetzten Teams dient der „AssetServer“. Dieser bietet ein zentrales Verzeichnis für Assets (3D-Modelle, Texturen, Sounds, Skripte) und eine Versionsverwaltung. Die Operationen („checkin“, „checkout“, „commit“) sind vollständig in die Entwicklungsumgebung integriert; der AssetServer erlaubt aber keine Versionsverzweigungen des Projektes. Der AssetServer funktioniert nur mit der kostenpflichtigen Pro-Version von Unity.[16]

Der Hersteller bietet mit dem „AssetStore“ eine Webplattform für den Handel mit Spielkomponenten. Dort können Komponenten wie Modelle und Texturen, Shaderpakete oder selbstgeschriebene Werkzeuge gehandelt werden.[17] Im Wiki „unifycommunity“ tragen Unity-Benutzer Knowhow allgemein zugänglich zusammen. Dort finden sich auch viele fertige Problemlösungen in Form von Skripten, Prefabs und Packages.[18] Eine Liste herstellerunabhängiger Webseiten, auf denen Assets kostenlos oder kostenpflichtig angeboten werden, findet sich bei den Weblinks.

Zielplattformen[Bearbeiten]

Unity erlaubt die Entwicklung von Spielen und Anwendungen für die folgenden Plattformen:

Anwendungen jenseits von Computerspielen[Bearbeiten]

Spiel-Engines werden auch für Anwendungen jenseits des Computerspiele Marktes eingesetzt, welche von deren leistungsfähiger 3D-Grafik profitieren. Beispielhaft zu nennen sind Anwendungen der Virtuellen Realität und Erweiterten Realität, audiovisuelle Simulationen und experimentelle Medienanwendungen. Typischerweise handelt es sich hierbei aber um individuelle Entwicklungen von Forschern oder Künstlern, die der Öffentlichkeit kaum (höchstens über Internet-Videos) zugänglich sind. Ist die Software dennoch im Netz verfügbar, ist sie meist experimenteller Natur, dafür aber kostenlos für eigene Experimente nutzbar.

Da Unity eine offene Softwarearchitektur besitzt (Socket-Kommunikation, .NET-Kompatibilität über Mono, Erweiterungen in C++) und relativ kostengünstig verfügbar ist, wurden in den letzten Jahren eine Reihe von Erweiterungen und Anbindungen für Unity entwickelt:

Verbreitung[Bearbeiten]

Im Jahr 2011 hatten sich weltweit rund 500.000 Entwickler beim Hersteller registriert.[28] Im Mai 2012 berichtete die Website Gamasutra, dass 53,1 % aller an der Umfrage teilnehmenden Entwickler angaben, Unity für mobile Geräte zu nutzen.[29]

Lizenzmodelle und Kosten[Bearbeiten]

Der Hersteller bietet zwei Basisprodukte an, das kostenlose Unity und die Vollversion Unity Professional. Beide Versionen enthalten die Entwicklungsumgebung, Zugriff auf die Dokumentation, Tutorials, Beispiele und Unterstützung über Forum und Wiki. Die Basisversion ist gegenüber der Vollversion um folgende Merkmale reduziert:

  • Keine Erweiterungsmöglichkeiten durch C++-Module
  • Der Splash Screen kann nicht selbst gestaltet werden, sondern präsentiert das Unity-Logo.

Laut Absatz 1.3 der Nutzerlizenz[3] erlaubt die kostenlose Nutzung darüber hinaus lediglich eine Einzelplatz-Installation. Diese Einschränkung gilt auch für die Lizenzen für Forschung und Lehre.

Die Entwicklung für Spielekonsolen ist nur auf Basis von Unity Professional möglich. Für die einzelnen Zielplattformen müssen kostenpflichtige Zusatzlizenzen erworben werden. Es sind jeweils die Arbeitsplätze auszustatten, stück- oder umsatzabhängige Tantiemen fallen nicht an.[30]

Literatur[Bearbeiten]

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. UnityScript versus JavaScript. UnifyWiki. Abgerufen am 29. Mai 2014.
  2. Difference between UnityScript and JavaScript?. UnityAnswers. Abgerufen am 29. Mai 2014.
  3. a b Unity Software License Agreement 4.x. Unity Technologies. Abgerufen am 6. April 2014.
  4. Unity Deferred Lighting Path. Unity Technologies. Abgerufen am 30. Juli 2011.
  5. Unity Mecanim. Unity Technologies. Abgerufen am 8. Dezember 2012.
  6. Unity Sound. Unity Technologies. Abgerufen am 30. Juli 2011.
  7. Unity 5 - Änderungen im Überblick. CreateGames. Abgerufen am 29. März 2014.
  8. Unity 5. Unity Technologies. Abgerufen am 29. März 2014.
  9. Unity Mono Compatibility. Unity Technologies. Abgerufen am 9. Dezember 2012.
  10. UnityScript versus JavaScript. UnifyWiki. Abgerufen am 29. Mai 2014.
  11. Difference between UnityScript and JavaScript?. UnityAnswers. Abgerufen am 29. Mai 2014.
  12. Unity ShaderLab. Unity Technologies. Abgerufen am 29. August 2011.
  13. Unity Networking Concepts. Unity Technologies. Abgerufen am 31. August 2011.
  14. Unity Tree Editor. Unity Technologies. Abgerufen am 30. Juli 2011.
  15. Unity Extensions. Unity Technologies. Abgerufen am 30. Juli 2011.
  16. Unity AssetServer. Unity Technologies. Abgerufen am 30. August 2011.
  17. Unity AssetStore. Unity Technologies. Abgerufen am 30. August 2011.
  18. unity3d.com Wiki. Unity3d. Abgerufen am 11. November 2014.
  19. http://unity3d.com/unity/multiplatform/desktop, abgerufen am 23. August 2014
  20. http://unity3d.com/unity/multiplatform/consoles, abgerufen am 23. August 2014
  21. http://unity3d.com/unity/multiplatform/mobile, abgerufen am 23. August 2014
  22. Web Player. Unity Technologies. Abgerufen am 8. Dezember 2012.
  23. Middle VR. i'm in VR. Abgerufen am 8. Dezember 2012.
  24. Oculus Rift. Oculus VR, Inc.. Abgerufen am 8. Dezember 2012.
  25. Hartmut Gielselmann, Jan-Keno Janssen: Endlich mittendrin! Erster Test der VR-Brille Oculus Rift, c’t – magazin für computertechnik, Seiten 102-109, Ausgabe 10, 22. April 2013
  26. Qualcomm Vuforia. Qualcomm Technologies, Inc.. Abgerufen am 8. Dezember 2012.
  27. Metaio. Metaio. Abgerufen am 11. September 2014.
  28. Christian Geiger und Maic Masuch: Triebwerke, iX – Magazin für professionelle Informationstechnik, Ausgabe September 2011
  29. Mobile game developer survey leans heavily toward iOS, Unity. Gamasutra. Abgerufen am 9. Dezember 2012.
  30. Unity License Comparison. Unity Technologies. Abgerufen am 30. Juli 2011.