Visual Scripting für Unity im Vergleich (Update 2020)
Für fast alle größeren Programmiersprachen tauchen früher oder später Werkzeuge für Visual Scripting (grafisches Programmieren) auf, die die Formulierung von Programmlogik durch grafische Oberflächen erleichtern sollen. In diesen Systemen muss kaum mehr Code von Hand geschrieben werden. Statt dessen ermöglichen Listen oder Diagramme das Zusammenbauen eines Scripts durch Ziehen, Platzieren und Verbinden von vorgefertigten Bausteinen per Maus. Dieser Artikel befasst sich mit einigen Visual Scripting-Werkzeugen für den Unity-Editor.
Spiele entwickeln ohne Programmieren?
Wenn man noch wenig Erfahrung mit Software-Entwicklung hat, kann die Komplexität des Themas schnell einschüchternd und überfordernd wirken. Folglich werden Visual Scripting -Systeme oft mit Versprechen beworben, die den Eindruck erwecken, dass die Entwicklung einer Software, z.B. eines Spiel, mit Hilfe solcher Werkzeuge quasi ohne Programmierung möglich wäre.
Das ist jedoch ein Trugschluss, denn es gibt einen entscheidenden Unterschied in den Begriffsdetails. Der Ausdruck „Programmieren“ wird oft sehr allgemein mit unterschiedlicher Bedeutung eingesetzt, wobei tatsächlich aber mindestens die folgenden zwei Aspekte zu unterschieden sind:
- Formulieren von Programmlogik – Was soll der Computer genau machen? Wie soll er z.B. auf Nutzereingaben reagieren? Für alle dynamischen oder interaktiven Vorgänge sind derartige Fragen zu beantworten, was die Programmlogik bildet.
- Schreiben von Code – Die Programmlogik muss als Text in einer Programmiersprache für den Computer verständlich ausgedrückt werden.
Visual Scripting kann lediglich das Schreiben von textuellem Code mit dem Anordnen von grafischen Elementen ersetzen. Das Formulieren der Programmlogik ist immer erforderlich, denn ein Projekt ohne jegliche Programmlogik ist statisch, also letztlich ein Film oder Bild. Anders ausgedrückt: Es ist nicht möglich, ein Programm zu entwickeln, ohne festzulegen, was passieren soll. Woher sollte der Computer wissen, was zu tun ist? Das bedeutet, dass das „technische Denken“, das die Grundlage des Software-Entwicklungs-Prozesses darstellt, in jedem Fall erforderlich ist.
Nachteile von Visual Scripting
Ein perfektes grafisches Programmiersystem ist eine tolle Vorstellung, doch tauchen in der Praxis etliche Nachteile auf, so dass sein Einsatz in vielen Fällen sogar ungeeignet ist:
- Aufblähung trivialer Elemente – Dadurch dass jeder Baustein eine grafische Fläche einnimmt, benötigen selbst einfachste Anweisungen relativ viel Platz, was die Übersichtlichkeit eines Diagramms erschwert. Dieser Nachteil hängt natürlich vom konkreten System und seiner Darstellung ab.
- Kaum überschaubar – Durch die Isolation von Programm-Modulen in einzelnen Diagrammen ist es in größeren Projekten schwer, den Überblick zu behalten. Ähnlich wie beim Schreiben von Code lässt sich dieser Nachteil höchstens durch extrem sorgfältiges Kapseln von Modulen und dem Minimieren von Abhängigkeiten mildern.
- Nicht optimierbar – Das visuelle Script wird zur Ausführung in Programmbefehle übersetzt. Es kann passieren, dass dieser generierte Code nicht optimal läuft – entweder durch Schwächen im Übersetzungssystem oder durch Sonderfälle im formulierten Ablauf. Während sich technische Anweisungen im Code für jede Situation optimieren lässt, kann auf den technischen Ablauf visueller Scripte in den meisten Fällen kein Einfluss genommen werden.
- Schwierige Fehlersuche – Sofern das Visual Scripting -Werkzeug nicht über einen ausgereiften eigenen Debugging-Mechanismus verfügt, kann die Fehlersuche schwierig sein, da sich die tatsächlich ausgeführten Programmbefehle u.U. von den abstrakten Bausteinen unterscheiden.
- Starke Abhängigkeit – Die meisten Visual Scripting-Tools speichern die aufgebauten Inhalte in eigenen, oft binären Datei-Formaten. Dadurch entsteht eine enorme Abhängigkeit. Wird die Software z.B. nicht mehr weiterentwickelt, müssen schlimmstenfalls alle Inhalte in einem Ersatzsystem nachgebaut werden, da die Daten unzugänglich werden. Da es sich bei Code-Dateien um reinen Text handelt, bleibt geschriebener Code dagegen dauerhaft zugänglich.
- …
Vorteile von Visual Scripting
Während sich beim Schreiben von Code beliebiger – auch falscher – Text eingegeben lässt, ist der Autor bei der Verwendung von Visual Scripting stark eingeschränkt, denn es kann nicht frei, sondern nur aus einer eingeschränkten Anzahl von Möglichkeiten gewählt werden. Diese Eigenschaft ist Grundlage für die meisten Aspekte, die als Vorteil von Visual Scripting empfunden werden:
- Schneller Einstieg – Das Angebot grafischer Bausteine und Werkzeuge ist meist intuitiv verständlich, so dass das Grundprinzip des „Zusammenklickens“ einzelner Elemente sehr leicht zu verstehen und anzuwenden ist.
- Weniger Vorkenntnisse nötig – Die Durchsuchbarkeit der Listen verfügbarer Bausteine erspart das lernen und nachschlagen konkreter Befehle und Formulierungen.
- Keine Syntaxfehler – Das Risiko von Tippfehlern ist minimiert, da die im System verfügbaren Bausteine bereits korrekt hinterlegt sind.
- Zugang für Quereinsteiger – Mitarbeiter ohne Informatik-Kenntnisse, wie z.B. Designer, erhalten durch die zuvor genannten Vorteile die Möglichkeit, selbst Programmlogik in das Projekt einzubauen.
- Trennung von technischer und inhaltlicher Logik – Vor allem bei Spielen mit einer Geschichte oder Handlung unterscheidet sich die Programmlogik in zwei Gruppen: Technische Logik ist für den Betrieb des Spiels in Form eines Programmablaufs nötig (z.B. Grafik darstellen, Spielstände verwalten, u.v.m.). Inhaltliche Logik beschreibt Elemente des Handlungsverlaufs (z.B. eine Schatztruhe kann nur mit einem Schlüssel geöffnet werden). Während die Steuerung technischer Vorgänge in der Regel besser und effizienter in geschriebenem Code umgesetzt wird, kann sich Visual Scripting durchaus als Zusatzmodul für Inhaltsformulierung eignen. Da inhaltliche Logik meist weniger komplex ist und oft von Autoren umgesetzt wird, die sich mit Inhalt und weniger mit Technik auskennen, ist hier eine leichte und schnelle Umsetzbarkeit oft besonders wichtig.
- …
Visual Scripting Tools (VST) für Unity
Eine subjektive Auswahl und Bewertung von (vor allem freien) Visual Scripting-Plugins für Unity 3D.
- Bolt^
+ mächtig+ gepflegt+ tolles Design+ kostenlos
Die grafische Präsentation von Bolt gefällt mir sehr gut. Es weist gute Wartungs- und Entwicklungsupdates auf und unterstützt Zustandsgraphen wie auch Flussdiagramme. Zudem ist es seit 2020 kostenlos erhältlich. - Behaviour Bricks^
+ kostenlos+ aktive Neuentwicklung- schwerfälliges Design- etwas umständlich
Scheinbar aus einem Projektbedarf der Autoren entstanden ist dieses kostenlose VST im Prinzip funktional. Allerdings wirkt das ganze Layout sehr grob und jedes Element braucht (zu) viel Platz, um komplexe Scripte überschaubar zu halten. Der mitgelieferte Funktionsumfang wirkt noch ziemlich begrenzt und an einigen Stellen scheint die Integration der Scripte in die Szene etwas umständlich. Update: Gerade wurde eine komplette Neuimplementierung veröffentlicht, die scheinbar unter aktiver Entwicklung steht. - Behaviour Machine^
+ kostenlose Version+ schöner Graph-Editor- veraltet- Elemente verstreutab 45€
Dieses VST hat ein übersichtliches, elegantes Design, das sich sehr gut in Unity einpasst. Der Funktionsumfang ist sehr umfangreich und es werden sowohl Diagramme als auch Sequenzlisten unterstützt. Die Free-Version unterstützt nur Desktop-Programme, für Mobilgeräte und andere Ziele muss eine Lizenz erworben werden. Leider scheint das Projekt nicht mehr gepflegt zu werden, das letzte Update ist über ein Jahr alt und die Webseite leidet unter Serverfehlern, um die sich scheinbar niemand kümmert. Keine gute Perspektive. - uScript^
+ kostenlose Version+ gepflegt+ professionell+ essenziell+ Code-Ausgabe+ gut dokumentiert- Einschränkungen PLE unklar- träge- Demos fehlerhaft- umständlichab 30€
Das professionell anmutende uScript, das ohne großen Ballast durch essentieller Funktionalität glänzt, bietet eine Personal Learning Edition an, die den gesamten Funktionsumfang der Kaufversion abdeckt. Für kommerzielle Spiele ist eine kostenpflichtige Lizenz zu erwerben. Im Gegensatz zu interpretierenden VSTs ist eine Besonderheit von uScript, dass es C#-Code erzeugt, der dann wie handgeschriebener Code von Unity verarbeitet wird. Dies ermöglicht beliebige Einsicht und Bearbeitung dieses Codes, macht den Arbeitsfluss aber extrem träge, da Änderungen an Diagrammen ständig in Code umgewandelt wird, den Unity sofort kompiliert, wodurch viele Wartezeiten entstehen. Das Projekt wird aktiv gepflegt, ist stellenweise aber scheinbar recht komplex. Im Test liefen die mitgelieferten Demos nicht alle fehlerfrei. - Constellation
+ kostenlos+ open source+ interessanter Ansatz- noch zu früh- keine Doku
Ein ganz junges VST-Projekt mit vielversprechenden Ansätzen ist Constellation, das quelloffen als Unity-Projekt bei github angeboten wird. Es bleibt abzuwarten, wie es sich weiter entwickelt, eine erste stabile Version ist für 2019 geplant. Der unter MIT-Lizenz stehende Code könnte sogar als Basis für einen eigenen Editor dienen. Allerdings sind manche Stellen im Code etwas merkwürdig aufgebaut und es fehlt jegliche Inline-Dokumentation. - Fungus
+ kostenlos+ open source+ sehr gepflegt+ leichter Einstieg+ gut dokumentiert- Templates charakteristisch- sehr linear
Das Fungus VST wirkt auf den ersten Blick wie ein super simples Programmier-Tool für Kinder. Die Beispiele sind sehr auf Linearität und Dialog-basierte Spiele ausgelegt und die grafischen Vorlagen weisen einen sehr speziellen Stil auf, der zu vielen Projekten vermutlich nicht passt. Dennoch halte ich dieses System derzeit für eines der besten kostenlosen VSTs für Unity! Hinter den Beispielen – die man mögen kann oder nicht – steckt eine mächtige Visual Scripting-Engine mit aufgeräumter Oberfläche, die Ablaufdiagramme sowie auch Sequenzlisten unterstützt. Die mitgelieferten Befehle sind umfangreich, eigene Erweiterungen möglich, zumal es sich um ein sehr gepflegtes und ständig weiterentwickeltes quelloffenes Projekt handelt. Es gibt eine gute Dokumentation, Tutorials und Videos, die den Einsteig leicht machen. Obwohl auch schon auf Unity-Konferenzen vorgestellt, findet das Projekt noch relativ wenig Beachtung.
Weitere kommerzielle VSTs
Zu folgenden VSTs habe ich recherchiert, sie aber nicht selbst getestet:
- PlayMaker^
+ beliebt+ umfangreich- keine Free-Version- teils umständlichab 60€
Eines der ältesten und etabliertesten VST für Unity, das auch in zahlreichen kommerziellen Titeln zum Einsatz kam. - Node Canvas^
+ mächtig+ gepflegt+ tolles Design- kostenpflichtigab 67€
Ähnlich wie Bolt, teils aber nicht ganz so mächtig.
In Zukunft: Unity-eigenes VST?
In der Unity-Entwicklungs-Roadmap und an verschiedenen anderen Stellen finden sich Hinweise darauf, dass der Unity-Editor selbst in Zukunft ein visuelles Scripting-Tool anbieten wird. Ähnlich der Integration zuvor externer Tools in der Vergangenheit (z.B. Text Mesh Pro) ist davon auszugehen, dass dieser kostenloser Bestandteil zukünftiger Standard-Installationen sein dürfte.
UPDATE 2020
Tolle News! Im Juli 2020 hat Unity bekannt gegeben, dass BOLT als Visual Scripting Tool aufgekauft wurde, wodurch es nun kostenlos über den Package Manager verfügbar ist. (In der Vergangenheit hat dieses großartige Tool um die 60€ in Einzellizenz gekostet.)
Zusammenfassung
Visual Scripting Tools bieten Werkzeuge an, um Programmlogik durch das Zusammenklicken von Diagrammen statt dem Schreiben von textuellem Code auszudrücken. Dieses Tools haben ihre Vor- und Nachteile, können sich aber vor allem zur Formulierung von inhaltlichen Abläufen und Handlungszweigen gut eignen. Unter den kostenlosen VSTs für Unity war bisher das scheinbar oft unterschätzte Fungus-Projekt mein Favorit. Nach der Übernahme durch Unity ist das ab jetzt kostenlose BOLT jedoch DER Tipp für VST in Unity. Unter kostenpflichtigen Produkten, macht auch Node Canvas einen sehr guten Eindruck.