Unity (Spiel-Engine)

Programmiergerüst für Computerspiele
(Weitergeleitet von Unity 3D)

Unity ist eine Laufzeit- und Entwicklungsumgebung für Spiele (Spiel-Engine) des Unternehmens Unity Technologies mit Hauptsitz in San Francisco. Ziel-Spieleplattformen sind neben PCs (PC und Mac) auch Spielkonsolen, mobile Geräte und Webbrowser. Die Entwicklungsumgebung, die die Entwicklung von Computerspielen und anderen interaktiven 3D-Grafik-Anwendungen ermöglicht, gibt es für Windows, Linux (nur Beta) und macOS.

Unity

Basisdaten

Entwickler Vereinigte StaatenVereinigte Staaten Unity Technologies
Erscheinungsjahr 8. Juni 2005
Aktuelle Version 2023.2.8[1]
(31. Januar 2024)
Betriebssystem Windows, macOS, Linux (Entwicklungs- und Zielplattformen), PS4, Xbox One, Xbox Series, Wii U, Nintendo Switch, tvOS, HoloLens, iOS, Android, PSV, Google Stadia (nur Zielplattformen)

Webbrowser über WebGL (ab Unity 5) oder Plug-in: Unity Web Player

Programmier­sprache C++ (Runtime), C# (Scripting)
Kategorie Spiel-Engine
Lizenz Endbenutzer-Lizenzvertrag[2]
unity.com

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 sogenannten „GameObjects“ organisiert. Diesen GameObjects können Komponenten (Materialien, Klänge, physikalische Eigenschaften, Skripte) zugeordnet werden. Einfache Objekte wie Lichtquellen oder grafische Primitive (Ebenen, Würfel, Kugeln) können direkt im Editor erzeugt werden. Komplexe Komponenten (sogenannte „Assets“) werden per Drag&Drop importiert, z. B. 3D-Modelle, Animationen, Texturen und Sounds, die in anderen Programmen erstellt wurden. Werden sie im Laufe der Produktion verändert, aktualisiert der Unity-Editor sie automatisch. Im „Game-View“ werden grafische Darstellung und Verhalten des Spiels simuliert. Eine Exportfunktion ermöglicht die Erzeugung von ausführbaren Anwendungen.

Technische Eigenschaften

Bearbeiten
 
Gone Home – Unity

Unity bietet eine grafische Darstellung gemäß dem Stand der Technik. Die Grafik-Engine unterstützt sowohl klassisches Forward Rendering als auch Deferred Shading[3] und basiert auf OpenGL, Direct3D oder Vulkan, abhängig von der Zielplattform. Verschiedene 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.[4] 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.[5] 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.[6][7]

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[8] und bietet als mögliche Skriptsprache C#. Bis Version 2017.1 gab es außerdem die Möglichkeit in UnityScript (einer JavaScript ähnlichen Sprache) und Boo zu skripten.[9] Von Version 3.4 bis 2018.1 verwendete Unity standardmäßig die Entwicklungsumgebung MonoDevelop. Seitdem verwendet Unity standardmäßig Visual Studio Community, welche bereits in vorigen Versionen über den Installer mitgeliefert wurde.[10]

Skripte und andere Assets (etwa 3D-Modelle) können in sogenannten „Prefabs“ zusammengefasst werden. Dies ist sinnvoll, wenn gleichartige Objekte mehrfach in einer Szene enthalten sind. Prefabs machen es möglich, eigene selbst entwickelte Bausteine (Figuren, 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. Die Grafik-Engine von Unity kann durch selbst geschriebene Shader-Programme in Cg und HLSL innerhalb der Umgebung „ShaderLab“ erweitert werden.[11]

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 (PCs), 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 bot Unity die Mechanismen Remote Procedure Call und Replikation an.[12] Seit 2018 wird an einem neuen Multiplayer-Framework gearbeitet, welches das veraltete UNet-System ab 2020 ersetzen soll.[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]
  • EditorVR[16]

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

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.[18] 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.[19] Eine Liste herstellerunabhängiger Webseiten, auf denen Assets kostenlos oder kostenpflichtig angeboten werden, findet sich bei den Weblinks.

Lernangebot

Bearbeiten

Unity Technologies selbst bietet ein englischsprachiges Lernangebot mit dem Namen Unity Learn,[20] welches zunächst zweigeteilt war: Zum einen gab es kostenlose Kurse, welche unter Unity Learn gelistet wurden. Zum anderen gab es kostenpflichtige Kurse, welche unter Unity Learn Premium gelistet wurden.[21] Seit dem 23. Juni 2020 stellt Unity Technologies auch das Premiumangebot allen Nutzern kostenlos zur Verfügung.[21] Zudem bietet Unity im Rahmen der alljährlichen „Unity Unite“ verschiedene Vorträge in englischer Sprache,[22] welche vor Ort oder online einsehbar sind.[23][24]

Liste der kostenlosen Lernpfade, die Unity Learn anbietet:

  • Unity Essentials. Abschlusszeit: 2 Wochen. Der Lernpfad für Anfänger, der die Grundlagen für den Einstieg in Unity vermittelt[25].
  • Junior Entwickler. Abschlusszeit: 12 Wochen. Der Lernpfad für Einsteiger mit Grundkenntnissen. Er umfasst Programmiertheorie, Code-Schreiben, App-Scripting, Debugging, Versionskontrolle, Code-Optimierung usw.[26]
  • Creative Core. Abschlusszeit: 10 Wochen. Der Lernpfad zur Erweiterung des Wissens, der Fähigkeiten und des Verständnisses von Unity[27].
  • VR-Entwicklung. Abschlusszeit: 6 Wochen. Der Lernpfad beinhaltet die Grundlagen für Entwicklung von den VR-Apps[28].
  • Mobile AR-Entwicklung. Abschlusszeit: 8 Wochen. Der Lernpfad zur Entwicklung der AR-Apps für iOS und Android. Das Programm beinhaltet den Einsatz von Visual Scripting und AR-Tools von Unity zur Entwicklung der AR-Erlebnisse[29].

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 Computerspielemarktes eingesetzt, welche von deren leistungsfähiger 3D-Grafik profitieren. Beispielhaft zu nennen sind Anwendungen der virtuellen 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-Framework-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.[41] 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.[42]

2014 investierte Ourpalm in Unity.[43]

Lizenzmodelle und Kosten

Bearbeiten

Der Hersteller bietet drei verschiedene Bezahlmodelle. Alle Pläne enthalten Asset Manager, Team Administration, Unity Cloud, Unity DevOps, gewährleisten den Zugang zu Unity Asset Store, Marktplatz für Assets und Tools von Drittanbietern, Unity Learn. Allerdings gibt es Unterschiede im Support und den Zugriff auf zusätzliche Funktionen.

Für Studenten und Amateure ist die Nutzung von Unity kostenfrei. Für den professionellen Einsatz wird eine monatliche Gebühr von 170 Euro oder eine jährliche Gebühr von 1877 Euro erhoben. Ab einer gewissen Teamgröße werden variable, von der Unternehmensgröße abhängige Tarife vereinbart.[44]

Kontroversen

Bearbeiten

Am 12. September 2023 kündigte Unity Technologies eine grundlegende Änderung seines Monetarisierungssystems für den Start im Januar 2024 an.[45] Kern ist eine sogenannte „Unity Runtime Fee“, die den Entwicklern berechnet werden soll. Nutzer von Unity Personal und Unity Plus sollen ab einem Umsatz von 200.000 US-Dollar und 200.000 Installationen eines kommerziellen mit Unity erstellten Produktes innerhalb von 12 Monaten einen Pauschalbetrag von 20 US-Dollar-Cent für jede weitere Installation durch einen Nutzer zahlen. Für Nutzer von Unity Pro und Unity Enterprise gelten Grenzwerte von 1 Million US-Dollar innerhalb von 12 Monaten und 1 Million Installationen seit Veröffentlichung des Produktes. Diese Nutzer sollen einen nach zunehmender Installationsmenge gestaffelten Pauschalbetrag beginnend mit 12 respektive 12,5 US-Dollar-Cent pro Installation bezahlen. Die Zahlung dieser Gebühren ist monatlich zu leisten.[46]

Das Modell hat bei Entwicklern für viel Unruhe und Wut gesorgt. Laut Berechnungen von einzelnen Entwicklern, könnte Unity Technologies bis zur Hälfte des Umsatzes eines Entwicklers mit einem Videospiel einfordern und mache es teuer und unrentabel, Demos anzubieten, an Rabatt-Aktionen auf Plattformen wie Steam teilzunehmen oder kostenlose Fassungen anzubieten. Ebenso wurden Unklarheiten der Regelungen, eine grundlegende Intransparenz und mögliche Missbrauchsmöglichkeiten kritisiert. Beispielsweise sei unsicher wie Unity die Installationen registriert und ob dies in Einklang mit Datenschutzrichtlinien geschieht, wie mit Installationen im Rahmen von Abo-Modellen wie dem Xbox Game Pass oder raubkopierten Fassungen eines Videospiels umgegangen werden soll.[47]

Mehrere Studios kündigten nach der Ankündigung der neuen Konditionen an, Unity nicht weiter verwenden zu wollen, wenn die Regeln nicht zurückgenommen oder geändert werden.

Ende September kündigte Unity eine erneute Änderung an, die auf die Kritik einging.[48] Demnach bleibt „Unity Personal“ kostenlos und von der Runtime Fee ausgenommen, so lange Nutzer nicht mehr als 200.000 US-Dollar damit umsetzen. Auf den höheren Stufen soll eine Runtime Fee erst ab einer Million US-Dollar anfallen. Wobei Studios hier zwischen einer Abgabe der Runtime Fee und einer Umsatzbeteiligung von Unity von 2,5 Prozent wählen können. Berichte über die Zahl der Installationen sollen von den Entwicklern selbst geliefert werden und werden nicht von Unity erhoben. Darüber hinaus gelten die Änderungen nicht rückwirkend, sondern treten mit der Veröffentlichung und der Nutzung der Entwickler der kommenden LTS-Unity-Fassung 2024 in Kraft.[49]

Am 9. Oktober 2023 kündigte Unity an, dass der bisherige CEO John Riccitiello mit sofortiger Wirkung von seinem Posten zurücktreten wird. Ebenso hat er seine Positionen als Vorstandsvorsitzender und Firmenpräsident aufgegeben. Vorübergehend soll James Whitehurst die Rolle des CEO kommissarisch ausfüllen – er ist Berater der Investmentfirma Silver Lake und hat zuvor als CEO von Red Hat gearbeitet. Riccitiello soll bis auf weiteres beratend tätig bleiben, um einen „reibungsloser Übergang“ zu ermöglichen. In Kürze soll mit der Suche nach einem neuen dauerhaften CEO begonnen werden.[50]

Viele Kritiker des Anfang September angekündigten Monetarisierungssystems hatten John Riccitiello persönlich für die angekündigte Preisgestaltung und die daraufhin folgende Verunsicherung und Kontroverse verantwortlich gemacht.[51]

Literatur

Bearbeiten
Bearbeiten
Commons: Unity (game engine) – Sammlung von Bildern, Videos und Audiodateien

Einzelnachweise

Bearbeiten
  1. Unity 2023.2.8. Abgerufen am 4. Februar 2024.
  2. Unity Software Additional Terms. Unity Technologies, abgerufen am 1. November 2020.
  3. Unity Technologies: Unity – Manual: Rendering paths in the Built-in Render Pipeline. Abgerufen am 3. Februar 2022 (englisch).
  4. Unity Mecanim. Unity Technologies, abgerufen am 8. Dezember 2012.
  5. Unity Sound. Unity Technologies, archiviert vom Original am 28. Juli 2011; abgerufen am 30. Juli 2011.
  6. Unity 5 – Änderungen im Überblick. CreateGames, archiviert vom Original am 29. März 2014; abgerufen am 29. März 2014.
  7. Unity 5. Unity Technologies, abgerufen am 29. März 2014.
  8. Unity Mono Compatibility. Unity Technologies, archiviert vom Original am 16. Januar 2013; abgerufen am 9. Dezember 2012.
  9. UnityScript’s long ride off into the sunset – Unity Blog. In: Unity Technologies Blog. (unity3d.com [abgerufen am 11. September 2018]).
  10. Replacing MonoDevelop-Unity with Visual Studio Community starting in Unity 2018.1 – Unity Blog. In: Unity Technologies Blog. (unity3d.com [abgerufen am 11. September 2018]).
  11. Unity ShaderLab. Unity Technologies, abgerufen am 29. August 2011.
  12. Unity Networking Concepts. Unity Technologies, abgerufen am 31. August 2011.
  13. UNet deprecation FAQ. Abgerufen am 1. März 2020.
  14. Unity Tree Editor. Unity Technologies, abgerufen am 30. Juli 2011.
  15. Unity Extensions. Unity Technologies, abgerufen am 30. Juli 2011.
  16. Unity: 3D-Werkzeug „EditorVR“ wird quelloffen und erweiterbar. Abgerufen am 20. Januar 2019.
  17. Unity AssetServer. Unity Technologies, archiviert vom Original am 6. September 2011; abgerufen am 30. August 2011.
  18. Unity AssetStore. Unity Technologies, archiviert vom Original am 3. September 2011; abgerufen am 30. August 2011.
  19. unity3d.com Wiki. Unity3d, abgerufen am 11. November 2014.
  20. Unity Learn. Abgerufen am 14. Juli 2020.
  21. a b Learn Premium is now available to everyone at no cost – Unity Technologies Blog. 23. Juni 2020, abgerufen am 14. Juli 2020 (amerikanisches Englisch).
  22. Andrew Jevsevar: How to profile and optimize a game | Unite Now 2020. Unity, 13. Juli 2020, abgerufen am 14. Juli 2020 (englisch).
  23. Unity – YouTube. Abgerufen am 14. Juli 2020.
  24. Unity Technologies: Unity Unite. Abgerufen am 14. Juli 2020 (englisch).
  25. Unity Essentials Pathway. Abgerufen am 26. März 2024.
  26. Junior Programmer Pathway. Abgerufen am 26. März 2024.
  27. Creative Core Pathway. Abgerufen am 26. März 2024.
  28. VR Development Pathway. Abgerufen am 26. März 2024.
  29. Mobile AR Development Pathway. Abgerufen am 26. März 2024.
  30. http://unity3d.com/unity/multiplatform/desktop, abgerufen am 23. August 2014.
  31. http://unity3d.com/unity/multiplatform/consoles, abgerufen am 23. August 2014.
  32. http://unity3d.com/unity/multiplatform/mobile, abgerufen am 23. August 2014.
  33. Web Player. Unity Technologies, abgerufen am 8. Dezember 2012.
  34. Middle VR. i'm in VR, abgerufen am 8. Dezember 2012.
  35. Oculus Rift. Oculus VR, Inc., abgerufen am 8. Dezember 2012.
  36. Hartmut Gielselmann, Jan-Keno Janssen: Endlich mittendrin! Erster Test der VR-Brille Oculus Rift, c’tmagazin für computertechnik. S. 102–109, Ausgabe 10, 22. April 2013.
  37. Valve Brings SteamVR to the Unity Platform – Unity Blog. In: Unity Technologies Blog. Abgerufen am 23. März 2016.
  38. Qualcomm Vuforia. Qualcomm Technologies, Inc., abgerufen am 8. Dezember 2012.
  39. Metaio. Metaio, archiviert vom Original am 12. September 2014; abgerufen am 11. September 2014.
  40. Announcing Support for Microsoft HoloLens – Unity Blog. In: Unity Technologies Blog. Abgerufen am 23. März 2016.
  41. Christian Geiger und Maic Masuch: Triebwerke, iX – Magazin für professionelle Informationstechnik, Ausgabe September 2011.
  42. Mobile game developer survey leans heavily toward iOS, Unity. Gamasutra, abgerufen am 9. Dezember 2012.
  43. https://technode.com/2014/09/11/chinese-gaming-company-ourplam-buy-stake-game-engine-unity
  44. Unity Plans & Pricing. Unity Technologies, abgerufen am 22. März 2024 (englisch).
  45. Bryant FrancisSenior EditorSeptember 12, 2023: Unity introducing new fee attached to game installs. 12. September 2023, abgerufen am 12. September 2023 (englisch).
  46. Unity plan pricing and packaging updates. Abgerufen am 12. September 2023 (englisch).
  47. Keith Stuart: Game developers furious as Unity Engine announces new fees. In: The Guardian. 12. September 2023, ISSN 0261-3077 (theguardian.com [abgerufen am 12. September 2023]).
  48. An open letter to our community. Abgerufen am 8. Oktober 2023 (englisch).
  49. heise online: Unity gibt nach: Diese Kompromisse geht der Engine-Entwickler ein. 23. September 2023, abgerufen am 8. Oktober 2023.
  50. Unity Announces Leadership Transition. 9. Oktober 2023, abgerufen am 9. Oktober 2023 (englisch).
  51. Sean Hollister: John Riccitiello is out at Unity, effective immediately. 9. Oktober 2023, abgerufen am 9. Oktober 2023 (englisch).