Zeitpunkt für das laden des nächsten Levels [Erledigt]

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

CypressArt

Betreff: Zeitpunkt für das laden des nächsten Levels [Erledigt]

BeitragSo, Sep 23, 2007 0:24
Antworten mit Zitat
Benutzer-Profile anzeigen
howdy,

hab hier im Formun gelesen, dass das synchrone nachladen von ressourcen unter B3D nicht möglich ist und somit immer eine verzögerung entsteht, wenn was nachgeladen werden muss.

Meine Frage stellt sich nun, mit welcher Technik, dies auf ein minimum reduziert werden kann.

Diverse Ansätze hab ich gefunden, bin aber auf eure Erfahrungen neugierig oder wie ihr das löst:

Sagen wir mal die ganze Spielewelt teilt sich in 9 Terrains auf (1 Terrain =5120*5120 Pixel /High, Color & Struktur Map pro Terrain ~ 1-5MB/ )

Der Spieler soll sich frei in der ganzen Welt bewegen können, sprich von einem Terrain zum nächsten wechseln ohne Verzögerung....

Naja...fast ohne Verzögerung Smile

Was ist die bessere Lösung?
- ALLE Ressourcen zu Beginn zu laden (also für alle 9 Terrains inkl. deren Objeke) und dann beim terrainwechsel anzeigen lassen?

oder

- ALLE Objekte laden und erst beim Terrainwechsel die jeweilige Terraintextur zu laden

Danke für das Feedback.. Smile
(no comment) -> Google Search Bot!!
  • Zuletzt bearbeitet von CypressArt am So, Sep 30, 2007 12:33, insgesamt einmal bearbeitet

NightPhoenix

BeitragSo, Sep 23, 2007 9:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Lade am Anfang schon alle Terrains, hide sie mit hideentity (dadurch "ignoriert" die Grafikkarte die Objekte und muss sie nicht erst berechnen).
Wenn du eine gute Frameunabhängige Programmierung hast, dann solltest du es so machen dass jeder 10. Schleifensdurchlauf nur eine Textur geladen wird. Bei 1024er Texturen fällt das kaum auf, nur ein geringer Ruckler unterhalb von 0,5 Sekunden, bei 2048er kanns aber schonmal 0,5-0,8 sekunden dauern. Hängt halt von deinem Rechner ab.
Um auszuprobieren wie lange deiner für das Laden einer so großen Textur brauch schreibste dir am besten ein Programm dafür, was die Verzögerungszeit mit millisecs() zählt. Hab auch so ein Programm geschrieben, das Ergebnis hat mich positiv überrascht, hab nämlich mit 2-3 Sekunden gerechnet ^^
Außerdem besteht ja noch die Möglichkeit ein kleines Ladefenster einzublenden, was alles in einer Schleife lädt.
Ich hoffe ich konnte dir mit den paar Infos bissl weiterhelfen, viel Glück noch.
Mfg. NightPhoenix

CypressArt

BeitragSo, Sep 23, 2007 12:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die schnelle Antwort

Nun, arbeite mit 512er texturen, welcher ich scaliert auf das terrain lade, welches ich auch wieder um Faktor 10 vergrössere..so erreiche ich trotz der grossen Spielfläche eine schöne detailgetreue Landschaft.

Werde also alle Maps laden und beim erreichen der Grenze des Spielterrains, einfach das neue Terrain einblenden und das alte ausblenden.

Es stellt sich für mich noch die Frage, wie ich das am besten mache:
neues Terrain angehängt oder am platz des alten einblenden....mal sehen
(no comment) -> Google Search Bot!!

Markus2

BeitragMi, Sep 26, 2007 12:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Errechne doch die Entfernung vom Spieler zu jedem Terrain und
mach sie danach sichtbar .
Oder EntityAutoFade benutzen .

CypressArt

BeitragMi, Sep 26, 2007 19:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Habs mal über die Abfrage der Koordinaten gelöst...Very Happy

und funktioniert (bis jetzt)!!

SO muss ich nur die Koordwerte abfragen und die Position im neuen Terrain angeben und meine Skybox und die Begrenzung bleiben gleich...
(no comment) -> Google Search Bot!!

CypressArt

BeitragDo, Sep 27, 2007 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
NightPhoenix hat Folgendes geschrieben:
Lade am Anfang schon alle Terrains, hide sie mit hideentity (dadurch "ignoriert" die Grafikkarte die Objekte und muss sie nicht erst berechnen).
Wenn du eine gute Frameunabhängige Programmierung hast, dann solltest du es so machen dass jeder 10. Schleifensdurchlauf nur eine Textur geladen wird. Bei 1024er Texturen fällt das kaum auf, nur ein geringer Ruckler unterhalb von 0,5 Sekunden, bei 2048er kanns aber schonmal 0,5-0,8 sekunden dauern. Hängt halt von deinem Rechner ab.
Um auszuprobieren wie lange deiner für das Laden einer so großen Textur brauch schreibste dir am besten ein Programm dafür, was die Verzögerungszeit mit millisecs() zählt. Hab auch so ein Programm geschrieben, das Ergebnis hat mich positiv überrascht, hab nämlich mit 2-3 Sekunden gerechnet ^^
Außerdem besteht ja noch die Möglichkeit ein kleines Ladefenster einzublenden, was alles in einer Schleife lädt.
Ich hoffe ich konnte dir mit den paar Infos bissl weiterhelfen, viel Glück noch.
Mfg. NightPhoenix


Hallo,

ich kriegs ned hin, ich kann zwar alle terrains laden, aber beim erreichen einer bestimmten koordinate (im Bsp. X) sollte das ganze Terrain geändert werden:
- andere Highmap
- andere Colormap

wenn ich das Start Terrain "ausblende" und das 2 Terrian laden will, bleibt der Screen dunkel:

Code: [AUSKLAPPEN]


If land=1 Then terra_y#=TerrainY(terrain,x#,y#,z#)   
If land=2 Then terra_y#=TerrainY(Bterrain,x#,y#,z#)   


   If x#>5100 And land=1 Then
   EntityAlpha terrain,0.5       
Bterrain= LoadTerrain(".\map\rand01.png"):
      map = LoadTexture(".\map\color_map01.png",8) :
      map_kroki =LoadImage(".\map\color_map01.png"):
      land=2
       
       
   ResizeImage map_kroki,256,256
   
   ScaleTexture   map, 512, 512
   
   ScaleTexture   smap1, 10.0, 20.0
   ScaleTexture   smap2 , 1.0 , 1.0

   TextureBlend map, 1
   EntityTexture Bterrain,map,0,1   

   TextureBlend smap1, 2
   EntityTexture Bterrain,smap1,0,2   

   TextureBlend smap2, 5
   EntityTexture Bterrain,smap2,0,3
   
   x#= 5120-positionX#
   terra_y#=TerrainY(Bterrain,x#,y#,z#)
   PositionEntity piv,x#,terra_y#+4,z#
   
   ;EntityType Bterrain,TYPE_SCENERY
End If:



AUch wenn ich es komplett verstecke wird das 2te Terrain nicht dargestellt.

An was liegt das? ODer wie kann ich die Highmap auf einem Terrain ändern?

Danke für die Info, Hilfe, Tipps..


EDIT:

FreeEntity terrain !!!!

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group