Game Engine

Einstiegsfragen, Mathematik, Physik, künstliche Intelligenz, Engine Design
Benutzeravatar
GamerZ
Beiträge: 41
Registriert: 19.12.2009, 18:39
Wohnort: Köln

Game Engine

Beitrag von GamerZ »

Wie kann man lernen eine Game Engine zu programmieren inklusive Leveleditor in 3D??
Gibt es E-Books die ihr mir empfehlen könntet??

hoffe könnt mir weiterhelfen.

GamerZ
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Game Engine

Beitrag von Aramis »

Da gibt es keine pauschale Antwort drauf. Man kann es nicht gezielt lernen. Man kann nur zu einem bestimmten Zeitpunkt zum Schluss kommen, dass man von ganz alleine weiß wie es geht. Oder dass man in der Lage ist Konzepte die bei anderen Engines zur Anwendung kommen 'weiterzuverwenden'.

Grundsätzlich benötigst du gute bis sehr gute Kenntnisse in einer bis mehreren Programmiersprachen. Zumeist wird man eine vergleichsweise low-level angesiedelte Sprache wie C/C++ für den Engine-Kern selber nutzen (auch wenn für Hobbyzwecke inzwischen auch reines .net/C# ausreichend schnell sein dürfte). Gerade wenn es dann aber an die Implementierung spezifischer Effekte/Gameplay-Aspekte geht (du hast in einem deiner letzten Kurz- und Kürzest-postings von wellenschlagendem Wasser und sich sanft im Winde wogenden Bäumen gesprochen ...), wird man mit C++ Probleme mit dem Aufwand bzw. der Qualitätssicherung bekommen ... da wird man dann sicherlich eine Skriptsprache mit in's Boot holen, Lua, Python, Angelscript. Auch Perl oder Javascript wären durchaus Kandidaten dafür.

Bei all dem sind 'Grundkenntnisse' der jeweiligen Tools nicht ausreichend. Eine Game Engine ist ein hochkomplexes Stück Software. Vielleicht schaust du dir einfach mal den öffentlich verfügbaren Ogre-Quellcode an, um dir ein Bild vom Umfang zu machen (Und, seien wir mal ehrlich, Ogre ist grafisch nicht der absolute Bringer, jedenfalls nicht out-of-the-box).

Zuallererst musst du also entsprechend gut programmieren können. Irgendwie tendiere ich dazu anzunehmen dass das nicht der Fall ist, aber korrigier' mich bitte wenn ich falsch liege. Bzgl. C++ gibt es haufenweise Tutorials im Web. Dieses hier soll angeblich nicht schlecht sein. Bücher gibt es auch zuhauf, Amazons Nutzerreviews samt Rating sind da aussagekräftiger wie tausend Empfehlungen. Dann erfordert zumindest der Grafikteil einer Game-Engine detaillierte Kenntnisse der Funktionsweise einer 3D-Grafikkarte, sowie mindestens eines der großen APIs (D3D9, D3D10, OpenGL). Da die sich sowieso stark ähneln ist ersteres (die Grafikpipeline) am wichtigsten um eine stabile Grundlage zu haben. Ich würde aktuell dazu raten immer noch auf DX9 zu setzen, denn die Zahl der XP-User ist noch zu hoch als dass man den Markt vernachlässigen könnte. Ein Hybrid-Ansatz ('meine supertolle engine xyz kann sowohl dx9, dx10, opengl, als auch software-rendering schnell, lahm und lila-gestreift'), ist auch eine Variante. Viel aufwändiger, erzwingt aber ein sauberes Design was dem Rest des Programms dann auch wieder zugute kommt!

Ein wichtiger Punkt bei Game-Engines ist das Software-Design. Da ist es, wie bereits gesagt, sinnvoll sich an 'großen' Beispielen zu orientieren. Auch Bücher widmen sich dem Thema. 'Game Engine Design' (Dave Eberly) ist mein persönlicher Favorit (einer der wenigen Buchkäufe der letzten Jahre wo ich sagen würde dass ich wirklich davon profitiert habe).

Final 2 cents: die meisten Game-Engine-Schreiberlinge entwickeln nicht eine, sondern pro Jahr eine. Wieso? Weil sie immer wieder an einen Punkt gelangen wo sie mit dem Design und der Codequalität des bisher Erreichten nicht mehr zufrieden sind und alles wieder einstampfen. Das ist nicht negativ, sondern führt nach mehreren Iterationen zu immer besserer Software und bereichert den Erfahrungsschatz ungemein. Wenn du also obige Voraussetzungen für erreicht hälst, fang einfach an.

PS: Bitte nicht ständig neue Threads mit nur leicht variierten Fragestellungen beginnen. Vielleicht können wir bei diesem hier bleiben, Platz hat es noch genug. Ehrlich :-)
Benutzeravatar
GamerZ
Beiträge: 41
Registriert: 19.12.2009, 18:39
Wohnort: Köln

Re: Game Engine

Beitrag von GamerZ »

Also du meinst wenn ich C++ gut bis sehr gut beherschen würde währe ich in der Lage eine Game Engine zu programmieren ?
Mit Leveleditor undsoweiter wenn ich dich richtig verstanden hab?

MfG GamerZ
Virus
Beiträge: 38
Registriert: 20.09.2002, 17:28
Kontaktdaten:

Re: Game Engine

Beitrag von Virus »

Zumindest ist das Beherrschen einer Programmiersprache erforderlich. C++ ist allein schon empfehlenswert, weil du sehr viele Informationen dazu finden wirst (besonders in Verbindung auch mit Direct3D bzw. OpenGL). Also solltest du ein C++ Tutorial (von Umfang scheint das vorgeschlagene ganz ok zu sein) dir angucken und versuchen, die Grundprinzipien zu verstehen. (d.h. auch mal ein paar einfache Dinge selbst ausprobieren).

Wenn du das getan hast, kann es schon mit der 3D-Programmierung los gehen. Da gibts auch haufenweise Tutorials zu (leider oft nicht so die besten, vielleicht auch mal ein ein Buch investieren...). Das Problem wird sein, dass diene Programmierkenntnisse (falls bis jetzt nicht vorhanden) halt eher Mager sein werden und es so alles recht lange dauert, sich einzuarbeiten, aber mit genügend Motivation schafft man das schon. Gerade das Programmieren lernen kannst du dann eben bei einer Sache, die dich interessiert.

Das Schwierigste IMO ist der näcshte Schritt: von Grundlagen zu der Engine. Ein Dreieck zu zeichnen ist relativ einfach. EIn Modell schon schwieriger, aber eigentlich kommt da ncihts neues zu. Wenn es darum geht, komplexe Welten darzustellen (was du ja gerne machen möchtest) wird das ganze beliebig aufwendig. Aber lass dich davon nicht abschrecken, wenn du allerdings im Moment bei Null stehst wird das halt Zeit benötigen (vermutlich Jahre). Aber das ist auch OK, denn es macht Spaß und man lernt sehr viel.
Matze
Moderator
Beiträge: 107
Registriert: 26.02.2009, 18:28

Re: Game Engine

Beitrag von Matze »

GamerZ hat geschrieben:Also du meinst wenn ich C++ gut bis sehr gut beherschen würde währe ich in der Lage eine Game Engine zu programmieren?
Mit Leveleditor undsoweiter wenn ich dich richtig verstanden hab?
Nee, wenn du C++ gut bis sehr gut beherrschen würdest, dann wärst du höchstens in der Lage gut bis sehr gut C++ zu programmieren. Das hat mit Grafik- bzw. Spieleprogrammierung erstmal überhaupt nichts zu tun. Da musst du dir dann noch sowas wie SDL, Direct3D, OpenGL, oder was weiß ich draufschaffen. Dann musst du einigermaßen fit in Mathe sein und vor allem überhaupt erstmal eine Ahnung davon haben, was eine Game-Engine ist und was sie eigentlich genau leisten muss. Da ich nicht den Eindruck habe, dass du bereits viel Erfahrung mit Programmierung allgemein hast, wird das für dich wahrscheinlich ein sehr langer, steiniger und frustrierender Weg werden.

Warum will eigentlich jeder immer gleich ne Engine programmieren? Leute, programmiert doch mal wieder mehr Spiele! Man muss doch das Rad nicht immer wieder neu erfinden. Für die meisten Sachen reicht eine der kostenlosen Engines (Ogre, Irrlicht, etc.) vollkommen aus und da bekommt man schon ne Menge geboten. Ohnehin ist das designen eines ansprechenden, funktionierenden Spiels wesentlich schwieriger, als viele vielleicht denken. Wenn man irgendwann mal an die Grenzen einer OS-Engine stößt, kann man sich immer noch überlegen, ob man die vorhandene Engine erweitert bzw. anpasst oder eine eigene entwickelt. XNA ist auch ein guter, erster Schritt um mit der Spieleentwicklung anzufangen.

Übrigens: Einen Leveleditor kannst du dir auch mit Ogre, Irrlicht usw. schreiben. Das is ja total unabhängig von der verwendeten Engine. Da musst du halt ein bißchen Windowsprogrammierung drauf haben. Eine Engine komplett neu zu entwickeln ist kein Pappenstiel und in meinen Augen nicht nötig um erste Erfahrungen in der Spieleentwicklung zu sammeln. Nur weil du dir vielleicht "Mein Werkstattbuch 2009" gekauft hast, fängst du ja auch nicht gleich an einen Flugzeugträger zu bauen. oder?

In diesem Sinne und auf wieder mehr Community-Games hoffend,
Matze
Benutzeravatar
GamerZ
Beiträge: 41
Registriert: 19.12.2009, 18:39
Wohnort: Köln

Re: Game Engine

Beitrag von GamerZ »

@ Virus

Dein Beitrag war hilfreich :D

MfG GamerZ

@ Matze

Ja mir ist klar wenn ich C++ gut bis sehr gut beherrsche dass ich C++ Programmieren kann.
Was SDL,Direct3D oder OpenGL ist weiß ich.
Ich beschäftige mich lange mit Game Engines leisten müssen oder können habe viele Artikel gelesen.
Erfahrung mit Programmieren hab ich nicht will aber anfangen ich weiß für einen Anfänger ist Game Engines zu programmieren hart.
Aber wenn ich Erfahrung 3-5 oder mehr hab mit C++,Direct3D habe könnte ich veruschen eine Game Engine zu schreiben oder?

MfG GamerZ
Benutzeravatar
jgl
Establishment
Beiträge: 109
Registriert: 08.04.2009, 08:58

Re: Game Engine

Beitrag von jgl »

....
Aber wenn ich Erfahrung 3-5 oder mehr hab mit C++,Direct3D habe könnte ich veruschen eine Game Engine zu schreiben oder?
Meinst Du 3-5 Jahre?
Wieviel Erfahrung hast Du?
Ich denke, wenn Du lernen wills, fang einfach an zu programmieren.
Und ganz wichtig: SOFTWAREDESIGN !!!
Wähle eine Api, ich habe mich mal etwas mit OpenGL beschäftigt. Für mich war es etwas "anfängerfreundlicher" als DirectX.
Hast Du Erfahrung mit OpenGL, verstehst du auch relativ einfach DirectX.
Mache Dir erstmal einen Plan was deine Engine können muss, am besten gleich ein Spiel dazu, die diese Engine verwendet/testet.
Wie schon oft gesagt hier, je mehr eine Engine kann umso schwieriger zu handeln wird sie.
Ich denke, es gibt kein Allgemeinrezept für eine Engine, es kommt darauf an was Du damit machen willst.
Virus
Beiträge: 38
Registriert: 20.09.2002, 17:28
Kontaktdaten:

Re: Game Engine

Beitrag von Virus »

GamerZ hat geschrieben:Warum will eigentlich jeder immer gleich ne Engine programmieren? Leute, programmiert doch mal wieder mehr Spiele! Man muss doch das Rad nicht immer wieder neu erfinden.
Weil es viel interessanter ist, als ein Spiel zu programmieren. Und auf eine Sache beschränkt. Klar ist die Anwendung einer Engine erst das, was sie wirklich Sinnvoll macht, aber damit da was schönes raus kommt, braucht man dann allerhand Zeugs wie Modelle, Texturen, Zeit für Balancing, Story und was auch immer. Ich mit meinen zwei linken Modellierungshänden würde da nie was wirklich schönen erhalten - und Lust habe ich auch keine zu, stundenlang Modelle zu basteln.
Wenn man keinen kennt, der es einem abnimmt, wirds halt schwierig. Und so viele gute, freie Modelle scheint es auch nicht zu geben (oder ich habe sie nicht gefunden).

Wenn einen die 3D-Programmierung interessiert, schreibt man also eine Engine. Einfach weil man wissen will, wie es geht.

Die Spiele die rauskommen, sind doch eh meistens (es gibt natürlcih Ausnahmen) nicht so der burner, wie auch, wenn man nur nebenbei dran bastelt und dazu noch alleine bzw. vllt noch mit wem anders zusammen?

GamerZ, fang doch einfach an. Den Aufwand kannst du sowieso nicht abschätzen, wenn es dich interessiert dann los! EInen ganz kurzen Leitfaden (oder Leidfaden?) hast du ja bekommen. Hilfe kannst du hier ja finden, wenn du mal eins der tausenden Probleme, auf die du stoßen wirst, nicht alleine lösen kannst.

Nimm dir aber nicht gleich das große Killer-Projekt vor, sondern reicht es sicher auch, erst einmal 3 Raumschiffe durchs all fliegen zu lassen. (Auch ohne SUper-Duper-Effekt 7.1 - daraus kann man dann sogar einfach ein Spiel basteln!). Halt Step-by-Step, auch wenn du natürlich (wie jeder, der mal angefangen hat) höher hinaus willst :-)
Benutzeravatar
Thoran
Establishment
Beiträge: 224
Registriert: 15.05.2009, 12:51
Wohnort: Stuttgart
Kontaktdaten:

Re: Game Engine

Beitrag von Thoran »

Matze hat geschrieben:... Warum will eigentlich jeder immer gleich ne Engine programmieren? Leute, programmiert doch mal wieder mehr Spiele! Man muss doch das Rad nicht immer wieder neu erfinden. Für die meisten Sachen reicht eine der kostenlosen Engines (Ogre, Irrlicht, etc.) vollkommen aus und da bekommt man schon ne Menge geboten. ...
Also entweder gibts generell in der Szene in letzter Zeit ein Problem mit der Verwendung des Begriff "GameEngine"/"Spieleengine" oder ich hab ein grundsätzlich falsches Verständnis davon. Ogre und Irrlicht sind keine Spieleengines, sondern Grafikengines. Es sind zwar sehr umfangreiche Grafikengines, aber ihnen fehlt bei weitem eine ganze Menge um sie zu einer kompletten Spielengine zu machen. Ich hab jetzt aber schon des öfteren gesehen das gerade Ogre und Irrlicht mit Spieleengines gleichgesetzt werden, was ich für schlicht falsch halte und Neulinge unter Umständen auf den falschen Weg bringt.

@GamerZ: wenn du also wirklich eine Spieleengine schreiben willst, bietet es sich an diese aus verschiedenen Bibliotheken zusammenzusetzen (z.B. Ogre/Irrlicht, AngelScript/Lua, RakNet, PhysX/ODE/Bullet, ...) um die verschiedenen Aspekte einer Spieleengine abzudecken, wie z.B. Grafik, Skripting, Physics, Netzwerk, Datenserialsierung, etc. . Dies an sich ist komplex genug und da spreche ich aus eigener Erfahrung, vorallem wenn du alleine daran arbeitest. Um so eine Engine zu programmieren ist die Kenntnis der verwendeten Programmiersprache absolute Grundvorraussetzung. Dazu kommt aber dann darauf aufsetzenden, noch das Wissen eine Spieleengine konzeptionell sinnvoll anlegen zu können. Für sowas gibts zum Teil Bücher, in denen die Konzeption von Spieleengines beschrieben ist. Aktuell kenne ich nur eines, welches ich gerade lese: Game Engine Architecture. Es gibt aber durchaus mehr, da bin ich mir sicher. Zusätzlich, ist echt von Vorteil wenn man sich noch ein bissle mit konzeptionellen Sachen aus der Informatik auskennt, da einem so Dinge wie endliche Zustandsautomaten oder die verschiedene Baumhierarchiealgorithmen echt viel Arbeit abnehmen können, beim Handling der Spieleobjektdaten in der Engine. Wobei das zugegebener Maßen für einen Neuling eher Kür als Pflicht ist
GamerZ hat geschrieben:Was SDL,Direct3D oder OpenGL ist weiß ich.
Ich beschäftige mich lange mit Game Engines leisten müssen oder können habe viele Artikel gelesen.
Aus der Aussage deutet sich an, das du eher eine Grafikengine schreiben willst als eine Spieleengine. Klär das erst mal für dich, denn meiner Meinung nach ist die Herangehensweise für Spieleengines und Grafikengines komplett unterschiedlich.

Ich hoffe mal, dass das ein bissle weiterhilft.

Thoran
Wer Rechtschreibfehler findet, darf diese gerne behalten.
Mein Entwicklertagebuch
Aktuelle Projekte: Universum: Domination (ehemalig AlphaOmega),Universum: Sternenjäger, PixelWars: Highscore-based Top-Down-Spaceshooter
Spieleengine Unreal 5
Benutzeravatar
GamerZ
Beiträge: 41
Registriert: 19.12.2009, 18:39
Wohnort: Köln

Re: Game Engine

Beitrag von GamerZ »

@ Virus

Also ich sollte jetz anfangen C++ zu lernen ?





@ Thoran

GamerZ hat geschrieben:Was SDL,Direct3D oder OpenGL ist weiß ich.
Ich beschäftige mich lange mit Game Engines leisten müssen oder können habe viele Artikel gelesen.

Die beiden Sätze bedeuten was anderes mit Was SDL Direct3D... meine ich weiß was es ist.
Mit Ich beschäftige... meine ich dass ich Viele Artikel darüber gelesen hab
ich weiß dass eine Game Engine und eine Grafikengine was anderes sind.

MfG GamerZ
Virus
Beiträge: 38
Registriert: 20.09.2002, 17:28
Kontaktdaten:

Re: Game Engine

Beitrag von Virus »

GamerZ hat geschrieben:@ Virus

Also ich sollte jetz anfangen C++ zu lernen ?
Wenn du eine kleine Engine basteln willst: Ja. (Alternativ kann man das wohl auch mit C# relativ gut machen, ich glaube das vereinfacht einiges. Du wirst allerdings viel mehr Informationen zu C++ finden.C++ ist generell sehr beliebt und allein schon aufgrund der Verbreitung empfehlenswert.)
Benutzeravatar
GamerZ
Beiträge: 41
Registriert: 19.12.2009, 18:39
Wohnort: Köln

Re: Game Engine

Beitrag von GamerZ »

@ Virus wie meinst du das mit kleine Engine ?

MfG GamerZ
Tactive
Beiträge: 61
Registriert: 21.07.2004, 15:10
Kontaktdaten:

Re: Game Engine

Beitrag von Tactive »

Mit klein meint er wohl eher das Du Deine Ziele nicht zu hoch stecken solltest, also nicht gleich mit dem Vorsatz herangehst sowas wie Unreal zu programmieren. In der Vergangenheit habe ich das immer wieder versucht und ständig vor Wände gerannt (im Wahrsten Sinne des Wortes).
Benutzeravatar
GamerZ
Beiträge: 41
Registriert: 19.12.2009, 18:39
Wohnort: Köln

Re: Game Engine

Beitrag von GamerZ »

Ja ist mir klar direkt Unreal ist doch schwer.
Thread pls nicht closen bei fragen oder so.
Danke Alle die mir geholfen haben bei fragen.

MfG GamerZ
Benutzeravatar
Zudomon
Establishment
Beiträge: 2254
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: Game Engine

Beitrag von Zudomon »

Hallo GamerZ,

ich glaube, hier wurde noch nie ein Thread geschlossen, darum brauchst du dir wohl keine Sorgen machen...
Aber dennoch wäre es bestimmt sinnvoller, wenn du bestimmte Fragen in entsprechenden Threads stellen würdest.

Bzgl. der Engine kann ich dir auch nur raten, fang so bald wie möglich an. Lange vorplanen bzw. drüber nachdenken, senkt da nur die Motivation. Und vor allem erwarte nicht, dass da auf anhieb was krasses rauskommt. Dann einfach nochmal probieren.

Du könntest übrigens auch mit Delphi eine Engine schreiben. :D

Gruß
Zudo
Benutzeravatar
GamerZ
Beiträge: 41
Registriert: 19.12.2009, 18:39
Wohnort: Köln

Re: Game Engine

Beitrag von GamerZ »

Was bedeutet Game Engine Design oder Game Engine Architecture ??

MfG GamerZ
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Game Engine

Beitrag von Aramis »

Es geht dabei um Softwaredesign bzw. Softwarearchitektur. D.h. wie die Engine aufgebaut ist, wie ihre einzelnen Teilsysteme aussehen, miteinander zusammenarbeiten .... aber auch wie sie Szenen verwaltet und auf objektorientierte Strukturen abbildet.

Der Vergleich mit Architektur im herkömmlichen Sinne liegt nahe: ein Haus ist einsturzgefährdet wenn es vorher nicht ordentlich geplant und designt wurde. Lass dich davon aber nicht abschrecken sondern fang einfach an!, dann wirst du schnell ein Gespür dafür entwickeln wie man bestimmte Dinge sauber in Software umsetzt.
Matze
Moderator
Beiträge: 107
Registriert: 26.02.2009, 18:28

Re: Game Engine

Beitrag von Matze »

@GamerZ
Mal ne Frage: Welche Erfahrungen hast du eigentlich im Bereich Programmierung, Grafikprogrammierung, etc.? Hast du da in der Richtung überhaupt schon mal irgendwas gemacht? Welche Programmiersprachen beherrschst du? Und ich meine hier nicht "kennen" oder "schon mal von gehört haben", sondern wirklich "beherrschen", d.h. produktiv einsetzen können? Ich frag nur, damit man mal einen Überblick über deine Fähigkeiten bekommt und dir so vielleicht besser weiterhelfen kann.

Viele Grüße,
Matze
Benutzeravatar
GamerZ
Beiträge: 41
Registriert: 19.12.2009, 18:39
Wohnort: Köln

Re: Game Engine

Beitrag von GamerZ »

@ Aramis

Danke für die Information.

@ Matze

Erfahrung im Bereich Programmierung , Grafikporgrammierung keine.
In die Richtugn hab ich schon mal was gemacht.
Ich behersche keine Programmersprachen.
Will C++ lernen und vll. noch LUA.

MfG GamerZ
Benutzeravatar
Herror
Beiträge: 97
Registriert: 24.12.2009, 23:13
Benutzertext: Ewiger Anfänger....
Alter Benutzername: Herror
Echter Name: Artur Schütz
Kontaktdaten:

Re: Game Engine

Beitrag von Herror »

Ich werde hier warscheinlich auf Kritik stoßen, wenn ich das hier so sage aber meine Empfehlung wäre es eine einfache scriptsprache zu lernen, die C++ sehr nahe kommt und da wäre für mich PHP eine ideale Sprache...

Ich selber habe anfangs immer gesagt, dass man sofort mir einer vernünftigen Sprache anfangen sollte wie z.b. C++ aber ich finde, dass PHP viel gutmütiger ist und man damit gut sachen wie OOP* lernen kann.

Ich perslönlich habe mit 14 angefangen c++ zu lernen, habe aber nie wirklich programmiert, weil mit der praktische bezug gefehlt hat und mir 3D-Grafik noch zu schwer war, da ich von Vektoren und Matrizen noch nie was gehört hatte und bin dann durch einen Freund dazu gekommen PHP zu lernen, weil der ein CMS für seine Seite haben wollte..
dabei habe ich sehr viel programmiert und nun verstehe ich den C++ code auch viel besser und OOP geht nun auch locker von der Hand.

Meine empfehlung wäre also, dass du erstmal von der idee eine Game-Engine zu schreiben etwas abstand nimmst und erstmal an einem kleinen Projekt arbeitest, das dir spaß macht wie z.B. bei mir eine Internetseite in PHP und MySQL.

Dadurch lernst du nicht einfach nur PHP, sondern das Programmieren an sich. Denn wenn du erstmal programmieren kannst, dann brauchst du nur ne Referenz zu C++ und kannst sofort in die Grafikprogrammierung einsteigen weil du dann sicherlich genug übung haben wirst in der OOP und dem Programmieren... nur das mit den Variablen-Typen und den Array-Größen nimmt es PHP nicht ganz so genau :P. Das wird dann ein riesem umstieg sein bei C++...

*Objekt Orientiertes Programmieren
Benutzeravatar
Zudomon
Establishment
Beiträge: 2254
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: Game Engine

Beitrag von Zudomon »

Bei mir war es folgendermaßen:

Ich habe damals in Basic angefangen. Da konnte ich nicht viel... irgendwann habe ich das mit den Variablen geschnallt und meine größte Errungenschaft war, als ich verstand, das man eine Variable inkrementieren konnte. Dadurch wurden dann unzählige Effekte möglich. Dann hat es wieder gedauert und irgendwann kam der Bedarf, viele Variablen auf einmal und in einer Schleife anzusprechen. So kam ich zu den Arrays. Als ich dann auf Visual Basic umgestiegen bin, kam dann langsam hinzu, Funktionen und Prozeduren zu benutzen. Später in Delphi kamen dann auch die eigenen Datentypen hinzu.

Also was ich damit sagen möchte, ich habe mich nie explizit hingesetzt und mir versucht, neue Programmiertechniken einzubläuen. Das halte ich auch nicht für sinnvoll. Man sollte immer versuchen, dass, was gerade das zu lösende Problem ist, mit den Mitteln die man hat, lösen. Wenn dann allerdings der Bedarf besteht, was neues zu lernen, dann sollte man es natürlich tun. Was ich damit meine ist: Man lernt heute meist direkt OOP zu verwenden, ohne dabei wirklich einen echten Bezug aufzubauen. Meine ersten OOP versuche waren eigene Datentypen und Funktionen/Prozeduren, die auf diese angewendet wurden. Es wurde dann immer ein Pointer zu der zu verändernden Struktur mit übergeben. Klassen sind sehr praktisch, allerdings erst in Verbindung mit entsprechend mächtigen Entwurfsmustern. Blind benutztes OOP kann, vor allem, wenn es in Verbindung mit Polymorphie genutzt wird, sehr viele Fallstricke bieten und letztlich die Struktur verschlechtern.

Also mein Fazit wäre: Man sollte sich nicht neue Technologien aufzwängen, sondern eher diese bei Bedarf lernen. So ist der Umgang mit ihnen wesentlich natürlicher.

Das ist meine Meinung und so habe ich das gemacht. Ob dieser Weg sinnvoll ist oder nicht, muss jeder für sich selbst entscheiden.
Benutzeravatar
Herror
Beiträge: 97
Registriert: 24.12.2009, 23:13
Benutzertext: Ewiger Anfänger....
Alter Benutzername: Herror
Echter Name: Artur Schütz
Kontaktdaten:

Re: Game Engine

Beitrag von Herror »

Zudomon hat geschrieben: Also mein Fazit wäre: Man sollte sich nicht neue Technologien aufzwängen, sondern eher diese bei Bedarf lernen. So ist der Umgang mit ihnen wesentlich natürlicher.

Das ist meine Meinung und so habe ich das gemacht. Ob dieser Weg sinnvoll ist oder nicht, muss jeder für sich selbst entscheiden.
Da kann ich dir nur zustimmen:
Genauso hat es bei mir mit PHP ausgesehen... ich konnte damals aber schond ie Grundlagen von C++ sehr gut.
Ich habe auch ein Buch dazu gelesen, es aber nach 2 Kapiteln in die Ecke geschmissen und einfach angefangen weil mich das Buch so dermaßen gelangweilt hat.
Nach und nach hatte ich immer speziellere Problemchen.
Aber im Internet gibt es so unglaublich viele fragen zu PHP und so viele Referenzen auf deutsch und auf englisch, dass ich einfach nur google benutzen musste und ich habe alles gefunden, was ich für das Problem gerade gebraucht habe.

Arrays und Variablen sind bei PHP auch viel einfacher zu handhaben und deshalb hat man anfangs viel weniger Fehler und man kann einfach Programmieren ohne viel kopfschmerzen zu bekommen. C++ habe ich nebenbei aber immer wieder aufgefrischt, weil mein Ziel es immer war in C++ spiele zu programmieren, was ich jetzt auch realisiere.
Dafür lese ich mir das Kompendium von Zerbst durch und werde danach keine Engine schreiben, sondern das Wissen dazu benutzen um ein kleines "Little-Fighter" ähnliches Spiel in 3D damit zu machen.

Falls du nun PHP lernen willst dann musst du nicht erst dicke bücher lesen, sondern wie Zudomon es gesagt hat einfach anfangen zu programmieren... das könnte ich dir sogar alles an nur einem oder 2 tagen beibringen. Ab da an könntest du alleine weiterlernen...
Benutzeravatar
Thoran
Establishment
Beiträge: 224
Registriert: 15.05.2009, 12:51
Wohnort: Stuttgart
Kontaktdaten:

Re: Game Engine

Beitrag von Thoran »

GamerZ hat geschrieben: ...Erfahrung im Bereich Programmierung , Grafikporgrammierung keine.
In die Richtugn hab ich schon mal was gemacht.
Ich behersche keine Programmersprachen.
Will C++ lernen und vll. noch LUA.

MfG GamerZ
Mein Tipp, so abgedroschen er auch klingen mag, vergiss das mit der Spieleengine erstmal. So lange du noch keine Programmiersprache vernünftig beherrscht und auch mit den üblichen verdächtigen Algorithmen in der Programmierung noch nicht vertraut bist, solltest du erst eine Programmiersprache lernen und dann ein Spiel machen, das nicht zu groß ist. Wenn mann kein Tetris oder Pong machen will bietet sich auch etwas Sprite-basiertes an wie ein Arcadespielchen. Mit der Erfahrung die du dort sammelst, kannst du dann vielleicht an deine Spieleengine rangehen.

Thoran
Wer Rechtschreibfehler findet, darf diese gerne behalten.
Mein Entwicklertagebuch
Aktuelle Projekte: Universum: Domination (ehemalig AlphaOmega),Universum: Sternenjäger, PixelWars: Highscore-based Top-Down-Spaceshooter
Spieleengine Unreal 5
Matze
Moderator
Beiträge: 107
Registriert: 26.02.2009, 18:28

Re: Game Engine

Beitrag von Matze »

Ich kann Thoran nur zustimmen. Auch wenn du das vermutlich nicht hören willst, aber ich glaube mit dem Vorhaben eine Game-Engine zu programmieren, hast du dir etwas zu viel auf einmal vorgenommen.

Fang doch vielleicht erstmal an, dich mit einer Programmiersprache vertraut zu machen und versuche nebenbei ein kleines Spiel zu programmieren. Du wirst sehen, dass du da schon eine ganze Menge Gehirnschmalz reinstecken musst und man sowas keineswegs mal eben an einem Nachmittag fertig programmiert. Wenn du es schaffst ein kleines Spiel wirklich bis zum Ende fertig zu machen, kannst du überdies dich selber auch besser einschätzen im Hinblick auf Durchhaltevermögen und Motivation. Wie das ganze dann hinterher grafisch aussieht, ist eigentlich egal - darauf kommt es nicht an. Du kannst auch ein hüpfendes Quadrat machen, das kleine Dreicke einsammeln muss oder so. Wichtig ist die Implementierung der Spielmechanik.

Vielleicht ist es auch keine schlechte Idee, wenn du es dir zum Ziel machst, dein kleines Spiel hier zu präsentieren. Dann hast du was, worauf du hinarbeiten kannst und bekommst obendrein noch wertvolles Feedback für deine Arbeit.
Benutzeravatar
GamerZ
Beiträge: 41
Registriert: 19.12.2009, 18:39
Wohnort: Köln

Re: Game Engine

Beitrag von GamerZ »

Was sollte ich euer Meinung nach tun ?

Für Windowsprogrammierung in C++ gibt es dafür von Microsoft ein SDK ?

MfG GamerZ
Matze
Moderator
Beiträge: 107
Registriert: 26.02.2009, 18:28

Re: Game Engine

Beitrag von Matze »

Fang doch einfach mal mit XNA an. Das kannst du dir hier herunterladen. Einsteiger Tutorials dazu kannst du dir hier ansehen. Vorher brauchst du allerdings noch Visual Studio bzw. Visual C#. Die kostenlose Express Version gibt es hier. Zwar lernst du dann erstmal nicht C++ sondern C#, aber als Anfänger ist das vollkommen ausreichend und du kannst in Verbindung mit XNA wirklich tolle Sachen damit machen. Eine weiterführende Dokumentation zu XNA findest du hier. Mit C# kannst du mit WPF oder WindowsForms auch relativ leicht eigene Windowsprogramme, wie z.B. einen Level-Editor programmieren. Such einfach mal im Netz nach WPF oder WindowsForms. Es gibt auch einige gute MSDN-Webcasts zu den Themen.

Ich bin mir sicher, dass du damit erstmal viel Spass haben wirst und relativ schnell gute Ergebnisse erzielen kannst.

Beste Grüße, Matze
Benutzeravatar
GamerZ
Beiträge: 41
Registriert: 19.12.2009, 18:39
Wohnort: Köln

Re: Game Engine

Beitrag von GamerZ »

@ Matze

Ich find XNA nicht gut habs mal probiert find es nicht gut.
Will lieber richtig C++ lernen.
Xna ist gut für Anfänger das ist mir klar ^^.

MfG GamerZ
klickverbot
Establishment
Beiträge: 191
Registriert: 01.03.2009, 19:22
Echter Name: David N.

Re: Game Engine

Beitrag von klickverbot »

Was genau hat dich daran gestört*? Vielleicht kommen wir so auf einen grünen Zweig.

* Disclaimer: Ich habe mit/in XNA selbst noch nicht gearbeitet.
Matze
Moderator
Beiträge: 107
Registriert: 26.02.2009, 18:28

Re: Game Engine

Beitrag von Matze »

GamerZ hat geschrieben:Ich find XNA nicht gut habs mal probiert find es nicht gut.
Will lieber richtig C++ lernen.
Dann musst du dir eben beispielsweise Visual C++ installieren und das aktuelle DirectX SDK. Oder du entscheidest dich für OpenGL, je nachdem, was du besser findest. Dann such dir ein gutes C++ Tutorial (z.B. das was Aramis vorgeschlagen hat) oder ein gutes Buch und machst dich über die DirectX SDK Tutorials her oder such dir irgendwelche OpenGL Tutorials. Diese hier sind z.B. ein guter Einstieg. Nebenbei solltest du unbedingt dein Wissen über Vektoren- und Matrizenrechnung aufpolieren - ganz ohne wirst du nicht sehr weit kommen. Dann lässt du deiner Phantasie einfach freien Lauf und programmierst deine Engine oder dein Spiel oder deinen Level-Editor oder oder. Da ich selber mittlerweile nicht mehr in C++ programmiere, kann ich dir in der Hinsicht leider keine weiteren Tipps geben. Allerdings solltest du keine Probleme haben hier im Forum kompetente Hilfe zu finden.
GamerZ hat geschrieben:Erfahrung im Bereich Programmierung , Grafikporgrammierung keine.
In die Richtugn hab ich schon mal was gemacht.
Ich behersche keine Programmersprachen.
GamerZ hat geschrieben:Xna ist gut für Anfänger das ist mir klar ^^.
Hmm, und ich dachte du wärst einer.
Benutzeravatar
Herror
Beiträge: 97
Registriert: 24.12.2009, 23:13
Benutzertext: Ewiger Anfänger....
Alter Benutzername: Herror
Echter Name: Artur Schütz
Kontaktdaten:

Re: Game Engine

Beitrag von Herror »

Matze hat geschrieben:oder ein gutes Buch
Dabei muss ich dich aber warnen. Damit kann man nämlich ordentlich auf die Fresse fliegen!
Um das Problem deutlicher anzusprechen: Habe mir ein Buch gekauft von Jesse Liberty aus einem Buchfachhandel (möchte keine Namen nennen) und das Buch, was ich hatte war dermaßen veraltet.

Es wurde aus dem Englischen ins Deutsche übersetzt und ich vermute mal zu einer Zeit zu der die Bezeichnungen für die OOP in C++ noch nicht vollständig etabliert waren.
Auf jeden fall vermittelt das buch sehr sehr gut die Programmiersprache an sich aber die ganzen Bezeichnungen waren alle anders oder falsch übersetzt.
Ich habe danach nämlich kein Wort mehr aus den Turorials oder aus anderen Büchern vestanden, wenn da von Membern, Methoden, Objekten etc. gesprochen wurde, weil in dem alten Buch wirklich für alles ein anderer Begriff verwendet wurde...

Mit blieb da nichts anderes Übrig als mir ein aktuelleres Buch zu kaufen: DirectX 9 und Visual C++ von Christioan Rousselle. Das buch enttäuscht, weil es zwar versucht einen einstieg in C++ zu bieten aber gleichzeitig versucht in DirectX und Windowsprogrammierung einzuführen... ich habe davon nicht profitiert damals.

Ich würde dir das Buch hier empfehlen:
http://www.amazon.de/Lernen-professione ... 826617649/
und das Dazugehörende Übungsbuch um dein Wissen zu festigen
http://www.amazon.de/Das-%C3%9Cbungsbuc ... 826617657/

Diese Kombo ist mit Abstand das teureste was du machen kannst, aber wenn du es richig ernst meinst, dann ist das die beste möglichkeit um vernünftig in C++ einzusteigen.

Nachdem du C++ gut bis sehr gut beherrscht wird es ein Leichtes sein DirectX und Spieleprogrammierung zu lernen, denn die besteht eigenlich nur daraus, bestehende Bibliotheken zu versenden und Objektorientiert zu programmieren.(So meine interpretation)

Mach aber nicht den Fehler sofort Spiele programmieren zu wollen und irgendsoein halbgares Zeug zu kaufen, dass dir verspticht in 20 Tagen dein erstes Spiel fertig zu haben... davon hast du einfach nichts, wenn du noch nie Programmiert hast.
Wenn du ersmal gelernt hast zu programmieren, dann kannst du in jeder Sprache programmieren und alles andere sehr schnell lernen.

Lern also ersmal Programmieren. Danach kannst du das Spieleprogrammieren anfangen.

Soweit mein Rat.
Zuletzt geändert von Herror am 29.12.2009, 10:19, insgesamt 1-mal geändert.
Antworten