2009-10-24 5 views
8

Ich bin ein Hobby-Programmierer mit einem guten Verständnis von Python und ich lerne gerade C. Kürzlich habe ich mit einem Kollegen gesprochen, der auch programmieren lernen möchte. In seinem Fall möchte er C++ als einen Weg zur Windows-Spieleprogrammierung mit DirectX lernen. Persönlich fühle ich mich direkt in C++ vertieft, da Ihre erste Sprache ein bisschen viel ist - es ist schwer genug, in einer einfacheren Sprache motiviert zu bleiben, und ich denke, es ist besser, eine andere Sprache zu lernen, um die grundlegenden Konzepte zu verstehen etwas wie C++.C++ als erste Sprache für Windows-Spiele-Programmierung?

Ich fand Python gut als meine erste Sprache, da ich mehr Interesse an Netzwerk- und Webprogrammierung auf Linux/Unix-Plattformen habe, aber für jemanden, der hauptsächlich an Windows-Spiele interessiert ist, dachte ich, C# könnte eine bessere Wahl sein Ich könnte Visual C# Express Edition und XNA lernen und dann zu Visual C++ wechseln, wenn er bereit ist, C++ zu lernen und sich daher bereits in einer vertrauten Umgebung befindet. Ich denke, Speicherverwaltung ist eine Menge zu übernehmen, und C# zumindest behandelt das, so dass er es ablegen kann, bis er C++ zu lernen beginnt.

Was denken andere über C++ als erste Programmiersprache für diese Art von Anwendung? Sollte ich empfehlen, stattdessen für C# zu gehen?

+4

Dies sollte wahrscheinlich ein Community Wiki –

+4

C++ nur schwer ist, wenn man Python lernen zuerst . Wenn Sie zuerst C/C++ lernen, wird nichts schwer sein. – hasen

+0

+1 Matthew, wähle einen Wechsel ins Wiki. Ein Freund von mir und ich nehmen den unbeliebtesten Weg bei der Entwicklung einer Spielengine. C# ist unsere Wahl. Glücklicherweise hat er C++ Kenntnisse, um sich auf unser Projekt zu bewerben. Er arbeitet an der Grafik-Engine-Seite, ich bin verantwortlich für die Entwicklung der Benutzer-Tools, um alles zusammen zu "sticheln". – IAbstract

Antwort

15

C++ sollte in Ordnung sein. Ich denke, er lernt am besten über Speicherverwaltung, Zeiger, usw. VOR dem Springen zu C#, wie er verstehen wird, wie das Programm besser funktioniert. Ansonsten wird er die Erinnerung nur als Magie sehen und der Müllsammler wird keine wirkliche Bedeutung haben. Es ist immer gut, ein tiefes Verständnis der zugrunde liegenden Sprachen (C, C++, Assembly usw.) zu haben, um den besten Code zu erzeugen.

+4

Wenn alles, was Sie wollen, eine gute Grundlage in den Grundlagen ist, gehen Sie mit C. C++ hat eine Menge zusätzliche Overhead und Sachen zu lernen. C ist fast eine dünne Schicht über der Montage und bleibt genau bei dem, was Sie brauchen, um die Arbeit zu erledigen. –

+5

Dem würde ich nicht zustimmen: Bei der Entwicklung von Spielen geht es um High-Level-Konzepte, die in Low-Level-Konzepten implementiert werden. C++ ist in diesem Fall besser geeignet, da Sie eigentlich am Spiel arbeiten wollen (Kodierung auf hohem Niveau), aber die Möglichkeit haben, in die Details einzutauchen, um einige kritische Laufzeitteile zu optimieren (Kodierung in niedriger Ebene). Wenn Sie nur C verwenden, werden Sie viel über das Programmieren lernen, aber Sie werden nur daran gehindert, GAME-Programmierung zu lernen. Wenn das das eigentliche Ziel ist, ist es wichtig, Sprachfunktionen auf hohem Niveau zu haben. Und Overhead ist in diesen Fällen nicht bemerkbar. Wenn dies der Fall ist, können Sie immer Engpässe optimieren. – Klaim

+0

In gewisser Hinsicht ist der schwierigste Teil der Verwendung von C++ das Verständnis, welche Teilmenge der Sprache für Sie sinnvoll ist. Ich habe das Gefühl, dass es beim Lernen von Speicherverwaltung, Zeigern und Datenstrukturen leichter zu benutzen ist. Dadurch werden die Ablenkungen begrenzt. –

8

C++ ist die Hauptsprache für die meisten "ernsthaften" Spieletitel. Wenn er für ein großes Spielstudio programmiert, dann muss er die schmutzigen kleinen Teile von C++ kennen.

Mit C++ anzufangen könnte ein bisschen viel für einen kompletten Anfänger sein. Ich würde C als einen guten Ausgangspunkt empfehlen. Sie werden vertraut mit den Konzepten der Speicherverwaltung und den anderen Low-Level-Sachen, bevor Sie die Komplexität von C++ hinzufügen.

Da C# ein verwalteter Code ist, würde er nicht die Erkenntnisse der Low-Level-Speicherverwaltung gewinnen. Das wird ihm beim Umgang mit C++ nicht gut tun. In diesem Fall wird es ihm langfristig helfen, näher an das Metall zu kommen.

6

C++ Spieleprogrammierung ist großartig. Aber es sei denn, Sie mögen totale Schmerzen, während Sie lernen, zu programmieren, könnten Sie mit XNA beginnen. Dadurch können Sie an dem Inhalt und der Logik des Spiels arbeiten, anstatt mit Ihrem Engine-Code zu kämpfen.

Jetzt, wenn Sie Schmerzen mögen, gehen Sie die DirectX und C++ Route zu beginnen.

2

Etwas, das Sie berücksichtigen müssen, ist vorhandene SDKs, Sie wollen wahrscheinlich nicht alles selbst programmieren. Zum Beispiel gibt es ziemlich gute 3D-Engines mit verschiedenen Arten von Lizenzen, die Ihnen gut passen.

Sie sollten also die vorhandenen Bibliotheken und SDKs und die wenigen Sprachen, die Sie zusammenhalten möchten, gleichzeitig prüfen. Die Anpassung an C++ oder C# ist nicht so schwierig, ersteres ist strenger und anspruchsvoller, während es Ihnen mehr Kontrolle über den Speicher gibt, letzteres erlaubt Ihnen, sich auf den Hauptentwicklungsbereich zu konzentrieren, aber übernimmt das Speichermanagement (meistens), was bedeutet, dass Sie in Echtzeit Probleme haben könnten.

Am Ende des Tages, welche Hilfe Sie bekommen können, um Ihre Anwendung zu bauen, wird ausnahmslos die kleinen Unterschiede zwischen diesen OO-Sprachen (bis zu einem gewissen Grad) übergewichten.

Es gibt viele Spiel-Engines, die meisten sind aufgeführt on this page. Von besonderem Interesse sind in der freien Welt:

Unfreie Pakete beinhalten Unity und andere.

Wenn Sie das tun nicht jeder dieser Motoren wollen, gibt es immer noch sehr gute Bibliotheken wie Qt für C++, das Scripting erlaubt - wenn auch nicht direkt Python, würden Sie es selbst einzubetten haben - und andere für C#, aber Die Auflistung könnte ziemlich lang werden.

3

Python ist gut in der Programmierung von Spielen. Siehe i-want-to-learn-game-development-which-language-should-i-use. Erwägen Sie das Lernen Pygame.

Pygame ist eine Reihe von Python-Modulen zum Schreiben von Spielen. Pygame fügt Funktionalität zusätzlich zur ausgezeichneten SDL-Bibliothek hinzu. Auf diese Weise können Sie voll funktionsfähige Spiele und Multimedia-Programme in der Python-Sprache erstellen. Pygame ist sehr portabel und läuft auf nahezu jeder Plattform und jedem Betriebssystem. Pygame selbst wurde millionenfach heruntergeladen und hatte Millionen von Besuchen auf seiner Website.

3

Wenn er in die Branche einsteigen möchte, dann ist es wichtig, C++ zu kennen, da die meisten Spiele-Engines C++ verwenden. (Ich auch Entwickler sollte bei irgendein Punkt Lean C oder C++)
Allerdings, wenn er Spiele schreiben möchte (wie in, ein Spiel zu schreiben), dann C++ möglicherweise nicht der Weg zu gehen. Es ist sehr komplex und hat viele Fallstricke, die es zu einer langsamen Sprache machen. Es ist nicht nur die Speicherverwaltung, sondern Dinge wie die schrecklichen STL-Kompilierungsfehler etc., die es sehr schwer machen, etwas zu erledigen, wenn man es zuerst versucht programmieren.
Etwas wie C# oder Python zu betrachten wäre eine bessere Option, da es weit weniger komplexe Sprachen sind und jede eine gute Spielbibliothek hat.

Wenn er entscheidet, dass C++ der richtige Weg ist, würde ich mindestens eine Rendering-Bibliothek empfehlen. So etwas wie Ogre3D zumindest. Der Grund dafür ist in diesem Artikel Write games not engines behandelt. Während das Schreiben (oder Schreiben) einer Engine von einer Basis-API eine gute Erfahrung sein wird, ist es unwahrscheinlich, dass das Spiel beendet wird.

6

Ich denke, es ist besser, eine Sprache wie Java oder C# gründlich zu lernen, bevor Sie C++ übernehmen. Der Grund, warum ich das sage ist, weil Sie sich leicht in den Details und Feinheiten von C++ festsetzen können.

Ich habe ein paar Jahre lang mit C++ (als Hobby) gekämpft, dann an der Uni wurde ich Java unterrichtet, hörte auf, C++ zu machen, bekam einen Job für ein paar Jahre Java und wechselte dann in C++ Dev . Ich nahm alles sehr schnell auf, weil ich bereits wusste, welche Muster und Konzepte ich anwenden wollte, und es war nur eine Frage des Erlernens der Syntax und der Seltsamkeiten und wieder an die Zeiger gewöhnt zu werden. Ich musste einfach WIE und nicht WARUM lernen.C++ als erste Hauptsprache zu lernen, bedeutet, WIE und WARUM gleichzeitig zu lernen, und es kann sehr verwirrend sein!

XNA ist ein guter Vorschlag.

+1

Genau meine Gedanken. Ich habe zuerst Python gelernt und es hat mich an viele grundlegende Konzepte der Programmierung gewöhnt. Jetzt lerne ich C, es ist viel einfacher, diese auszuwählen, als es wäre, weil ich mich einfach an die unterschiedliche Syntax für einige der Grundlagen und einige Zusätze wie Zeiger gewöhnen muss. Ich denke, es ist wichtiger jemanden zu bekommen, der überhaupt Code schreibt, und C# und XNA würden das viel einfacher machen, während es weniger wahrscheinlich ist, dass sie die Hoffnung verlieren, wie viel Arbeit sie zu tun haben. Es ist immer Zeit, C++ später zu lernen, wenn die Grundlagen der Programmierung einmal feststehen. –

+1

Einverstanden. Zu viele Konzepte, zu wenig Platz zum Atmen und Innovieren. Solange Sie nicht scheußlich konzentriert sind, ist Lernen ohne Innovation unmöglich. Während meines gesamten Lernprozesses habe ich eine Vielzahl von Sprachen mit vielen Paradigmen gelernt. C++ war immer diejenige, in der ich am wenigsten lernte, weil ich mich so in Details verstrickte, die nichts mit dem zu tun hatten, was ich eigentlich lernen wollte. Aus anderen Sprachen kommend und mit allen anderen Aspekten der Spieleentwicklung vertraut, war C++, abgesehen von der Optimierung, einfach ein Meilenstein, der erreicht werden musste, und nicht eine Mauer. – Rushyo

0

Ich würde XNA und C# für eine schnelle und schmerzlose Einführung bevorzugen. Ich würde C++, und eine Bibliothek wie DirectX, für die Spielprogrammierung nach etwas Erfahrung auf dem Thema verwenden. Die meisten der erfolgreichsten Spiele haben in C++ geschrieben.

1

In der Regel läuft den Leuten vor dem ersten Spiel die Puste aus. Daher, wenn Ihr Freund eine Erfolgsbilanz von hartnäckig bestimmt hat, würde ich die meisten verfügbaren High-Level-Option empfehlen. Wenn Sie zwischen C++ und C# wählen, wäre das C#.

+0

Wirklich. Einen Asteroids-Klon in Python zu schreiben, ist ein ziemlich großes Projekt. Das Umschreiben Ihres Python-Asteroids-Klons von Grund auf in C++ ist nicht möglich. –

0

Wenn es dein Ziel ist, Spaß zu haben und Spiele selbst zu beenden (oder in kleinen Teams), die relativ klein sind, dann sage ich C# und XNA.

Wenn Ihr Ziel ist in der Industrie zu arbeiten, auf Super Big-Budget-Spiele mit riesigen Teams ... Dann ++ C ...