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

![]() |
CypressArtBetreff: Zeitpunkt für das laden des nächsten Levels [Erledigt] |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() 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.. ![]() |
||
(no comment) -> Google Search Bot!! |
- Zuletzt bearbeitet von CypressArt am So, Sep 30, 2007 12:33, insgesamt einmal bearbeitet
![]() |
NightPhoenix |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Errechne doch die Entfernung vom Spieler zu jedem Terrain und
mach sie danach sichtbar . Oder EntityAutoFade benutzen . |
||
![]() |
CypressArt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habs mal über die Abfrage der Koordinaten gelöst...![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 !!!! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group