Hier mal eine Vorschau vom Tileset-Format:
Habe lange drüber nachgedacht, wie ich Tilemap-Layer schlussendlich realisieren werde, insbesondere im Bezug auf Animationen. Heute hatte ich dann endlich eine geniale Idee, die auch noch relativ leicht umzusetzbar sein dürfte. Die Hauptinnovation bei diesem Tileset lässt sich auf dem ersten Blick nicht erkennen, sondern erst, wenn man nahe ranzoomt. Dann erkennt man nämlich die schwarzen Punkte auf diesen gelben Linien, jeweils immer links von den Tiles. Über diese Punkte kann man direkt die Animationseinstellungen aus dem Tileset herauslesen.
Ich habe mich heute daran erinnert, dass Allegro eine Funktion namens "getpixel" hat, die einem, von einem beliebigen Pixel in einem Bitmap, den Farbwert liefert. Anschließend kann man daraus auch noch die Rot-, Grün- und Blau-Werte extrahieren. Diese Funktion werde ich mir zu Nutze machen. Ich habe geplant, dass man nachher über den Rot-Wert angeben kann, wie viele Tiles (-1) die Animation hat und über den Grün-Wert, nach wie vielen Frames das Tile zur nächsten Grafiken springen soll. Der Blau-Wert ist bisher noch ohne Funktion, wird aber evtl. nachher dafür genutzt, um anzugeben, in welches Tile sich bestimmte Tiles verwandeln sollen. So könnten sich zum Beispiel Fragezeichblöcke, unabhängig von der Position des braunen Blocks auf dem Tileset, immer in die richtige Grafik verwandeln. Bin mir da aber noch nicht sicher, denn meine Tilemaps sollen nachher 65536 verschiedene Tiles unterstützen, während der Blau-Wert nur bis 255 geht. Die Tilesets sind übrigens nach unten hin nicht beschränkt (bzw. nur durch das Limit von 65536 Tiles). Solange man immer nur 16 Tiles in eine Reihe packt und die Breiten- und Positionsvorgaben berücksichtigt, kann man beliebig große Tilesets verwenden.
Von der Programmierung her - aber das interssiert euch vielleicht eher weniger - werde ich, anders als anfangs geplant, wohl nicht die Layer bei Levelstart nur einmal komplett aufbauen lassen, sondern jede Frame neu und dafür nur den auf dem Bildschirm sichtbaren Teil. Durch dieses System werden Animatonen überhaupt erst möglich (oder sind zumindest sehr viel leichter und sparen Speicherplatz). Außerdem lassen sich so einzelne Tiles nachher leichter verändern (wenn man zum Beispiel Münzen sammelt oder einen Fragezeichenblock anspringt).
Ferner werde ich "Grafik-Tilemaps" und "Kollisions-Tilemaps" trennen, sodass jeder Grafik jedes beliebige Verhalten zugeteilt werden kann. Das verbraucht zwar dann mehr Speicherplatz, aber ich denke 4 Bytes pro Tile sind im heutigen Zeitalter auch nicht nenneswert. Könnte sogar noch mehr belegen und dann das Limit von 65536 Tiles springen, allerdings sind das jawohl schon mehr Tiles als im ganzen Spiel jemals gleichzeitig benötigt werden. Ein Beispiel, für was das nützlich sein könnte: Man könnte Powerups in beliebigen Blöcken verstecken, könnte Lava mit Wasser-Eigenschaften machen und ähnliches. Für das alles müsste man nicht - wie zur Zeit mit Lunar Magic - immer erst lästig über Map16 neue Blöcke mit speziellem Verhalten zusammenbauen.
Ich denke, das war's erstmal. Bisher alles noch nicht programmiert, aber Planung ist ja bekanntlich das A und O und erstmal durchgeplant lässt sich das relativ schnell umsetzen. Muss nur noch versuchen, das möglichst Speicherplatz-sparend zu programmieren. Hoffe auch, dass dieses "jede Frame neu aufbauen" nicht zu Performance-lastig wird. Habe meine Sorgen bezüglich der Performance ja schon im letzten Post angesprochen. Jedenfalls sollte es in den nächsten Tagen ein neues Update geben. Vielleicht mal wieder eine Binary, in der dann die Karten ingame mit Animation und allem drum und dran bestaunt werden können.
-Das quadratische Rad neu erfinden-
Mit
das quadratische Rad neu erfinden (englisch
Reinventing the square wheel) bezeichnet man die Bereitstellung einer schlechten Lösung, wenn eine gute Lösung bereits existiert.
-Slowsort-
Slowsort (von engl.
slow: langsam) ist ein langsamer, rekursiver Sortieralgorithmus, der nach dem Prinzip
Vervielfache und kapituliere (engl. Multiply and surrender, eine Parodie auf
Teile und herrsche) arbeitet.