Zelda-Klon mit SpriteCandy: Performance
Übersicht

![]() |
PsychoKhanBetreff: Zelda-Klon mit SpriteCandy: Performance |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo zusammen,
ich programmiere seit einiger Zeit an einem kleinen Zelda-Klon in Blitz3D mit der SpriteCandy Bibliothek. Da das Spiel immer weiter fortschreitet und auch immer langsamer wird, habe ich jetzt ein paar Fragen zur Performance. Meine Welt besteht zur Zeit aus 10 Kartenausschnitten mit jeweils 40x40 Tiles. Zu Beginn des Spiels wird die Welt komplett auf 10 Layer gezeichnet und im Laufe des Spiels dann jeweils das aktuelle Layer in den Vordergrund geholt. Dazu meine erste Frage: Wäre es von der Performance her besser, alle Layer invisible zu stellen und nur das aktive Layer visible zu machen? Bzw anders: Werden Layer, die von anderen verdeckt werden, trotzdem beim Bildschirmaufbau berücksichtigt? Die zweite Frage: Es fiel mir auf, dass das Zeichnen der "Welt" von Kartenteil zu Kartenteil langsamer wird. Ich lade alles in ein Array, das folgendermaßen aussieht: Welt(Kartenteil, x, y). Im Array gibt es die Felder: Tile (für die Tileset-Nummer) GrafikID (das Image des Feldes, das gezeichnet wird) EventID (Wasser, Sand, Feld, Hindernis, etc) Aufgrund der Kartenteilgröße ist das Array 40x40x10 also 16000 groß. Das heißt, es werden zu Beginn des Spiels mindestens 16000 Tiles gezeichnet. Anders wird das wohl kaum gehen, die Alternative wäre höchstens, wenn die Kartenteile erst beim erstmaligen Gebrauch gezeichnet werden. Aber dann würde es den Spielfluss stören. Aber warum wird der Aufbau der Welt nach hinten hin immer langsamer? Also die ersten 3-5 Kartenteile sind ruck-zuck fertig und dann braucht er immer länger. Liegt das daran, dass das Array so groß ist? Ich hoffe, jemand kann mir einen Tipp geben. Viele Grüße, Tobias Wer sich das ganze mal ansehen will, den aktuellen Stand gibt es hier: Legend of Zosse-Posse: Stonecutter's return http://www.theglade.com/khan/download/lozp.zip Tastaturbelegung: Cursortasten: Steuerung s: Waffenauswahl ausblenden/einblenden (Auswahl erfolgt mit Cursortasten) d: aktive Waffe bzw Gegenstand benutzen (oder an Person vor Spieler geben) Leertaste: Reden / Lesen / Anschauen Nachtrag: Hier noch ein Screenshot: ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group