Images oder Sprite Sheet

Hallo,
ich arbeite zur Zeit mit der AndEngine und habe eine kleine simple Frage.
Ich erstelle derzeit meine Sprites mit sehr vielen Images.
Zum Beispiel mehrere Böden, die die selbe Größe besitzen.
Nun habe ich die Frage, ob es einen Unterschied macht, ob ich für jeden Boden
ein Image erstelle oder soll ich ein Sprite Sheet erstellen und dieses dann benutzen?

Welche Auswirkungen haben solche Sprite Sheets auf das System?

Sagen wir so:
Wenn du alle Bilder in ein einzelnes Spritesheet packst, bist du immer gezwungen das ganze Spritesheet und damit alle Bilder auf einmal zu laden.
Das sollte allerdings kein Problem darstellen, solange du nicht zu viele und zu große Bilder verwendest.
Ansonsten ist es eben vielleicht ein bisschen handlicher wenn man mit einem einzelnen Spritesheet arbeitet, aber das ist auch Geschmackssache.

Alles Nachfolgende gilt für alle Anwendungen und ist nicht auf die AndEngine eingeschränkt:

Ja es kann einen gewaltigen Performance und RAM Unterschied machen wenn du Sprite Sheets verwendest!
Insbesondere auf Android wo die Ressourcen bereits knapp sind.

Dazu solltest du aber auch wissen “warum” um möglichst effektiv Sprite Sheets zu verwenden.

Zuerst sei gesagt:
1.) Lädst du in Android ein Bild, dann nimmt dieses Bild automatisch im Speicher eine Größe ein die “power of two” entspricht.
Entsprechend musst du entweder all deine Texturen entsprechend vergrößern (detaillierter Zeichnen) oder verkleinern um nicht unnötig Ressourcen zu verschwenden.
Oder aber du verwendest ein Spritesheet um den restlichen Platz den dein Bild sowieso einnehmen wird mit weiteren Bildern aufzufüllen!

2.) Das wechseln von Bildern ist teuer!
Zeichnest du ein Baum und ein Tier in der Reihenfolge BTBTBTBT dann ist das merklich langsamer wie wenn du BBBBTTTT zeichnest.
Bevor du jetzt aber anfängst deine Zeichenreihenfolge anzupassen kannst du auch einfach ein Spritesheet nehmen (das nach Methode 1 erstellt wurde) und die Hardware muss nicht mehr die Bilder durchwechseln.

Felix Argumentation (über mir) spielt dabei dann normalerweise keine Rolle. Man muss es nur richtig(!) machen.

Ansonsten solltest du vielleicht nicht alle Bilder in ein einziges Spritesheet packen.
Hardware die mit Android läuft hat häufig starke Größenlimitierungen, das geht deshalb eventuell auch garnicht.

Ein paar Beispiele wo Sprite Sheets gut ankommen

  • Text/Schrift: Beim schreiben muss der Sprite für jeden Buchstaben ständig durchgewechselt werden. Perfekt um die Performance zu steigern in dem man Bildwechsel vermeidet.
  • Zeichnen Tilemaps: Meistens besteht in einem Spiel der Hintergrund aus einem bestimmten Themen-Set. Z.B. Wüste oder Antarktis.

Meist kommt dann noch ein Sprite Sheet für die beweglichen Objekte die auf dem Hintergrund laufen und so weiter.
Wenn du Sprite Sheets sinnvoll einsetzt, kannst du davon profitieren.

Beste Grüße
TMII

[QUOTE=TMII]
2.) Das wechseln von Bildern ist teuer!
Zeichnest du ein Baum und ein Tier in der Reihenfolge BTBTBTBT dann ist das merklich langsamer wie wenn du BBBBTTTT zeichnest.
TMII[/QUOTE]

Wow das ist mir neu… Wieder was gelernt :slight_smile: