3D-Engine entwickeln
-
war beim ersten schuss richtig :), hab es natuerlich auch in google gecheckt, nicht dass ich hier ueber den auslaendischen pr0ndarsteller rede ohne es zu merken und marc++us mich dann kickt *hehe*
-
Eine Engine ist dasselbe wie jedes andere grosse Softwareprojekt.
Was Du dafür brauchst, findest Du heraus indem du mal ein Blatt Papier nimmst oder gleich einen Block und da aufschreibst was eine Applikation die diese Engine benutzt alles brauchen wird.
Ich meine: Schau Dir ma die Spiele an die es da draussen gibt, was haben die alle gemeinsam und was ist von Spiel zu Spiel verschieden? Es ist doch offensichtlich was die alle machen! Stellen Grafik dar, haben oft 3D-Sound, laden Dateien von meist selbstdefinierten Formaten von der Festplatte, haben eine GUI, reagieren auf Input vom Spieler usw. usf.
Was gibts da denn noch zu fragen? Das einzige was für jemanden bleibt wie Dich, ist, das lernen all der Details dieser Systeme und am Ende mit diesem Wissen anzufangen eine Engine zu bauen.
Es ist die falsche Antwort zu sagen: Lern OpenGL oder DirectX, erstmal solltest Du die Programmierung für dein Zielsystem lernen (z.B. Windows->WinAPI oder eben .NET oder Linux Posix-Standards etc.). Dann kommt das lernen über Dateiformate, wie sind Dateiformate aufgebaut und wie designt man selber welche. Nicht zu vergessen XML um einen Parser dafür zu machen oder ein INI Datei-Parser - je nach Anforderung... Ach und natürlich wie funktioniert Sound auf dem PC? Oder wie funktioniert das mit Threads, bald haben ja schon alle Mehrkern-Systeme? Tja, das wären eher die richtigen Fragen zu denen es meist jeweils ganze Bücher gibt.
Da hast Du auf jedenfall noch viel vor dir!
Gruss, Andi
-
Die frage ging in richtung Grafik-Engine, Die ist primär noch keine Spiel-Engine (man sollte überlegen, ob man es dann schon Engine nennen darf). Dafür braucht man nur OpenGL, Direct3D oder etwas gleichwertiges. Man muss ja nichtmal Dateien laden können, wäre zwar sehr empfehlenswert, aber es ist nicht zwangsläufig nötig.
-
Krux schrieb:
Die frage ging in richtung Grafik-Engine, Die ist primär noch keine Spiel-Engine (man sollte überlegen, ob man es dann schon Engine nennen darf). Dafür braucht man nur OpenGL, Direct3D oder etwas gleichwertiges. Man muss ja nichtmal Dateien laden können, wäre zwar sehr empfehlenswert, aber es ist nicht zwangsläufig nötig.
da liesst du falsch, siehe topic, es geht um eine 3D-Engine. eine Graphik-Engine enthaelt nur rendering und kann teil einer 2d oder 3d engine sein. eine 3D engine (wie der name schon sagt) kuemmert sich generell um alles im 3D-Raum, das kann sound, collision etc. sein (graphik ist nur ein kleiner teil davon).
-
Auch bei einer reinen "Grafik-Engine" brauchst Du Wissen über das System. Man sollte wissen wie man Fenster aufmacht und wie das jeweilige Betriebssystem das eigene Programm über Änderungen informiert. Also wenn das BS deinem Programm sagt: Der Benutzer will nun mit Alt-Tab Dein Fenster minimieren oder schliessen. Natürlich gibt es auch Bibliotheken wie z.B. die SDL, doch auch die machen Dir diese Arbeit nicht. Es bleibt Dir überlassen wie Du auf solche Nachrichten reagierst. Ignorierst Du sie, bekommst Du vielleicht massive Probleme vielleicht aber auch nicht, unterdrückst Du sie, hat Dein Programm wahrscheinlich kein Problem damit, der Benutzer jedoch wird eingeschränkt und hat nichtmehr das Standardmässige Look&Feel dass er sich so gewohnt ist und wird sich eventuell darüber aufregen (vorallem wenn Dein Programm am Ende noch einen Bug beinhaltet der in Kombination mit dem ignorieren der betriebssystemspezifischen Nachrichten dazu führen kann, dass nur noch ein Drücken auf den Power-Knopf des Rechners seitens des Benutzers aus diesem Programm führt.).
Weiterhin wirst Du auch Timing, Kollision und Speichermanager brauchen. Alles Systeme die auch mehr brauchen als nur das reine Verständnis einer Grafik-Bibliothek. Da ist es auch wichtig zu wissen, was kann mein Zielbetriebssystem und was muss ich selber implementieren.
-
http://rdxgames.net/projects/2drpg/index.html
Da gibts Videos zum erstellen einer 2D-Engine. Die Serie ist allerdings noch nicht fertig(-> Forum dort).
-
<edit>Sry, war völlig unnütz</edit>
-
Für den Fall einer Spiele-Engine hab ich was gefunden
http://de.wikipedia.org/wiki/Spiel-Engine
Schau dir die Liste an, was da alles reingehören sollte, weiter unten sind ein paar Links zu öffentlichen Engines
-
besser ist da wohl das verlinkte zu 3d engines: http://www.devmaster.net/engines/
-
Eine richtig gute Anlaufstelle ist folgende Seite: http://www.microsoft.com/germany/msdn/coding4fun/gamedev/default.mspx
Ist zwar C# und .Net und letztendlich setzt es doch voraus, dass man die DirectX Grundtutorials durcharbeitet und auch versteht. Aber man kann auch ohne schon viel da lernen.^^
Es sind 10 Video Tutorials, die sich mit dem Thema Spiele Programmierung befassen, ein großer Teil eben auch Engine Programmierung, es wird auch eine kleine eigene programmiert.
Der Author hat eine eigne geschrieben, mit Sound, Physik, Shadern etc, die ist Open Source und der Author benutzt die auch in den Videos. Bevor du jetzt wieder sagst, ich mag in keine andere Engine schauen, eine besser Kommentierte und Dokumentierte Engine gibt es nicht zum lernen und das kostenlos.
Also für die Arbeit die da hinter steckt, würde ich sogar Geld zahlen.
Ich empfehle es dir, dir das mal an zu schauen.
Und um Bücher, Tutorials, Artikel etc. wirst du nicht drumherum kommen
Ebenfalls gut ist auch GameDev.net da findet man auch sehr viel. Aber es gibt halt kein Tutorial alà wie entwickle ich eine Grafik Engine. Es gibt Tutorials, etc. Die vermitteln dir alles was du brauchst.
Viel erfolg und nimm dir nicht zu viel vor am Anfang, glaub mir, ich weiß was ich sage, ich fing auch so an wie du. Lern erst mal die Grundsachen, und wenn du alles über DX, bzw. OpenGl weißt, dann denk an ne Engine. WEnn du weißt was ein VertexBuffer ist, wie man ihn indiziert. Oder was eine Fixed Funtcion Geometry Pipline ist. Wie Vertices verarbeitet werden, was Matrizen damit zu tun haben, wie ein Vertex in der Pipeline transformiert wird usw. da kann ich noch stundenlang so reden. Befass dich mit diesen Dingen. Sonst wirst du später nur frustiert, weil du es nicht schaffst.

Grüße