Spiele programmieren..wie anfangen?
-
Hey Leute
zunächst einmal ich beschäftige mich zwar mit c++ und ich denke dass ich mit den grundkenntnissen ganz gut dabei bin(arrays,pointer,klassen,usw).Von anfang an war mir klar , dass ich mit meinen erworbenen kenntnissen in die spielebranche gehen will.
jetzt zu meinem problem:
es heisst immer man braucht programmierkenntnisse (bei mir c++) um sich mit spiele programmieren zu beschäftigen.
ehrlich gesagt sagt mir das nie viel,weil ich nicht weiss WIE VIEl kenntnisse ich brauche um damit anfangen zu können.die zweite sache ist,dass ich gar keinen plan habe wie oder wo ich anfangen soll.
mit youtube videos habe ich bisher keine guten erfahrungen gemacht (zumindest nicht beim programmieren von spielen). daher würde ich mir viel lieber ein gutes buch darüber durchlesen um auch wirklich tief in die materie einzudringen.
nur WELCHES buch ist denn dafür geeignet?also ich suche kein buch ,dass für komplette anfänger ist(ich habe c++ für dummies)aber auch kein buch für absolute fortgeschrittene.
vielleicht sehen jetzt die einen oder anderen , dass ich gar nicht weiss an welchem punkt ich beginnen soll.
klärt mich auf das würde mich freuen!
danke vielmals für eure aufmerksamkeit
-
Wenn Du Spiele programmieren willst und C++ allgemein bereits gut genug kannst, dann solltest Du Dir eine von den simpel zu benutzenden Bibliotheken nehmen (also nicht DirectX, sondern SDL oder SFML) und dort eins der Tutorials lesen. Damit solltest Du relativ schnell Ergebnisse bekommen.
Das "Schwierige" beim Spieleprogrammieren ist meiner Meinung nach die Ausgabe der Grafik etc. Das ganze Benutzen dieser Bibliotheken.
Das nehmen Dir SDL und SFML ja dann weitgehend ab.Die eigentliche Spiellogik ist nur allgemeines Programmieren. Wenn Du also wirklich gut programmieren kannst, dann solltest Du auch relativ fix Spiele programmieren können.
-
danke für deine antwort!
ja von sdl habe ich zum beispiel noch nicht gehört. das werde ich dann mal angehen danke!:)
-
Hey
eniddelemaj schrieb:
jetzt zu meinem problem:
es heisst immer man braucht programmierkenntnisse (bei mir c++) um sich mit spiele programmieren zu beschäftigen.
ehrlich gesagt sagt mir das nie viel,weil ich nicht weiss WIE VIEl kenntnisse ich brauche um damit anfangen zu können.wenn dein Ziel ist, ein halbwegs fertiges Spiel zu schreiben, dann brauchst du kaum Programmierkenntnisse.
Wenn du low-level Sachen wissen willst, wie das geht, dann natürlich schon.
Also grob würde ich das so einteilen:- OpenGL & co: lernst von 0 auf; Erfolgschance auf ein fertiges Spiel: 0.1%
- Sfml/SDL & co: Viel Kontrolle, macht spass und kann auch was Kleines bei rum kommen
- Unity/Unreal & co: Viel weniger Programmierkenntnisse erforderlich, dafür viel Einarbeitung in die Engine. Grundlegende Mechaniken, bei denen du sonst Monate bräuchtest, hast du an einem Nachmittag fertig.Kurz und knapp: Geht es darum eine Spielidee umzusetzen, dann beschäftige dich nicht mit Programmierung, sondern mit einer Engine.
Ansonsten ist Sfml oder Sdl sicher ein guter Einstieg.ps: Wenn du dich für eine Engine entscheidest, dann solltest du dich allerdings mit Youtube-Filmchen anfreunden. Die sind da nämlich ausnahmsweise mal so richtig hilfreich - zumindest die offiziellen.
-
Wirf auch mal einen Blick auf Cinder: https://libcinder.org/
-
Jockelx schrieb:
Hey
eniddelemaj schrieb:
jetzt zu meinem problem:
es heisst immer man braucht programmierkenntnisse (bei mir c++) um sich mit spiele programmieren zu beschäftigen.
ehrlich gesagt sagt mir das nie viel,weil ich nicht weiss WIE VIEl kenntnisse ich brauche um damit anfangen zu können.wenn dein Ziel ist, ein halbwegs fertiges Spiel zu schreiben, dann brauchst du kaum Programmierkenntnisse.
Wenn du low-level Sachen wissen willst, wie das geht, dann natürlich schon.
Also grob würde ich das so einteilen:- OpenGL & co: lernst von 0 auf; Erfolgschance auf ein fertiges Spiel: 0.1%
- Sfml/SDL & co: Viel Kontrolle, macht spass und kann auch was Kleines bei rum kommen
- Unity/Unreal & co: Viel weniger Programmierkenntnisse erforderlich, dafür viel Einarbeitung in die Engine. Grundlegende Mechaniken, bei denen du sonst Monate bräuchtest, hast du an einem Nachmittag fertig.Kurz und knapp: Geht es darum eine Spielidee umzusetzen, dann beschäftige dich nicht mit Programmierung, sondern mit einer Engine.
Ansonsten ist Sfml oder Sdl sicher ein guter Einstieg.ps: Wenn du dich für eine Engine entscheidest, dann solltest du dich allerdings mit Youtube-Filmchen anfreunden. Die sind da nämlich ausnahmsweise mal so richtig hilfreich - zumindest die offiziellen.
also es ist jetzt nicht so dass ich programmieren doof oder "zu schwer " finde. ich liebe es zu programmieren und ich habe mir auch mühe gegeben das alles zu lernen was ich kann.also wenn ich meine programmierkenntnisse darauf anwenden kann ,dann kann ich das nur gut heißen.abgesehen davon weiss ich gar nicht was eine "engine" genau ist.
was meinst du mit "erfolgschance 0.1 %"?
ja mit sfml hab ich jetzt wirklich vor kurzem angefangen. Je nachdem ob ich vernünftiges material finde lässt sichs auch gut damit lernen.
-
Tic-Tac-Toe, Pong, Tetris, Schiffe versenken, 4-Gewinnt,
Asteroids, Memory, Breakout/Arkanoid, Solitaire, Pac-Man, Hang-man,
Snake, ...Dabei sei erwähnt, dass manche dieser Spiele nicht gerade trivial sind. Es ist außerdem ein großer Abstand zwischen "spielbarer Grundversion" und einem vollwertigen Spiel mit Menü, verschiedenen Spielmodi, Highschoreliste, ...
Oder einfache eigene Ideen. Bei meinem ersten Projekt musste man ein Quadrat steuern, und anderen Quadraten ausweichen. Das witzige war, dass ich nichtmal einen timestep hatte...
Erfahrungsgemäß sollte man sich nicht gleich große Dinge ausdenken, mit voll viel Action und Items und coolen Animationen/Effekten und und und... Da wird man schnell frustriert mit.
Hier ist der Code aus einem persönlich zu empfehlenden Buch zu SFML. Das ist in 10 "Phasen" aufgeteilt, und ich denke davon kann man sich das eine oder andere abschauen (auch wenn die Erklärungen dazu fehlen).
https://github.com/SFML/SFML-Game-Development-Book
-
Ich sehe das wie hardware, einfach anfangen kleine Sachen zu programmieren. Ich hab auch nicht erstmal jahrelang eine Programmiersprache gelernt sondern mit 3-4 Basic Befehlen angefangen was zu programmieren.
-
@eniddelemaj:
Ich kann mich dem was hardware und TGGC geschrieben haben grundsätzlich anschliessen.Wozu ich noch etwas schreiben wollte ist deine Antwort auf Jockelx' Beitrag. Programmieren musst du grundsätzlich immer können, auch wenn du eine Engine wie Unity verwendest. Der Unterschied ist: bei einer Engine wie Unity hast du viele Dinge bereits fertig dabei, wie das ganze Handling von 3D Szenen, Kamera, Shadern, Animationen etc. Die Spielmechanik musst du aber trotzdem selbst programmieren. D.h. auch dabei kannst bzw. musst du deine Programmierkenntnisse einsetzen. (Bei Unity müsstest du zwar C# oder JavaScript lernen, aber so wild ist das nicht, da ist man relativ schnell so weit drinnen dass man die relativ einfachen Dinge die man für das Zusammenstoppeln von Spielen mit Unity braucht hinbekommt.)
Bei einfacheren Engines oder Libraries wie SFML ist viel weniger dabei, von daher musst du viel mehr selbst programmieren. Auch so grundlegende Dinge wie deinen Frame-Loop, das schrittweise Versetzen von Objekten um flüssige Bewegungen zu erreichen etc. Dadurch wirst du mit SFML & Co. deutlich länger brauchen. Dafür allerdings auch mehr von diesen Dingen lernen.
Kommt also drauf an was du machen/erreichen willst. Wenn dein ziel hauptsächlich ist ein Spiel fertig zu bekommen, dann bist du mit einer Engine wie Unity wohl am besten beraten. Wenn du allerdings verstehen willst wie bestimmte Dinge "unter der Haube" funktionieren, dann ist wohl eine Engine die dir nicht ganz so viel abnimmt besser, wie eben SDL oder SFML, besser.
-
ergänzend zu hustbaer/TGGC/hardware:
dass ich mit meinen erworbenen kenntnissen in die spielebranche gehen will.
Spiele Programmierer != SpieleProgrammierer. Wenn bei größeren Studios arbeitest / arbeiten willst, spezialisierst Dich auch.
Ebenso werden deine Ambitionen einfluss auf deine Games haben, wenn du noch allein testest / programmierst ^^
Man sieht nem Game an, ob Wert auf, Künstliche Intelligenz, Leveldesign, hardwarelastige Grafikausgabe gelegt wurde ....Wenn C++ und Grafik deine Ambitionen sind ... sehr gut.
Dann vergiss unity ^^ vorerst.
Fang mit rudimentäreeren Dingen an ... Lern zu verstehen wie die Grafik Pipeline ner modernen Graka funktioniert.
Setz dich mit Shadern auseinander ... hasst das geschnallt, nen kurzer exkurs zu GPU Kernel ... also Shader Programmierung ohne Grafikausgabe ... aka GPU Beschleunigung der "normalen" Programmierlogik ...Spastestens hier wirst merken, ob dir mehr Programmlogik liegt, oder das optimieren der Darstellung (aufwendinge Postprocess effekte -> Beluchtung Schatten etc) ....
Zum programmieren reicht bis dahin einfaches C++ und grundkentnisse in den gängigen low level Grafik API's (Opengl/Vulkan und DirectX).
Bei DirectX kommt noch nen kuzer Crashlurs in COM hinzu ...
Am ende ist das aber einfacher zu verstehen als komplexe 3D Environment Biblios aka Unity/Ogre/CryEngine ...Für Shader kommst am Anfang sogar auch ohne C++ aus. Lern den Umgang mit Blender oder nem anderen Tool, was eigene Meshes + eigene Shader darstellen kann. Zum Testen und Prototyping gold wert!
Falls eher logik deine Ambitionen sind ... dann sind vielleicht neuronale Netze, was auf das du dich stürzen könntest.
Ciao ...
-
Moin,
Du solltest dir als erstes mal klar machen, was du willst.
Es ist ein riesen Unterschied ob du ein Spiel programmieren möchtest, oder ob du ein Spiel designen willst. Beim ersten würde ich dir auch zu SFML raten. Das ist nett, wenn man sich eine Spiele Engine programmieren möchte.
Für den zweien Fall kann ich dir nur raten, dich in eine Spiele Engine wie Unity, Ogre oder UT einzuarbeiten. Da kannst du dich eher auf dein Spiel konzentrieren,Grüße