[C/C++] Spieleprogrammierung

Dieses Thema im Forum "Programmier Tutorials" wurde erstellt von thecoolman4rr, 20. Juli 2007 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 20. Juli 2007
    Zuletzt von einem Moderator bearbeitet: 15. April 2017
    Spieleprogrammierung

    Ihr wollt Spiele "machen"/programmieren, wisst aber nicht wie? Dann seid ihr hier genau richtig! Ich habe nun bereits schon des Öfteren gesehen, dass Leute gerne Spiele "machen" wie manche es nennen würden, aber oft nicht wissen, wo und wie sie an Informationen über dieses Thema drankommen. Daher dachte ich mir, ich schreib mal einen schönen Thread in dem ich versuche alle bisherigen Informationen unterzubringen.

    als erstes solltet ihr euch allerdings im klaren sein, dass Spieleprogrammierung ein sehr dehnbarer Begriff ist. Was daher kommt, dass Spiel selbst schon sehr dehnbar ist. Ein einfaches Spiel kann Tic-Tac-Toe oder Stein-Schere-Papier sein, dass sich zumindest in Konsolengrafik(Textbasiert) schon nach wenigen Tagen von anfängern umsetzen lässt. Viele kommen allerdings hier nicht mit dem Gedanken hin ein einfaches Spiel zu programmieren, sondern wollen ein "High-End Next-Generation Megagame" machen und das möglichst in weniger als 2 Wochen. Hier zu ist ersteinmal zu sagen STOPP! Das geht nicht! Es gibt viele Programme die nach einigen Tagen ein recht brauchbares Ergebnis liefern, allerdings niemals High-End und nicht eurer Vorstellung entsprechend! Wenn man logisch überlegt, kommt man auch auf den Grund: Spielefirmen haben oftmals dutzende von Mitarbeitern(Profis) die sich nur mit der Umsetzung eines einzigen Spiels beschäftigen! Sie stecken viel Geld und vor allem auch Zeit in die Entwicklung! Es gibt wenige Spiele die in unter einem Jahr komplett entwickelt wurden!
    Da ich mal vermute, dass ihr keine Profis seid (sonst würdet ihr hier wohl nicht gucken), bräuchtet ihr noch mal länger. Und erst recht wenn ihr alleine seid.
    Wenn ihr jetzt denkt "Ey man wassen asi, der soll mir meinen Traum doch nicht kaputt machen!", sorry! aber ich bin in dem Fall nur einigermaßen realistisch, da noch kein Meister vom Himmel gefallen ist und ich möchte eure Erwartungen (auch an euch selbst) ein wenig zurückschrauben, damit ihr nachher nicht enttäuscht seid, weil es doch alles nicht so einfach geht.

    Ich unterteile das hier jetzt in 3 Teile: 1. Konsolengames(Textbasierte Spiele), 2. 2D-Spiele(Jump'n'Runs etc.) 3. 3D-Spiele

    1. Konsolengames(Textbasierte Spiele)
    Konsolengames sind textbasierte Spiele, die oft eine art "Frage und antwort"-Spiel sind. Bsp.: Stein-Schere-Papier: Der Spieler drückt z.B. 1 für Stein, der Computer generiert zufällig eine Zahl zwischen 1 und 3, und guckt dann den Spielregeln entsprechend (Stein besiegt Schere etc.), wer gewonnen hat gibt aus ob der Spiele oder der Computer gewonnen hat und beginnt evt. die nächste Runde. Hier mal eine animation, wie eine textbasierte Umsetzung aussehen könnte:
    {bild-down: http://1-klick-hoster.de/out.php?i=1915_SteinScherePapier.GIF}
    (leider etwas verzerrt)
    Wie man sieht, kann von Grafik nicht wirklich die Rede sein, von Spiel aber sehr wohl.
    Tutorials für solche Spiele gibt es meist sehr wenige, da sie so einfach aufgebaut sind, dass jeder sie sich selber ausdenken kann, sobald er eine Programmiersprache beherscht. Daher empfehle ich jedem der soetwas oder ähnliches programmieren möchte zuerst einmal eine Programmiersprache zu erlernen. Diese textbasierten Spiele kann man in nahezu jeder Programmiersprache umsetzen, Tutorials dazu findet ihr hier(Tutorialzone RR)

    2.2D-Spiele(Jump'n'Runs etc.)
    Was 2D-Spiele sind dürfte jedem klar sein, daher lasse ich die Erklärung hier weg und komme direkt zum Thema.
    allgemein gibt es hier 2 Möglichkeiten, die allerdings recht fließend in ein ander übergehen können: 1. Ihr benutzt ein Programm wie z.B. den RPG-Maker, dass euch bereits eine Engine bereitstellt und das es euch ermöglicht möglichst fern der Programmierung zu bleiben alles "per Klick" zu machen. Was lediglich die Freiheit beim erstellen einschränkt. Infos:
    YoYoGames - Gamemaker 7.0
    The Scrolling Game - Development Kit
    adventuregamestudio
    RPG-Maker XP
    Google

    Die 2. Möglichkeit ist, eine höhere Programmiersprache zu lernen, wobei ich C++ empfehlen würde, und selber eine kleine 2D-Engine zu schreiben. Wenn ihr jetzt nicht wisst, was eine Engine ist Wiki: Spiel-Engine. Diese Möglichkeit bringt den Vorteil, dass eure gestalterische Freiheit nur durch euer können in der Programmierung eingeschränkt ist. abgesehen davon, lernt ihr eine Programmiersprache, was bedeutet, dass ihr sie nicht nur zum Spieleprogrammieren, sondern auch für "normale" Programme einsetzen könnt.
    Beim Engineschreiben könnt ihr dann auf verschiedene "Schnittstellen" zurück greifen, wie z.B. DirectX, SDL, ClanLib oder allegro um nur ein paar zu nennen. Diese einzelnen Schnittstellen sind unterschiedlich schwer zu bedienen und zu verstehen und bieten z.T. unterschiedlich viel Leistung. allgemein würde ich sagen, sollte einer 2D-Programmierung eine textbasierte Programmierung vorrausgehen, damit die Grundlagen sitzen.
    Infos:
    amazon: C++ für Spieleprogrammierer Meiner Meinung nach ein sehr gutes Buch, mit dem man zuerst einmal die Grundkenntnis in C++ beigebracht bekommt und dann am Ende des Buches ein 2D-Spiel programmiert.
    Beschäftigt sich mit der Spieleprogrammierung unter C++
    RR-Thread about it
    RR-Thread about it
    RR-Thread about it

    3. 3D-Spiele
    auch hier dürfte klar sein, was gemeint ist, wesshalb die Erklärung wieder ungeschrieben bleibt.
    Die 3D-Spiele-Programmierung ähnelt der 2D-SpieleProgrammierung sehr stark, bis eben darauf, dass sie die dritte Dimension mit einschließt, und noch einmal um einiges komplizierter und aufwendiger ist als die 2D-Spiele-Programmierung. Wie schon bei der 2D-spieleProgrammierung gibt es 2 Möglichkeiten das ganz anzugehen: 1. Vorgefertigte Engines, in diesem Falle wäre wohl als eine der bekanntesten das 3D-Gamestudio zu nennen. Es bietet komplett ohne Programmierung bereits viele Möglichkeiten, die durch das Erlernen einer C/C++-ähnlichen Scriptsprache vervielfacht werden können.
    Infos:
    The 3D Gamemaker
    3d games creator - Dark Basic Professional
    3D-Gamestudio
    Google: 3d game creater
    Google: 3d game maker

    Die zweite Möglichkeit ist auch hier wieder, sich eine eigene Engine usw. zu schreiben. Dafür empfehle ich nun gerade bei 3D C/C++, da sie die leistungsstärksten(entsprechender Code vorrausgesetzt) Programmiersprachen sind. Wer sich tatsächlich hiermit auseinandersetzen möchte, der sollte am besten zuerst einmal mit 2D-Engines & Games anfangen, welches ja wiederum wie oben geschrieben gute bis sehr gute Kenntnisse in der jeweiligen Programmiersprache vorraussetzt. auch hier gibt es dann wieder verschiedene Schnittstellen auf die zurückgegriffen werden kann: DirectX, SDL oder OpenGL um wieder nur ein paar zu nennen. Wer sich tatsächlich mit diesem Thema auseinander setzen will(also bereits Konsolen- und 2D-Spiele gemacht hat), wird vermutlich selber in der Lage sein um entsprechende Suchwörter zu finden und bei Google einzugeben . als Buchtipp habe ich jetzt schon desöfteren "3D-Spieleprogrammierung mit DirectX 9 und C++" gesehen, kann mir allerdings selber darüber kein Urteil darüber erlauben, da ich es nicht selber gelesen habe.


    /!\ Zu beachten /!\
    Es gibt ein paar Dinge, die man auf keinen Fall machen sollte:
    - in großen Foren nach "m8tes" suchen um den nächsten High-End Megahit zu programmieren
    - den nächsten High-End Megahit ankündigen (am besten auf nächste Woche)
    - Posts erstellen ohne vorher Google bzw. die Board-Sufu benutzt zu haben

    - sich von alle dem abschrecken lassen

    Zum Ende hin, möchte ich noch einmal etwas zum aufwand zitieren um vielleicht viele Leute aus ihren Träumen zurück in die Realität zu holen:
    So das war's vorerst von mir. Falls euch noch sinnvolle Sachen einfallen, die hier umbedingt rein sollten oder ihr noch gute Tutorials habt: immer man posten!

    mfg thecoolman4rr

    // Edit by Kolazomai:
    ~moved~
    Tutorial ist es besser aufgehoben -> Sticky.
     
  2. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.