Sie sind nicht angemeldet.

Admiral Drake

Schatzjäger

  • »Admiral Drake« ist der Autor dieses Themas

Beiträge: 2 698

Registrierungsdatum: 3. November 2004

  • Nachricht senden

1

Montag, 22. November 2010, 08:42

Anno 1503 Grafikformate

Ich setz hier etwas rein, was DWOB am 23.3.2005 in einem etwas unbekannten Forenbereich geschrieben hat.

Zitat beginnt hier =============================

Dann meld ich mich hier mal wieder Augenzwinkern ,


Also:

Das Problem beim Ersetzen der Grafiken besteht darin, dass die Grafiken in den BSH-Dateien nicht als einfaches 8-Bit-Bitmap gespeichert sind, sondern zusätzlich noch den Maskenkanal enthalten (wird von meinem Tex-Exporter in diesem Rosa-Lila dargestellt). In Anno 1503 gibts dann auch noch nen Alpha-Kanal. Ich versuch mal, den Aufbau zu beschreiben:
Die Bildinformation wird wie bei Bitmaps zeilenweise abgespeichert. Weiterhin wird jede Zeile in ein oder mehrere Datenpakete unterteilt. Zu Beginn jedes Pakets steht zunächst 1 Byte, welches verschiedene Bedeutungen haben kann. Ein Wert zwischen 0 und 253 steht für die Anzahl an Pixeln, welche zum Maskenkanal gehören, also vom Tex-Exporter rosa gezeichnet werden. Ein Wert von 254 steht für ein Ende der Zeile, ein Wert von 255 für das Ende des Bildes. Bei einem Wert von 0-253 folgt noch ein weiteres Byte, welches für die Anzahl der zu zeichnenden Pixel steht sowie dann pro Pixel ein 1 Byte großer Verweis auf eine Farbe der globalen Farbpalette.
Selbst wenn man das ursprüngliche Bild nun durch eines mit den gleichen Abmessungen ersetzen würde, wäre der Patz, den das Bild in der Datei verbraucht, anders. Daher würden sich dann auch die Offsets der anderen Grafiken in der Datei ändern und man müsste sämtliche Offsets im Header ändern.
Ich könnte dafür ein Programm schreiben, nur leider sind in meiner Programmiersprache, BlitzBasic, grafische Oberflächen nur schwer zu realisieren.

Die Grafiken aus Anno 1503 haben zwar auch nur 8-Bit Farbtiefe, jedoch ist für jede Grafik eine eigene Palette vorhanden, sodass im Spiel selber viel mehr Farben verwendet werden können, als in Anno 1602. Bei 16 Bit Farbtiefe sind das z. B. 65536 Farben. Wenn man nun die Grafiken aus Anno 1503 auf die Palette von 1602 umrechnen würde, sieht das in etwa so aus: Link kaputt Anno1503-Haus mit Original und Anno 1602 Palette. Große Unterschiede sind nur zu erkennen, wenn man das Bild vergrößert, ich weiß allerdings nicht, wie es bei anderen Bildern aussehen würde.

Die Farbpalette habe ich übrigens aus der Datei ToolGfx\STADTFLD.COL entnommen. Ich habe sie auch als PAL-Datei gespeichert, allerdings in der Form, wie es das Grafikprogramm Picture Publisher macht. Die Datei gibt’s Links kaputt als einfaches Bitmap.

Ein anderes Problem ist natürlich dann, die ganzen Grafiken zu erstellen. Bei statischen Objekten gibt es, wie Sir Henry geschrieben hat, 4 Grafiken, welche zusätzlich noch in 3 Zoomstufen vorhanden sind, also insgesamt 12.
Bei Figuren gibt es dagegen 8 verschiedene Perspektiven, macht also 24 Grafiken pro Animationsschritt. Für die erste Figur in der Datei Maeher.bsh (ist glaub ich der Bauer) gibt es zum Beispiel insgesamt 672 Grafiken.
Soweit ich weiß, werden solche Figuren mit einem 3D-Programm erstellt, in welchem man ein 3D-Modell der Figur erstellt, diese animiert (z. B. per Motion-Capturing oder auch von Hand). Anschließend kann man dann die Figur vom 3D-Programm aus allen Perspektiven und Zoomstufen rendern lassen kann.

Falls es jemand interessiert, wie ich den Aufbau der Dateien herausgefunden habe:
Zunächst habe ich die BSH-Dateien mit einem Hexeditor geöffnet. In diesem betrachtet, lassen sich die BSH-Dateien in 2 grobe Abschnitte einteilen.
Der erste Abschnitt ähnelt auf den ersten Blick einer Liste von Farben, daher ging ich zunächst davon aus, dass für jede Grafik eine eigene Farbtabelle existiert und diese am Anfang der BSH-Dateien gespeichert sind, wie es auch in den TEX-Dateien von Anno 1503 der Fall ist.
Im zweiten Abschnitt lässt sich dagegen keine Struktur erkennen, daher bin ich dann davon ausgegangen, dort die eigentlichen Bilddaten zu finden. Diese Daten habe ich dann nach dem gleichen Muster wie die Daten aus Anno 1503 als Bild gezeichnet und dabei eine selbsterstellte, schwarz-weiße Farbpalette verwendet. In dem Bild ließ sich die Struktur auch klar erkennen, nur halt ohne Farben. Zunächst habe ich versucht, nun mit den Daten am Anfang der BSH-Dateien die Farbpaletten zu konstruieren, was aber nicht funktionierte. Anschließend habe ich mir ein paar Screenshots mal genauer angesehen, wo mir dann aufgefallen ist, dass Anno 1602 im 8-Bit Farbmodus läuft (256 Farben), wie es bei älteren Spielen ja üblich ist. Bei 8-Bit Anwendungen ist normalerweise dann eine Farbpalette mit 256 Farben vorhanden, die für das gesamte Spiel verwendet wird. Diese hab ich dann in der Datei ToolGfx\STADTFLD.COL gefunden. Damit ließen sich dann die Grafiken auch in den richtigen Farben anzeigen.

Achso, ich hab auch noch mal ne kleine Funktionsbibliothek für die Anno-1602 Grafiken geschrieben und damit nen neues Tool zum Exportieren der Grafiken gebastelt: Link kaputt Is nen sauberer Code und läuft auch sehr viel schneller.

Soweit erstmal

DWOb

========================= Zitatende =======================

Möge es denen helfen, die was Neues schaffen wollen ...

Legofan

Meereskenner

Beiträge: 694

Registrierungsdatum: 5. Mai 2009

  • Nachricht senden

2

Montag, 22. November 2010, 13:54

Hm, das kommt mir bekannt vor, hab ich schonmal gelesen und dann vergessen :scratch:

Ich vermute es dreht sich um 1602? in 1503 zumindest habe ich noch keine bsh gesehn (dort wo es für mich relevant war)...

Naja, besser als nix, wer weiß, wie das noch helfen könnte...
  aka Legofan :P

Admiral Drake

Schatzjäger

  • »Admiral Drake« ist der Autor dieses Themas

Beiträge: 2 698

Registrierungsdatum: 3. November 2004

  • Nachricht senden

3

Montag, 22. November 2010, 13:58

Das ist sowohl für Anno 1602 als auch für Anno 1503, er weist ja auf die Unterschiede hin.

und noch ein Hinweis: BSH_RGBA verweist auf Einträge mit Alphakanal, BSH_RGB auf solche ohne Alphakanal (z.B. in der fenster.tex).

Die BSH_RGBAZ und BSH_RGBAV in der Anlagen.dat hast du scheinbar komplett übersehen ???
  Nur wer nichts tut, macht auch keine Fehler. Nicht meckern, sondern anpacken !

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Admiral Drake« (22. November 2010, 19:31)