it-swarm.com.de

Soll C # oder C++ zum Erlernen von Games-Programmierung (Konsolen) gewählt werden?

Ich habe grundlegende Kenntnisse in der Programmierung von Spielen in c und c ++. Ich lerne heute c #. Wenn ich Karriere in der Programmierung von Konsolenspielen machen möchte, mit welcher sollte ich fortfahren? Mir ist aufgefallen, dass viele Spielefirmen C++/C verwenden (wahrscheinlich aus alten Gründen). Wahrscheinlich erfreut sich C++ auch einer größeren Anzahl von unterstützten Bibliotheken?
In welchen Sprachen sind moderne Game Engines (Unreal/Crysis usw.) geschrieben?
Welche Sprache ist die bessere Wahl? und warum?

33
understack

C++ aus zwei Gründen.

1) Viele Spiele sind in C++ programmiert. Bisher ist kein Mainstream-Spiel in einer verwalteten Sprache programmiert.

2) C++ ist so hart wie es nur geht. Sie müssen die manuelle Speicherverwaltung beherrschen und im Allgemeinen keine Grenzen (außerhalb des ausgezeichneten Valgrind!) Prüfen. Wenn Sie C++ beherrschen, können Sie dies auf verwaltete prozedurale Sprachen übertragen. Weniger so andersherum.

C++ hat einen Komplexitätsgrad nahe an APL ! Sie werden nie besser werden, wenn Sie schwächere Gegner spielen.

Joel macht diesbezüglich einen sehr starken Punkt . Leute, die verstehen, wie die Maschine funktioniert, machen bessere Programmierer, weil alle Abstraktionen undicht sind .

51
Will

Ok, hier sind meine zwei Cent.

Wenn Sie ernsthaft in die Spielebranche einsteigen möchten, empfehle ich Ihnen, beide Sprachen zu lernen. Beginnen Sie mit C++ und wechseln Sie dann in eine verwaltete Sprache wie C #. C++ hat gegenüber C # seine Vorteile, aber C # hat auch gegenüber C++ Vorteile. 

Ich persönlich bevorzuge C # jeden Tag. Dies hat viele Gründe: nur einige:

  1. C # macht das Programmieren wieder Spaß;).
  2. Der verwaltete Code hilft mir, komplexe Aufgaben problemlos auszuführen und die Sicherheit nicht zu vergessen.
  3. C # s 'ist eine reine OOP, die Regeln in Erzwingt. Ihr Code hilft dabei, den Code lesbarer zu halten,' wartbar 'und Die Ausführung ist stabiler. Die Produktivitätsrate übertrifft C++ um mindestens 10%. Der beste C++ -Programmierer könnte ein noch besserer C # -Programmierer sein.
  4. Dies ist nicht wirklich ein Grund, sondern eher etwas wie 'Ich' an C #: LINQ.

Nun ... es gibt viele Dinge, die ich an C++ vermisse. Ich vermisse es, mein eigenes Gedächtnis (vollständig) verwalten zu können. Ich kann Ihnen nicht sagen, wie oft ich mich beim Versuch, eine Instanz/Referenz zu löschen, ertappte. Eine andere Sache, die ich an C # nicht mag, ist die Unfähigkeit, Mehrfachvererbung zu verwenden, aber andererseits hat es mich dazu gezwungen, mehr über die Strukturierung meines Codes nachzudenken.

Es hat mehr Diskussionen zu diesem Thema gegeben, als es Sterne im bekannten Universum gibt und sie alle in einer Sackgasse schließen. Keine der beiden Sprachen ist besser als die andere, und wenn Sie eine für die andere ablehnen, wird dies auf lange Sicht nur weh tun. Die Zeiten ändern sich und damit auch die Standards für die Computerprogrammierung.

Unabhängig von der Sprache, die Sie an der Spitze Ihrer Liste behalten möchten, halten Sie Ihre Optionen immer offen, und denken Sie nicht an eine einzige Sprache. Sie sagen, Sie kennen C++ bereits, warum lernen Sie C # nicht? Es kann nicht schaden und ich verspreche Ihnen, es wird Sie zu einem besseren C++ - Programmierer.

37
zackery.fix

Es kommt darauf an

Das hängt von vielen Dingen ab - Ihren Zielen, Ihrer Erfahrung, Ihrem Zeitrahmen usw.

Die Mehrheit der Spieleprogrammierung ist nicht sprachspezifisch. 3D-Mathematik ist 3D-Mathematik in C # genauso wie in C++. Obwohl die APIs möglicherweise unterschiedlich sind und unterschiedliche Buchhaltungen erforderlich sein können, bleiben grundlegende Logik und Mathematik die gleichen.

Es ist wahr, dass die meisten AAA-Game-Engines C++ mit einer Skriptsprache darüber sind. Das ist nicht zu leugnen. Die meisten AAA-Engines verfügen jedoch auch über eine Reihe von internen Tools, die sie unterstützen, und diese können sich in beliebigen Bereichen befinden - Java, C #, C++ usw.

Wenn Sie ein Spiel schreiben möchten und ein erfahrener Entwickler sind, haben C++ und C # eine Menge zu bieten. C # hat weniger Housekeeping, während in C++ mehr Bibliotheken und Tools verfügbar sind. Für alles, was hochkomplex ist, sollten Sie am besten versuchen, eine vorhandene Engine als Ausgangspunkt zu verwenden.

Wenn Sie ein Spiel schreiben möchten und ein neuer Entwickler sind, schreiben Sie keine Engine. Verwenden Sie eine vorhandene Engine und modifizieren Sie sie oder verwenden Sie die Funktionen, um Ihr Spiel zu schreiben. Vertrau mir.

Wenn Sie lernen möchten, wie man eine Engine schreibt, und ein erfahrener Entwickler sind, sollten Sie wahrscheinlich über C++ nachdenken. C # ist ebenfalls möglich, aber aufgrund der Menge an Code und der einfachen Integration von C++ wird es wahrscheinlich übertrieben.

Wenn Sie lernen wollen, wie man eine Engine schreibt und ein neuer Entwickler ist, dann würde ich wahrscheinlich C #/XNA empfehlen. Sie werden schneller zum Spiel "Zeug" gelangen und haben weniger Kopfschmerzen, wenn Sie sich mit C++ vertraut machen.

Wenn Sie einen Job in der Branche wollen, müssen Sie herausfinden, welche Art von Job Sie möchten. Eine Hochsprache kann dabei helfen, sich mit Tools und/oder Web-Entwicklung zu befassen, was zu Möglichkeiten für die eigentliche Spielarbeit führen kann. Sogar Kenntnisse in Skriptsprachen können hilfreich sein, wenn Sie die Position des Game Designers/Scripter erweitern möchten. Die Chancen stehen gut, dass Sie nicht sofort einen Job bekommen werden, der an Core Engine-Sachen arbeitet, da die dafür erforderlichen Fähigkeiten ziemlich hoch sind. Starke C++ - Entwicklungskenntnisse sind immer hilfreich, insbesondere in Echtzeit oder in vernetzten Szenarien.

Die Entwicklung einer AAA-Spiel-Engine beinhaltet einige ernstzunehmende Code-Codes.

Wenn Sie ein professionelles Entwicklungshaus gründen wollen, lesen Sie dies wahrscheinlich nicht, wissen aber bereits, dass C++ wahrscheinlich die einzig gangbare Antwort ist.

Wenn Sie Gelegenheitsspiele entwickeln möchten, sollten Sie wahrscheinlich Flash oder eine ähnliche Technologie in Betracht ziehen.

26
kyoryu

Ich werde die ursprüngliche Frage nicht beantworten, da die meisten Beiträge hier sind. Ich werde Sie auf etwas aufmerksam machen, das Sie in Ihrem Beitrag verpasst haben. Einfach zu wissen, dass C\C++\C # keine Karriere in der Spieleentwicklung bringt. Die meisten Spielestudios erhalten Dutzende von Hunderten von Anwendungen für einen einfachen Code-Affen-Job. Was zeichnet Sie aus? Was macht Sie zu einer besseren Anstellung als jemand anderem, der Erfahrung in einem anderen Studio hat?

Wenn Sie wirklich eine Karriere in der Spielebranche wollen, auch auf Konsolen, sollten Sie eine Demo machen, die Ihnen zeigt, was Sie wissen. C++ wäre eine großartige Sprachauswahl für die Demo, wenn Sie sich für eine Position für die Konsolenentwicklung bewerben. Sie können mehr zeigen, indem Sie ein Werkzeug in C #\XNA erstellen, um die Assets für Ihre Demo zu erstellen. Sie zeigen den Personalchefs und Tech-Leads, dass Sie nicht nur ein C++ - Typ oder nur ein C # - Typ sind: Sie sind ein Entwickler.

13
Marcus Johnson

Es gibt keine Sprache, die eine "bessere Wette" ist. Verwenden Sie die Sprache, die für das, was Sie tun müssen, am besten geeignet ist, egal ob es sich um Spiele-Programmierung oder eine andere Domäne handelt. C++ wird in naher Zukunft nicht verschwinden.

Wenn Sie nicht für eine Microsoft-Plattform entwickeln, bezweifle ich, dass Sie C # verwenden.

10
user123456

C++.

Es ist der Goldstandard für die Programmierung von AAA-Spielen. Wenn Sie etwas Interessantes tun müssen, müssen Sie C++ ausführen oder in nicht verwaltetes C # (nicht immer Nizza) einsteigen.

C++ ist wahrscheinlich auch schneller ( übliche Vorbehalte ).

Als Lernerfahrung lohnt sich C # nicht. C++ ist zweifellos besser, vor allem in der quasi eingebetteten Welt der Konsolen. Um objektorientierte Erfahrungen zu sammeln, gehen Sie in Richtung Java.

6
Paul Nathan

Um die Wahrheit zu sagen ... Sie müssen entscheiden, welche Sprache die bessere ist. Ich weiß, was ich mit C # machen kann. Ich weiß, was in C++ gemacht werden kann. C # ist nicht dafür gedacht, das zu tun, wozu C++ gemacht wurde ... Code auf der grundlegendsten Ebene zu schreiben und dennoch von Bedeutung, wenn er von Menschen gelesen wird.

Wir entwickeln eine Game Engine mit C #, DirectX ... ist es eine Herausforderung? Hölle yeah ... aber es ist etwas, das wir gewählt haben. Wir betrachten einige Leistungsniveaus, die dem, was C++ bieten kann, sehr nahe kommen. Ich sehe also keine Probleme mit dieser Anstrengung.

Für die plattformübergreifende Entwicklung hätten wir möglicherweise nicht die Mono-Plattform, wenn es nicht für .Net wäre. Die Mono-Plattform hat unsere Plattformbasis erweitert.

Hier ist einige Unterstützung für meine Argumente ...

5
IAbstract

Sie finden C # nicht auf Konsolen, daher ist es in dieser Hinsicht nutzlos.

Wenn Sie das Programmieren lernen, bietet C # eine etwas weichere Lernkurve als C++, Sie können jedoch C++ schreiben, ohne in die unheimlicheren und komplexeren Bereiche der Sprache zu geraten. Es ist also nicht viel schwieriger.

Wenn Sie mit Grafiken oder anderen "gamesey" -Dingen programmieren möchten, ist C # eine ziemlich schlechte Wahl - wählen Sie C++ mit OpenGL oder DirectX.

bearbeiten

Wenn Sie eine Karriere in Spielen anstreben, wählen Sie C++. Sie können zwar Spielcode in C # schreiben, aber realistisch gesehen finden Sie mit C # nicht annähernd so viele Karrieremöglichkeiten wie mit C++. Wenn Sie nicht Programmierer für Spieletools werden möchten, ist C # in diesem Fall viel besser als C++, da Sie viel mehr Funktionen in viel kürzerer Zeit zur Verfügung stellen können. Viele Spieleunternehmen wechseln zu C #, um möglichst viele Tools zu entwickeln.

Wenn Sie die Arbeitslast bewältigen können, ist es natürlich am besten, beide Sprachen zu lernen und "das beste Werkzeug für den Job" anzuwenden. Da sie sich so ähnlich sind, ist es wirklich nicht schwierig, eins zu lernen, wenn Sie das andere gelernt haben. (Die meiste Lernkurve, die sich von C++ zu C # bewegt, sind .net und LINQ usw. und nicht die Kernsprache C # per se - eine Menge davon ist nahezu identisch, mit ein paar Bits syntaktischem Zucker hier und da.)

3
Jason Williams

C++ mit win32/GDI ist relativ einfach zu starten, aber weitaus schwieriger als Flash oder Python (Pygame). Durch die Verwendung von C++ können Sie jedoch viel lernen und sind bestens gerüstet, Ihre Karriere als Entwickler fortzusetzen Spielentwickler. Sie können auch in XNA nachsehen, ob Sie die Xbox360 programmieren möchten.

Ich habe einige Kurse am Game Institute (GI) besucht und viel über C++, Win32 API und DirectX gelernt.

3
mr-sk

Hey, wenn BASIC gut für Gorillas ist, ist es gut genug für mich.

2
Coderer

Es hängt wirklich davon ab, welche Art von Spiel Sie planen: Viele Spiele können in einer Sprache wie C # ausgeführt werden. Die Mehrheit der Spieleentwicklung findet jedoch in C++ statt, nur weil die Mehrheit der Spieleentwicklung die letzte Leistung, die die Plattform bieten kann, erfordert. Dies bedeutet entweder C, C++ oder ( shudder ) - Assembler .

2
Jeff Hornby

C++ ist die Verkehrssprache der Konsolenspielindustrie. Zum Guten oder Schlechten müssen Sie wissen, dass Sie ein professioneller Programmierer für Konsolenspiele sind.

2
munificent

Sehen Sie es sich so an - während Sie ein Spiel in C # schreiben können, wird es nicht viele Karrieretüren für Sie öffnen. Wenn Sie C++ und Lua kennen, werden Sie weit mehr beschäftigungsfähig sein.

Sie sprechen auch nicht nur von PC-Desktops und Konsolen, Spiele sind heutzutage sehr viel für mobile Geräte. Nur C # zu kennen würde Sie noch weiter einschränken. Sicher, C++ wird nicht die optimale Wahl für das Schreiben von iPhone-Apps sein, aber Sie sind einem objektiven C-Programmierer viel näher, wenn Sie C++ kennen, als wenn Sie C # kennen.

Spieleentwickler verwenden C++ nicht aus alten Gründen (obwohl das Einrichten von C++ - Engines und -Bibliotheken hilfreich ist), sondern aus Gründen der Leistung und Erfahrung. Game-Entwickler kennen C++, es funktioniert für sie sehr gut, so dass es keine Notwendigkeit gibt, es zu ändern. Es ist nicht wie bei Branchenanwendungen (unter Windows), bei denen sich der Entwickler-Mindshare mit den aktuellen Microsoft-Tools bewegt.

2
gbjbaanb

Wenn Sie als Spieleentwickler professionell angestellt werden möchten, müssen Sie C/C++ kennen. Ende der Geschichte!

2
devilcrack

Ich denke das C++.

Weil c # eine zusätzliche Installation für die C # -Laufzeit erfordert, die nur Speicherplatz auf der Festplatte beansprucht .. ___. Und C # ist natürlich etwas langsamer.

2
oneat

Ich glaube, dass C++ die Sprache ist, nach der Sie suchen. Die meisten Spiele entwickeln sich in C++, da es sich um eine Sprache mit mehreren Paradigmen (OOP, Meta-Programmierung usw.) handelt und weil sie Speicherverwaltung ermöglicht. Was C++ noch besser macht, ist, dass es für die Entwicklung auf einer Vielzahl von Plattformen verwendet werden kann, während C # dies in einem so großen Umfang nicht tun kann.

Viele werden sagen, dass Sie sich mit C # keine Gedanken über die Speicherzuordnung machen müssen, und dies gilt zu einem bestimmten Preis. Sie haben die Last des .NET-Frameworks auf den Schultern und erkennen langsam die Einschränkungen von C # in der Art und Weise, wie bestimmte Aufgaben ausgeführt werden müssen.

Wahrscheinlich haben Sie aus einigen Antworten gelesen, dass C++ eine Programmiersprache ist. Dies ist meistens richtig, aber Sie haben vielleicht noch nichts von C++ 0x gehört. Einige in C # gefundene Funktionen, wie beispielsweise die Garbage Collection, werden mit C++ 0x verfügbar (optional für Sie). Mit dieser Version des C++ - Standards wird schließlich auch Multithreading von der Sprache unterstützt.

Ich würde empfehlen, dass Sie ein paar C++ - Bücher sowie C++ DirectX/OpenGL-Bücher kaufen.

1
Partial

Es ist immer schwer zu sagen, weil sie bis 1993 Assembly benutzten, NBA Jam, wenn sich jemand an diesen bösen Jungen erinnert. Die Technologie ist ständig im Trend. Daher ist es sehr schwer zu sagen, wohin sie gehen wird. Ich würde empfehlen, C zu lernen und sich sehr gut damit auseinandersetzen, um dann auf C++ zu wechseln. Ich sage dies zur Vorsicht, wenn Sie Spiele spielen, werden Sie keine Codierungsspiele mögen.

0
Woot4Moo

Wenn Sie C # und XNA kannten, könnten Sie auf recht einfache Weise einige Beispielspiele erstellen, die möglicherweise dazu beitragen, in das Feld einzudringen.

Meine Vermutung ist, dass die Kern-Gaming-Engines in C++ geschrieben sind, aber der andere Code um den Kern könnte in C # sein. 

0
alchemical