Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Tankian

Frischling

  • »Tankian« ist der Autor dieses Themas

Beiträge: 6

Beruf: Schueler

  • Private Nachricht senden

11

06.06.2004, 17:40

Zitat

Für welche Art von Spielen willst du denn das ganze machen?


Für nen 3D Shooter natürlich. Ich weiß aber noch nicht, ob es sich Indoor abspielen soll oder gemischt ..

Zitat

Für jeden Objekttyp ein eigenes Dateiformat zu erstellen ist sinnlos. Eigentlich würd ich sagen das man sich ein eigenes Format erstellt mit dem die gesamte Engine dann arbeitet. Die Engine kann dann auch nur mit diesem Format Arbeiten.


Ich glaub halt, mich an ein Beispiel zu erinnern, wo sehr wohl zwischen ner einfachen Baumanimation und nem Charakter unterschieden wird. Ein eigenes Dateiformat ziehe ich glaub ich nicht in Erwägung, da das doch sehr viel Arbeit ist. Müsste ja auch irgend nen Editor schreiben mit dem ich dann meine Modells erstelle.

Bezüglich Mathe, was muss denn da alles enthalten sein ?
Vektor, Matrix, ... ?

Anonymous

unregistriert

12

06.06.2004, 19:11

Darf ich mich kurz mit 2 Fragen in diese diskussion einklinken?
Einmal geht es um die Thematik DLL oder eigenständig Ausführbare Datei: Ich arbeite schon länger an meiner kleinen Engine, bisher immer als nicht-DLL Projekt. Ich hatte bisher immer im Hinterkopf, ich könne ja später alles recht einfach auch als DLL exportieren. Nun die Frage: Ist denn das (im Visual Studio .NET) möglich? Ich weiß, wie man DLL Dateien erstellt oder wie man Funktionen exportiert, ich suche jedoch jetzt nach einer ganz einfachen möglichkeit, meine Engine in eine DLL kompilieren zu lassen. Oder muss ich etwa die Hau-Ruck Methode angehen, und den ganzen Quellcode in ein neues DLL Projekt kopieren?

Und die 2. Frage nur kurz: Was genau versteht ihr unter einem Scenegraph?

Zitat


Ich glaub halt, mich an ein Beispiel zu erinnern, wo sehr wohl zwischen ner einfachen Baumanimation und nem Charakter unterschieden wird. Ein eigenes Dateiformat ziehe ich glaub ich nicht in Erwägung, da das doch sehr viel Arbeit ist. Müsste ja auch irgend nen Editor schreiben mit dem ich dann meine Modells erstelle.


Nicht unbedingt - sieh dein eigenes Format als Protokoll bzw. "Sprache" Deiner Engine an, dann könnte man leicht eine Schnittstelle in Form von Tools schreiben, die andere Dateiformate in Deines konvertieren. I.d.R. reichen ja auch 2 oder auch 3 Formate aus, die du in Dein eigenes bringen musst, wobei es natürlich nicht so einfach ist, auch Animationen zu unterstützen.

Jumping Jack

Treue Seele

Beiträge: 142

Wohnort: Hamburg

Beruf: Schüler

  • Private Nachricht senden

13

06.06.2004, 19:58

Nochmal zu den DLLs:
Einzelne DLLs hätten noch den Vorteil, dass Module nicht doppelt vorhanden sind.
Bsp:
DLL1 enthält Modul A, B und C. DLL2 B,C,D und E.

SceneGraph:
Jo, wäre nett, wenn jemand seinen favourite link dazu posten könnte.
Ich habe mir schonmal was zu SceneGraphs angeschaut, allerdings habe ich nicht richtig verstanden, worauf diese Technik genau abzielt.

14

06.06.2004, 20:35

Zitat

Für nen 3D Shooter natürlich. Ich weiß aber noch nicht, ob es sich Indoor abspielen soll oder gemischt ..
In dem Falle ist BSP/PVS in Kombination mit einem Quadtree ganz gut. Ein eigener Level Editor ist dann allerdings ein muss. Die Outdoor Areale werden mit dem QuadTree eingeteilt, und für die restlichen Indoor-Areale kommt dann der BSP/PVS Algorithmus zum einsatz. Fällt mir halt grad so spontan ein ;) Es ist nicht immer ganz einfach Mixed-Level einzuteilen. Ich denke hier kommt es auch oft darauf an was überwiegt. Bei Battlefield z.B. werden Techniken wie BSP nicht angewand. Die Indoor-Szenen werden einfach per Broteforce gerendert. Da es sich ja auch nur um kleine Teile handelt.
Bei Spielen wie z.B. UT2k3 wo es auch große Outdoor Areal gibt als auch große Indoor-Areale, werden die Outdoor-Areale als Indoor-Areal behandelt.

Zitat

Ich glaub halt, mich an ein Beispiel zu erinnern, wo sehr wohl zwischen ner einfachen Baumanimation und nem Charakter unterschieden wird. Ein eigenes Dateiformat ziehe ich glaub ich nicht in Erwägung, da das doch sehr viel Arbeit ist. Müsste ja auch irgend nen Editor schreiben mit dem ich dann meine Modells erstelle.
Warum sollte es da einen Unterschied geben? Animation ist Animation. Man muss nur Unterscheiden ob man eine KeyFrame Animation hat oder eine Skelettanimation hat. Was für ein Objekt damit nun bewegt wird und wie ist doch wurscht.
Das einzige wo man unterscheiden kann ist, zwischen einem Level-Format und einem Objekt-Format, die neben dem Textur-Format existieren.
Wenn deine Engine speziell für ein Game ausgerichtet ist, dann hat es auch ein Level-Format. Ist es eine Allgemeine hat es keines da man ja noch nicht weis wie das Spiel denn ausschaut. Aber wenn man sein Dateiformat geschickt aufbaut, kann man alles mit einem Format machen. Stichwort heißt hier: Chunk-Aufbau

Zitat

Bezüglich Mathe, was muss denn da alles enthalten sein ?
Vektor, Matrix, ... ?

??? Na alles was du brauchst. Vektor,Matrix und Ebenen Opertionen sind Standard. Alles andere kommt mit der Zeit von ganz alleine ;) Kannst dich aber schon mal mit Zeitrechnung und Quaternion befassen, das wirst du brauchen.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Tankian

Frischling

  • »Tankian« ist der Autor dieses Themas

Beiträge: 6

Beruf: Schueler

  • Private Nachricht senden

15

06.06.2004, 21:19

Danke an alle, hat mir sehr geholfen.

Weiß zwar noch immer nicht genau, wo ich anfangen soll, aber zumindestens hab ich jetzt mal den groben Aufbau. Hoffe halt beim Notizen machen, skizzieren, planen halt .. wird mir der Anfang dann auch klar.

greetz
Tankian

16

06.06.2004, 21:30

Bevor der Thread jetzt abgeschlossen wird und damit mehr oder weniger in Vergessenheit gerät, möchte ich nochmals an die Frage von Ben und Jumping Jack erinnern. Ich habe nämlich das gleiche Problem:

Was genau ist ein Scenengraph?

Eine Erklärung wäre gut, ein Link zu mehr Informationen noch besser!

adapto

Treue Seele

Beiträge: 147

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

17

07.06.2004, 01:55

ich denke mal damit meinen die den aufbau einer scene, also animationen, ereignisse usw. die vor dem rendern ausgeführt werden.

Anonymous

unregistriert

18

07.06.2004, 15:06

Hallo,

bei der ganzen Disussion über BSP/PVS oder Quadtrees muss ich mich immer wieder an "die Großen" erinnern. Ich habe neulichs mal diese Sandbox von FarCry gesehen, man editiert seine Map, klickt auf nen Button und schwupps - kann man drin rumlaufen. Das bedeutet ja, dass es überhaupt kein BSP gibt, da diese Berechnungen ja anscheinend total wegfallen. Nun könnte man argumentieren, dass FarCry ja sehr viele große Outdoor Areas hat, aber:
Bei Doom3 sieht es genauso aus, keine stundenlangen Berechnungen für die BSP Dateien mehr. Ich habe irgendwo gelesen, dass es reine "Portal" Engines sind. In Davids Buch wird diese Thematik ja nur angeschnitten, kennt vielleicht jemand eine Seite oder irgendeine andere Quelle (wird das Thema vielleicht in Game Programming Gems 1 gehandelt?), wo man etwas genaueres über diese Portal-Technologie lernen kann?

Ist BSP Vergangenheit? Ok, das klingt vielleicht zu extrem, man sollte es sicher hier und da noch unterstützen. Ich tendiere wirklich dahin, BSP aus meiner Engine wegzulassen (ich bin an dem Punkt, wo ich mich langsam diesbezühlich entscheiden muss). Diese "neuerung", nicht mehr auf die Kompilierung durch den BSP Algo warten zu müssen, war eine der Nachrichten, die die zukünftigen Mapper von Doom3 am meisten erfreut hat. Ich glaube kaum, dass z.B. id in einer neuen Engine (die es vielleicht irgendwann mal geben wird) wieder zurück zu BSP geht.


Zitat


Na alles was du brauchst. Vektor,Matrix und Ebenen Opertionen sind Standard. Alles andere kommt mit der Zeit von ganz alleine Kannst dich aber schon mal mit Zeitrechnung und Quaternion befassen, das wirst du brauchen.


Was meinst Du denn mit Zeitrechnungen? Das Berechnen, wie lange die Engine für einen Frame benötigt (um die Geschw. homogen auf versch. Systemen zu machen), oder etwas ganz anderes? :)


P.S. könnte sich nochmal jemand meine Frage vom 1. post anschauen? Es ging da um eine DLL Frage, wie ich mein aktuelles (nicht-DLL) Projekt am besten in ein DLL Projekt bekomme, danke :)

19

07.06.2004, 20:36

Ich denke ein Algo kann nich altern. Es kann aber sein das der Algo nicht mehr zu den aktuellen Grakas past und daher nicht mehr verwendet wird. Bei heutigen Grakas kommt es nicht mehr so auf die Anzahl der zu Rendernden Triangles an sondern eher darauf wieviele Pixel das Triangle belegt.


Damit ein Spiel auf jedem Rechner gleich schnell läuft und eine Sekunde auch eine Sekunde im Spiel ist, baucht es einen Time Controller der dafür sorgt. Sicher ist nicht viel Arbeit, aber gehört halt auch dazu ;)


Wenn du aus deinem Projekt ein DLL Projekt machen willst, must du darauf achten wo du Speicher Reservierst und wo du diesen dann wieder freigibst. Bei einem Nicht-DLL Projekt wird da meist nicht drauf geachtet da es hier nicht so wichtig ist. Das trifft vor allem die Templates (wie z.B. std::string. Die Foren sind voll von verzweifelten Leuten die einen Memory Access Violation Error bekommen).
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

20

07.06.2004, 20:51

Angenommen, man baut seine Engine auf Plugins auf.

Wie kommunizieren dann die Plugins miteinander?

Gibt es da ein (Über)Plugin, welches über allen anderen steht? Es verwaltet dann alle anderen Plugins und lädt sie auch? Dieses (Über)Plugin wäre dann das einzige, welches von einem Programm geladen werden müsste und über dieses (Über)Plugin greift das Programm dann auf die Engine zu?

Wenn jetzt z.B. die Methode zum Initialisieren von Direct3D/OpenGL einen Logbucheintrag machen möchte, schickt sie dann eine Message/Nachricht/Botschaft/(-> Funktionsaufruf mit überladenen Methoden) an das (Über)Plugin, es solle doch ein Logbucheintrag generieren... Das (Über)Plugin leitet die Message an das LogPlugin weiter... ist kein Logplugin vorhanden, passiert nichts...

Kann/Könnte man dies so realisieren?

Werbeanzeige