Leveleditor Realtime

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
GamerZ
Beiträge: 41
Registriert: 19.12.2009, 18:39
Wohnort: Köln

Leveleditor Realtime

Beitrag von GamerZ »

Hi ich habe dass Buch 3D Spieleprogrammierung Kompendium gelesen.
Ich habe eine frage wie kann ich mein Leveleditor Real-Time mäßig machen.
Also z.B die Cryengine 2-3 dort sind im Leveleditor die gegner die sich bewegen,Wasser animiert mit Wellen,Vegetation von Bäumen
etc.

Wie krieg ich dass hin ?

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

Re: Leveleditor Realtime

Beitrag von Aramis »

Du schreibst eine Game-Engine, die auch in ein Editorfenster hineinrendern kann und legst ihr Design so an, dass die dargestellte Szene jederzeit zur Laufzeit verändert werden kann. Dann bastelst du den Editor darum, der dann die Schnittstelle zur Engine bildet ... so einfach, beziehungsweise mir ist nicht klar was du sonst hören willst.

Schritt 1 bestünde darin, die Game-Engine mal soweit zu bringen, dass sie nett animiertes Wasser und Vegetation überhaupt darstellen kann.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4838
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Leveleditor Realtime

Beitrag von Schrompf »

Im Allgemeinen sind sich wiegende Bäume, wallendes Wasser und so nur Shader-Effekte, die durch einen Zeitparameter gesteuert auf der Grafikkarte berechnet werden. Damit diese Effekte dann im Editor weiterlaufen, muss man nur die Zeitvariable weiterlaufen lassen. Das passiert also mehr oder minder vollautomatisch.

Der fließende Übergang zwischen Editierung und Spiel hat mich bei Crytek mehr begeistert. Dazu muss man halt die ganze Spielwelt sauber serialisieren und wieder herstellen können, damit vom letzten Zockdurchgang keine Reste zurückbleiben. Und alle Entities im Spiel müssen fließend in ihr Verhalten reinkommen und rückstandsfrei wieder daraus rauskommen. Solide Arbeit, die die Programmierer da geleistet haben.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Leveleditor Realtime

Beitrag von Krishty »

[klugpfeif]Das Thema ist weniger „Realtime“ als viel mehr „WYSIWYG“ :)[/klugpfeif]

Naja, wenn man ordentlich abstrahiert ist es der Engine hinterher egal, ob sie im Vollbildmodus das Spiel rendert oder in das Fenster eines Editors. Schrompf hat durchaus Recht, das eigentliche Problem ist, die Arbeitsschritte gut zu verwalten … den Editorstatus nach einem Probespiel zu restaurieren sehe ich z.B. eher als geschickte Nutzung eines sowieso nötigen Undo/Redo-Systems … und das kann es in sich haben.

Gruß, Ky
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
joeydee
Establishment
Beiträge: 1039
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Leveleditor Realtime

Beitrag von joeydee »

Dazu musst du dir zuerst im Klaren sein, worin (und warum) sich Editor- und Renderdaten generell unterscheiden.
Das Geschick besteht dann darin, den Abstand zwischen beiden Datengruppen (welche sehr unterschiedlich sein können, da beide für verschiedene Ziele optimiert sein müssen) möglichst gering zu halten.

Einfaches Beispiel: für einen Indoor-Level einer bestimmten Engine müssen Lightmaps berechnet und ein BSP-Tree erstellt werden, um im Spiel optimiert renderbar zu sein. Die BSP-gesplitteten Polygone sind im Editor jedoch dann nicht mehr zu gebrauchen, und die Lightmaps sehen sofort falsch aus sobald man die Geometrie oder ein Licht verändert.
Dagegen sind die meisten Editor-Daten, wie z.B. Nachbarschaftsinformationen von Kanten und Faces, für den Renderer später überflüssig und somit Overhead.
Aus Editorsicht ist ein renderbarer Level in der Regel also "kaputt", und für den Renderer die Editordaten zu aufgeblasen und langsam.

Schafft man es aber, diesen Overhead (in Bezug auf Grafikspeicher- und Prozessorenbelastung) möglichst gering zu halten bzw. on-the-fly lokal für den Editor wiederherzustellen, und umgekehrt geforderte Render-Optimierungen während dem Editieren lokal neu zu berechnen (sozusagen schnelles lokales Compilieren mitten im Level), hat man das Ziel des Ingame-Editors erreicht.
Stefan Zerbst
Moderator
Beiträge: 189
Registriert: 25.02.2009, 19:54

Re: Leveleditor Realtime

Beitrag von Stefan Zerbst »

GamerZ hat geschrieben:Hi ich habe dass Buch 3D Spieleprogrammierung Kompendium gelesen.
Das Dinge sollte man mal langsam aus dem Verkehr ziehen. Ich hoffe niemand versucht auf Basis des dortigen Editors etwas zu entwickeln :)

Die Usability war glaube ich ganz gut gelungen, aber das Software-Design ist kaum bis nicht-existent vorhanden .. wenn überhaupt. Das wichtigste bei so einem Tool wäre, erstmal zu planen was man im Spiel später alles haben möchte (Character Animationen, Terrains, AI-Pfade, usw.). Dafür muss man dann Datenstrukturen entwickeln und diese "editierbar", also auf Codebene machen. Aus eigener Erfahrung kann ich sagen, dass man zum Beispiel auch von vornherein an ein Udo Feature denken sollte wenn man es richtig machen möchte.

Ciao,
Stefan
Benutzeravatar
GamerZ
Beiträge: 41
Registriert: 19.12.2009, 18:39
Wohnort: Köln

Re: Leveleditor Realtime

Beitrag von GamerZ »

@ Stefan Zerbst

Wofür hast du dass Buch dann geschrieben ?? xD

Woher soll man dann lernen eine Game Engine zu programmieren?
Es intressiert mich wie man eine Game Engine inkl. Leveleditor entwickelt woher soll ich es dann lernen ?

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

Re: Leveleditor Realtime

Beitrag von Zudomon »

Erfahrung...
Wenn man nur anderer Leuts Design nachprogrammiert, läuft man schnell mit Scheuklappen durch die Gegend.

Falls die erste Engine nicht gut wird, versuche bei der zweiten die Design-Fehler zu vermeiden. Eine Engine programmieren lernt man ebend nicht über Nacht... da braucht es schon viele Jahre.
Die Meinungen hier gehen schon in die richtige Richtung. Willst du wirklich eine Engine schreiben oder lieber ein Spiel programmieren? Es bringt eigentlich nur was, eine Engine zu schreiben, wenn du dadurch Vorteile hast, die du mit Engines, die es bereits gibt, nicht hättest. Ansonsten ist es wirklich nur Zeitverschwendung.
Stefan Zerbst
Moderator
Beiträge: 189
Registriert: 25.02.2009, 19:54

Re: Leveleditor Realtime

Beitrag von Stefan Zerbst »

GamerZ hat geschrieben:Wofür hast du dass Buch dann geschrieben ?? xD
Seinerzeit gab es keine vernünftigen Bücher zu dem Thema, schon gar nicht auf Deutsch. Außerdem spricht ja nichts gegen das Buch an sich, sondern nur gegen den Programmierstil darin. Aber das war damals nun leider das, was ich als Stil drauf hatte. Aus heutige Sicht kann ich mich immerhin daran erfreuen, dass ich Code heutzutage besser designen kann :lol:

Ciao,
Stefan
Antworten