Ich bevorzuge C / C ++ gegenüber Unity und anderen Tools: Ist es ein so großer Nachteil für einen Spieleentwickler? [geschlossen]

35

Wir haben ein großes Spielprojekt mit Unity in der Schule. 12 von uns arbeiten daran. Mein Lehrer scheint überzeugt zu sein, dass es ein wichtiges Instrument ist, um Schüler zu unterrichten, da es Schüler dazu bringt, von der oberen zur unteren Ebene zu schauen.

Ich kann seine Sichtweise verstehen und frage mich: Ist Einheit ein so wichtiger Motor in Spieleentwicklungsunternehmen? Gibt es viele Unternehmen, die es sich nicht leisten können, etwas anderes zu verwenden? Er redet so, als wäre Unity ein großer Spieler im Spielemachen, aber ich halte es nur für kleine Indie-Spielefirmen, die ein Spiel so schnell wie möglich machen wollen.

Denken Sie, dass die Einigkeit in der Branche von so großer Bedeutung ist? Gefährdet es den Wert von C ++ - Kenntnissen?

Es ist nicht so, dass ich Unity nicht mag, es ist nur so, dass ich nichts damit lerne. Ich ziehe es vor, stattdessen kleine Schritte mit Ogre oder SFML zu erreichen.

Wir haben auch C ++ - Übungsaufgaben, aber das sind nur Übungen mit Theorie, nicht viel.

jokoon
quelle
9
Der Punkt von C ++ und OOP ist die Wiederverwendung von Objekten. Unity ist ein hervorragendes Beispiel dafür und für die plattformübergreifende Portabilität. Sie bieten alle Tools, die Sie zum Starten eines Spiels auf XBox, iPhone oder Wii benötigen. Wollen Sie mir ernsthaft sagen, dass Sie das alles lieber von Grund auf neu in C ++ schreiben möchten?
Stephen Furlani
2
Absolut nicht, das möchte ich nicht sagen. Ich sage nur, dass ich die Sprachen, mit denen es ausgeliefert wird, nicht mag, und auch die Tatsache, dass Sie den Code nicht ändern können, da er proprietär ist: Sie können ihn nicht so stark optimieren, wie Sie eine andere vorhandene Engine optimieren können . Ihr Punkt ist gültig, aber wenn ich Ihnen folge, können Unternehmen auch ihre vorherige Engine wiederverwenden, anstatt einfach zu Unity zu wechseln. Mit Unity bleibst du bei etwas, das du nicht wirklich ändern kannst. Das ist für mich immer der größte Nachteil, wenn ich an solche Tools denke: Eine proprietäre Engine hat dieses Problem nicht.
jokoon
2
Nun, Sie können Unity ändern, vorausgesetzt, Sie erhalten eine Quelllizenz (die wie die meisten anderen professionellen Quelllizenzen teuer ist). Es wird auch ziemlich häufig aktualisiert, so dass es in Bezug auf den Funktionsumfang nicht wirklich statisch ist.
Tetrad
Dies ist im Grunde eine Frage, welche Technologie zu verwenden ist. Es ist auch mehr diskussions- / meinungsorientiert. Leider kann ich nicht für ein zweites Mal
stimmen

Antworten:

34

Einigkeit ist in diesem Zusammenhang eine durchaus gültige Lösung. Stellen Sie sich für eine Sekunde 12 Personen vor, von denen die meisten gerade C ++ lernen und eine große und komplexe Spieleanwendung damit schreiben. In der Zeit, die Sie alleine mit dem Debuggen verbracht haben, haben Sie wahrscheinlich ein weiteres Spiel in Unity geschrieben.

Ich sage nicht, dass es nicht wichtig ist, zu wissen, wie man C ++ benutzt - besonders, wenn Sie vorhaben, der Mainstream-Gaming-Branche beizutreten. Aber vielleicht hat Ihr Lehrer in diesem Fall Recht - nutzen Sie dieses Projekt als Lernerfahrung, um über die Entwicklung eines Spiels nachzudenken und Spaß daran zu haben. Versuchen Sie dabei, Ihre C ++ - Kenntnisse mit Übungen zu verbessern oder gehen Sie sogar so weit, dass Sie in der Zwischenzeit kleine Spiele mit SFML oder einem anderen Grundgerüst schreiben.

Wenn alles erledigt ist, haben Sie viel gelernt, werden wahrscheinlich ein besserer Programmierer, und Ihr nächstes Projekt kann mit viel mehr Selbstvertrauen in C ++ angepackt werden.

James
quelle
2
Interessanterweise gibt es Schulen, die nur C ++ unterrichten und von den Schülern erwarten, dass sie eine komplette Game-Engine und ein Spiel von Grund auf neu erstellen, obwohl sie noch dabei sind, C ++ zu lernen. Das Üben einer Fertigkeit hängt natürlich davon ab, wie man sie lernt (keine Vorlesungen und kleinen Hausaufgabenprojekte, keine Projekte mit längeren Semestern oder einem Jahr), weshalb diese Schulen erstklassige Programmierer hervorbringen. Programmierer, die in der Lage sind, Werkzeuge wie Unity oder andere Motoren sehr schnell zu erlernen. Es ist besser, die Schüler zu zwingen, das Schwierige zu lernen, da das Leichte danach kein Thema mehr ist.
Sean Middleditch
Nicht die gesamte Spieleentwicklung ist programmiert, und die Verwendung von Unity bedeutet nicht unbedingt, "das harte Zeug zu meiden". Es betont nur andere harte Sachen als die Implementierung von Grund auf neu. Gab Design eher als Programmierung. Wenn ein Spiel von Grund auf neu implementiert würde, würde ich viel primitivere "Programmierkunst" und keine Charaktere oder Handlung erwarten.
Wrosecrans
43

In der Branche gewinnt die Einheit zunehmend an Beliebtheit, vor allem in kleineren Unternehmen. Es ist jedoch ein hervorragendes Unterrichtsumfeld. Es ist ein wichtiges Lehrmittel, das jedoch bei Mainstream-Unternehmen nicht besonders verbreitet ist. Es ist in Ordnung, dass Sie es nicht bevorzugen.

Lassen Sie mich hier jedoch etwas anmerken, da ich unter Programmierstudenten häufig Verwirrung sehe. "C ++ - Kenntnisse" sind auf lange Sicht nicht sehr nützlich. Was Sie suchen sollten, sind "Programmierkenntnisse" und "Designfähigkeiten". Wenn Sie sich mit Konzepten von Programmiersprachen auskennen und wissen, wie ein Softwaresystem aufgebaut ist, spielt Sprache keine Rolle. Ich betrachte mich nicht als großartigen Entwickler, aber ich kann in ein oder zwei Tagen eine neue Sprache lernen und nützlichen Code produzieren, weil ich die Grundlagen verstehe.

Mit Learning Unity werden Sie in C ++ besser.

Gregory Avery-Weir
quelle
Gameforge und BigPoint sind weltweit führende Unternehmen und nutzen Unity :)
daemonfire300
1
+1 für eine sehr gute Antwort. Das Erlernen einer Game-Engine ist für Schulen sehr wichtig, da Sie in 99% der Fälle keine von Grund auf neu erstellen. In einen vorhandenen Motor eintauchen und Teile davon erkennen können, den Datenfluss erkennen können und so weiter sind alles sehr wichtige Dinge. Wie oben erwähnt, spielt die Sprache keine Rolle, obwohl sie zu 99% in C / C ++ vorliegt. Die Fähigkeit, die Engine oder den Code eines anderen zu verstehen, ist jedoch in jedem Programmierbereich von unschätzbarem Wert Zeitkritisch Hochstress-Wort, das Videospiele ist :)
James
1
Ich stimme dieser Antwort nicht zu. Für mich gibt es Unterschiede zwischen Skriptern und Programmierern. Die Entwickler von Unity sind Programmierer, die Benutzer von Unity sind Scripter. Das Ergebnis ist das gleiche, sie machen Spiele, aber auf lange Sicht kann die Verwendung von Unity ein Problem sein. Die Spielebranche ist reichhaltig und erlaubt jetzt Tools wie Unity, aber für mich liegt es daran, dass Computer schneller sind. Sie können also eine Menge Code schreiben, es funktioniert: Unity ist eindeutig auf Entwicklungsgeschwindigkeit ausgelegt, was der Markt wegen des Dollars mag, aber ich denke nicht, dass das ein echtes Plus ist.
jokoon
14
jokoon: Was ist der Unterschied zwischen Scripting und Programmierung? Ein Power-User von Unity schreibt Shader, verwaltet die Renderreihenfolge und schreibt AI-Code. Unity-Skripte werden kompiliert und können auf Wunsch mit einer Low-Level-Codierung erweitert werden. Und eine gute Unity-Codierung folgt den gleichen Prinzipien wie eine gute Nicht-Unity-Codierung. Es gibt keinen magischen Unterschied zwischen den beiden Paradigmen.
Gregory Avery-Weir
9

Gibt es viele Unternehmen, die es sich nicht leisten können, etwas anderes zu verwenden?

Ja, aber "leisten" ist so viel mehr als nur eine Aufwärtsbewegung der Dollarwerte.

Ja, der Funktionsumfang, den Unity Pro Ihnen zu den von ihnen berechneten Kosten bietet, ist lächerlich, insbesondere angesichts der Tatsache, dass es sich um Sitzplatzlizenzen anstelle von Lizenzen pro Titel handelt.

Darüber hinaus ist es ein sehr einfach zu verwendendes Tool. Sie verbringen nicht so viel Zeit damit, Künstler und Designer im Umgang mit der Kunstpipeline zu schulen. Es ist einfach zu sagen "Ziehe einfach deine Texturen und Modelle hinein und sie können loslegen.

Darüber hinaus ist es eines der wenigen Tools, mit denen Sie 3D in einem Browser mit jeder Art von Regelmäßigkeit ausführen können. Sie unterstützen so gut wie jede Shader-Plattform von Fixed Function bis DX9 + sowie Mac und Windows. Diese Technologie ist von unschätzbarem Wert, wenn Sie auf den wachsenden "browserbasierten Spielemarkt" abzielen möchten.

Auf der Programmierseite bietet Ihnen Unity ein sicheres Verständnis für das Komponentendesign (im Vergleich zum Rolling Ihrer eigenen C ++ - Engine, die normalerweise zu vererbungsintensiv ist) sowie eine sehr schnelle und visuelle Umgebung, die Sie ausprobieren können aus dem Spielcode. Sie werden hoffentlich mit Unity gute Entwurfspraktiken erlernen, die Sie für zukünftige C ++ - Engines übernehmen können.

Klar, es ist in Ordnung, eine Sprache einer anderen vorzuziehen. Ich persönlich bevorzuge C # gegenüber C ++. Aber welche Sprache Sie verwenden, hängt in erster Linie von den Projektanforderungen ab. Entwickler können es sich nicht leisten, Fanboys zu sein, da Sie sich nicht aus einem Markt ausschließen wollen, weil Sie die Tools oder die Sprache aus dem einen oder anderen Grund nicht mögen.

Wenn Sie erst einmal eine zweite Sprache gelernt haben, werden Sie feststellen, dass es meistens nur darum geht, neue Syntax und Paradigmen aufzugreifen, und es ist in der Regel nicht so schwer, Ihrem Werkzeuggürtel neue Werkzeuge hinzuzufügen. Ja, Sie sollten C ++ lernen und verstehen, aber auf hohem Niveau müssen Sie zuerst gutes Design verstehen.

Tetrade
quelle
Klarstellung: Meinen Sie, dass sich die Lizenz von Unity Pro im Vergleich zu normalen alten Unity-Versionen lohnt? Ihr Kommentar war mir etwas unklar.
Kyle C
7
Ich habe die kostenlose Version nicht verwendet, nur, dass die Lizenz für 1500 US-Dollar / Sitz im Vergleich zu anderen kommerziellen Lizenzen für Motoren spottbillig ist.
Tetrad
Momentan gibt es keine Probleme mit der kostenlosen Version, es gibt nur geringfügige Einschränkungen.
XandruCea
9

Wie ich sehen kann, ist das Kernproblem nicht C ++ oder Unity3D, sondern Sie benötigen eine Lösung auf hoher oder niedriger Ebene .

Eine einfache Lösung ist eine, bei der Sie Probleme mit der Eingabe, der Speicherverwaltung oder dem Laden der Modelle haben. Eine High-Level-Lösung ist, dass Sie ein ordentliches Paket erhalten, wie Unity3D.

Für mich hängt es von den Zielen Ihres Spiels und Projekts ab, ob Sie Unity3D (oder eine andere Spiele-Engine) oder C ++ verwenden.

  • Verwenden Sie Unity3D, wenn die Entwicklungszeit kurz sein muss und / oder wenn Ihr Spiel nicht leistungsintensiv ist oder nicht im oberen Bereich der grafischen / rechnerischen Leistung liegt. Wenn Sie sich auf das Gameplay konzentrieren möchten und die von Unity3D bereitgestellten Standardwerkzeuge in Ordnung sind, sollten Sie Unity3D in Betracht ziehen

  • C ++ mit anderen Bibliotheken: Wenn Sie längere Entwicklungszeiten haben, erfordert das Spiel mehr Rechenleistung / Grafikleistung oder verwendet eine Technologie, die Unity3D nicht integrieren kann.

Das Gute an Unity3D ist, dass immer noch Skriptsprachen verwendet werden, die der tatsächlichen Entwicklung (C # oder JavaScript) entsprechen. Die OOP- und Software-Engineering-Konzepte, die Sie lernen (Singletons, Fassade, Zustandsautomaten, Dekorateure, Komposition), können in Unity3D angewendet werden. Es hilft dabei, sich um die Cookie-Cutter-Prozesse wie Ressourcenverwaltung, Szenendiagramm, Laden, Rendern, Speichern von Szenen usw. zu kümmern. Wenn Sie eine Funktion benötigen, die Unity3D nicht bietet, können Sie dies sogar tun DLL-Codierung.

Wo bleibt dann C ++? C ++ ist eine Sprache, und es gibt viele Programmierkonzepte, die Sie in C ++ in Unity3D, ohne Speicherverwaltung oder vielleicht in Vorlagen ausführen können (Mit Unity 3.2 wurden die Sprachspezifikationen verbessert, um z. B. Schließungen abzudecken).

Wie ich bereits sagte, ist es nicht wirklich C ++ gegen Unity3D. Es handelt sich eher um "C ++ plus-Bibliotheken / SDK oder Roll Your Own Engine" im Vergleich zu Unity3D. Es hängt von Ihren Zielen ab. Für High-End-Spiele oder Spiele, bei denen Sie die Kontrolle über die Rendering-Pipeline oder -Eingabe benötigen, möchten Sie möglicherweise C ++ und eine Engine verwenden, mit der Sie unter der Haube herumspielen können. Wenn nicht, verwende ich Unity3D als Standard für 3D-Spiele.

Kenntnisse in Unity3d sind jedoch nicht unbedingt erforderlich, aber es ist ein guter Ausgangspunkt, um den gesamten Prozess der Spieleentwicklung zu erlernen. Zum Beispiel werden Sie wahrscheinlich ein Semester brauchen, um einen Renderer zu schreiben und ein Modell in OpenGL zu laden, sowie einen grundlegenden Szenegraphen und eine Eingabe. Mit Unity3D ist dies in weniger als einem Tag erledigt.

Extrakun
quelle
oder arbeite mit Ogre3d!
jokoon
Das letzte Mal, dass ich mit Ogre3D arbeite, ist lange her. Ich denke, es erfordert mehr Arbeit als Unity3D, um ein Spiel zu entwickeln, und es ist ein guter Mittelweg, um einen Blick darauf zu werfen, wie das Unter-der-Haube-Zeug funktioniert.
Extrakun
+1 in diesem Fall. Sie können C / C ++ und Unity per se nicht bevorzugen, weil es eine Sache mit Äpfeln und Orangen ist. Was Sie jedoch bevorzugen können, ist die Idee, auf der von C / C ++ bereitgestellten niedrigeren Entwicklungsstufe zu arbeiten, oder auf der von Unit zugelassenen höheren Entwicklungsstufe.
Tim Holt
8

Nein, Unity3D gefährdet in keiner Weise C ++ - Fähigkeiten. Tatsächlich ist es für einen Spieleprogrammierer viel wichtiger, C ++ zu kennen.

Unity3D ist ein großartiges Tool für die Spieleentwicklung. Ich mag es wirklich und würde es für fast jedes Spiel empfehlen, besonders für kleine Teams. Unity3D selbst ist jedoch in C ++ geschrieben. und man muss C ++ (und auch ein paar andere Dinge auf niedriger Ebene) kennen, um wirklich zu verstehen, wie es funktioniert.

Selbst wenn Sie Unity3D verwenden, können Sie es nur mit C ++ - Kenntnissen und geringen Kenntnissen der beteiligten Prinzipien und Algorithmen optimal nutzen. Dies gilt übrigens auch für andere Spiele-Engines.

Und um einen wirklich guten Job zu machen, die Performance Ihrer Wahl zu optimieren und so viele hochmoderne Effekte und Algorithmen wie möglich zu verwenden, können Sie nur C / C ++ verwenden. Vermutlich mit ein paar Assembler-Teilen.

Keine Ursache
quelle
Dies ist die Antwort, auf die ich gewartet habe, um +1:]
Notabene
3

Soweit ich das beurteilen kann, hängt es von Ihrer Zielplattform ab, dass AAA-Spiele und Konsolenspiele (XBOX, Wii usw.) in der Regel in C ++ ausgeführt werden, um die maximale Leistung zu erzielen gebraucht.

Was Ihre Frage betrifft, ist es meiner Meinung nach einfach, mit Tools wie Unity zu arbeiten, die Ihnen ein großes standardisiertes Framework bieten, das in einem Projekt von einem halben Jahr den Unterschied zwischen halbgebackenem Prototyp und ziemlich ausgearbeitetem Spiel ausmachen kann.

Elva
quelle
3

Ich habe an dem Masterstudiengang Computergrafik und Spieltechnologie der University of Pennsylvania teilgenommen, wo wir alle unsere Projekte auf der untersten Ebene durchgeführt haben, mit Projekten in C ++, OpenGL, CUDA usw. IK, das verschiedene Formen von Bezier-Kurven darstellt ... Sie wissen, wirklich grundlegendes Material, das Fachwissen in Programmierung, linearer Algebra und Analysis nutzt.

Dann habe ich Unity heruntergeladen und festgestellt, dass alles, woran ich mit meinem Hintern gearbeitet habe, in dieser kostenlosen Suite zusammengefasst wurde, die jeder nutzen kann.

War ich darüber verärgert? Ein bisschen zugegeben, aber ich fand, dass das Verständnis von der Schule mich umso gefährlicher macht, wenn ich Werkzeuge wie Unity benutze. Ich arbeite zurzeit in Spielen, bei denen wir in weniger als einem Jahr Spiele vom Konzept auf den Markt bringen, und ich bin immer noch der richtige Ansprechpartner, wenn es um "das Mathe-Zeug" geht. Mein Rat an Sie ist, die Bewegungen durchzugehen; Sie werden absolut von unschätzbarem Wert sein, wenn Sie in die Branche eintreten.

mseltzer
quelle
Sie könnten (theoretisch) ein Abzeichen daraus ziehen. :)
Cyclops
Hier gibt es kein Nekroing, denn Fragen werden nicht alt und "sterben" wie in Foren. :) Späte Antworten sind immer OK.
Doppelgreener
0

Ich könnte zu spät antworten, aber das wird einigen Leuten helfen, die diese Verwirrung haben.

Anfänglich bin ich ein C ++ - Programmierer, der es hasste, Engines von Drittanbietern (zum Beispiel Unity) zu verwenden, da ich nicht das Gefühl habe, dass ein großer Lernprozess in Bezug auf Low-Level-Programmierung involviert ist.

Nachdem ich Unity ausprobiert habe, bin ich auf die folgenden Dinge gestoßen, die für einen Spieleentwickler unerlässlich sind. Hier liste ich nicht spezifisch Unity auf, sondern die Vorteile von HIGH LEVEL Perspective.

  1. Es ist wichtiger zu verstehen, wie man auf hoher Ebene entwirft, als sich um Optimierungen auf niedriger Ebene zu kümmern.
  2. Engines mit dem Entity-Architektursystem (komponentenbasierte Architektur) helfen dabei, herauszufinden, wie genau diese Architektur hilfreich ist.
  3. Sie kennen die neueste Technologie (zumindest die Terminologie) und sind zumindest mit der Branche in Bezug auf Grafiken auf dem neuesten Stand. Dies ist der Hauptgrund, warum ich mich für Unity entscheide!
  4. Überspringen von Zeitaufwand für verschiedene Ressourcenimporter-Tools. (Natürlich werde ich es immer noch lieben, meine eigenen 3D-Importer in c ++ zu schreiben, da es in der Freizeit mehr Spaß macht.)

Vorstehend sind einige Gründe aufgeführt, warum Sie sich für einen Hochleistungsmotor entschieden haben. Gleichzeitig sollten Sie aber nicht aufhören, C ++ zu lernen, da es die wichtigste und nützlichste Sprache für einen perfekten Spieleentwickler ist.

Machen Sie sich zunächst mit Visualisierung auf hohem Niveau vertraut und erstellen Sie einige schnelle Prototypen mit Unity. Nutzen Sie diese Erfahrung beim Entwerfen eines guten Spiels in c ++.

Bald bin ich wieder in C ++, da ich gute Erfahrungen mit Unity gesammelt habe :)

Viel Glück!

Ayyappa
quelle