Ich habe beschlossen, dass ich wirklich Spiele programmieren möchte. Als 18-Jähriger, der Autodidakt lernen möchte, stellt sich die Frage, welche Programmiersprache zwischen C # und C ++ am besten geeignet ist. (Ich sollte sagen, dass mir Unix egal ist, weil ich glaube, dass Windows immer noch das am häufigsten verwendete Betriebssystem sein wird.)
Ich kenne die Grundlagen von C ++, aber keine über C #. Ich weiß, dass C ++ mehr Anleitungen, DLLs und ähnliches enthält, während C # dies nicht tut, aber es ist viel einfacher zu lernen und für eine einzelne Person zu verwenden, um ein Programm zu entwickeln, aber ich habe gelesen, auch wenn das Programm verschleiert ist Es ist einfach, die Quelle zu finden.
Nun, ich möchte mich zuerst ein bisschen auf das Wesentliche konzentrieren. Ich muss sagen, dass ich C ++ bevorzuge, nur weil es sich für mich geeigneter anfühlt, aber ich muss bedenken, dass ich alleine arbeite. Selbst wenn es mir gefällt, ist es vielleicht nicht das Beste, was ich tun kann.
Ich bin mir wirklich nicht sicher, für welche ich mich entscheiden soll, ich habe viele Threads auf verschiedenen Websites gelesen und es sieht so aus, als ob C # populärer wird als C ++. Aber ja, das heißt, ich habe auch spezifiziert, dass ich Spieleprogrammierung machen möchte. Ich muss also einige bessere Punkte kennen, als nur "C # ist einfacher wegen der .net-Speicherbehandlung, während C ++ nicht", weil ich es nicht einfach finden konnte.
quelle
Antworten:
Ich lerne C ++, indem ich ein Spiel programmiere. Das war eine sehr erfreuliche Erfahrung. Ich ermutige Sie sehr, dasselbe zu tun!
Jetzt bin ich jedoch ein C # -Programmierer. Ich weiß, dass ich viel produktiver gewesen wäre, wenn C # zu diesem Zeitpunkt verfügbar gewesen wäre.
C # ist die perfekte Wahl für die Entwicklung von Lernspielen. Es hat alles, was Sie brauchen, um von Frameworks bis zu Büchern zu starten, und die Sprache ist erstaunlich.
Ich habe Dutzende von Büchern gesehen, die speziell für C # -Spielprogrammierung geschrieben wurden, und Microsoft unternimmt große Anstrengungen, um seine Frameworks zu verbessern, einschließlich DirectX und XNA .
UPDATE : Sie können von Interesse sein , diese auch. Es ist ein neuer Blogbeitrag von Miguel de Icaza .
UPDATE 22.02.2013 Microsoft plant , die XNA-Unterstützung einzustellen .
quelle
Die meisten Spieleunternehmen verwenden C ++, möglicherweise mit Python-Skripten oder anderen Sprachen, die im Hintergrund ausgeführt werden. Moreso, weil die Bindungen für OpenGL und DirectX auf C ++ abzielen (obwohl ich mir ziemlich sicher bin, dass Sie genauso viel Direct3d-Zeug in C # machen können), aber für die Spieleprogrammierung ist C ++ die Hauptsprache.
Ich gebe Ihnen zwar eine faire Warnung (und lasse mich davon nicht abhalten), aber 3D-Grafiken können extrem kompliziert werden. Das neue Direct3D hat es ein bisschen einfacher gemacht als früher, aber es ist immer noch ein gutes bisschen Mathe (das kann ziemlich verwirrend werden) und nur die Bibliotheken selbst können verwirrend sein.
Ich würde zuerst mit etwas sehr Einfachem beginnen. Für 2D-Inhalte SDL (Simple Directmedia Layer) ist viel einfacher zu verwenden (für so etwas wie ein Top-Down-Spiel), wenn Sie erst einmal in 3D sind. Ich denke, OpenGL ist einfacher zu erlernen (aber das ist alles meine Meinung). MS hat einige nette Tutorials / Samples in der DirectX SDK-Dokumentation, es lohnt sich also einen Blick darauf zu werfen. Die Nehe-Tutorials sind zwar etwas veraltet, aber immer noch nett.
Um Ihre Frage zu beantworten, werden sie alle in der Regel in C ++ ausgeführt.
quelle
Zuerst möchten Sie einige Prioritäten setzen. Möchten Sie erst ein Spiel erstellen und später die fortgeschritteneren Aspekte der Programmierung kennenlernen oder umgekehrt? Beide Ansätze haben ihre Vor- und Nachteile, sind aber meiner Meinung nach beide legitim.
Wenn Sie anfangen möchten, Spiele zu machen, würde ich empfehlen, C # zu lernen. Wenn Sie die Grundlagen von C ++ bereits kennen, sollten Sie keine Probleme haben, C # zu erlernen. C # zu Ihrem Werkzeug zu machen hat Vorteile. Es ist eine leicht zu erlernende Sprache (im Vergleich zu C ++) und eine "verwaltete Sprache", was bedeutet, dass es automatisch die Speicherinstallation für Sie übernimmt (etwas, mit dem viele C ++ - Anfänger und selbst Anfänger Probleme haben ). Darüber hinaus erhalten Sie Zugriff auf das Microsoft XNA Framework, das noch mehr mühsame Installationsarbeiten für Sie erledigt. So können Sie sich auf Dinge wie den Spielzyklus und das Design konzentrieren, ohne sich (zu sehr) darum kümmern zu müssen, dass es funktioniert. Es stimmt, all diese Installationen haben ihren Overhead, was bedeutet, dass Sie wahrscheinlich keine 3D-Spiele für die Industrie entwickeln werden, aber Sie sind gerade dabei, Spiele zu programmieren. Ich bezweifle, dass Sie bei Ihren ersten Versuchen den nächsten Halo machen werden. :)
Hier ist ein Post-Mortem von dem Typ, der ein erfolgreiches XNA-Spiel (Weapon of Choice) entwickelt hat. Er beschreibt, wie die Verwendung von C # / XNA ihm Entwicklungszeit gespart hat, anstatt C ++ zu verwenden. http://www.gamasutra.com/view/feature/3899/postmortem_mommys_best_games_.php
Trotzdem sollten Sie einige Zeit investieren, um zumindest zu wissen, wie die Dinge im Hintergrund funktionieren. Wie ein C ++ - Programmierer das machen würde. Wenn Sie lernen, ein Spiel in C ++ zu erstellen, ist es möglicherweise einfacher, einem anderen Spieleentwicklungsteam beizutreten (da die meisten von ihnen in C ++ arbeiten), wenn Sie sich in der Spieleindustrie etablieren möchten. Aber selbst wenn Sie am Ende nie C ++ verwenden, kann das Wissen darüber, wie die Interna funktionieren, Sie zu einem besseren Programmierer machen, unabhängig davon, welche Sprache Sie verwenden.
quelle
Ich unterstütze C ++ in hohem Maße für die Spieleentwicklung. Es gibt ein paar zusätzliche Hindernisse mit verschiedenen Vor- und Nachteilen. Einer der besten Gründe ist die Portabilität.
Mit C # können Sie heutzutage einiges mehr entwickeln, und es gibt einige erstaunlich gute Engines, die mit Sicherheit darin programmiert sind. Beide sind gute Sprachen für die Spieleprogrammierung. Wenn Sie nur auf Windows / Xbox-Plattformen abzielen, haben Sie besonders Grund, sich an C # zu orientieren.
Die Sprache, von der ich denke, dass Sie sie lernen sollten, ist OpenCL oder CUDA, eine GPGPU-Sprache. Persönlich bevorzuge ich OpenCL, da es wahrscheinlich überdauern und weiter wachsen wird, es ist im Grunde nur C-Stil. Es gibt OpenTK, das ein netter Wrapper für C ++ oder C # ist.
Ich habe mich immer gefragt, wie die Ruby-Spieleprogrammierung mit Hardwarebeschleunigung aussehen würde ...
quelle
Raw Game Programming wird dich ziemlich kalt lassen. Das Arbeiten mit Grafikaufrufen auf niedriger Ebene in C # oder C ++ ist ein kleiner Albtraum, und Sie möchten das Rad zum Rendern von 2D-Sprites und 3D-Modellen wirklich nicht neu erstellen. Da Sie selbstständig sind und Programmieren lernen möchten, ist es am besten, ein Framework zu finden, das Sie ein wenig voranbringen kann.
Da Sie mit C-basierter Sprache vertraut sind, ist mein Vorschlag, Unity 3D einen Blick darauf zu werfen. Es verzeichnet nicht nur eine ernsthafte Akzeptanz bei kommerziellen Spieleentwicklern und bietet einige interessante Plattformoptionen (einschließlich PC, Android, iPhone und Weblaufzeiten), sondern auch eine kostenlose Version, die sehr einfach zu bedienen ist und viele Tutorials enthält um Ihnen den Übergang vom Konzept zur Umsetzung zu zeigen. Das Beste von allem (IMO) ist, dass eine der unterstützten Skriptsprachen C # ist.
quelle
Ich habe vor zwei Jahren ein Spiel für eine Klasse gemacht (ich war damals auch 18) und wir haben es in C # gemacht. Während ich beobachte, dass große C # -Programme normalerweise langsamer arbeiten als große C ++ - Programme, erfordert C # auch viel weniger Arbeit auf Ihrer Seite. Die Speicherverwaltung erfolgt automatisch und ist für den Umfang eines ersten Spiels ausreichend schnell. (Unser Spiel ist ein vollwertiges 2D-Multiplayer-Starcraft-ähnliches RTS.)
Ich würde für C # rooten, da es einfacher zu verwalten sein sollte. Wenn Sie jedoch ein professioneller Spieleentwickler werden möchten, denken Sie daran, dass dies nur auf Microsoft-Plattformen funktioniert. (Dennoch kann C # ein guter Einstieg in C ++ sein, und wenn ich die beiden Sprachen neu lernen müsste, würde ich versuchen, zuerst C # zu lernen.)
quelle
Ich würde stimmen C ++ - vor allem , weil es plattformübergreifend sein kann (je nachdem , wie Sie Ihren Code schreiben, natürlich) und auch , weil ich denke , dass es Sie mehr Wissen über die Speicherverwaltung gibt - weil Sie brauchen , darüber zu kümmern. Aber da Sie sich nicht für Linux / Unix interessieren, sollten Sie sich jetzt auf C # konzentrieren und dann auch C ++ lernen, wenn Sie die Speicherkomplexität für den Moment auslassen möchten.
quelle