Leistungseinbruch beim neuen Level
Übersicht

BadDeathBetreff: Leistungseinbruch beim neuen Level |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo! Eigentlich läuft mein FPS mit 60 Bildern pro Sekunde recht flüssig. Wenn ich nun aus dem Spiel aber ein anderes Level wähle, kommt es bei 2 der bisher vorhandenen 4 Leveln zu starken Rucklern und das Spiel schafft nur noch bis zu 30 Bilder/s. Dann dachte ich mir: Mensch, da müssen wohl noch irgendwelche Überreste im RAM sein, also löschst du gleich alles mit Clearworld. Doch das Problem besteht weiterhin!
Natürlich lösche ich auch alle Sounds und Types, und lasse eigentlich alles neuladen. Hier meine Lösch-Funktion: Code: [AUSKLAPPEN] Function ResetWorld()
For O.Objekte = Each Objekte FreeEntity O\Mesh Delete O Next For DO.DesObjekte = Each DesObjekte FreeEntity DO\Mesh Delete DO Next For d.door = Each door FreeEntity d\mesh Delete d Next For waffen.weapon = Each weapon FreeEntity waffen\mesh Delete waffen Next For h.holetype = Each holetype ;HideEntity h\sprite Delete h Next For mob.Gegner = Each Gegner FreeEntity mob\mesh Delete mob Next For m.MediPacks = Each MediPacks FreeEntity m\mesh Delete m Next For Graf.GrafType = Each GrafType FreeEntity Graf\Sprite Delete Graf Next For Port.Ports = Each Ports FreeEntity Port\mesh Delete Port Next For Blut.Bluttropfen = Each Bluttropfen FreeEntity Blut\mesh Delete Blut Next For bloom.Bloom = Each bloom FreeEntity Bloom\spr Delete Bloom Next Delete Each Button FreeEntity Boden FreeEntity Water End Function Es wäre nett, wenn ihr mir helfen könntet. Wenn ihr noch mehr von dem Code benötigt, zb die Level-Ladenfunktion, meldet euch. EDIT: Ich habe bemerkt, dass nach jedem Ladevorgang der VRAM immermehr belegt wird, obwohl ich keine textur oder so mit dem Parameter 256 lade" DANKE! ![]() |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Texturen landen alle im VRAM, nicht nur die mit 256.
Der einzige unterschied ist das die mit 256 NUR im VRAM sein können und sonst nirgends, während die restlichen im System RAM zwischengespeichert werden können wenn sie nicht gebraucht werden zum rendern. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
BadDeath |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Gut, wieder was gelernt. Es wäre tortzdem sehr nett von dir, wenn du mir evtl. bei meinem Problem helfen könntest. Danke! | ||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Richte es doch so ein, dass schon beim ersten starten des Programmes der zweite Level geladen wird. Denn vielleicht ist nicht deine Löschroutine fehlerhaft, sondern der zweite Level einfach zu voll mit Objekten etc... | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
BadDeath |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das wird ein Problem ^^
Das Spiel soll ja ein Ego-shooter werden, sowie Quake, UT usw. Das heißt es gibt keine Story und man kann sehr viele Maps spielen. Und wenn ich nun 50 Maps laden müsste, die auch mal etwas größer sind, kommt das dann nicht zu noch mehr Leistungseinbußen? Zusätzlich würde der dann eine Weile laden.... |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hast du's nun ausprobiert ob der Level 2 so langsam ist, oder doch die Löschroutine fehlerhaft ist? Sollte es tatsächlich so sein, dass die Levels zu ''aufwändig'' sind, dann müssen diese eben optimiert werden. Das hiesse: Weniger Surfaces, Polygone pro Objekt reduzieren etc... Ausserdem sehe ich bei deinem ersten Beitrag, dass du ein Bloom verwendest. Vergiss nicht, dass gerade Bildschirmeinnehmende Effekte wie Blur, Blom etc... sehr langsam sind unter Blitz3D, da Blitz3D kein RenderToTexture hat. Schalte also zuerst solche Sachen (Blur, Bloom, Mirror, Plane mit transparenz und andere unkonventionelle Sachen) erstmal aus. | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
BadDeath |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
bin dabei, muss dafür einiges umschreiben... und den bloom- und blur-effekt habe ich auch ausgestellt.
das level hat rund 10.000 polys und 16 surfaces. sind zu viel, oder? EDIT: gut, das problem besteht weiterhin... es wird sogar noch verschlimmert, die fps sinken auf bis zu 8 und mein vram ist ausgelastet: 108MB von "128" mb ^^ |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
10'000 Polygone sind kein Problem, so lange sie im Durchschnitt nicht eine gewisse Größe erreichen (Filrate). Allerdings sollte jedes Mittelmässiges System auch dieses soweit gut und schnell anzeigen können. Es könnte also gut sein, dass das Problem ganz wo anders liegt. Eventuell kann auch die nahe gekommene Grenze des Grafikspeichers das Problem sein. Hier muß ich aber gestehen, dass ich dazu nicht viel sagen kann.
Eventuell würde es dir nutzen, wenn du in jedem Teilbereich deines Codes die MilliSecs ![]() |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
BadDeath |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Normal
Steuerung: 0-1 Berechnung: 0-1 Rendern: 7-9 Hud: 9 nach dem 2. mal Laden Steuerung: 0-1 Berechnung: 0-1 Rendern: 13-31 <- schwankt sehr stark, jenach Spielerposition, obwohl es ein Meshterrain ist Hud: 8 alle Werte in Millisekunden bei eingeschaltetem Debugger |
||
BadDeath |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hat denn Keiner mehr eine Idee? ![]() |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du löscht das gesamte alte Level oder?
Also freeentity, freesound, delete etc Wenn du dynamische texturen hast, auch freetexture Würde mich obigem anschliessen, am wahrscheinlichsten ist deine UnloadLevel Funktion futsch. Weil ausser Geometrie Menge sind vor allem 4 Dinge kritisch: 1) Wie oben erwähnt Fillrate. Nicht riesengrosse Flächen nahe an der kamera machen, vor allem net partikel systeme 2) Overdraw. Betrifft primär partikel wenn man hunderte nutzt für etwas was mit 20 auch machbar ist 3) Texturgrössen. Wenn man viel zu grosse texturen hat (2048x2048) die häufig auch noch da und nicht da sind kann das erheblich an der performance ziehen da sie immer wieder an die grafikkarte gesandt werden. -> DDS Format nutzen 4) Bone Animation. Bone animierte Objekte sollten nicht mehr als 2000-3000 Polygone und 20 Bones haben Ich nehm ma an dein Mesh terrain wird einmal erzeugt oder? Nicht jedes frame neu aufgebaut oder so weil dann nimmst du lieber das Blitz eigene Terrain, da du niemals auf ner gescheiten Performance enden wirst so. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
BadDeath |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich danke schonmal für die Antwort.
Ich habe nur eine dynamische Textur, die Cubemap für das Wasser, doch auch die sollte durch ClearWorld verschwinden, oder? Partikel sind bis jetzt nur im Blut der Gegner, welche wegen "bauarbeiten" ausgeschaltet wurden und eh nach 10 sec verschwinden. Für das HUD benutze ich 3 Sprites, die jedoch auch wieder gelöscht werden, während der Rest mit Text und DrawImage erstellt wird, und die Texturen für die eine Map sind 15 Stück mit einer Gesamtgröße von 1,48 MB, wobei die Größe 756x512 Pixel besitzt. Und bei den Animationen bin ich noch nicht soweit, es gibt bis jetzt nur eine Animation: in dem Level CPM 18R zerfällt eine Kiste beim Schuss auf diese und das ist eine B3D-Animation. Ich würde ja gerne eine Heightmap benutzen, jedoch lassen sich aus denen ganz schlecht Häuser formen. Ihr könnt euch ja mal den Stand der Dinge angucken, vllt fällt euch dann etwas auf: Download Um im Spiel die Karte zu wechseln einfach Escape drücken, damit ihr im Zwischenmenü seid und dann die rechte Mustaste, um zur Levelauswahl zu gelangen, weil ich dafür noch keinen Button gemacht habe. Danke! MfG, BadDeath |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group