Wir machen unser Schulprojekt mit Unity3d, da sie Shiva im letzten Jahr verwendet haben (was mir schrecklich erscheint), und ich wollte Ihre Sichtweise für dieses Tool kennen.
Vorteile:
- Multi-Plattform, ich habe sogar gehört, Google wird es in Chrome implementieren
- alles was du brauchst ist hier
- Skriptsprachen machen es zu einer guten Wahl für Leute, die keine Gurus programmieren
Nachteile:
- Multiplayer?
- proprietär, Sie sind völlig abhängig von der Einheit und ihrer Grenze und können sie nicht erweitern
- es ist weniger "ein Spiel von Grund auf neu zu machen"
- C ++ wäre eine coole Sache gewesen
Ich denke wirklich, dass diese Art von Tool interessant ist, aber lohnt es sich, es in der Schule für ein Projekt zu verwenden, an dem mehr als 3 Programmierer beteiligt sind? Was lernen wir wirklich in Bezug auf die Programmierung, wenn wir diese Art von Tool verwenden (ich bin in Ordnung mit Python und Js, aber ich hasse C #)? Wir hätten stattdessen Ogre verwenden können, auch wenn wir ab Januar direkt x lernen würden ...
Antworten:
Das wichtigste "Pro" von Uinty3D ist, dass es schnell verrückt ist. Ich spreche hier nicht von Leistung, sondern von Entwicklungsgeschwindigkeit. Du hast:
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.
quelle
Ich beginne damit, Ihre Liste zu kommentieren:
Scripting ist nicht nur für Nicht-Programmierer von Vorteil. Ein (guter) Programmierer zu sein ist mehr als nur eine Sprache zu kennen, es ist zu wissen, wie man Probleme dekonstruiert und auf eine bestimmte Weise denkt. Skriptsprachen können es einem Programmierer ermöglichen, diese Fähigkeiten des kritischen Denkens höherer Ordnung zu nutzen, um in kürzerer Zeit leistungsfähigere und interessantere Ergebnisse zu erzielen, als er oder sie möglicherweise gleichwertige Ergebnisse erzielen muss kommt mir in den Sinn) ins Bild zu zwingen.
Multiplayer-Unterstützung (oder ein Mangel daran) ist nur dann ein Problem, wenn Ihr Projekt dies benötigt.
Ich sehe nicht, wie "proprietär" ein Betrug ist. Wenn es sich um ein Schulprojekt handelt, möchten Sie wahrscheinlich keine Zeit damit verbringen, sich mit der Quelle des verwendeten Frameworks oder mit etwas anderem zu befassen. Außerdem ist DirectX auch proprietär.
Es ist absolut nichts Falsches daran, übergeordnete Frameworks oder Tools wie Unity zu verwenden. "Ein Spiel von Grund auf neu machen" ist ein Misserfolg - was genau sehen Sie unter "von Grund auf neu"? Sie werden weiterhin die Grafik-API eines anderen Benutzers verwenden. Die Laufzeit eines anderen Benutzers (selbst C benötigt eine Laufzeitbibliothek). "Ein Spiel machen" ist das, was Respekt verdient, nicht "ein Spiel ohne die Verwendung nützlicher Werkzeuge zu machen".
C ++ ist etwas subjektiv. Die Sprache wird sehr oft von Fachleuten in der Branche verwendet, aber wahrscheinlich nicht aus den Gründen, die Sie denken würden. Als Sprache zeigt sie allmählich ihr Alter und kann im Vergleich zu moderneren Optionen äußerst umständlich sein. In jedem Fall sind Sprachen nur Werkzeuge, und ein guter Programmierer sollte relativ leicht in der Lage sein, neue zu finden.
Der große Vorteil der Verwendung von Unity für Ihr Schulprojekt besteht darin, dass es sich um ein Framework auf hohem Niveau handelt, in dem bereits eine Menge Infrastrukturarbeit für Sie vorhanden ist. Auf diese Weise können Sie sich auf Ihr Spiel konzentrieren und nicht auf den Aufbau eines Fundaments. Vermutlich haben Sie ein relativ begrenztes Fenster, in dem Sie dieses Spiel erstellen können. Je mehr Sie die vorhandenen Tools nutzen können, desto mehr Zeit müssen Sie für die Erstellung der für Ihr Spiel spezifischen Logik oder Assets aufwenden, damit Ihr Spiel aussieht und sich anfühlt vollständiger - es gibt eine Lernkurve für Unity, aber Ihnen steht viel schneller viel mehr zur Verfügung.
Ein Nachteil besteht darin, dass Sie möglicherweise Zeit für das Erlernen eines bestimmten Tools aufwenden müssen, das möglicherweise nicht übertragbares Wissen enthält , insbesondere wenn Sie sich dafür entscheiden, dass der Arbeitsablauf und die Umgebung von Unity nicht für Sie geeignet sind und Sie es nie wieder verwenden möchten . Unity hat auch nicht den offensichtlichsten 2D- Workflow - es konzentriert sich sehr auf 3D-Spiele, die den gesamten Aufwand an Kunstobjekten mit sich bringen. Aber ich denke, dass Unity für ein Schulprojekt, wie Sie es beschreiben, eine ziemlich gute Wahl ist.
quelle
Ein Hauptproblem bei Unity ist die Quellcodeverwaltung. Wenn Sie nicht in einem Team arbeiten, wird dies (wohl) nicht so wichtig sein, aber das wird höchstwahrscheinlich nicht der Fall sein.
Sie können Unity Asset Server verwenden, hierfür sind jedoch 1) Unity Pro (1500 USD) und 2) eine Asset Server-Lizenz pro Arbeitsplatz (500 USD) erforderlich. Ich gehe davon aus, dass Sie eine Art Bildungsrabatt erhalten können, der jedoch nicht kostenlos ist.
Alternativ können Sie auch SVN mit Unity verwenden. Zur korrekten Unterstützung benötigen Sie weiterhin Unity Pro.
Sie können nicht einfach eine Nicht-Pro-Version von Unity in SVN einchecken und erwarten, dass sie fehlerfrei funktioniert. Ihr Mechanismus zum Binden von GUIDs an Assets usw. ist nicht genau SCM-sicher.
Die Multiplayer-Funktionalität ist ziemlich anständig, obwohl ich ehrlich gesagt noch kein Spiel mitgeliefert habe. Theoretisch hängen Sie einfach Netzwerkansichten an die Dinge an und teilen mit, was Sie serialisieren möchten, um die Replikation ordnungsgemäß einzurichten. Von dort aus ist es einige UI-Arbeit, sich mit anderen Peers zu verbinden und einzurichten. Es ist jedoch meistens Peer-to-Peer. Sie sind möglicherweise in der Lage, die Client / Server-Programmierung im Headless-Modus auszuführen, aber ich habe mich nicht damit angelegt. Aber es ist ziemlich einfach und schnell, Person A dazu zu bringen, auf dem Bildschirm von Person B herumzulaufen.
Auch C # ist für mich positiv . LINQ ist sehr ausdrucksstark. Es verfügt über eine ordnungsgemäße Ausnahmebehandlung und Speicherbereinigung. Es hat viel modernere Paradigmen wie Delegates, Lambdas, Interfaces und eine bessere generische Unterstützung als C ++. ( Edit : das ist offensichtlich umstritten. Mein Punkt ist, dass C # kaum eine schlechte Sprache ist. Ich möchte nicht in eine lange Debatte über die Vor- und Nachteile der Sprache gegenüber C ++ geraten.)
Der größte Vorteil von Unity ist wahrscheinlich die Kunstpipeline. Sie können eine PSD- oder Max-Datei (vorausgesetzt, Sie haben 3ds max installiert) in den Ordner aufnehmen und diese wird importiert.
quelle
for ( auto x : xs )
.Update: Unity bietet jetzt all diese Funktionen, auch in der kostenlosen Version. Bitte ignorieren Sie die Antwort unten.
Beachten Sie Folgendes: Wenn Sie die kostenlose Version von Unity3D verwenden, können Sie nicht mehrere Effekte verwenden, darunter Post-Processing-Shader (wie Bloom) und vor allem dynamische Schatten. Diese haben natürlich keine großen Auswirkungen auf den Workflow des Projekts, schränken jedoch ein, was mit der Engine kostenlos erreicht werden kann.
quelle
Die Antwort von Nevermind deckt die Dinge ziemlich gründlich ab, aber nur um auf die Seite der Quellcodeverwaltung einzugehen, ist es eigentlich nicht so schrecklich, wenn man erst einmal lernt, auf eine Handvoll Fallstricke zu achten:
Falls Sie weitere Informationen zu diesen Punkten benötigen, habe ich vor einiger Zeit Informationen zur Verwendung von git mit Unity veröffentlicht, die auf meinen Erfahrungen mit einigen relativ großen Unity-Projekten basieren: http://goo.gl/ivJVR
quelle
Tatsächlich. Multiplayer wird unterstützt. Es ist einfach eine Frage der Auswahl eines Servers, auf dem Sie Ihr Spiel ausführen möchten.
Das aktuellste auf dem Markt ist "SmartFox Server". Sie bieten einige verschiedene Pakete an, die alle (bis zu einem gewissen Grad) kostenlos sind. Es ist nur kostenlos, wenn Sie vorhaben, eine bestimmte Anzahl von Spielern zu haben, da jedes Paket eine bestimmte Anzahl von Spielern "kostenlos" zulässt.
Wenn Sie sich für ein Upgrade entscheiden, ist der Preis für einen Indie-Entwickler ziemlich hoch. Also ... Wenn Sie auf lange Sicht viele Spieler auf Ihrem Server haben, müssen Sie für Ihr Spiel eine Gebühr erheben, anstatt es auf Websites wie Download.com als kostenloses Vollspiel hochzuladen. Dies mag für einige kein Problem sein, aber die meisten von uns können sich 2.500 USD aus eigener Tasche für einen Server nicht leisten.
Zum Beispiel - SmartFox Pro erlaubt 20 Spieler kostenlos. Wenn Sie ein Upgrade durchführen möchten, kostet es 500 Euro, was in den USA etwas mehr ist, etwa 600-700 Euro, und das ermöglicht 100 Verbindungen.
Das nächste Upgrade ist für eine maximale Anzahl von 500 Spielern vorgesehen und kostet 1000 Euro, aber ... Sie müssen die 1000 nicht bezahlen, sondern zahlen die Differenz.
Sie müssen also nur 500 Euro mehr bezahlen als die gesamten 1000. Die letzten Upgrades unterstützen eine unbegrenzte Anzahl von Verbindungen für 2.000 Euro. Das sind fast 3.000 US-Dollar.
Wenn Sie also von den 500 Verbindungen upgraden, zahlen Sie 1000 Euro, wenn Sie von 100 Verbindungen upgraden, zahlen Sie 1.5000 Euro und natürlich 2.000 Euro für ein kostenloses Upgrade.
Außerdem ist dieser Server mit Unity sehr einfach einzurichten, und auf Youtube gibt es zahlreiche Tutorial-Videos, die zeigen, wie das genau geht.
quelle