Ein typischer Fehler in unserem Geschaeft ist es, dass Programmierer ihre eigenen Dateiformate erfinden. Frundsaetzlich ist das eigentlich immer verkehrt, trotzdem passiert es regelmaessig. Heute beispielsweise habe ich einen Konverter schreiben muessen, der von PNG in das interne Grafikformat von TLJ umwandelt, weil fuer ein neues Release ein Hintergrund ausgetauscht werden sollte. Die alten Tools sind wegen Hang zum Moloch nicht brauchbar (es gab da nur genau ein Tool, das alles machte), ich brauchte ein kurzes Kommandozeilentool.
Das XMG-Format fuer die Ingame-Grafiken von TLJ hat alles, was ein internes Dateiformat so auszeichnet: Es ist entstanden, weil die Zielplattform eine zu schwache CPU hatte, und daher das entpacken schnell gehen sollte. Dabei haette man eigentlich primaer auf die Groese der Dateien schauen sollen, denn die 4x CD-ROMs die es damals gab, waren die wahren Performance-Killer. Stattdessen ist ein typische 640×480 Pixel grosses Bild 460 kb gross geworden, hat aber nur 16 bit Farbtiefe. PNG waere nicht nur 30% kleiner geworden, sondern ich haette mir den Konverter erspart. Ein weiterer Grund, eigene Dateiformate zu machen, ist gelegentlich, dass man die Spieler davon abhalten will, das Spiel zu modden oder die Daten anderweitig (z.B. in ihrem Blog?) zu verwenden. Mal abgesehen davon, dass das eine voellig bekloppte Idee ist, weil mehr Fansites ja irgendwie was gutes sind, hilft es auch nicht. Screenshots sind leicht gemacht, und selbst im Fall des kranken TLJ-Formates hat sich in kurzer Zeit jemand gefunden, der einen TLJ Viewer programmiert hat, mit dem man alle Sounds, Animationen und Bilder aus den Spieldaten auslesen kontne. Zum Glueck, das hat mir erspart, selber einen Konverter zu schreiben… An dieser Stelle heissen Dank!
Das Grafikformat fuer TLJ hat zu allem Unheil auch noch 3 Versionen durchgemacht, die aus irgendeinem Grund alle unterstuetzt werden. Wahrscheinlich, weil in den ersten beiden Versionen Fehelr waren, oder z.B. keine Grafiken ueber einer bestimmten Groesse unterstuetzt wurden (auch in Version 3 kann ein Bild nicht breiter als 4096 Pixel sein). Ueber die Entwicklungskosten im Vergleich zu einer funktionierenden Library sprechen wir mal lieber garnicht.
Am Ende werden die Bilder uebrigens im Hauptspeicher als RLE gespeichert. Das ist auch so eine Sache, wo jemand selber etwas erfunden hat, das prima funktioniierte, ehe Hardware-Beschleunigung existierte (TLJ ist gerade so an der Wende gemacht worden), wo man aber haette vorhersehen koennen, dass es keine lange Bedeutung mehr hat. Als Resultat benutzt TLJ sein DirectX eigentlich nur als Grafikseiten in den es pixelweise hineinmalt. Images im Grafikspeicher? Wieso das denn…
In Anarchy Online benutzen wir ausschliesslich PNG und JPG. Man lernt ja dazu. Aber handgeschriebene eigene Datenformate gibt es da auch…