Leitfaden/Starthilfe zum Spiele programmieren
-
Dobi schrieb:
dass das für mich damals tagelangen Brechreiz bedeutet hat
Hm na ja. Die WinAPI ist natürlich uralt und entsprechend hässlich, aber zumindest relativ streamlined und das msdn ist auch recht sauber. Für Spiele will man ja auch nicht wirklich was machen außer ein Fenster öffnen + Input verarbeiten. Sollte schon gehen.
-
cooky451 schrieb:
Für Spiele will man ja auch nicht wirklich was machen außer ein Fenster öffnen + Input verarbeiten. Sollte schon gehen.
Ja, aber dann kann man auch gleich SFML benutzen, hat einen Bruchteil des Codes und bleibt dann noch portabel. Falls man eines Tages dann doch die WinAPI braucht, kann man sie immer noch anschauen.
Positiv, wie viel C++ kannst du denn schon? Bücher, die dir gleichzeitig C++ und Spieleprogrammierung beibringen, gibts meiner Erfahrung nach wenig sinnvolle. Ich würde mich eher auf ein gutes C++-Buch konzentrieren, und das im Voraus (oder notfalls parallel dazu) lesen.
-
Oh, SFML kann einem auch einen DirectX Kontext geben? Wusste ich gar nicht.
-
cooky451 schrieb:
Oh, SFML kann einem auch einen DirectX Kontext geben? Wusste ich gar nicht.
DirectX war keine Anforderung, das hast du erwähnt. Der Threadersteller sprach lediglich von "Hobby-Nachwuchs-Spiele programmieren".
Positiv, vielleicht solltest du etwas genauer erwähnen, was du genau willst. Möchtest du einen schnellen Einstieg in die 2D-Spieleprogrammierung? Dann ist SFML sicher eine gute Wahl. Möchtest du lieber die zugrunde liegenden Techniken kennenlernen? Dann kannst du direkt mit OpenGL oder DirectX beginnen. Damit brauchst du um einiges länger, um an ähnliche Resultate zu kommen, dafür hast du vertiefte Kenntnisse über hardwarenahe Abläufe.
Am besten schaust du dir auch mal die SFML-Homepage an, damit du einen Eindruck über die Funktionalität bekommst. Wenn du einen Blick in die Tutorials wirfst, siehst du recht genau, wie einzelne Dinge realisiert werden.
-
Nexus schrieb:
Positiv, wie viel C++ kannst du denn schon?
Standard Dinge wie Syntax, Variablen, Schleifen, Funktionen usw.
Nexus schrieb:
Positiv, vielleicht solltest du etwas genauer erwähnen, was du genau willst.
Zu Anfang möchte ich 2D-Spiele programmieren. Angefangen mit sich drehenden Quadraten über Kopien von Spielen à la Doodle Jump und Space Invaders würde ich dann übergehen in eigene komplexere Abenteuer- und Strategiespiele. Anschließenden würde ich in die 3D-Welt mit einem Minecraft oder Slenderman Klon einsteigen - Soweit mein bisheriger Plan.
Nexus schrieb:
Möchtest du einen schnellen Einstieg in die 2D-Spieleprogrammierung? Dann ist SFML sicher eine gute Wahl. Möchtest du lieber die zugrunde liegenden Techniken kennenlernen? Dann kannst du direkt mit OpenGL oder DirectX beginnen. Damit brauchst du um einiges länger, um an ähnliche Resultate zu kommen, dafür hast du vertiefte Kenntnisse über hardwarenahe Abläufe.
Was genau wär der Vorteil von Kenntnissen über hardwarenahe Abläufe?
Danke für eure Hilfe
-
Positiv schrieb:
Standard Dinge wie Syntax, Variablen, Schleifen, Funktionen usw.
Okay, dann musst du definitiv noch mehr C++ lernen. Klassen, Polymorphie, Templates, STL, Zeiger und RAII sind z.B. sehr wichtige Themen.
Positiv schrieb:
Zu Anfang möchte ich 2D-Spiele programmieren. Angefangen mit sich drehenden Quadraten über Kopien von Spielen à la Doodle Jump und Space Invaders würde ich dann übergehen in eigene komplexere Abenteuer- und Strategiespiele. Anschließenden würde ich in die 3D-Welt mit einem Minecraft oder Slenderman Klon einsteigen - Soweit mein bisheriger Plan.
Okay, das klingt vernünftig. Ich würde dir raten, mit SFML 2 anzufangen, dann kommst du relativ schnell voran. Vernachlässige aber nicht Game-Architekturen oder C++ an sich, die verwendete Grafikbibliothek wird nur ein kleiner Teil in deinen Projekten sein.
Positiv schrieb:
Was genau wär der Vorteil von Kenntnissen über hardwarenahe Abläufe?
Es kommt halt wieder drauf an, was du genau machen willst. Generell hast du so natürlich mehr Möglichkeiten, spezifische Features einzubauen, besonders im 3D-Bereich. Die Frage ist, ob du das brauchst, denn Open-Source-Bibliotheken bieten üblicherweise schon recht viel fertig an. Auch sparst du mit ihnen ein Vielfaches an Zeit und Aufwand. Wir hatten kürzlich eine Diskussion darüber.
-
Nexus schrieb:
Positiv schrieb:
Standard Dinge wie Syntax, Variablen, Schleifen, Funktionen usw.
Okay, dann musst du definitiv noch mehr C++ lernen. Klassen, Polymorphie, Templates, STL, Zeiger und RAII sind z.B. sehr wichtige Themen.
Bis auf Polymorphie und RAII kann ich mit den Begriffen etwas anfangen.
Nexus schrieb:
Positiv schrieb:
Was genau wär der Vorteil von Kenntnissen über hardwarenahe Abläufe?
Es kommt halt wieder drauf an, was du genau machen willst. Generell hast du so natürlich mehr Möglichkeiten, spezifische Features einzubauen, besonders im 3D-Bereich. Die Frage ist, ob du das brauchst, denn Open-Source-Bibliotheken bieten üblicherweise schon recht viel fertig an. Auch sparst du mit ihnen ein Vielfaches an Zeit und Aufwand. Wir hatten kürzlich eine Diskussion darüber.
Das mit dem Zeit und Aufwand sparen ist natürlich am Anfang verlockend. Aber wenn ich dann weiter mache, dann möchte ich möglichst wenig fertig verpacktes benutzen. Ich bin es ja schließlich, der da programmiert und etwas mehr oder weniger einzigartiges schaffen möchte.
Danke für die Hilfe.
-
Positiv schrieb:
Bis auf Polymorphie und RAII kann ich mit den Begriffen etwas anfangen.
Du musst nicht nur die Begriffe kennen, sondern auch die Konzepte dahinter verstehen
Das ist nicht nur leeres Bla Bla, gerade bei C++ verbirgt sich hinter einem Sprachmittel oft mehr als man denkt. Spieleentwicklung ist an sich schon komplex genug, da sind gute Sprachkenntnisse von enormem Vorteil. Aber das nur am Rande...
Positiv schrieb:
Das mit dem Zeit und Aufwand sparen ist natürlich am Anfang verlockend. Aber wenn ich dann weiter mache, dann möchte ich möglichst wenig fertig verpacktes benutzen. Ich bin es ja schließlich, der da programmiert und etwas mehr oder weniger einzigartiges schaffen möchte.
Erstens wirst du niemals alles selbst programmieren können, du musst immer auf Bibliotheken von anderen zurückgreifen. Zweitens interessiert die Spieler das Resultat mehr als die zugrunde liegende Technologie -- solange letztere Faktoren wie Portabilität, Stabilität und Performance nicht negativ beeinflusst.
Daher ist die Frage eher, welche Features du benötigst, und wie viel du von der Flexibilität von Low-Level-APIs profitierst. Viel Konkreteres kann man dazu nicht sagen. Am besten schaust du zu gegebener Zeit nach, welche Möglichkeiten dir offen stehen, und wählst die am besten passende. Du kannst auch mehrere Ansätze ausprobieren, dann wirst du schon herausfinden, was dir am besten gefällt
-
Jo, und mit dem alles-selbst-machen ist das halt so eine Sache. Als ich noch klein war, fand ich das auch toll und uncool wenn man viel fertiges benutzt. Aber wo hörts dann auf, was ich nocht von anderen benutzen will? Grafik-Engine? Grafikkartentreiber? Betriebssystem? Bios? CPU/GPU? Transistoren selbst zusammenlöten? Rohstoffe dafür selbst im Berg abbauen?
Klar ist es super wenn man von möglichst viel Ahnung hat, aber man kann nicht alles bis ins letzte Details kennen und vorallem selbst machen, weil dafür das Leben zu kurz ist.
-
He Dobi, du bringst mich auf eine Idee.
Ist es möglich ein Hallo-Welt-Programm, was in C++ geschrieben wurde zu 100% zu verstehen? Also das man wirklich vom Doppelklick auf die Exe bis zur Bildschirmausgabe alle Code- und Signalpfade kennt und versteht.
Ich denke das kein Mensch alleine das schafft. Man könnte immer weiter ins Detail gehen und wirklich jeden kleinen Scheiß bis in die Atome betrachten. Die Fragen wie das denn nun GENAU geht, würden kein Ende nehmen.
-
Verstehen (wenn auch nicht unbedingt nachbauen) bis zur elektrischen Ebene kann ich mir schon vorstellen. Spätestens aber wenns in den Subatomaren Bereich geht, kommt man ja irgendwann an bisher generell nicht beantwortete Fragen. Und jenachdem wie penetrant du dann bist, kannst du eh immer nen infiniten "Warum?-"Regress fahren, bis du wieder bei "Keine Ahnung." angekommen bist. Klar, dann kannst du sagen, dass irgendein Einhorn-reitender Gott das gemacht hat, aber das löst das Problem ja auch nicht, weil man dann wieder fragen kann, wo der denn herkommt usw.