it-swarm-eu.dev

Spielprogrammierung: C # oder C ++?

Ich habe beschlossen, dass ich wirklich Spielprogrammierung machen möchte. Die Frage ist also, was als 18-Jähriger, der Autodidakt lernen möchte, die am besten geeignete Programmiersprache zwischen C # und C++ 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 Tutorials, DLLs und ähnliches hat, 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 viel auf das Grundlegende konzentrieren. Ich muss sagen, dass ich C++ bevorzuge, nur weil es sich für mich besser 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 welches ich mich entscheiden soll. Ich habe viele Themen auf verschiedenen Websites gelesen und es sieht so aus, als würde C # immer beliebter als C++. Aber ja, das heißt, ich habe auch angegeben, dass ich Spielprogrammierung machen möchte. Ich muss also einige bessere Punkte kennen als nur "C # ist aufgrund der .net-Speicherbehandlung einfacher, während C++ nicht", weil ich es nicht einfach finden konnte.

15
Chronix

Ich lerne C++ durch Programmieren eines Spiels. 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, um die Spieleentwicklung zu lernen. Es hat alles, was Sie brauchen, um von Frameworks bis zu Büchern zu beginnen, und die Sprache ist erstaunlich.

Ich habe gesehen Dutzende von Büchern speziell geschrieben auf C # Game Programming und Microsoft unternimmt große Anstrengungen, um seine Frameworks zu verbessern, einschließlich DirectX und [~ # ~] xna [~ # ~] .

[~ # ~] Update [~ # ~] : Möglicherweise interessiert Sie auch this . Es ist ein aktueller Blog-Beitrag von Miguel de Icaza .

UPDATE 2013-02-22 Microsoft plant XNA-Unterstützung einstellen .

21
user2567

Die meisten Spielefirmen verwenden C++, möglicherweise mit python Skripten oder anderen Sprachen, die im Hintergrund ausgeführt werden. Außerdem, weil die Bindungen für OpenGL und DirectX auf C++ abzielen (obwohl ich mir ziemlich sicher bin, dass Sie genauso viel tun können) Direct3d-Zeug in C #), aber für die Spielprogrammierung ist C++ die Hauptsprache.

Ich werde Ihnen zwar eine faire Warnung geben (und mich davon nicht abhalten lassen), aber 3D-Grafiken können extrem kompliziert werden. Das neue Direct3D hat es ein gutes Stück einfacher gemacht als früher, aber es ist immer noch ein gutes Stück Mathematik (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 ist SDL (Simple Directmedia Layer) viel einfacher zu verwenden (für so etwas wie ein Top-Down-Spiel), wenn Sie erst einmal in 3D sind. Ich persönlich denke, OpenGL ist einfacher zu lernen (aber das ist alles Meinung). MS hat einige nette Tutorials/Beispiele in seiner DirectX SDK-Dokumentation, daher lohnt es sich, einen Blick darauf zu werfen. Die Nehe-Tutorials sind zwar etwas veraltet, aber immer noch nett.

um Ihre Frage zu beantworten, werden sie normalerweise alle in C++ ausgeführt.

12
user6791

Zuerst möchten Sie einige Prioritäten setzen. Möchten Sie nur zuerst 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 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 überhaupt keine Probleme haben, C # zu erlernen. C # zu Ihrem Werkzeug zu machen hat Vorteile. Es ist leicht zu erlernen (im Vergleich zu C++) und eine "verwaltete Sprache", was bedeutet, dass automatisch die Speicherinstallation für Sie durchgeführt wird (etwas, mit dem viele C++ - Anfänger und sogar weniger Anfänger Probleme haben ). Außerdem erhalten Sie Zugriff auf das XNA Framework von Microsoft, 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 viel) darum kümmern zu müssen, dass es funktioniert. Es stimmt, all diese Insta-Sanitärinstallationen haben ihren Overhead, was bedeutet, dass Sie wahrscheinlich keine 3D-Spiele für die Industrie entwickeln werden, aber Sie beginnen gerade mit der Spielprogrammierung. Ich bezweifle, dass Sie bei Ihren ersten Versuchen den nächsten Halo machen werden . :) :)

Hier ist eine Obduktion des Mannes, der ein erfolgreiches XNA-Spiel (Weapon of Choice) entwickelt hat. Er erläutert, wie die Verwendung von C #/XNA ihm Entwicklungszeit erspart hat, anstatt C++ verwenden zu müssen. http://www.gamasutra.com/view/feature/3899/postmortem_mommys_best_games_.php

Davon abgesehen 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 in der Spielebranche Fuß fassen möchten. Aber selbst wenn Sie am Ende nie C++ verwenden, kann das Wissen darüber, wie die Interna funktionieren, Sie nur zu einem besseren Programmierer machen, unabhängig davon, welche Sprache Sie verwenden.

8
System Down

Rohe Spielprogrammierung wird Sie ziemlich kalt lassen. Das Arbeiten mit Grafikaufrufen auf niedriger Ebene in C # oder C++ ist ein kleiner Albtraum, und Sie möchten das Rad des Renderns von 2D-Sprites nicht neu erstellen, geschweige denn 3D-Modelle. Da Sie alleine sind und Programmieren lernen möchten, ist es am besten, ein Framework zu finden, das Sie ein wenig vorantreiben kann.

Da Sie mit der C-basierten Sprache vertraut sind, würde ich vorschlagen, nity 3D einen Blick darauf zu werfen. Es wird nicht nur von kommerziellen Spieleentwicklern ernsthaft angenommen und bietet einige interessante Plattformoptionen (einschließlich PC-, Android-, iPhone- und Web-Laufzeiten), sondern auch eine kostenlose Version, die sehr einfach zu bedienen ist und viele Tutorials enthält um Ihnen zu zeigen, wie Sie vom Konzept zur Implementierung gelangen. Das Beste von allem (IMO), eine der unterstützten Skriptsprachen, ist C #.

3
Jacob Proffitt

Ich bewerbe C++ für die Spieleentwicklung. Es gibt einige zusätzliche Hindernisse mit verschiedenen Vor- und Nachteilen. Einer der besten Gründe ist die Portabilität.

Mit C # können Sie heutzutage noch einiges mehr entwickeln, und es gibt einige erstaunlich gute Motoren, die mit Sicherheit darin programmiert sind. Beide Sprachen sind gute Sprachen für die Spielprogrammierung. Wenn Sie nur auf Windows/Xbox-Plattformen abzielen, haben Sie insbesondere Grund, sich auf C # zu konzentrieren.

Die Sprache, die Sie meiner Meinung nach am meisten lernen sollten, ist OpenCL oder CUDA, eine GPGPU-Sprache. Persönlich bevorzuge ich OpenCL, da es wahrscheinlich überdauert und weiter wächst. Es ist im Grunde nur ein C-Stil. Es gibt OpenTK , einen netten Wrapper für C++ oder C #.

Ich habe mich immer gefragt, wie Ruby Spielprogrammierung mit Hardwarebeschleunigung aussehen würde ...

3
Garet Claborn

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 für den Umfang eines ersten Spiels ist sie schnell genug. (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. (Trotzdem kann C # ein gutes Sprungbrett für C++ sein, und wenn ich die beiden Sprachen neu lernen müsste, würde ich zuerst versuchen, C # zu lernen.)

2
zneak

Ich würde C++ wählen - hauptsächlich, weil es plattformübergreifend sein kann (natürlich abhängig davon, wie Sie Ihren Code schreiben) und auch, weil ich denke, dass es Ihnen mehr Wissen über die Speicherverwaltung gibt - weil Sie brauchen zu kümmere dich darum. 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 weglassen möchten.

1
Mauren