Einstieg in die Spieleprogrammierung - wie?

Einstiegsfragen, Mathematik, Physik, künstliche Intelligenz, Engine Design
Antworten
Manta
Beiträge: 5
Registriert: 23.02.2011, 18:50

Einstieg in die Spieleprogrammierung - wie?

Beitrag von Manta »

Hallo!

Vorab: Ich hoffe ich habe das Thema hier richtig plaziert! Außerdem will ich auch gleich anmerken das ich nach ähnlichen Themen bereits ausschau gehalten habe nur meine Fragen nicht direkt beantwortet wurden!

Ich programmiere seit ca. 3,5 Jahren C und C++. Allerdings hardwarenahe!

Neuerdings habe ich mich ein bisschen in die Spieleentwicklung eingelesen und finde das eig. höchst interessant.
Jetzt stellen sich mir allerdings einige Fragen:

1. Was genau braucht man dazu alles? Also ich würde mal gerne wissen, welche Komponenten man dafür benötigt. Ich wage es jetzt einmal wild mit Ausdrücken um mich zu werfen:
Game Engine, Grafik Engine, ... ?

2. Was genau ist jetzt der unterschied zwischen diesen "Game Engine, Grafik Engine, ..." ? Also das man mit einer Grafik Engine z.B. eine Landschaft macht aber kein Spiel an sich programmiert sagt mir schon der Name. Nur habe ich mich in Richtung Irrlicht und Blender ein bisschen eingelesen und dachte zuerst, Irrlicht sei so was zum Spiele programmieren, aber es scheint doch eine Grafik Engine zu sein? Ist nicht Blender auch eine Art Grafik Engine? Also ich würde gerne die Unterschiede zwischen diesen Dingern erkennen und festlegen können!

Und an dieser Stelle möchte ich gleich noch was anbringen:
Ich kann mir vorstellen, dass das hier jetzt 2 sehr, sehr "doofe" Anfänger Fragen sind. Doch es ist noch kein Meister vom Himmel gefallen, außerdem will ich mich nur mal schlau machen in dieser Hinsicht und mal das große Ganze rundherum erfassen bevor ich hier irgendwas beginne und mich damit etwas genauer und intensiver beschäftige!

Da man hierzu ja auch Programmiersprachen benötigt wäre mir wie oben schon geschrieben C oder C++ sehr lieb. Ich weiß 3,5 Jahre sind nicht sehr überragend, doch weiß ich die ein oder andere Sache ;).

Wäre echt nett wenn ihr mir die 2 Fragen mal beantworten könntet! Weitere werden sicher folgen, doch mit diesen wäre ich euch schon mal sehr verbunden!

mfg
Manta
Benutzeravatar
The_Real_Black
Establishment
Beiträge: 110
Registriert: 19.01.2008, 19:57
Benutzertext: Happy Coding
Kontaktdaten:

Re: Einstieg in die Spieleprogrammierung - wie?

Beitrag von The_Real_Black »

"sehr "doofe" Anfänger Fragen" gibt es nicht ^^

"1. Was genau braucht man dazu alles? Also ich würde mal gerne wissen, welche Komponenten man dafür benötigt. Ich wage es jetzt einmal wild mit Ausdrücken um mich zu werfen:Game Engine ... ?"
Die Frage ist was du entwickeln willst: Wenn du ein 3D Spiel entwickeln willst, dann kannst du auch mit DirectX beginnen ohne eine Engine zu verwenden bzw du wirst sie selbst eine entwickeln. Wenn du mit deinen Figuren an Wände stoßen willst wirst du Komponenten für Kollisionserkennung einbauen müssen ^^ usw.

"2. Was genau ist jetzt der unterschied zwischen diesen "Game Engine, Grafik Engine, ..." ? "
Eine Grafik Engine kümmert sich wie der Name schon sagt nur im die Grafik bzw auch um das einladen von Dateien.
Eine Game Engine enthält weitere Komponenten wie zB Kollisionserkennung, Mesh Animationen usw.
Happy Coding.
Despotist
Establishment
Beiträge: 394
Registriert: 19.02.2008, 16:33

Re: Einstieg in die Spieleprogrammierung - wie?

Beitrag von Despotist »

Manta hat geschrieben: 1. Was genau braucht man dazu alles? Also ich würde mal gerne wissen, welche Komponenten man dafür benötigt. Ich wage es jetzt einmal wild mit Ausdrücken um mich zu werfen:
Game Engine, Grafik Engine, ... ?
Für die meisten Spiele wirst du Assets brauchen also Grafiken, Modelle, Texturen, Level, Sounds, Musik usw.. Diese werden mit anderen Programmen erstellt von denen es auch viele freie gibt (Blender, Gimp). Viel wichtiger noch ist die Idee für ein Spiel das auch Spaß macht.
Manta hat geschrieben: Was genau ist jetzt der unterschied zwischen diesen "Game Engine, Grafik Engine, ..." ?
Diese Begriffe werden oft synonym verwendet und sind nicht so klar abgegrenzt. Üblicherweise enthält eine GameEngine neben Grafik noch zusätzliche Elemente wie Netzwerk, Sound, Input usw. und vielleicht auch eine Toolchain um Lveel zu bauen Assets zu verwalten usw..
Manta hat geschrieben: Also das man mit einer Grafik Engine z.B. eine Landschaft macht aber kein Spiel an sich programmiert sagt mir schon der Name. Nur habe ich mich in Richtung Irrlicht und Blender ein bisschen eingelesen und dachte zuerst, Irrlicht sei so was zum Spiele programmieren, aber es scheint doch eine Grafik Engine zu sein? Ist nicht Blender auch eine Art Grafik Engine? Also ich würde gerne die Unterschiede zwischen diesen Dingern erkennen und festlegen können!
Blender ist neben dem Modellier- und Animiertool auch eine Grafikengine die du für Spiele verwenden könntest.

Beachte dass neben der reinen Featureliste die Verwendbarkeit eine viel größere Rolle spielt. Gerade bei den freien solltest du ein paar ausprobieren und die wählen mit der du konzeptionell am besten zurecht kommst.

Falls du nicht so stark auf C++ fixiert bist sondern dir auch C# vorstellen könntest kannst du mal einen Blick auf Unity werfen. Es nimmt dir viel Low Level Arbeit ab und du siehst schnell Ergebnisse und hast einen Prototypen an dem du das Gameplay entwickeln kannst. Das gibts auch kostenlos und es hat eine starke Community. Ein Buch oder ein paar Tutorials solltest du dir aber trotzdem dazu ansehen.

Schau dir einfach mal Spiele an die dir gefallen und überlege wie die das gemacht haben. Recherchiere ein bisschen und versuch dich erstmal an kleinen Projekten. Die ZFX-Actions bieten sich zum üben an.
Manta
Beiträge: 5
Registriert: 23.02.2011, 18:50

Re: Einstieg in die Spieleprogrammierung - wie?

Beitrag von Manta »

The_Real_Black hat geschrieben:Die Frage ist was du entwickeln willst: Wenn du ein 3D Spiel entwickeln willst, dann kannst du auch mit DirectX beginnen ohne eine Engine zu verwenden bzw du wirst sie selbst eine entwickeln. Wenn du mit deinen Figuren an Wände stoßen willst wirst du Komponenten für Kollisionserkennung einbauen müssen ^^ usw.
Also was genau ich entwickeln will. Ich würde mich gerne mal auf dem Gebiet schlau machen! Was genau dabei rauskommen soll habe ich mir noch nicht vorgestellt! Ich würde jetzt einmal sagen das sich ein 3D Spiel sehr verlockend anhört. Nur bin ich mal der Annahme das genau diese Verlockung auch eine Menge Dinge mit sich bringt die ziemlich auf die Substanz gehen können und werden. Ist ja auch nicht schlecht! Daraus lernt man wenigstens!

Ich würde mal sagen ich will mit irgendwas "kleinem" anfangen. Gibts da irgendwas das jeder gemacht haben sollte? Wie z.B. das "Hello World" ausgabe programm einer jeden Programmiersprache die mir jetzt geläufig ist? Also so was Grundlegendes? Oder muss ich auf diesem Gebiet bereits schon mal im Vorfeld eine Ahnung haben was genau ich machen will? Wenn ja dann tendiere ich schon zu 3D Spielen!
The_Real_Black hat geschrieben:Eine Grafik Engine kümmert sich wie der Name schon sagt nur im die Grafik bzw auch um das einladen von Dateien.
Eine Game Engine enthält weitere Komponenten wie zB Kollisionserkennung, Mesh Animationen usw.
Darf ich das jetzt so verstehen:

Ich mach mir mit einer Grafik Engine den Spielraum - einfach z.B. einen Raum mit einem Sessel und meinem Spieler drin! Um jetzt das Spiel zu gewinnen muss ich mit meinem Spieler 3 mal um den Sessel rennen. Das alleine geht alles in der Grafik Engine!

Wenn ich dann mehr haben will wie die von dir angesprochene Kollisionserkennung, Mesh Animationen, ... dann muss ich das ganze mit einer Game Engine bearbeiten? Also wenn ich jetzt 3 mal um den Sessel rennen muss und dann den Sessel an die Wand schieben muss dann geht das ganze nur in Kombination dieser beiden Engines?

mfg
Manta
Alexander Kornrumpf
Moderator
Beiträge: 2119
Registriert: 25.02.2009, 13:37

Re: Einstieg in die Spieleprogrammierung - wie?

Beitrag von Alexander Kornrumpf »

Kann man jetzt sicher eine Menge verschiedener Antworten drauf geben und wurden dir ja auch schon gegeben die Begriffe sind auch nicht klar abgegrenzt.

Engine ist im Grunde nur ein besseres Wort für Library. Es gibt Libraries von Drittanbietern (oft auch open source) für alles mögliche was du bei einem Spiel brauchen könntest. Je nach Spiel könntest du z.B. die folgenden anfallenden Aufgaben an Libraries abgeben

- Rendering ("Grafik Engine")
- Sound
- Input
- GUI
- Physiksimulation ("Physik Engine")
- Netzwerk

Entweder du suchst dir diese Komponenten nach Gusto zusammen (kann man hier sicher auch Empfehlungen sammeln) oder du implementierst alle oder Teile davon selbst. Eine Game Engine wär einfach ein Komplettpaket was all diese Aufgaben übernehmen kann.

Blender ist in erster Linie ein Tool um 3D Modelle und Szenen zu erstellen und in zweiter Linie beinhaltet es eine Engine die ich aber an deiner Stelle einfach ignorieren würde da es sich um einen Spezialfall handelt.

Da du schon programmieren kannst ist der direkteste Weg wohl tatsächlich sich ein paar Libraries und deren Dokumentation zu schnappen und damit loszulegen.
Manta
Beiträge: 5
Registriert: 23.02.2011, 18:50

Re: Einstieg in die Spieleprogrammierung - wie?

Beitrag von Manta »

Alexander Kornrumpf hat geschrieben:Da du schon programmieren kannst ist der direkteste Weg wohl tatsächlich sich ein paar Libraries und deren Dokumentation zu schnappen und damit loszulegen.
Naja 3,5 Jahre sind nicht gerade lange!
Alexander Kornrumpf hat geschrieben:Entweder du suchst dir diese Komponenten nach Gusto zusammen (kann man hier sicher auch Empfehlungen sammeln) oder du implementierst alle oder Teile davon selbst. Eine Game Engine wär einfach ein Komplettpaket was all diese Aufgaben übernehmen kann.
Oke! Das klingt für mich ganz nach: "Aller Anfang ist schwer! Also such dir einen leichten Einstieg, damit er auch ein bisschen Spaß macht!" ;). Also ich wäre gerne bereit eure Empfehlungen entgegen zu nehmen! Klingt jetzt sicher auch nicht so großartig, aber am liebsten wäre mir das ganze mit möglichst wenig Kostenaufwand! Open Source? Wäre wirklich nett! Ich will ja mich hier einmal ein bisschen schlau machen und nicht weltenbewegende Projekte in Gang setzen ;).

mfg
Manta
Alexander Kornrumpf
Moderator
Beiträge: 2119
Registriert: 25.02.2009, 13:37

Re: Einstieg in die Spieleprogrammierung - wie?

Beitrag von Alexander Kornrumpf »

Auch darüber was Spaß macht gehen die Meinungen hier bestimmt auseinander:)

Eine Möglichkeit wäre dass du dir z.B. OGRE3D auf http://www.ogre3d.org/ anschaust. Dort gibt es auch viele Tutorials und Beispiele an denen man sich orientieren kann.

Aber wie gesagt "den" richtigen Weg gibt es nicht.
Manta
Beiträge: 5
Registriert: 23.02.2011, 18:50

Re: Einstieg in die Spieleprogrammierung - wie?

Beitrag von Manta »

OGRE3D hört sich ganz nett an! Ich glaube sogar, dass ich das bei meinen bisherigen Recherchen schon mal gesehen habe! Außerdem kann ich das schön mit Code::Blocks verwenden. Open Source ist es auch! Wunderbar! Ich bedanke mich erstmal und beschäftige mich jetzt mal ein bisschen hiermit! Irgendwo muss ich ja mal anfangen!

mfg Manta
pUnkOuter
Establishment
Beiträge: 303
Registriert: 15.04.2002, 15:59

Re: Einstieg in die Spieleprogrammierung - wie?

Beitrag von pUnkOuter »

Wenn ich dich wäre, würde ich ganz klein anfangen und einfachste 2d Spiele selbst programmieren. Snake, Tetris, Asteroids, Breakout, Mario, etc. Da gibt es auch sehr schöne Tutorials dazu. Da lernst du nämlich die Grundlagen für Spiele, also Gameloop, Ressourcen laden, Gamelogik (z.B. mit ner State Machine), Input, Sound, Animationen, etc.

Wenn du unbedingt mit 3d-Grafik anfangen und es wirklich verstehen willst (steckt ne Menge Mathematik dahinter), würde ich NeHe's OpenGL Tutorials empfehlen. Das Problem, wenn man direkt mit einer Engine anfängt, auch wenn sie noch so gut ist wie Ogre oder Irrlicht, ist, dass man nie die Grundlagen dahinter versteht, und dann an Grenzen stösst, von denen man gar nicht wusste, dass sie existieren.

Wenn dich die Programmierung nicht so interessiert, und du lieber Spiele machen willst, als Grafikroutinen oder Kollisionserkennungsalgorithmen zu Programmieren, dann kann ich auch Unity empfehlen. Aber auch die Blender Game Engine ist brauchbar, wenn auch ziemlich unzugänglich im Vergleich zu Unity. Oder auch Panda3d, obwohl du dir da ne eigene Werkzeugkiste zusammenstellen musst.
Ein Zeiger ins Blaue ist wie ein Wegweiser nach <SEGFAULT>. Wenn du denkst, mein Name hat was mit abgefuckter Kleidung und bunten Haaren zu tun, dann kehr besser um.
Manta
Beiträge: 5
Registriert: 23.02.2011, 18:50

Re: Einstieg in die Spieleprogrammierung - wie?

Beitrag von Manta »

Also ich habe mich mal in Ogre eingelesen und finde das mal ganz nett! Besonders das mit Code::Blocks habe ich am Anfang nett gefunden. Also die Sache das die kompatibel sein sollten! Sollten! Irgendwie steh ich jetzt schon seit 2 Tagen auf der Leitung und komme nicht weiter. Was ich auch probiere ich stoße immer wieder auf die Fehlermeldung im Anhang wenn ich eine Application aufsetze!

Kann mir jemand auf die Sprünge helfen?

Also ich habe mal prinzipiell alles so gemacht wie es in den Ogre Tutorials steht. Das mit dem Installieren der SDK und dann mit dem aufsetzen der Application. Das habe ich auf beide Arten probiert. Einmal selbst alles eingeben laut Tut und ein ander Mal mit dem Application Wizzard. Immer kommt allerdings die sich im Anhang befindliche Fehlermeldung?
Fehler.jpg
mfg
Manta
pUnkOuter
Establishment
Beiträge: 303
Registriert: 15.04.2002, 15:59

Re: Einstieg in die Spieleprogrammierung - wie?

Beitrag von pUnkOuter »

Ich hab GCC noch nie unter Windows benutzt, darum kann ich dir nichts genaueres sagen, ausser dass irgendwas davon wohl fehlt.
Ein Zeiger ins Blaue ist wie ein Wegweiser nach <SEGFAULT>. Wenn du denkst, mein Name hat was mit abgefuckter Kleidung und bunten Haaren zu tun, dann kehr besser um.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4878
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Einstieg in die Spieleprogrammierung - wie?

Beitrag von Schrompf »

"libgcc" - hmm... das klingt, als würde die Runtime fehlen. Die ganzen C-Funktionen, die der Compiler mitbringt - z.B. printf(), sqrt() oder fopen() - sind auch alles nur Code. Du hast beim Kompilieren die Wahl, ob die sie statisch mit in die Exe reinkompilieren willst oder dynamisch mit dazulinken. Statisch heißt, dass sie beim Kompilieren mit in die Exe geschrieben werden. Die Exe wird dadurch größer, braucht aber die Runtime nicht mehr. Dynamisch (DLL heißt übrigens Dynamic Linker Lib) bedeutet, Deine Exe wird kleiner. Die Funktionen müssen aber trotzdem irgendwo herkommen. Also wird auf dem Zielsystem beim Starten nach dieser libgcc.dll gesucht.

Du hast also zwei Optionen: a) statisch linken. Google nach dem Kommandozeilenparameter dafür. Oder b) die DLL mitliefern. Ein einfaches Danebenlegen neben die Exe müsste reichen, ansonsten gibt es aber sicher auch irgendwelche Installpakete, die Du mitliefern kannst.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Felix
Beiträge: 7
Registriert: 10.03.2011, 09:28

Re: Einstieg in die Spieleprogrammierung - wie?

Beitrag von Felix »

Manta hat geschrieben:Irgendwo muss ich ja mal anfangen!
Anfangen solltest du bei einem Konzept. Im Moment liest sich das für mich eher so, als wolltest du einfach nur gerne irgendwas programmieren. Es ist so: Wenn du nicht weißt, wo du hin willst, dann kannst du auch nicht an's Ziel kommen. Insofern wäre es sinnvoll, dir erstmal Gedanken darüber zu machen, ob es unbedingt ein Spiel sein soll, und dann, was für eines. Ein Standard wäre wohl ein "Pong". Das von dir beschriebene Sessel-Spiel klingt für mich nicht so, als müsse es unbedingt in 3d gemacht werden. Dafür reicht eine Draufsicht und zwei einfache Grafiken, damit ist das Gameplay (wenn man es so nennen will) vollständig abgebildet.

Eine Alternative wäre Effektprogrammierung, Shader oder sonstwas. Aber das hat halt mit Spielen nicht zwingend zu tun, das muss dir klar sein.
AdR!@N
Beiträge: 1
Registriert: 28.02.2011, 09:19

Re: Einstieg in die Spieleprogrammierung - wie?

Beitrag von AdR!@N »

Hallo erstmal,

scheint ja so als hätten relativ viele hier Schwierigkeiten alleine in die Spieleprogrammierung einzusteigen.
Ich selbst habe auch versucht mich in das DX-SDK einzulesen und landete erstmal einen dicken fail.


Ich werfe einfach mal wild nen Vorschlag in den Raum ---->
Könnte man es nicht so machen indem man einfach eine Lerngruppe bildet und gemeinsam mal einige Projekte durchnimmt damit die Motivation nicht so schnell untern Tisch fällt (also z.B für leute die Kenntnisse in C++ haben und anfangen wollen mit dem DX-SDK zu arbeiten) oder gibt es dazu schon Beiträge und ich hab es mal wieder übersehen :D ?

..... naja mein Intresse geht jedenfalls in die Richtung c++(naja meine Kenntnisse könnten besser sein) und dx.
also wer Lust hat sich mit mir da mal einzuarbeiten oder wer Vorkenntnisse hat und sein Wissen mit uns teilen möchte, einfach mal melden.^^
Antworten