Unity (Spielengine)

Unity (Spielengine)
Unity
Entwickler Unity Technologies
Aktuelle Version 3.4.1
(Oktober 2011)
Betriebssystem Microsoft Windows, Apple Mac OS X (Entwicklungs- und Zielplattformen), PlayStation 3, Xbox (360), Nintendo Wii, iOS, Android (nur Zielplattformen)

Webbrowser (über Plugin)

Programmier­sprache JavaScript, C#, Boo, C++
Kategorie Game-Engine
Lizenz EULA[1]
Unity

Unity ist eine Spiel-Engine von Unity Technologies, San Francisco, USA. Sie erlaubt die Entwicklung von Computerspielen und anderer interaktiver 3D-Grafik Anwendungen. Die Entwicklungsumgebung läuft unter Windows und Mac OS X. Zielplattformen sind neben PCs auch Spielkonsolen, mobile Geräte und Webbrowser.

Unity wird nach dem Freemium Modell vermarktet – die Basisversion ist kostenlos und kann für eigene Entwicklungen genutzt werden. Die kostenpflichtige Pro Version bietet erweiterte Funktionalität.

Laut einer Umfrage des Game Developer Magazine im Jahr 2011 ist Unity neben der Unreal Engine die beliebteste Spiel-Engine [2] (zitiert nach [3]) und hat rund 500 000 registrierte Entwickler weltweit.[3]

Inhaltsverzeichnis

Entwicklungsumgebung

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 usw.) zugeordnet werden. Einfache Objekte wie Lichtquellen, Grafische Primitive (Ebenen, Würfel, Kugeln usw.) 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 diese im Laufe der Produktion verändert, aktualisiert der Unity Editor diese 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

Grafik

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 FBOs). Die eingebauten Beleuchtungseffekte können durch selbst entwickelte Shader erweitert werden.

Animation

Game-Objekte können über vordefinierte Pfade, Skripte oder physikalische Kräfte (eingebaute PhysX Engine) bewegt werden. Character animation ist über die Skin & Bones Technik möglich. Dabei wird eine Figur als Polygonnetz grafisch dargestellt, welches über ein (unsichtbares) 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.[5]

Sound

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].

Programmierung

Die in Unity eingebauten Mechanismen können über selbst geschriebene Programme, sogenannte Skripts, ergänzt werden. Skripts sind notwendig, um Spielablauf und -Logik zu beschreiben. Das Skripting in Unity basiert auf Mono und bietet die Skriptsprachen JavaScript, 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 Spielcharaktere, Partikelsysteme, usw. wie eingebaute Komponenten zu verwenden. Selbst entwickelte Werkzeuge (z.B. Skriptsammlungen) werden in sog. Packages zusammengefasst und anschließend exportiert. Mit Hilfe von Skripten, die im Unity Edtior 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 Plattform-abhängige, Hardware-nahe oder Performance-kritische 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 in Cg und HLSL innerhalb der Umgebung ShaderLabs erweitert werden.[7]

Multiuser Spiele

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 usw.) 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 beim Server an. Für die Synchronisierung zwischen Client und Server bietet Unity die Mechanismen Remote Procedure Call und Replikation an.[8]

Werkzeuge

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

  • Terrain Modellierer
  • Baum und Pflanzen Editor[9]
  • Werkzeuge für Explosionen
  • Bewegungssteuerung für Charaktere[10]

Zusammenenarbeit im Netz

Der Zusammenarbeit im vernetzen Teams dient der AssetServer. Dieser bietet ein zentrales Verzeichnis für Assets (3D-Modelle, Texturen, Sounds, Skripte, usw.) und eine Versionsverwaltung. Die Operationen (checkin, checkout, commit, usw.) sind vollständig in die Entwicklungsumgebung integriert; der AsserServer erlaubt aber keine branches (verschiedene gleichzeitig vorgehaltene Projekt-Versionen). Der AssetServer funktioniert nur mit der kostenpflichtigen Pro-Version von Unity. [11]

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

Zielplattformen

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

Lizenzmodelle und Kosten

Unity Technologies bietet zwei Basisprodukte an, das kostenlose Unity und die Vollversion Unity Pro für 1500$. Beide Versionen enthalten die Entwicklungsumgebung, Zugriff auf die Dokumentation, Tutorials, Beispiele und Unterstützung über Forum und Wiki. Unity unterscheidet sich von Unity Pro durch das Fehlen folgender Features:

  • Kein Deferred Rendering, Keine Echtzeit-Schatten, Render-To-Texture (Spiegelungen) und Postprocessing Effekte (z.B. Glühen)
  • Keine Erweiterungsmöglichkeiten durch C++ Module
  • Keine Verwendung des AssetServers möglich
  • Der Splash Screen kann nicht selbst gestaltet werden, sondern präsentiert das Unity Logo.

Auch mit der kostenlosen Version von Unity sind kommerzielle Projekte in gewissem Umfang möglich (siehe Absatz 2b der EULA[1]). Für Forschung und Lehre wird für Unity Pro ca. 50% Rabatt gewährt, allerdings blendet diese Version ein kleines Wasserzeichen "Educational License" ein. Nur auf Basis von Unity Pro ist die Entwicklung für Spielkonsolen und mobile Geräte möglich. Für die einzelnen Zielplattformen müssen kostenpflichtige Zusatzlizenzen erworben werden. Es sind aber nur die Arbeitsplätze auszustatten, stück- oder umsatzabhängige Tantiemen fallen nicht an[14].

Weblinks

Einzelnachweise

  1. a b Unity3d 3.x End Users Agreenment (EULA). Unity Technologies. Abgerufen am 30. Juli 2011.
  2. Mark DeLoura: Engine Game Survey, Game Developers Magazine, May 2011
  3. a b Christian Geiger und Maic Masuch: Triebwerke, iX – Magazin für professionelle Informationstechnik, Ausgabe September 2011
  4. Unity Deferred Lighting Path. Unity Technologies. Abgerufen am 30. Juli 2011.
  5. Unity Character Animation. Unity Technologies. Abgerufen am 30. Juli 2011.
  6. Unity Sound. Unity Technologies. Abgerufen am 30. Juli 2011.
  7. Unity ShaderLab. Unity Technologies. Abgerufen am 29. August 2011.
  8. Unity Networking Concepts. Unity Technologies. Abgerufen am 31. August 2011.
  9. Unity Tree Editor. Unity Technologies. Abgerufen am 30. Juli 2011.
  10. Unity Extensions. Unity Technologies. Abgerufen am 30. Juli 2011.
  11. Unity AssetServer. Unity Technologies. Abgerufen am 30. August 2011.
  12. Unity AssetStore. Unity Technologies. Abgerufen am 30. August 2011.
  13. Unifycommunity Wiki. Unify Community. Abgerufen am 30. August 2011.
  14. Unity License Comparison. Unity Technologies. Abgerufen am 30. Juli 2011.

Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Unity — bezeichnet: Unity (ISS), Verbindungsknoten als Teil der Internationalen Raumstation ISS Unity (Bundesstaat), Bundesstaat im Südsudan Unity Church of Christianity, Kirche der Neugeist Bewegung Raumstation Unity, deutsch britische Science Fiction… …   Deutsch Wikipedia

  • PhysX — Logo von Nvidia PhysX PhysX bezeichnet einen speziellen Prozessor (Physikbeschleuniger, auch Physics Processing Unit oder kurz PPU) sowie die zugehörige Physik Engine des Halbleiterherstellers Ageia. Aufgabe dieses Chips ist die Berechnung… …   Deutsch Wikipedia

  • Grafik-Engine — Eine Grafik Engine (wörtlich „Grafik Maschine“, freier etwa: „Grafiktriebwerk“ oder „Grafikmodul“) ist ein mitunter eigenständiger Teil eines Computerprogramms oder einer Computer Hardware, welcher für dessen Darstellung von Computergrafik… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”