Vollständige Version anzeigen : [C/C++] Spieleprogrammierung


thecoolman4rr
20.07.2007, 14:39

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: ;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 (;de;wikipedia~org/wiki/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 (;;;yoyogames~com/gamemaker/)
The Scrolling Game - Development Kit (;gamedev;sourceforge~net/)
Adventuregamestudio (;;;adventuregamestudio;co~uk/)
RPG-Maker XP (;;;rpgmaker-xp~de/)
Google (;;;google~de/search?num=100&hl=de&safe=off&q=2d+game+maker&btnG=Suche&meta=)

Die 2. Möglichkeit ist, eine höhere Programmiersprache (;de;wikipedia~org/wiki/H%C3%B6here_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 (;de;wikipedia~org/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 (;de;wikipedia~org/wiki/Directx), SDL (;de;wikipedia~org/wiki/Simple_DirectMedia_Layer), ClanLib (;de;wikipedia~org/wiki/ClanLib) oder Allegro (;de;wikipedia~org/wiki/Allegro-Bibliothek) 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 (Link@ ) 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++ (;;;codeworx~org/gamedev_tuts;php)
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 (;;;3dgamestudio~com/) 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 (;t3dgm;thegamecreators~com/)
3d games creator - Dark Basic Professional (;;;colorarts-data~de/3dgc/modules/news/)
3D-Gamestudio (;;;3dgamestudio~com/)
Google: 3d game creater (;;;google~de/search?q=3d+game+creater&btnG=Suche&num=100&hl=de&safe=off)
Google: 3d game maker (;;;google~de/search?q=3d+game+maker&btnG=Suche&num=100&hl=de&safe=off)

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 (;de;wikipedia~org/wiki/Directx), SDL (;de;wikipedia~org/wiki/Simple_DirectMedia_Layer) oder OpenGL (;de;wikipedia~org/wiki/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 :D. Als Buchtipp habe ich jetzt schon desöfteren "3D-Spieleprogrammierung mit DirectX 9 und C++" (;;;amazon~de/o/ASIN/3446405968/) 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:


Sorry aber ich muss mich mal grad weg roflen..
So wie es aussieht... hast du noch nie (ok BlitzBasic oder so) irgentwas programmiert und möchtest jetzt "mal eben" C++ lernen um damit "mal eben" die SDL-Lib zu benutzen um damit "mal eben" ein RPG zu erstellen.
Ich weiß jetzt das ist sehr destruktiv aber das kannst du dir in den Ar*ch schieben =).
Meine Aussage soll natürlich nicht unbegründet bleiben:

Lernen von C/C++: wenig/keine Erfahrung, ob dir sowas Spass macht
seeeeehr zeitintentsiv! Wenn du völlig ohne Vorkenntnisse beginnst würd ich sagen um einigermaßen sicher in C/C++ zu programmieren ca. 2-3 Monate (eher mehr) und dann musst du auch schon gut Zeit haben und reinstecken! Und das sind dann normaler weise nur die Grundsachen!
wieso extra 'ne so komplexe Sprache lernen "nur" um ein RPG zu machen, wenn es auch einfacher geht (3DGameStudio-->C-Script)
Zusammenfassend für den Punkt C/C++ würd ich sagen: Bis du C/C++ ordentlich beherrscht, hast du keine Lust mehr auf das RPG
SDL-Lib verstehen/beherrschen: die SDL ist ziemlich komplex
man braucht Erfahrung, Erfahrung, Erfahrung --> wenn man 10 Jump'n'Run-Games damit gemacht hat, kann man daran denken ob man nen RPG macht :D
Zusammenfassend kann man sagen: Bis du die SDL-Lib wirklich beherrscht, hast du keine Lust mehr auf das RPG
RPG erstellen: ich würd sagen, ein RPG zu machen gehört eindeutig zu den höheren Disziplinen der Spielerstellung (reine Vermutung die z;T. auf Produktionskosten(z;B. Oblivion) zurückzuführen ist) Zusammenfassend kann man auch hier sagen: Bis du wirklich einigermaßen gute Games machen kannst (so vom (Level-)Design usw. her), hast du keine Lust mehr auf das RPG
Zusammenfassend für alle Punkte kann man sagen: wenn man alle Punkte hintereinander packt, sind rund 4-5 Jahre vergangen(manche können das mit dem Gamedesign nie, weil sie da einfach nicht talentiert sind).
Unterm Strich macht das: nach 4-5 Jahren hast du keine Lust mehr auf das RPG :D :D :D

Das war jetzt nur zur SDL und RPG...
Wenn du dir jetzt natürlich mal eine vielleicht etwas einfachere Version suchen würdest, in der du ein Programm à la 3DGamestudio benutzt (es gibt noch mehrere andere) und dann vielleicht eine einfache Sprache lernst, die innerhalb von wenigen Wochen gut beherrschbar ist, dann sieht das ganze schon wieder wesentlich besser aus =). Des weiteren merkst du dann, ob du dich auch für Programmierung und so etwas interessierst und kannst dann ja immer noch anfangen C/C++, Java oder sonst irgent etwas zu lernen. Aber so hast du wesentlich schneller gute Ergebnisse was glaub ich eher dein Ziel ist als ewig irgentwas zu lernen, was du irgentwann mal für ein großes Ganzes brauchst, dass du aber im zweifells Fall nie erreichen wirst, weil dir zwischendurch dann einfach die Zeit fehlt, so dass du die hälfte des gelernten wieder vergisst und halb von vorne anfangen musst.

mfg thecoolman4rr


hi,

zum teil hat man hier recht, wenn man sagt, dass es ziemlich schwer ist, ein game zu produzieren!

Ich finde es aber nicht richtig, dass man ihm hier komplett den Mut wegnimmt! Solche Kommentare sind einfach unproduktiv und demotivierend!

Was kann ich zu "Games Developing" sagen?!

Wie schon erwähnt muss du dir wirklich über einige grundlegende Dinge gedanken machen:

1) Soll das Spiel Plattformspezifisch oder Plattformunabhängig sein? Sprich: Nur für Windows, Linux Mac, oder für alle????
Fazit 1: Das heißt für dich ---> C++ auf der jeweiligen Plattform ( <--- mein Tipp ) oder ein leistungsschwaches Spiel mit JAVA, dass allerdings auf allen Plattformen läuft.

2) Welches Genre möchtes du mit deinem Spiel ansprechen? Sprich: Abenteuer, Jump&Run, Action, EgoShooter, Sport etc...
Fazit 2: Für jedes Genre brauchst du meistens eine sepparate Engine!

3) Wieviel Zeit möchtest du investieren?


Wenn du vorhast, dir das nötige Wissen anzueignen, und du dir zutraust, das durchzuhalten, dann sind folgende Punkte sehr interessant für dich:

Versuche Freunde oder Bekannte oder andere für dein Projekt zu gewinnen, die Ahnung von Spielentwicklung und Design haben, denn wenn du alleine bist, musst du gleichzeitig....;:

a) ... ein Game-Producer sein.
Der Game-Producer ist der Champion des Spiels und übernimmt "DIE" Schlüsselrolle bei der Herstellung des Spiels. Somit muss er, um es kurz zu halten, ein Allrounder sein!

b) ... ein Spiele Programmierer sein ( 2D oder 3D ).
3D Programmierer sind für die Funktion der Game Engines und das reibungslose Zusammenspiel der grafischen Komponenten (Real Time Graphic Engine, Physics Engine, Effects) der verschiedenen Plattformen (PC, Konsole, Mobile) verantwortlich.

c) ... ein Special FX Designer sein.
Der Special FX Designer ist für die Konzeption und Erstellung aller speziellen graphischen Effekte zuständig - ob oppulente Explosionen, perfekte Wasserflächen oder stimmungsvolle Szenarien.

d) ... ein Game Artist ( Animation ) sein.
Die Hauptaufgabe der Game Artists mit Schwerpunkt „Animation“ ist die möglichst perfekte Nachbildung der natürlichen Bewegungen von Objekten und Charakteren. Mit Hilfe moderner Technologien (MotionCapturing) wird dieser aufwändige und spannende Prozess praktisch umgesetzt.

e) ... ein Game Artist (Character) sein.
Ansprechende und perfekt gestaltete Charaktere sind essentiell für viele Computer- und Videospiele. Die Aufgabe der Game Artists mit Schwerpunkt „Character“ ist die Entwicklung und Umsetzung solcher Figuren.

f) ... ein Game Designer sein.
Der Game Designer unterstützt die Planung und die Gesamtgestaltung von Computer- und Videospielprojekten. Konzeption, Testing und Balancing sind der Kern des Aufgabenbereiches.

g) ... ein Level Designer sein.
Der Level Designer ist für die Gestaltung der Spiellevel eigenständig verantwortlich. Auf Grundlage der Konzepte erstellt er mit modernen Tools im Team die zukünftigen Spielwelten der Projekte.

h) ... ein Sound Designer sein.
Ein Sounddesigner ist für die Gestaltung von interaktiven Klangwelten und dreidimensionalen Klangwelten verantwortlich. Wenn er versagt, hat zu 90% das Spiel versagt. Gemeinsam mit der Game Design Abteilung wird das Spielkonzept und Gameplay analysiert und ein umfassendes Audiokonzept erarbeitet. Mit der Programmierabteilung muss eine sinvolle Einbindung in die Datenstruktur des Spielprojektes gefunden werden und die notwendigen Schnittstellen und Methoden der Sound-, Sprach- und Musikwiedergabe definiert werden.


Das oben erwähnte mag vielleicht zu professionell für einen privaten User klingen.

Aber ich wollte dir halt ein bisschen dein Blickfeld erweitern, wenn es um die Spieleherstellung geht.

Probier es mal mit einigen freien Engines. Probiere so lange rum, bis du ein Teil zum Spielen hast.

Wenn es dir dann immer noch Spaß macht, dann würde ich dir unbedingt, empfehlen dich erstmal auf einem Gebiet zu spezialisieren: Programmierung, Design, SpecialFX, oder AudioDesign....

Was dir halt am meisten Spaß macht!

Besonders empfehlen kann ich dir dabei auch, Foren für Programmierer, oder Designer zu besuchen und dort Erfahrungen zu sammeln.

Mein letzter Tipp, nachdem du dich entschieden hast, was du machen möchtest:


ÜBEN, ÜBEN, ÜBEN


Keine Sorge, nur wenn du an dich glaubst, wirst du mit viel Ehrgeiz dein Ziel erreichen!!!!!!!


Wenn du Fragen hast, dann FRAGE!!!!


Ciao


PS: Lass dich nicht durch blöde Kommentare unterkriegen!

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.

Hardware Preisvergleich | Amazon Blitzangebote!

Videos zum Thema
Video Loading...
Ähnliche Themen zu [C/C++] Spieleprogrammierung
  • [Thema] [Spieleprogrammierung] C++/SDL oder C#/Managed DirectX ?
    Hallo, ich würde gerne wissen, welcher Weg am leichtesten wäre, wenn man vor hat Spiele zu programmieren. C++ in verbindung mit der SDL library, oder doch noch C# mit Managed DirectX? Oder mal was ganz anderes -> Java? Vielleicht, wenn man nur Hobbymäßig programmieren möchte z;B. auch Dark [...]



raid-rush.ws | Imprint & Contact pr