Skip to main content

LibGDX – Bilder organisieren mit Paketen, Atlanten und Skins

Ein Spiel braucht normalerweise (mindestens) einen Stil, Design, Theme oder wie auch immer, nach dem sich die Grafik richtet. Es gibt dabei viele kleine wiederkehrende Elemente wie Buttons, Rahmen, Ecken, Texturen usw. die sich zu einer beträchtlichen Menge kleiner Bilder anhäufen können. Mithilfe einer Atlasdatei, können all diese Elemente stattdessen gut organisiert in einem einzigen Bild gespeichert werden. Sind die Elemente alle gleich groß, wie etwa bei einer Icon-Sammlung oder einer Animation, ist eine Atlasdatei nichtmal notwendig.

Atlas

Es empfiehlt sich sinnvolle Gruppierungen für die Bildschnippsel zu verwenden. Unzählige Dateien im Assetsordner sind ineffizient was Performance und Übersichtlichkeit angeht. Alle Grafiken des Spiels in einer riesigen Bilddatei zu speichern ist allerdings kein Stück sinnvoller. Das beste ist wie so oft den Mittelweg zu finden. Gibt es zum Beispiel verschiedene Designs zwischen denen der User sich entscheiden kann oder die vom Level abhängen, können diese gut in jeweils einzelnen Paketen gespeichert werden. Es erfordert wesentlich weniger Dateizugriffe, alle Teile des Pakets auf einmal einzulesen, verbraucht aber dafür auch mehr Arbeitsspeicher.

Als Atlas- oder Pack-Datei reicht eine einfache Textdatei, die auf die Bilddatei verweist und ein paar Einstellungen sowie die Liste mit Elementen beinhaltet. Sie könnte zum Beispiel so aussehen:

 

Solch eine Datei kann relativ einfach per Hand erstellt werden, aber wenn die Anzahl der Elemente sehr groß ist (für 2 Bilder würde ich normalerweise kein Pack erstellen) lohnt es sich auf den Texture Packer zurück zugreifen. Dies kleine Java Tool kann die Einstellungen über eine GUI konfigurieren und direkt komplette Ordner in ein Bild verwandeln. Die Namen der Elemente entsprechen im ebenfalls generierten Atlas den Dateinamen der Einzelbilder (ohne die Dateiendung).

Skin

Animation

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.