Das wichtigste "Pro" von Uinty3D ist, dass es schnell verrückt ist. Ich spreche hier nicht von Leistung, sondern von Entwicklungsgeschwindigkeit. Du hast:
- Einheitliche Asset-Pipeline. Kein Zeitaufwand für das Ressourcensubsystem, keine fehlerhaften Importroutinen zum Schreiben und Reparieren: Einfach eine Datei in einen Ordner ablegen, und es funktioniert.
- Integrierter Leveleditor. Sie müssen keine Zeit für Level-Tools aufwenden. Gehen Sie einfach direkt zum Geschäft.
- Hervorragende Unterstützung für Optimierungen und Fehlerbehebung: Alle Ihre Gameplay-Variablen werden beim Spielen richtig angezeigt und können auch im laufenden Betrieb geändert werden - und das alles, ohne eine einzige Codezeile zu schreiben. Unterbrechen Sie das Spiel jederzeit oder gehen Sie Code für Code einzeln durch.
- Umfangreiche Bibliothek an vorgefertigten Bauteilen. Rendering, Sound, Physik, Steuerung - eine Menge Code für "Boilerplate" ist bereits geschrieben.
- Mono als Script-Host. Während man über die Vorzüge von C # als Sprache streiten kann, bietet Monos Basisklassenbibliothek eine Fülle von Funktionen. Sammlungen, E / A, Multithreading und wahnsinnig ausdrucksstarkes LINQ beschleunigen die Entwicklung erheblich.
Außerdem ist Unity3d auf mehreren Plattformen sehr gut. Natürlich können Sie kein Windows-EXE-Spiel erstellen und es dann auf magische Weise auf dem iPhone "einfach funktionieren" lassen. aber Unity kommt dem ziemlich nahe. Was benötigt wird, ist "Tweaken" mehr als "Portieren".
In manchen Fällen ist Unity3D natürlich nicht ideal. In Unity integrierter Netzwerk-Multiplayer ist für einige LAN-Peer-to-Peer-Spiele in Ordnung, aber für alles, was einen zentralen Server erfordert, müssen Sie den gesamten Netzwerkcode von Grund auf neu schreiben. Das GUI-System von Unity ist recht schrullig und langsam, so dass es ein Problem ist, komplexe GUIs im Spiel zu erstellen. Alle anderen Spiele-GUI-Systeme, die ich gesehen habe, sind jedoch auch schmerzhaft, so dass Unitys eines insgesamt nicht so schlecht ist.
Und natürlich ist Unity3D etwas weniger flexibel als "Game Engines" wie OGRE, die nur eine Bibliothek / einen Quellcode anbieten. Die Leistung ist nicht gerade erstklassig, und da Sie nur über eine Skriptsandbox verfügen, können Sie einige clevere Low-Level-Hacks nicht verwenden, um sie zu verbessern. Wenn zum Beispiel der in Unity integrierte Tree-Renderer Sie aus irgendeinem Grund nicht zufrieden stellt, können Sie keinen eigenen erstellen (Sie könnten es auch, aber er würde Skripte durcharbeiten und ist höchstwahrscheinlich zu langsam und zu umständlich ). Trotzdem ist es mit Unity möglich, so gut wie alles zu tun, solange es Ihnen nichts ausmacht, ein bisschen Leistung zu verlieren.
Die größte Schwäche von Unity3D ist jedoch die Quellcodeverwaltung. Wie bereits erwähnt, kostet Unitys eigener Asset Server einen hübschen Cent. Und es ist wirklich sehr, sehr schwer. Es hat nicht einmal Verzweigungen. Während Unity3D theoretisch SCM-Systeme von Drittanbietern unterstützt, ist ihre Verwendung ebenfalls gefährlich. Ich habe gesehen, wie sich die Importeinstellungen nach dem Festschreiben von SVN "auf magische Weise" geändert haben oder alle Objektparameter nach der Verwendung von Perforce verschwunden sind. All dies kann umgangen werden, aber Unity3D + Quellcodeverwaltung = Schmerz.
Also, um deine Frage tatsächlich zu beantworten. Ich glaube, Unity3D ist eine der besten, wenn nicht sogar die beste Wahl für eine Spiel-Engine für ein "kleines" Spiel. Besonders im Prototypenstadium.
Das heißt, wenn wir über ein Bildungsprojekt sprechen, empfehle ich dagegen. Um zu lernen, wie Spiele funktionieren, ist es besser, auf einem möglichst niedrigen Level zu schreiben. Game Engines sind ein großartiges Werkzeug. Aber um maximale Gewinne zu erzielen, muss man verstehen, wie sie funktionieren und warum sie so funktionieren. Und der beste Weg, dies zu lernen, ist, eine eigene Spiel-Engine zu schreiben - auch wenn es sich am Ende als beschissen herausstellt.