Level lieber komplett aus Tiles oder gemischt -> Performa

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

nubi

Betreff: Level lieber komplett aus Tiles oder gemischt -> Performa

BeitragSa, Jun 08, 2013 12:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist es sinnvoller ein 2D Level komplett aus Tiles zu gestalten, oder auch z.b. für Hintergrund (der sich vielleicht auch bewegen könnte) ein größeres .jpg, .png. whatever zu nehmen?

Xeres

Moderator

BeitragSa, Jun 08, 2013 14:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Größere Bilder für den Hintergrund sind kein Problem - solange du keine Gigabytes an Speicher dafür verwenden willst.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

BladeRunner

Moderator

BeitragSa, Jun 08, 2013 15:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie so oft wird die Sinnhaftigkeit durch den expliziten Zweck bestimmt. Manchmal ist das eine sinniger, manchmal das andre Wink
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

PhillipK

BeitragSo, Jun 09, 2013 15:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Da es um performance geht, sieht es so aus:

1) Das Zeichnen optimieren:
- Sorge dafür, das nur teile gezeichnet werden, welche "im bild" sind - dies ist recht eifnach durch die aktuelle position, der breite der teile und der auflösung rausfindbar. Alles andere ist nicht sichtbar und somit des zeichnens nicht würdig.
- Eventuell eine liste oder sonstwas mit den gezeichneten daten füllen um iterationen zu vermeiden. Hat sich die ansicht um mehr als 1 tile verschoben, liste aktualisieren, sonst einfach nur die liste zeichnen. (es ist ja typischerweise immer das selbe, was sichtbar ist, wenn man sich kaum bewegt. Die gefundenen blöcke also zwischenspeichern)
2) Speicher überdenken:
- Verwende nicht zuviele blöcke und nicht zuviele daten die für diese gespeichert werden. Beispiel: 2048x2048 tiles, welche in einem Type angelegt sind und je 4 int speichern: 2048*2048*4*4 = 67108864 byte aka 64mb. Verdoppelst du die kantenlängen, braucht das ganze schon 256mb speicher. Also: VORSICHT!

Wenn du hier etwas optimierst, kannst du eigentlich alles machen.
Theoretisch kannst du auch diverse einzelbilder laden und dazu zeichnen. Ein hintergrundbild sollte auch kein akt sein (zb für Paralax scrolling zeugs) - solange du diverse hardwarebeschränkungen beachtest: Zb nicht jede grafikkarte unterstützt 4096x4096 bilder. Ist deine zielgruppe auch von älteren PC geplagt, guck, ob du hier zb 2x2 einzelbilder für den hintergrund verwendest (2x2 bilder mit je 2048x2048 px auflösung)

Anmerkung: Viele einzeltiles brauchen wesentlich mehr leistung als größere bilder. Allerdings sind das werte, die nicht statisch festgelegt werden können. Bau erstmal deine Tiles und die zeichnung dafür und optimiere dann - wenn das fertig ist - soviel wie möglich (wie gesagt, zu zeichnendes buffern, zeichnen auf sichtbares beschränken, oder vielleicht auch ganze sektoren - also zb felder die 16x16 blöcke verwalten - einmalig in eine textur rendern und diese fortan zeichnen)
Damit kann eigentlich nichts schiefgehen (ne normale tilemap kriegst so in 1-2 ms gerendert, je nach komplexität)


PS: Achte auch auf die größe deiner Tiles.
Hast du zb 2x2 pixel große tiles, wäre es fast schon schneller den bildschirm zu zu plotten Smile Gesunde größen liegen so zwischen 16x16 und 64x64 pixeln

wenn dein level aus 4096x4096 tiles besteht, kanns zu ram problemen kommen.

DAK

BeitragSo, Jun 09, 2013 16:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Noch zu dem Hintergrund:
Wenn du ein riesiges Bild hast, das über mehrere Bildschirme geht, dann heißt das, dass du beim Zeichnen immer extrem viel zeichnest, was unsichtbar ist. Besser ist es, das Hintergrundbild in Tiles zu zerlegen, die nicht größer sind, als der Bildschirm (eventuell auch nur in jede Richtung halb so groß wie der Bildschirm). Dann zeichnest du nur die Hintergrund-Tiles, die sichtbar sind.
Gewinner der 6. und der 68. BlitzCodeCompo

PSY

BeitragSo, Jun 09, 2013 20:23
Antworten mit Zitat
Benutzer-Profile anzeigen
DAK hat Folgendes geschrieben:
Noch zu dem Hintergrund:
Wenn du ein riesiges Bild hast, das über mehrere Bildschirme geht, dann heißt das, dass du beim Zeichnen immer extrem viel zeichnest, was unsichtbar ist. Besser ist es, das Hintergrundbild in Tiles zu zerlegen, die nicht größer sind, als der Bildschirm (eventuell auch nur in jede Richtung halb so groß wie der Bildschirm). Dann zeichnest du nur die Hintergrund-Tiles, die sichtbar sind.


genau. immer nur soviel rendern wie notwendig. zu dem hintergrundbild:
einfach mit drawblockrect den gewuenschten teilbereich der kompletten hintergrundgrafik zeichnen...


PSY


(EDIT): in welche richtung geht das game? dann koennen wir ein bischen spezifischer werden...
PSY LABS Games
Coders don't die, they just gosub without return

DAK

BeitragMo, Jun 10, 2013 9:01
Antworten mit Zitat
Benutzer-Profile anzeigen
@PSY: Stimmt, geht noch einfacher, als Hintergrund-Tiles.
Gewinner der 6. und der 68. BlitzCodeCompo
 

nubi

BeitragMo, Jun 10, 2013 21:38
Antworten mit Zitat
Benutzer-Profile anzeigen
eigentlich nur ein kleines jump and run
ala super mario....
bin nur noch am überlegen wegen scrolling, oder eben starrem wechsel.

BladeRunner

Moderator

BeitragMo, Jun 10, 2013 21:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei einem JnR bietet sich eigentlich ein Tileset geradezu an.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group