Ich möchte Spiele programmieren, wie geht das



  • Da hier im Forum immer mal die Frage auftaucht
    "Ich möchte Spiele programmieren, wie geht das ?"
    habe ich mich entschlossen das ganze mal für die
    FAQ festzuhalten. Ich poste den Text zuerst hier,
    wenn ihr noch Ergänzungen/Fragen o.ä. habt könnt
    ihr die dann hier auch hinschreiben...

    Ich möchte Spiele programmieren, was für Vorkenntnisse
    brauche ich ?

    Du solltest sehr gut in C/C++ programmieren können.
    "Sehr gut programmieren können" heißt dass du das
    Prinzip von C/C++ verstanden hast. D.h. du musst
    wissen was Pointer, Arrays, Referenzen usw sind, und
    du musst wissen wie man sie anwendet...
    C++ ist meiner Meinung nach die optimalere Sprache
    wenn du Spiele programmieren willst. Klar, in C geht
    das auch, aber C++ ist eben objektorientiert.
    Besonders wenn deine Spiele größer werden, werden
    Klassen, Vererbungen, Kapselung von Daten...
    unentbehrlich.
    Kenntnisse in der WinAPI sind auch sehr hilfreich,
    wenn IMHO nicht zwingend erforderlich. Es ist eben
    hilfreich wenn man weiß was HWNDs, HANDLES, HINSTANCES,
    WM_??? Messages usw sind.
    Mit der MFC musst du dich nicht auskennen. Man
    kann zwar auch Games mit der MFC proggen, das ist
    aber sehr unüblich (die MFC ist zu "fett" für Games,
    viel von dem Ballast braucht man gar nicht)

    So, dass sind die Programmierkenntnisse die du haben
    solltest bevor du dich ernsthaft mit der Spieleprogrammierung
    auseinandersetzen möchtest.
    Natürlich brauchst du noch jede Menge Zeit (!!), viel
    Gedult und Motivation und natürlich Spaß dich mit
    neuen Techniken auseinanderzusetzen.

    Die Mathematik die in der Spieleprogrammierung verwendet
    wird (besonders in 3D Games) sollte für jeden zu
    schaffen sein der in der 10.ten Klasse ist 😉
    Es ist IMHO nicht wichtig alles zu verstehen, es ist
    wichtig zu wissen wie man die Sachen anwendet !

    Was für Software brauche ich ?

    Du brauchst erstmal einen C oder C++ Compiler.
    Der Standardcompiler, der von ca. 90% aller Spieleentwickler
    eingesetzt wird ist Visual C++ von Microsoft.
    Es gibt soweit ich weiß auch ne Testversion die du
    dir kostenlos aus dem Internet runterladen kannst.
    Einzige Einschränkung : Du darfst die EXEcutables nicht
    weitergeben...

    • Wenn du dich entscheidest in DirectX zu programmieren,
      brauchst du das DirectX8 SDK. Das gibts
      bei Microsoft, ein genauer Link im FAQ.
      Die Dateigröße beträgt ca 120 MB...
    • Wenn du dich entscheidest OpenGL zu verwenden
      brauchst du das OpenGL SDK. Das gibts
      bei www.zfx.info und www.flipcode.com

    HILFEE ! Gibts das Tutorial/Buch auch in Deutsch,
    hier ist alles Englisch

    Nein ! Es ist leider so, fast alle gute Tuts/Books zum
    Thema Spieleprogrammierung sind nunmal auf Englisch...

    Was soll ich lernen ? OpenGL ? DirectX ? Beides ??
    Was von beiden ist besser/schneller ?

    Es gab hier schon dutzende von Flamewars die sich
    damit beschäftigt haben was jetzt besser/schneller/einfacher
    ist.
    Gehen wir die Punkte der Reihe nach durch :

    • Welche API ist besser ?
      Beide unterstützen so ziemlich die gleichen Features.
      Keine der beiden APIs ist der anderen in einem Punkt
      stark unter/überlegen.
    • Welche API ist schneller ?
      Beide sind gleich schnell ! Es kommt auf den Programmierer
      an was er aus "seiner" API rausholt...
    • Welche API ist einfacher ?
      Gute Frage !
      Allgemein gilt : 90% der Arbeit in DirectX liegt im
      Initialisierungscode, d.h. dem Ändern der Auflösung,
      aktivierung der verschiedenen Features usw.
      Meine D3D Initcode hat ca. 500 Zeilen (natürlich
      per Copy&Paste übernommen, nicht selbstgeschrieben 🙂
      Die Funktionen und das Handling von DirectX ist -wenn
      es denn mal initialisiert wurde- mehr oder weniger
      gleichschwer mit OpenGL.

    OpenGL ist relativ einfach zu verwenden, der Initcode
    erstreckt sich über relativ wenig Zeilen (oder ??).

    Der Große Vorteil von DirectX ist für Anfänger aber
    sicherlich DirectDraw, eine recht einfach zu benutzende
    API für 2D Spiele. Leider gibts im aktuellen
    DirectX8 SDK keine Hilfe mehr dazu, viele ältere Bücher handeln
    aber noch über DirectDraw.
    Außerdem gibts bei DirectX noch DirectInput (für die
    Eingabe), DirectSound (für Sound *surprise*), DirectPlay (fürs
    Netzwerk) ...

    Was jetzt aber die einfachere der beiden APIs ist, will/kann ich
    pauschal aber nicht sagen.
    (Kleiner Denkanstoß am Rande : 90% aller Games werden
    in Direct3D programmiert, 10% in OpenGl. Dafür werden fast 90%
    aller professionellen Anwendungen (CAD, 3D Modeller..)
    in OpenGL programmiert... OpenGL gibts auch für Linux, DX nicht)

    Ich habe ein Problem mit ??? / Eine Frage zu ??? Wer hilft mir
    Die wichtigste Quelle für Informationen ist sicher www.google.de !!
    Auch sehr gut ist www.google.de.
    Natürlich kannst du deine Fragen auch hier
    (www.c-plusplus.net/forumstart.html) im Spiele&Grafikforum posten.
    Guck aber vorher mal im FAQ nach, die Chancen stehen gut dass
    deine Frage dort schon beantwortet wurde.
    Achja, hab ich www.google.de schon erwähnt *g* ?



  • Original erstellt von Headhunter:

    • **Wenn du dich entscheidest OpenGL zu verwenden
      brauchst du das OpenGL SDK. Das gibts
      bei www.opengl.org (oder ??).
      Die Dateigröße beträgt ca. ?? MB
      **

    Nicht unbedingt. Die Dateien sollte jeder Compiler schon von Haus aus dabei haben. (Sollten vielleicht die Leute wissen, die sich die 130MB nicht ziehen können)


Anmelden zum Antworten