Registriert: Mi Jan 08, 2003 15:49 Beiträge: 266 Wohnort: Aachen
Hi,
vor einigen Wochen habe ich angefangen meinen Editor zu schreiben. Jetzt ist er so weit fertig das ich damit 3D Levels erstellen kann. Das einzige was noch verbessert werden muss ist die Benutzung und die Handhabung des Editors. Ich habe einfach drauf los programmiert ohne mir Gedanken zu machen für was ich den Editor mal benutzen werden, ich wollte nur einen Editor erstellen mit dem man 3D Level entwerfen kann. Doch jetzt ist es so weit das ich mit der Programmierung der Engine anfangen möchte. Der Editor besteht nicht wirklich aus einer Engine. Alles was ich im Editor benutze sind verteilt auf einzelne Units. Vielleicht zur Erklärung ich habe eine liste in der alle meine Vertices gespeichert sind. Habe auch noch eine Liste mit allen Faces die gezeichnet werden sollen. Ein Face besteht aus vier Vertices und wird so zusagen als Quad gezeichnet.
Jetzt habe ich im Editor eine Klasse (TMapLoader), diese Klasse übernimmt die Verwaltung/Zeichnung/Laden/Speichern der Vertices bzw. Faces. Meine Engine soll für einen 3D Shooter programmiert werden, doch leider habe ich keine Ahnung wie ich meine Klassen nennen/aufbauen soll. Also ich gehe mal davon aus das ich eine Klasse brauche die die Verwaltung der Texturen und der Sound Files übernimmt und dann natürlich noch meinen MapLoader, obwohl den müste ich vielleicht auch anders aufbauen, aber sonst habe ich keine Ahnung. Vielleicht kann ja einer von euch mir weiter helfen/Tipps geben oder so.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Schon mal eines vorne weg. Wenn du eine "Engine" programmieren möchtest, dann ist "einfach drauf los" schon mal der vollkommen falsche Ansatz. Das funktioniert vielleicht sollange du kleine Tools programmierst aber wenn es um etwas schwierigeres und komplexeres, wie ein 3D Shooter, geht dann kannst du das vergessen.
Du musst dir vorab schon mal ein paar Gedanken machen.
Für was soll die Engine genau ausgelegt sein. (Welche Art von Spiele sollen damit möglich sein?) Es ist nur sehr schwer (wenn überhaupt) möglich eine Engine zu schreiben die für alles einsetzbar ist. Da kommt selten was gescheites bei raus.
Welche Hardware (Technologien) sollen unterstützt werden? Sollen VBO's, Vertex und Fragmentprogramme etc. unterstützt werden?
Halt so, dass du DIR vorher mal klar machst was deine Engine alles unterstützen und können soll. Mach dazu am besten eine Liste in Word oder so. Wenn du diese Liste fertigt hast dann streichst du alles weg was vollkommen as der Luft gegriffen ist. Denn das werden Dinge sein die dein Projekt zu Fall bringen werden.
Die nächste und wichtigste Frage die du dir unbedingt stellen musst. BIN ICH ÜBERHAUPT IN DER LAGE DAS ZU PROGRAMMIEREN??? Habe ich überhaupt genügend Erfahrung im Programmieren und im Umgang mit OpenGL um so ein großes Projekt tatsächlich durchzuziehen? Wenn du daran Zweifel hast dann würde ich an deiner Stelle mit etwas Kleinerem anfangen.
Wenn du der Meinung bist du schafst das. Dann würde ich mich wieder hinsetzen und mal ein Klassenkonzept ausarbeiten. Also Schritt für Schritt jede Station der Engine durchdenken. Was muss da passieren und was für Aufgaben und Anforderungen existieren dort (interaktion mit anderen Stationen). Und Anhand von den Erkenntnissen die davon trägst würde ich meine Klassen schreiben. Und immer noch im Hinterkopf behalten, dass du das später noch mal erweitern und Optimieren möchtest.
Eine vorgefertige Lösung für ein Klassenkozept gibt es nicht. Macht auch keinen Sinn. Denn ein solches Konzept sieht für jeden Anwendungsfall anders aus.
Was du aber auf jeden Fall benötigen wirst ist ein Texturenmanager.
Wenn du dann das Klassenkonzept soweit durchdacht und teilweise programmiert hast dann wird so etwas eigentlich in einen Editor gebaut. Je nach den verwendeten Technologien (BSPTree, Portale, Landscapes etc.) kommen natürlich komplett unterschiedliche Anforderungen an deinen Editor. Und auch hier solltest du wieder bedenken, dass du den erweitern können musst.
Verstehe mich da jetzt aber auch bitte nicht Falsch. Ich persönlich habe den Eindruck (anhand der Fragen die du im Forum gestellt hast), dass du für so etwas noch nicht bereit bist. Das ist jetzt keineswegs böse gemeint. Ich will dir nur keine falschen Tatsachen vorspielen.
PS: Ich bin von mir aber auch der Meinung, dass ich bei so etwas reichlich Probleme bekommen würde und das obwohl ich beruflich als Programmierer Tätig bin. Okay mein größtes Problem wäre dabei wohl die Zeit.
PPS: Eine einfache LISTE mit zu rendernden Flächen reicht auf keine für eine Engine. Dort benötigst du mindestens einen Baum. (BSPTree) Der sollte im Editor generiert werden.
Registriert: Mi Jan 08, 2003 15:49 Beiträge: 266 Wohnort: Aachen
Danke erstmal für die lange Antwort damit kann ich schon was anfangen.
ich weiss ja wie du das gemeint hast. manchmal habe ich selbst das Gefühl das ich mir da ein zu großes Projekt ausgesucht habe.
Ich habe noch nie ein Spiel programmiert noch nie wirklich ein Grosses Projekt erstellt und wollte mit meiner Engine OpenGL erlernen. Also am Anfang wird meine Engine ziemlich "krank" aussehen und mit der Zeit lerne ich mehr an Opengl Kenntnisse und kann dann so meine Engine erweitern/verbessern. Ich hoffe mal das ich mir kein zu großes ziel gesetzt habe was ich auch nicht schaffen kann. Ich will ja nicht in einem Monat ein komplettes spiel programmieren, ich weiss schon das man dafür viel zeit braucht.
Hallo Ihr beiden, ich kann mich da nur LossyEx anschliessen, wer möchte nicht gerne eine eigene Engine für seine Projekte schreiben, aber das ist wirklich nicht ohne. Ich habe da Erfahrungen aus der C++ und Direktx Welt sammeln können, auch wenn es hier um Delphi und OpenGl geht, aber das Prinzip ist das selbe. Mann sollte sich vorher genau gedanken machen was für Projekte später mit der Engine realisiert werden sollen und auch welche Genre unterstützt werden soll. Um aber nicht einfach alles zu wieder hohlen was LossyEx schon sehr schön beschrieben hat könnte ich Dir gerne meine Directx Engine zur verfügung stellen, nicht das diese unbedingt als Lerneffekt dienen kann, aber Du könntest schon einmal grob einsehen, was so alles benötigt wird.
Wenn Du interresse daran hast kannst Du mir ne Nachricht zu kommen lassen. *g*
_________________ Gruß Sascha [SM3D Game Development]
Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.