Hi, zuerst möchte ich mich entschuldigen für den eventuell unverständlichen Thread-Titel. Ich wusste keine bessere Beschreibung meiner Frage.
Also, im "ereignisorientierten" Ablauf einer normalen Delphi-Anwendung lassen sich verschiedene Abschnitte jener Anwendung problemlos programmieren und ohne weitere Konflikte realisieren. Ich hoffe, das war für jeden bis hierhin verständlich.
Nun sitze ich seit längerer Zeit an einem kleinen Spiel á la Trackmania. Wer's nicht kennt, benutze bei Interesse bitte Google.
3 strukturelle Elemente sind bei meinem Spiel vorhanden.
1. Die Umgebung während des Rennens selber.
2. Der Strecken-Editor
3. Das GUI
Mein Problem ist das Management der OpenGL Verarbeitung. Ich habe im Prinzip eine einzelne Render-Prozedur in der nach verschiedenen If-Strukturen verschiedene Szenen zu rendern sind.
Beispiel:
Ist der Wert "gui_ACTIVE" wahr, dann zeichnet die Routine das Spielmenü. Ist sie falsch, dann eben nicht.
Nun kann ich mir beim besten Willen nicht vorstellen, dass größere Projekte auch in diesem Stil realisierbar sein sollen.
Wie kann ich die verschiedenen Abläufe in einer Renderprozedur besser koordinieren bzw. strukturieren? Oder ist es eher sinnvoll vollkommen anders rendern zu lassen, also mit verschiedenen Prozeduren???
Ich hoffe irgend jemand hat mein Problem und meine Fragen verstanden.
Bei komplettem Unverständnis oder sonstigen Fragen werde ich demnächst auch gerne auszugsweise Code zeigen, eventuell hilft das.
mfG, Killian.
_________________ Die Antwort ist 17, aber wie lautet die Frage?
Registriert: Sa Jan 01, 2005 17:11 Beiträge: 2068
Programmiersprache: C++
Ich denke zwar, dass ich deine Antwort nicht richtig beantworten kann, weil ich noch nicht mit grösseren Projekten gearbeitet habe, aber ich versuche es denoch:
In Tutorial von Sascha verwendet er eine Statemaschine, die auf Art deiner IF-Abfragen arbeitet.
Dort überprüft er dann ob z.b der Editor aktiv ist und nimmt dann die Renderroutine für den Editor.
Hier an der Stelle muss ich nochmal nachfragen: GUI ist bei dir das Menu, dass der Spieler nach dem Spielstart sieht?
Nicht das es bei anderen Szenen auch noch gezeichnet wird.
Ansonsten ist es ein gutes Konzept.
In meinem eigenen Projekt wende ich auch die Methode von Sascha an, nur das ich nicht beim Rendern unterscheide sondern direkt beim Mainloop die passende Funktion aufrufe.
Jo. Dafür verwendet man afaik eine Statemachine, wie es i0n0s bereits angedeutet hat
OpenGL ist ja bleistiftsweise auch eine Statemachine, wenn auch eine recht komplexe. Im Gegensatz dazu ist die von Sascha recht simpel, reicht aber für viele Anwendungsgebiete aus
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Geschickt finde ich OOP + Statemachine.
Also du hast über einen Zustand codiert was gerade gezeichnet werden soll. Jedes Zu zeichnende Objekt, verwaltet aber seine Zeichenroutine selbst (GUI, Editor). Außerdem legst du noch Klassen an, die koordinieren in welchem Szenario was zu sehen ist. Also z.B. ein Menü-Controller der nach und nach alle Menü-Komponenten aufruft damit die sich selbst zeichnen. So kannst du alles schön in kleine Teile zerhacken, und brauchst trotzdem nocht zuviele Aufrufe. Du rufst dann ja nur noch die entsprechende Kontrollklasse auf. Die regelt das dann...
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Hallo, danke für eure Hilfe, das hat mir sehr geholfen.
@Flash: Super, solch ein Arbeitsprinzip geht exakt in meine gewünschte Richtung. Da ich im Moment vor dem Problem stehe, gnadenlos im WirrWarr meiner Render-Routine zu versickern, ist dein Vorschlag "die Erlösung"
Schönes Forum, kompetente Leute. Toll!
mfG, Killian
_________________ Die Antwort ist 17, aber wie lautet die Frage?
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
WirrWar + OOP Mir fällt gerade ein, dass ich noch ein Tutorial fertig zu schreiben habe... Der 2. Teil zur Softwareentwicklung ist aber leider ein echtes Monster geworden...
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Mitglieder in diesem Forum: 0 Mitglieder und 6 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.