Unity3D, wie viel Code schreiben Sie? [geschlossen]

16

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.

Joey Green
quelle
2
Möglicherweise möchten Sie diese Frage bei UnityAnswers posten . Sie erhalten weitaus bessere Antworten, weil es mehr auf die Einheit ausgerichtet ist
Joe the Person

Antworten:

18

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.

Gareth Rees
quelle
6

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.

Extrakun
quelle
1
Diese Aussage ist falsch: "Unreal hat eine Standard-First-Person-Kamera, Charakter-Controller, Kollisionserkennung und AI. Sie haben nichts davon in Unity3D"
jcurrie33
8
Tatsächlich enthält Unity Komponenten für all diese Funktionen und viele weitere als herunterladbare Plugins. Sie müssen zwar anpassen und programmieren, um bestimmte Funktionen nutzen zu können, aber mit einer Kombination dieser Komponenten können Sie dem vollen Funktionsumfang sehr nahe kommen. Es ist zwar nicht ganz so konkret wie Unreal, weil man nicht mit einer funktionierenden Waffe anfängt, aber ich persönlich denke, es ist einfacher, ein Spiel im Allgemeinen (ohne FPS) in Unity zum Laufen zu bringen. Vieles davon ist jedoch semantisch - Sie müssen programmieren, um etwas in Gang zu bringen.
jcurrie33
1
Vielleicht ist es besser zu sagen, dass andere Spiele-Engines eng gekoppelte Subsysteme haben als Unity3D. Wenn Sie ein neues Unity3D-Projekt starten und keine Assets importieren, wird eine leere Tabelle angezeigt. Etwas, das ich für eine gute Sache halte. Vielleicht hat dies meine Sicht ein wenig verzerrt, warum ich denke, dass es keine Standard-Subsysteme gibt. Es gibt nur, dass sie nicht für die Projekte geeignet sind, die ich machen muss. Und das ist eines der guten Dinge an Unity3D. Es ist einfach, die Standardeinstellungen wegzulassen und eigene Codes zu erstellen, wenn Sie dies wünschen.
Extrakun
3

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.

daemonfire300
quelle
2

Die Analogie mit Blitz ist ganz richtig, aber ich verstehe Ihre Analogie mit Puppen nicht wirklich.

Die guten Dinge an der Einheit sind:

  • cross-platform: Das ist ein sehr großes Plus, ich würde sagen der größere Grund.
  • Hochwertige Engine und Implementierung, ich meine die Verwendung von Unity-Spielobjekten usw.
  • Es ist sehr einfach, ein einfaches Spiel von Grund auf neu zu erstellen.

Die schlechten Dinge:

  • Kann keine Verbindung zu C ++ oder C herstellen, sodass Ihr Projekt möglicherweise nur unter Unity funktioniert. Mit C # könnte man argumentieren, dass es auf XNA funktionieren wird, aber C ++ wäre schön gewesen. Mit dieser Bemerkung meine ich, dass es kein Werkzeug ist, das erfahrene Profis oder Autodidakten verwenden würden, da Sie keine vollständige Kontrolle über Ihre Anwendung haben, aber dies bedeutet nicht, dass es Dinge gibt, die Sie mit Unity nicht tun können. Andererseits kann ein Team mit einer großartigen Idee und talentierten Künstlern großartige Dinge tun, ohne erfahrene Programmierer zu benötigen.
  • Es ist ziemlich neu, so dass offensichtlich niemand weiß, wohin dieses Tool führen wird.

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.

jokoon
quelle
1
Kommentar: Es gibt auch Pro-Plugins, die das Programmieren in C ++ ermöglichen. Theoretisch handelt es sich also auch um eine C ++ - Engine ...
jokoon
1

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.

Ming-Tang
quelle
1

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

Proclyon
quelle