|
|
Re: Tricks für Außenwelten
[Re: Uhrwerk]
#235820
11/10/08 12:06
11/10/08 12:06
|
Joined: Oct 2007
Posts: 306 Austria
Alan
OP
Senior Member
|
OP
Senior Member
Joined: Oct 2007
Posts: 306
Austria
|
Morrowind hat ein Parzellensystem benutzt, bei dem beim Wechsel zwischen zwei Parzellen nachgeladen werden musste. Innenbereiche von Gbeäuden wurde auch allesamt extra nachgeladen. Ich denke das fällt nicht unter extra große Level.
Doch, finde ich schon. Es wäre mir ehrlich gesagt relativ egal, wenn das Spiel zwischen den "Parzellen" kurze Ladezeiten hätte, und Ladezeiten für Innenräume von Häusern gab es sogar in Oblivion, das gehört schon fast zum guten Ton  Die Frage ist - wenn man sowas haben möchte und sogar die Ladezeiten in Kauf nimmt, wie stellt man es in GS an? Einfach ein großes Terrain in mehrere kleinere zu zerstückeln wie Schmerzmittel es vorgeschlagen hat, wird da wohl vermutlich nicht reichen, oder? Ich könnte mir aber folgende Lösung vorstellen: Man verwendet ein Parzellensystem, ähnlich wie in Morrowind, und lädt dabei immer 9 Teil-Terrains: jenes auf dem sich der Spieler gerade befindet (mitsamt dynamischen bzw. interaktiven Elementen wie Monstern etc.), und die 8 umgebenden, die er sehen kann sowie deren statische Elemente (Häuser, Bäume etc.) via LevelOfDetail, aber ohne interaktive Elemente. Sobald der Spieler dann den Rand der aktuellen Terrain-Parzelle erreicht, wird ein neuer Level geladen, in welchem dann die gerade betretene Parzelle im Mittelpunkt steht, deren interaktive Elemente dann mitgeladen werden, während die gerade verlassene Parzelle mit LOD geladen wird. Den einzigen wirklichen Nachteil, den ich dabei sehe (abgesehen von den Ladezeiten) ist folgender Fall: angenommen der Spieler wird grade von einem Monster verfolgt, während er die Parzelle wechselt. Da das Monster aber ein interaktives Element der vorherigen Parzelle ist, würde es von einem Augenblick auf den nächsten einfach verschwinden und nach dem Ladevorgang nicht mehr vorhanden sein. Wenn man beim Ladebildschirm den Bildschirm schwarz werden lässt (wie beim Betreten von Häusern in Oblivion etwa), ist das nicht sooo gravierend, will man es aber so haben wie bei Morrowind in der Außenwelt, dass nur ein kleines Fenster mit Ladebalken eingeblendet wird, würde das Verschwinden des Monsters doch sehr ins Gewicht fallen...
|
|
|
Re: Tricks für Außenwelten
[Re: Alan]
#235824
11/10/08 12:19
11/10/08 12:19
|
Joined: Aug 2005
Posts: 512 Bayern
Schmerzmittel
User
|
User
Joined: Aug 2005
Posts: 512
Bayern
|
Man könnte doch solche Monster/Gegner so etwas wie eine Interne Nummer geben, das beim Leveladen mitgeladen wird? So nach dem Mott: Ich bin ein Monster ich verfolge dich; auch wenn das Level lädt. Bin ich kein Monster, dass dich verfolgt, bin ich weg. 
A7 Com V7.80
|
|
|
Re: Tricks für Außenwelten
[Re: Schmerzmittel]
#235825
11/10/08 12:43
11/10/08 12:43
|
Joined: Apr 2007
Posts: 3,751 Canada
WretchedSid
Expert
|
Expert
Joined: Apr 2007
Posts: 3,751
Canada
|
warum ein komplett neues Level laden? Nehmen wir an der Spieler verlässt die mittlere Parzelle, dann werden die 3 Parzellen die ganz hinten sind gelöscht und die 3 nächsten vor die aktuellen 3 gesetzt. Das jetzt aktuelle Terrain ohne LOD Stufe zu laden ist ja kein Problem. Monster usw. können dem player dann auch folgen und man müsste beim neuen Level laden nicht auch noch gucken wo der Spieler das Terrain betritt.
Shitlord by trade and passion. Graphics programmer at Laminar Research. I write blog posts at feresignum.com
|
|
|
Re: Tricks für Außenwelten
[Re: WretchedSid]
#235832
11/10/08 13:31
11/10/08 13:31
|
Joined: Jan 2002
Posts: 4,225 Germany / Essen
Uhrwerk
Expert
|
Expert
Joined: Jan 2002
Posts: 4,225
Germany / Essen
|
@Pappenheimer: Ja, die Engine ist mehr als beeindruckend und produziert eine der stimmigsten Grafiken, die mir je untergekommen sind. Leider mit allen Nachteilen, die damit verbunden sind @ Ladezeiten etc.
@Alan: Ja, das kann man mit 3dgs alles problemlos realisieren. Erweitere Deinen Vorschlag so, wie Schmerzmittel und Sylar das beschrieben haben. Bilde Dir aber bitte nicht ein, dass das einfach werden wird. Wenn Du das realisieren willst, wirst Du eine Menge Freude haben und wirst auf viele zu lösende Probleme stossen.
Always learn from history, to be sure you make the same mistakes again...
|
|
|
Re: Tricks für Außenwelten
[Re: Uhrwerk]
#235891
11/10/08 19:26
11/10/08 19:26
|
Joined: Oct 2007
Posts: 306 Austria
Alan
OP
Senior Member
|
OP
Senior Member
Joined: Oct 2007
Posts: 306
Austria
|
@Alan: Ja, das kann man mit 3dgs alles problemlos realisieren. Erweitere Deinen Vorschlag so, wie Schmerzmittel und Sylar das beschrieben haben. Bilde Dir aber bitte nicht ein, dass das einfach werden wird. Wenn Du das realisieren willst, wirst Du eine Menge Freude haben und wirst auf viele zu lösende Probleme stossen.
Ich hoffe auf das Erstere und befürchte das Letztere... aber primär will ich einfach nur ein Projekt haben, an dem ich arbeiten kann und dabei so viel Erfahrung wie möglich sammeln kann - und da ich schon immer ein Fan von Open-World-RPGs war, in denen Erkundung eine wichtige Rolle spielt, dachte ich "Warum nicht einmal gleich so richtig *groß* anfangen?" ^^ Die Idee mit der Monster-Variable, die angibt ob der Spieler gerade in einem Kampf mit diesem Monster verwickelt ist oder nicht, gefällt mir schon sehr muss ich sagen, doch wirklich... hat was! Also so langsam bekomme ich schon eine relativ konkrete Idee davon, wie das Ganze dann schlussendlich aussehen sollte. Nur zwei brennende Fragen hätte ich noch hierzu: 1) Wenn die Ladezeiten zwischen den Parzellen 1 Sekunde oder mehr betragen, würde ich gerne einen Ladebalken einbauen (damit der Spieler nicht denkt, das Spiel hätte sich aufgehängt oder so). Nur... wie kann man den "Ladefortschritt" eines Levels (am Besten in Prozent) in eine Variable speichern? Gibt es da eine vordefinierte Funktion dafür? 2) Wie stellt man es am Besten an, dass die Terrain-Abschnitte sich an den Rändern lückenlos zusammenfügen lassen? Das Einfachste wäre, das große Gesamt-Terrain in einem Terrain-Editor zu erstellen, dann zu zerstückeln und anschließend die Einzelteile abzuspeichern, aber ich habe die Befürchtung dass diese Methode meinen PC überlasten könnte. Alternative Vorschläge dazu?
Last edited by Alan; 11/10/08 19:26.
|
|
|
Re: Tricks für Außenwelten
[Re: Widi]
#235904
11/10/08 21:07
11/10/08 21:07
|
Joined: May 2008
Posts: 301
Oxy
Senior Member
|
Senior Member
Joined: May 2008
Posts: 301
|
Um grosse Aussenlevel zu erstellen, die eine einheitliches Bild ergeben / eine durchgehende landschaft darstellen gibt es grundsätzlich 2 Herrangehensweisen:
#1 Alles in einer Welt ohne ladeunterbrachungen darstellen (Gothic, Oblivion / Fallout 3) #2 Alles in Segmente einteilen, die zwar einzeln geladen werden, aber visuell komplett ineinander übergehen (Morowind, aber im grunde auch schon Halflife)
Für 1 muss man im Hintergrund permanent Objekte nachladen, aber auch entfernen! können. Ein gutes LOD Mangament ist die ganze Kunst. Gothik 1 war ein einziges LOD Werk. (Selbst in Gothik 2 war die Sichtweite nicht mehr ganz so hoch) Fallout 3 hat die warscheinlich beste "LOD" Landschaft im Augenblick.
Um ein spiel im 1 Modus in 3dgs zu erstellen muss man zuerst mal sehen, ob man effizient unnötige Objekte wirklich aus dem Speicher bekommt. Die andere Sache sind eventualle Berechnungsprobleme wenn die landschaft sehr gross ist (auflösung der quants, maximale anzahl).
Ansonsten sollte man gleich ein Spiel im Modus 2 erstellen, und das gute alte Level_load zum reinigen des Speichers verwenden.
Im grunde geht es im Modus 2 nur darum, das man denkt, das die angrenzenden level einer erweiterung des ersten sind. (abgesehen von der Ladeunterbrechung). Ein eigenes levelformat und dynamisches Laden der level aus diesem ist der effizienteste Ansatz.
Vor allem die Terrains sollte man dynamisch erzeugen. (Änderung des Meshes) aus einem eigenen Vorlageformat. So kann man die LOD Stufen gut kontrollieren.
Monster die einen Verfolgen muss man selbstständig neu erzeugen und entsprechend umpositionieren / mit ihrem KI initialisieren. Das übernimmt 3dgs nicht automatisch und ist die arbeit für den programmierer...
-----
engines von Gothic / Morrowind etc, sind direkt dafür entwickelt worden. (vor allem das Lademanagement, und der LOD support). Das hat nichts mit tollen "shader" technologien zu tun, sondern einfach mit der Architektur der Levelvisualisierung, des ressourcenladens und der Berechnung. 3dgs ist für kleinere Level optimiert.
Last edited by Oxy; 11/10/08 21:23.
|
|
|
Re: Tricks für Außenwelten
[Re: Alan]
#235947
11/11/08 02:21
11/11/08 02:21
|
Joined: Jan 2002
Posts: 4,225 Germany / Essen
Uhrwerk
Expert
|
Expert
Joined: Jan 2002
Posts: 4,225
Germany / Essen
|
aber primär will ich einfach nur ein Projekt haben, an dem ich arbeiten kann und dabei so viel Erfahrung wie möglich sammeln kann - und da ich schon immer ein Fan von Open-World-RPGs war, in denen Erkundung eine wichtige Rolle spielt, dachte ich "Warum nicht einmal gleich so richtig *groß* anfangen?" ^^ Weils in die Hose geht. Und das ist nicht böse gemeint und soll dich auch nicht demotivieren. Im Gegenteil. Schön, dass Du so ambitioniert bist! Für Anfänger ist es allerdings meistens am besten ein kleines Projekt zu starten und das dann auch zu Ende zu bringen. Das zum Ende bringen ist ein ganz wichtiger Punkt beim Erfahrungssammeln. Wenn Du einfach nur basteln willst ohne konkretes Ziel kannst Du dich natürlich gerne an Deiner Idee versuchen. Wenn Du ein Projekt durchziehen willst, dann würde ich Dir empfehlen ein kleines Spiel mit einem kleine bis mittleren Level zu machen. Das ist schwierig genug. Für Aussenlevels verweise ich auch immer wieder gerne auf das Tutorial von Willi Leopold. Das ist schon sehr alt, aber nichts desto trotz gut: http://www.wleopold.ch/games/leveltut06ger.html#tricks
Always learn from history, to be sure you make the same mistakes again...
|
|
|
Re: Tricks für Außenwelten
[Re: Widi]
#235993
11/11/08 10:49
11/11/08 10:49
|
Joined: Apr 2005
Posts: 4,506 Germany
fogman
Expert
|
Expert
Joined: Apr 2005
Posts: 4,506
Germany
|
Entweder per Script und vec_to_mesh, oder Du malst eine große Highmap und teilst diese in mehrere kleine Maps auf.
Aus diesen Maps generierst Du dann die Terrains in MED.
no science involved
|
|
|
Moderated by mk_1, Perro, rayp, Realspawn, Rei_Ayanami, rvL_eXile, Spirit, Superku, Tobias, TSG_Torsten, VeT
|