Ich bin gespannt auf den Workflow beim Erstellen eines Spiels in Unity3D.
Generiert es viel Code für Sie?
Mein Verständnis ist, dass Sie das Spiel in Unity beschreiben und im Backend Skripte erstellen, um die Logik zu erstellen. So wie Sie Unity verwenden, um die Puppen zu beschreiben, und Sie verwenden eine Skriptsprache als Puppenmeister.
Antworten:
Unity3D besteht aus einer Game-Engine und einem (recht rudimentären) 3D-Editor. Es bietet Maschen, Texturen, Shader, Gelände, Kameras, Animationen, Partikelsysteme, Audiobeispiele und andere Arten von Objekten, die in Videospielen nützlich sind. Es enthält PHYSX (eine proprietäre Physik-Engine von Nvidia) und Mono (die Open-Source-Implementierung der Common Language Runtime, auch bekannt als .NET).
Wie viel davon Sie verbrauchen, liegt bei Ihnen. Sie können alle Ihre Datenstrukturen als Unity-Objekte darstellen, Ihre Welt im Unity-Editor erstellen, die Physik einschalten und Ereignisse mit einem Minimum an Skripten ablaufen lassen. Alternativ können Sie die Physik-Engine ausschalten, Ihre Welt algorithmisch konstruieren und das gesamte Verhalten und die Physik der Objekte explizit programmieren.
Sie können das Verhalten vollständig in Mono programmieren (mit einer der Sprachen C #, JavaScript oder Boo) oder in einer anderen Sprache schreiben und mit Ihrem Unity-Projekt verknüpfen. (Die eigentliche Integration mit den Spielobjekten muss über Mono erfolgen. Dies kann jedoch eine ziemlich dünne Ebene sein, wenn Sie möchten.)
Der Workflow ist ähnlich wie bei jeder anderen Game-Engine. Künstler machen Modelle und Texturen und Animationen, Audio-Spezialisten machen die Sounds, Programmierer schreiben Shader und Verhalten.
Die Community der Unity-Programmierer ist sowohl unter answers.unity3d.com als auch unter forum.unity3d.com sehr hilfreich . (Und vielleicht hier bei Stack Exchange?)
Am besten probieren Sie es aus : Die Basisversion ist kostenlos und Sie erhalten eine 30-tägige Testversion für die "Pro" -Version.
quelle
Unity3D ist eher ein Wrapper / eine Bibliothek als eine Drag & Drop-Game-Engine. Es wird kein Code generiert und es werden auch keine Standardskripte mitgeliefert.
Beispielsweise verfügt Unreal standardmäßig über eine First-Person-Kamera, eine Zeichensteuerung, eine Kollisionserkennung und eine KI.
Sie haben nichts davon in Unity3D. Was Sie von Unity3D erhalten, ist eine Spieleschleife, ein komponentenbasiertes Entity-System, eine umfassende mathematische Bibliothek, die das Laden von Medien, die Handhabung von Meshes, eine Kamera, eine grafische Benutzeroberfläche im Sofortmodus, Shader, Rendering-Pipeline und andere Funktionen auf niedriger Ebene ermöglicht. Plus ein netter Herausgeber. Sie müssen sich nur um die Funktionalität auf hohem Niveau kümmern. Zum Beispiel müssen Sie immer noch Ihre eigene First-Person-Kamera codieren (wenn Sie nicht die Standardkamera verwenden). Sie müssen sich jedoch nicht mit der Berechnung der Betrachtungsvektoren und dergleichen befassen.
Unity3D generiert streng genommen keinen Code für Ihr Spiel. (Es generiert zwar Code zum Ausführen Ihres Spiels, aber keinen für Ihr Gameplay.)
Sie müssen die API verwenden, um Ihr Spiel zu definieren. Sie können sich die mit Unity3D gelieferten Beispiele ansehen und diesen Code wiederverwenden. Es gibt einige vordefinierte Skripte, die Sie jedoch normalerweise an Ihre Bedürfnisse anpassen müssen.
Sie erstellen das Spiel durch Skripten. Sie schreiben Skripte für Verhaltensweisen, entwerfen die Ebene in Unity3D und weisen diese Verhaltensweisen Entitäten (oder Spielobjekten) zu. Es ist sehr flexibel, aber es erfordert immer noch Mühe, ein Spiel zu schreiben. Ich würde es mit Flash für 3D vergleichen.
quelle
Die Oberfläche von Unity3D sieht so aus, als wäre es sehr einfach, und fast alles ist vorgefertigt, aber nichts davon ist wahr. Wenn Sie es ignorieren, bereits vorhandene Skripte (die für jede Engine vorhanden sind, ein Nachteil gegenüber Unity) und Plug-ins zu verwenden, die Sie als extrem mächtig bezeichnen, was sie definitiv nicht sind, ist Unity nur eine Programmierschnittstelle mit Editor.
Sie haben den größten Teil des Codes selbst. Das habe ich in 2 verschiedenen Projekten erlebt.
quelle
Die Analogie mit Blitz ist ganz richtig, aber ich verstehe Ihre Analogie mit Puppen nicht wirklich.
Die guten Dinge an der Einheit sind:
Die schlechten Dinge:
Das, was ich an Unity nicht mag, ist, dass es sich so anfühlt, als wäre die ganze harte Arbeit erledigt, also sind Programmierer viel weniger wertvoll. Auf der anderen Seite ist es großartig, um Leuten schnell beizubringen, wie man Dinge schnell baut.
Fazit: Unity (oder ein Tool wie Unity) ist eher für Künstler gedacht, die keine großen Programmierer erreichen können, aber dennoch wissen, wie man ein wenig Spieleskripting erstellt. Natürlich können Sie ein Spiel mit vollem Funktionsumfang erstellen, eine realistische IA hinzufügen, einen MMO-Netzcode erstellen und was nicht, aber große Unternehmen würden Unity nicht verwenden.
Das Programmieren von Modellen ermöglicht es einem, eine Lösung vorzuschlagen, die für 3/4 der Entwicklungswerkzeuge geeignet ist, so dass sie für diese "unabhängigen" Spielehersteller geeignet ist. Es schätzt ein bestimmtes Werkzeug und es schätzt auch Künstler, aber nicht Programmierer (mit Ausnahme derer aus dem Unity-Team natürlich).
Unity ist eine gute Abkürzung für Nicht-Programmierer, aber sie müssen verstehen, dass Videospiele aus Codezeilen stammen und dass man nicht alles nur mit einem großartigen Tool machen kann. Irgendwann muss man etwas über Low-Level-Programmierung wissen.
Wenn ich ein persönliches Projekt vor Augen habe, würde ich Unity nicht verwenden, weil ich C # oder Boo nicht mag (Panda ist gut mit Python, warum also mit einer kommerziellen Software?), Und weil ich mein Projekt zeige und es fertig ist Einheit, es wird viel weniger beeindruckend sein.
quelle
Für Unity muss ein Skript erstellt werden, jedoch ohne alle Boilerplates. In einem typischen OpenGL-Spiel müssen Sie die Matrizen und Kameras wie verrückt initialisieren. In Unity erstellen Sie ein Skript, um das Verhalten von Objekten zu beschreiben, und hängen es dann an ein Objekt an, damit es sich verhält.
quelle
Wenn Sie eine Menge Code für sich generieren und vorgefertigte Funktionen einbinden, mit denen Sie Ihr Leben in Bezug auf Kollisionserkennung und Rotationsberechnungen (Bibliothek) vereinfachen können, wird eine Menge Code aus dem Bild entnommen und ausgegeben Sie haben die verfügbaren Versionen optimiert und sind einsatzbereit. Meist Funktionen, die Sie speziell für die Spieleentwicklung in allen Builds benötigen.
Es mag überflüssig klingen, dies zu sagen, aber meiner Erfahrung nach macht es mir das Leben leichter, wenn Unity3D nicht gerade abstürzt oder baut, indem ich alles ändern kann, was ich will, und die Quaternion-basierte Mathematik den Leuten überlasse, die einen Master-Abschluss in Mathematik haben und vertraue mir immer noch genug, damit ich ändere, was ich will.
Es wird nichts für Sie schreiben, sondern Ihnen in der Weise helfen, wie es am besten erscheint, und Sie können schreiben, was Sie wollen.
Mit einem Wort: Flexibel
quelle