C++ Einstieg in die Spieleprogrammierung

Bl4ck M4ch!n3

Commander
Registriert
Dez. 2005
Beiträge
2.708
Servus!

Wie der Titel schon sagt, würde ich gerne hobbymäßig Spiele programmieren.

Aber alles was ich über die SuFu gefunden habe, waren Beiträge wie :
"Ich lern grad seit 2 Tagen programmieren in der Schule und würde gerne für ein IT-Projekt Crysis 5 programmieren!!!!1!!1einself"

Zu meiner Verteidigung :
Ich weiß, was dahinter steckt.
Mir ist bewusst, dass man nicht mal eben nach 2 Wochen nen Ego-Shooter oder ein Strategiespiel entwickelt.
Ich programmiere seit 3 Jahren Leidenschaftlich gerne PIC-Mikrocontroller in C.
Zusätzlich habe ich in Visual Basic einige Programme geschrieben, die eine Datenübertragung (über ein selbst erstelltes Übertragungsprotololl) zwischen PIC und PC ermöglichen.

Ich denke daher, dass das lernen von C++ für mich nicht unmöglich sein sollte.

Zu meinem eigentlichen Anliegen :

Ich wollte eigentlich nur fragen, ob jemand Foren/Communitys für Hobbyprogrammierer kennt.
Gerne auch englische!

Auch Tutorial- und/oder Buchempfehlungen zur Spieleprogrammierung mit C++ und directx oder anderen (vllt "leichteren" Engines) wäre ich nicht abgeneigt.

Was ich bereits besitze sind ein Taschenbuch über die C++-Programmierung sowie C++ für Spieleprogrammierer von Heiko Kallista (welches ich zur Zeit durcharbeite).

Schonmal vielen Dank für die Antworten :)

mfG Bl4ck
 
Welche Art Spiele willst du denn schreiben? Ich mein', 3D-Spiele im Alleingang entwickeln, ist fast ein Ding der Unmöglichkeit. Kleinere 2D-Spiele liegen aber im Rahmen.

Als Seite kann ich dir http://www.gamedev.net/ empfehlen. Dort gibt es Artikel über alle möglichen Aspekte der Spielentwicklung.
 
Meiner Meinung nach ist es nicht die beste Idee eine neue Programmiersprache durch die Programmierung von Spielen zu lernen. Dafür ist C++ zu schwierig.
Dass du C bereits beherrscht ist gut, somit wirst du dir beim Lernen von C++ nicht allzu schwer tun.
Mein Rat an dich wäre eben, dass du mal C++ lernst und auch beherrscht, dann steht dir sicher nichts mehr im Wege bezüglich Spieleprogrammierung ;)
 
e-Laurin schrieb:
Welche Art Spiele willst du denn schreiben? Ich mein', 3D-Spiele im Alleingang entwickeln, ist fast ein Ding der Unmöglichkeit.

Och, das würde ich nicht sagen. Es gibt 'ne ganze Menge 3D-Spiele, die von kleinen Gruppen oder auch Einzelpersonen geschrieben worden sind. Nicht 2D vs 3D ist das entscheidende Kriterium sondern die Komplexität des Spiels.
 
flopalko hat nicht ganz unrecht.

Je nachdem wie gut oder eben schlecht du dich schon in C++ zurecht findest könnte es sinnvoll sein mit Java zu beginnen. Dort warten zunächst weniger Stolpersteine auf dich und du wirst vermutlich schneller Ergebnisse sehen. Je nachdem welche Bibliotheken du dann nutzt lässt sich auch ein großteil des in Java gelernten wieder auf C++ Übertragen wenn das das langzeit Ziel ist.

Neben gamedev.net ist vielleicht auch zfx.info noch interessant.

Solltest du direkt in Richtung 3D gehen wollen ist vielleicht auch C# eine Überlegung Wert (DirectX).
 
http://www.spieleprogrammierer.de/ auch hilfreich.

Ps.: Du kannst ja schon programmieren, daher macht es eigentlich auch keinen Sinn über Umwege i-wann bei C++ zu landen.

Und ob man nun ein Spiel oder eine Anwendung in irgendeiner Programmiersprache schreibst, ist Jacke wie Hose, Lerneffekt ist überall gegeben. (Bei Spielen wird es ja erst durch Directx etc. interessant, ... )
 
Zuletzt bearbeitet:
e-Laurin schrieb:
Welche Art Spiele willst du denn schreiben? Ich mein', 3D-Spiele im Alleingang entwickeln, ist fast ein Ding der Unmöglichkeit. Kleinere 2D-Spiele liegen aber im Rahmen.

Als Seite kann ich dir http://www.gamedev.net/ empfehlen. Dort gibt es Artikel über alle möglichen Aspekte der Spielentwicklung.

Super, vielen Dank! :)
Natürlich will ich nicht sofort super 3D-Games entwickeln.
Starten werde ich sicher mit 2D Games, zum Beispiel dieser 2D-Spaceshooter aus dem Buch "C++ für Spieleprogrammierer".
Oder ein einfacheres Jump'n'Run oder so.

flopalko schrieb:
Meiner Meinung nach ist es nicht die beste Idee eine neue Programmiersprache durch die Programmierung von Spielen zu lernen. Dafür ist C++ zu schwierig.
Dass du C bereits beherrscht ist gut, somit wirst du dir beim Lernen von C++ nicht allzu schwer tun.
Mein Rat an dich wäre eben, dass du mal C++ lernst und auch beherrscht, dann steht dir sicher nichts mehr im Wege bezüglich Spieleprogrammierung ;)

Da habe ich mich wohl falsch ausgedrückt, tut mir leid! :)
Natürlich lerne ich C++ nicht direkt durch das Buch für Spieleprogrammierung, sondern mit dem Taschenbuch.
Das für die Spieleprogrammierung ist nur Zusatz.


Mortal schrieb:
flopalko hat nicht ganz unrecht.

Je nachdem wie gut oder eben schlecht du dich schon in C++ zurecht findest könnte es sinnvoll sein mit Java zu beginnen. Dort warten zunächst weniger Stolpersteine auf dich und du wirst vermutlich schneller Ergebnisse sehen. Je nachdem welche Bibliotheken du dann nutzt lässt sich auch ein großteil des in Java gelernten wieder auf C++ Übertragen wenn das das langzeit Ziel ist.

Neben gamedev.net ist vielleicht auch zfx.info noch interessant.

Solltest du direkt in Richtung 3D gehen wollen ist vielleicht auch C# eine Überlegung Wert (DirectX).

Danke für die andere Seite :)
Aber ich möchte eigentlich nicht zusätzlich noch Java oder C# lernen, wenn ich mit C++ schon angefangen habe.
Außerdem mag ich Java nicht, ist mir einfach zu Hardwarehungrig.

DasBoeseLebt schrieb:
http://www.spieleprogrammierer.de/ auch hilfreich.
Okay, super!
Jetzt hab ich dann schon 3 Seiten die ich mir mal zu gemüte führen kann :)

DasBoeseLebt schrieb:
Ps.: Du kannst ja schon programmieren, daher macht es eigentlich auch keinen Sinn über Umwege i-wann bei C++ zu landen.

Denke ich auch.

Nochmal danke für alle Antworten :)

mfG Bl4ck
 
Bl4ck M4ch!n3 schrieb:
Starten werde ich sicher mit 2D Games, zum Beispiel dieser 2D-Spaceshooter aus dem Buch "C++ für Spieleprogrammierer".
Oder ein einfacheres Jump'n'Run oder so.

Meine Seite ist das Forum zu den Büchern. :p
 
Bl4ck M4ch!n3 schrieb:
...
Aber ich möchte eigentlich nicht zusätzlich noch Java oder C# lernen, wenn ich mit C++ schon angefangen habe.
Außerdem mag ich Java nicht, ist mir einfach zu Hardwarehungrig.
...
Ich bezweifle dass das mit dem Hardwarehunger für dich ein Argument ist ;). Ich selbst habe meine ersten 5-6 Spiele in C++ geschrieben und später dann ein paar in Java und das ging doch wesentlich flüssiger von der Hand - daher meine Empfehlung.

Ich empfinde die beiden Sprachen auch von der Syntax her als sehr ähnlich und ich konnte eigentlich immer alles gelernte auf die jeweils andere Sprache übertragen.

Ich würde vorschlagen die Alternativen mal im Hinterkopf zu behalten - solltest du merken das dich Kleinigkeiten aufhalten. Schau vielleicht nochmal hier vorbei um zu sehen wie das so ist, Spiele in Java zu entwickeln ;) http://www.twitch.tv/notch
 
Zuletzt bearbeitet:
Schau dir bloß keinen Stil bei Notch ab. Als ich beim letzten Humble Bundle Stream zugesehen habe, musste ich fast ins Essen brechen. Aber gut, mag daran gelegen haben, dass sie etwas unter Zeitdruck waren. :freak:

Zur Spieleprogrammierung an sich - ich würde nicht ständig an Literatur/Tutorials kleben. Wenn du weit genug bist vom Können her Spiele zu programmieren, dann bekommst du die wichtigsten Dinge auch alleine gebacken bzw. liest dir mal ein paar Diskussionen zu verschiedenen game loop Varianten durch und bastelst dann selbst was Feines. Dabei lernt man auch viel aus eigenen Fehlern. Geht ja sicherlich nur um Hobbyprogrammierung bei dir.
 
Um in die Spieleprogrammierung einzusteigen würde ich zu C# + XNA raten. Da gibt es sehr gute Tutorials, man kann für Windows, Xbox und WP programmieren und erreicht relativ schnell gute Ergebnisse.
 
Wenn ich deinen ersten Post und dein Vorwissen genau angucke stellt sich mir vor allem die Frage:
Kannst du OOP? Das sollte man sich mal angelesen und durchdacht haben bevor man mit irgendeiner OOP Sprache in ein Projekt startet (egal ob nun C++, Java oder C#). Davon abgesehen hast du bestimmt genug Grundlagenwissen um mit beliebiger Sprache oder Lib weiter zu machen.
Die Frage ist dann eher: Willst du möglichst schnell ein brauchbares Ergebnis produzieren? Dann solltest du natürlich sowas wie XNA benutzen. Oder gehts dir eher darum C++ und zB OpenGL/Direct3D zu lernen? Dann sind entsprechende Gaming-Programming Seiten mit Tuts sicher das beste.
 
Ich würde dir auch zu XNA Raten
Ich mach damit auch viel und auch 3D sachen sind damit nicht unmöglich.

Kann dir da http://www.riemers.net/ seeehr empfehlen

das ist alles dabei bis hin zu richtig coolen 3D sachen :)
 
Werde mich wohl doch erst mit C# beschäftigen.
Nicht nur wegen dem XNA sondern auch weil das Playstation Vita SDK Open Beta ist und ebenfalls C# verwendet.

Kann dann später immer noch mit C++ experimentieren :)

Was wäre zum Einstieg in C# zu empfehlen?

mfG
 
Prinzipiell ist es nie schlecht sich mal mit einer sehr technisch tiefgehenden Sprache auseinandergesetzt zu haben, da man hier auch einfach seinen PC besser kennenlernt, und bei Problemen mehr Rat weiss. Mit C solltest das allerdings gut abgedeckt sein^^.
C# eignet sich denke ich auch mit am besten (neben Python) um einfach nur Spiele zu entwickeln.
Aber wenn man sich auch da mal für interne Abläufe interessiert, ist ein Blick in DirectX (oder die entsprechenden Open *L Varianten) sicher nicht verkehrt. Soll übrigens auch ganz hilfreich sein für das Verständnis von Fehlermeldungen und so ;).

Über performance würd ich mir keine Gedanken machen. Du wirst wahrscheinlich sowieso nie an die Grenzen der Sprache kommen, oder so krasse Titel entwickeln, dass ein Umstieg auf C++ nötig wäre ;).
Ich glaube man kann mit C# und Unity sogar für iOS entwickeln (da bin ich mir aber nicht sicher).

Bei Lektüre würde ich dir spontan auch zu dem openbook von Galileo raten, das Winterday vorgeschlagen hat. Ich selbst hab zwar keine Erfahrung mit C#, aber ein Freund hat sich das geholt und fand das sehr gut (hat auch gute Bewertung bei Amazon). Aber egal für welche Sprache du dich entscheidest, halt dich bitte von den Büchern von Jürgen Wolf fern (z.B. C/C++ von A bis Z).

Viel Spass beim lernen & viel Erfolg ;).
 
DirectX oder OpenGL direkt nur mit viel Kaffee oder Bier als Vorrat verwenden ansonsten drohen ernsthafte geistige Schäden ! :D

Ne jetzt mal Scherz beiseite. lowl-level 3D-Programmierung kann einen schon ziemlich nerven.
Kann man mit XNA eigentlich auch 3D -Spiele bauen?
 
Zuletzt bearbeitet: (tippfehler korrigiert)
blackst0rm schrieb:
Kann man mit XNA eigentlich auch 3D -Spiele bauen?
Ja.

Wer wirklich ein Spiel am Ende haben will, sollte direkt eine Engine dafuer nehmen. Allerdings spricht natuerlich nichts dagegen, sich mal in den Low-Level-Bereich zu wagen. Das kann man in aller Regel auch mit einer Engine machen.

Als Alternativen zu dem bisher genannten:

Java: LWJGL, jMonkeyEngine
Python: Pygame, Panda3D
C# (und andere): Unity

Dann gibt es natuerlich auch noch HTML5 und evtl. WebGL. Alles sehr interessant.

http://www.reddit.com/r/gamedev
 
Teddymaddy schrieb:
Ich glaube man kann mit C# und Unity sogar für iOS entwickeln (da bin ich mir aber nicht sicher).

Aber egal für welche Sprache du dich entscheidest, halt dich bitte von den Büchern von Jürgen Wolf fern (z.B. C/C++ von A bis Z).

Okay, Jürgen Wolf meiden :>

Das man C# auch für iOS nutzen kann ist mir eigentlich wumpe, ich kann Apple auf den Tod nicht ausstehen :D


blackst0rm schrieb:
DirectX oder OpenGL direkt nur mit viel Kaffee oder Bier als Vorrat verwenden ansonsten drohen ernsthafte geistige Schäden ! :D

Wenns hart auf hart kommt hol ich beides :freaky:
Aber wie gesagt, hat C++ jetzt erstmal Zeit.


character schrieb:
Als Alternativen zu dem bisher genannten:

C# (und andere): Unity

Dann gibt es natuerlich auch noch HTML5 und evtl. WebGL. Alles sehr interessant.

Okay gut, dann werd ich mich sobald ich mich besser mit C# auskenne mal mit der Unity-Engine befassen :)

Danke nochmal für eure Antworten! :)
Also ich hab mich jetzt mal ein paar Stunden mit dem Openbook für C# auseinandergesetzt.
Ist wirklich gut verständlich geschrieben :)

mfG
 
da gibts aber auch gute bücher für zu kaufen.
also n kumpel hat damit angefangen (ganz vereinfacht gesagt) bilder auf bilder auszugeben und bewegen zu lassen. gesteuert von nem user-input-thread. das ganze mit soundeffekten unterlegt etc.
und schon kannstes insgesamt spiel nennen. das ganze in turbo pascal unter dos.

danach hat er sich ne framebuffer-3d-engine in assembler geschrieben x_X
 
Zurück
Oben