Hitflop und Co, Vorsicht bei Tauschportalen

Tja, die schöne neue Welt des Tauschens. Man liest es überall. Die kulturelle Avantgarde Deutschlands diskutiert im Feuilleton über die „besitzlose Gesellschaft“, „Sharing Economy“ und wie das alles heißt. Nachdem ich zum Frühstück in der neuen brandeins gelesen hatte, deren Thema natürlich auch das Tauschen war, dachte ich mir: Ich hab da im Keller seit Jahren die Kartons voller oller Horrorfilme herumstehen, die vermodern langsam, probieren wir das Tauschen damit doch mal aus. FSK-18-Filme loswerden ist sowieso nicht so einfach. Ebay erlaubt keine Verkäufe für Artikel ohne Jugendfreigabe. Aber Tauschportale wie hitflip.de und tauschticket.de ermöglichen dies.

Wikipedia wusste nichts abgrundtief böses über Hitflip oder Tauschticket zu berichten. Ich meldete mich in meiner Anfängernaivität also bei hitflip.de an und fing gleich an, ein paar meiner Filme in das Portal zu stellen. Zu jedem Film machte mir die Seite Vorschläge für den Preis. Nicht in Euro sondern in „Flips“. Das ist die virtuelle Währung auf Hitflips.de. Hat vielleicht rechtliche Gründe, dachte ich mir. Wenige Minuten, nachdem ich meine ersten Filme eingestellt hatte, kamen auch schon die ersten Tauschanfragen. Auf Hitflip gibt es eine Wartelistefunktion. Dabei dachte ich mir erst einmal nichts. Jemand hat scheinbar vor Tagen, Wochen, Monaten eine Anfrage für einen meiner Filme gestellt, einen Maximalpreis und einen Mindestzustand festgelegt und diese sprang jetzt an. Das gefiel mir. Ich hatte mich schon darauf eingestellt, die DVDs wochenlang weiter bunkern zu müssen, immer auf Abruf, falls jemand sich mal dazu entschließt, eine davon zu nehmen. Ruckzuck waren 10 meiner DVDs raus. Da bekam ich den ersten Schrecken. Es gab keine Versandkostenerstattung in irgendeiner Form und FSK-18-Filme darf ich nicht einfach so per Post verschicken. Ich bin gesetzlich verpflichtet, geeignet sicherzustellen, dass keine Minderjährige die Sendung öffnen kann. Das heißt: Einschreiben + Eigenhändig. Kostet 5,20 Euro bei der Deutschen Post. Argh. Meine Filme hatte ich teilweise für 3 Flips angeboten, je nach Empfehlung von Hitflips. Jetzt ergaben sich dadurch Verlustgeschäfte für mich. Ich entschied mich, einige der besonders ruinösen Tausche zu stornieren. Hitflip wies mich darauf hin, dass bei zu vielen Stornos ich abgestraft werden könnte durch schlechtere Wartelistenplatzierungen. Okay, dann straft mich doch ab. Nach einem Vergleich mit dem Konkurrenten Tauschticket.de fand ich Hitflip sowieso ganz schön teuer. 0,99 Eur pro Film fallen für den „Käufer“ an, bei höheren Flippreisen sogar noch mehr. Das reichte mir jetzt. Ich löschte schnell alle noch nicht getauschten Filme von Hitflip. Versuchen wir es also bei Tauschticket. Das klappte erst einmal leider nicht, weil deren System sich an meinem 20-Zeichen-Passwort heilends verschluckte und Datenbankfehler meldete. Dass es daran lag fand ich erst am nächsten Abend raus.

Um eine ärgerliche Angelegenheit abzukürzen (vielleicht schreibe ich noch einen längeren Artikel über meine Erfahrungen in Welt des Online-Tausches): hitflip.de erscheint mir wie ein sinkendes Schiff. Ich habe für einen Film, den ich für größenwahnsinnige 30 Flips eingestellt habe (um mal zu sehen, ob den jemand kauft) nach 24h auch tatsächlich 30 Flips erhalten. Erst dachte ich: Wie bitte? Dann beschlich mich ein ungutes Gefühl. Es gibt dort womöglich mengenmäßig noch viel einzutauschen, aber nichts von Qualität. Die DVDs, die es dort noch gibt, würde ich mir nicht einmal schenken lassen. Und dank der virtuellen Währung bin ich aber gezwungen, dafür sogar 99 Cent zu zahlen. Denn mit meinen 100 Flips auf dem Konto kann ich ansonsten nichts anfangen. Das ist die Falle dieser Tauschportale: Wer nicht ganz genau darauf achtet, dass er für seine virtuellen Euros/Flips/Billets/Tickets/Tokens auch etwas bekommt, was er haben will, für den ist die Aktivität auf so einem Portal ein einziges Verlustgeschäft. Ich will mich nicht beschweren, ich habe ein paar Horrorfilme gegen die wertlosen Flips getauscht. Hinzu kommt das Porto, was ich blechen musste. Damit komme ich vielleicht auf 50 EUR Verlust. Das ist nun wirklich glimpflich ausgegangen. Wer weiß, welche Traumschlösser an Flips manche andere Nutzer dort aufgetürmt haben? Vermutlich waren 30 Flips für meinen Film, der tatsächlich ganz ordentlich ist, sogar noch zu wenig. Vielleicht hätte ich auch 100 Flips dafür erhalten. Aber was hätte ich davon? Für einen Wirtschaftswissenschaftler ist die Platform vielleicht ein interessanter Forschungsraum. Werden die Preise jetzt ans mögliche Maximum steigen, weil die Leute bereit sind, irrsinnige Preise zu zahlen, um ihre Flips für etwas halbwegs brauchbares zu tauschen? Werden sie den ganzen nutzlosen Ramsch (irgendwelche Single-CDs aus den 90ern) notgedrungen kaufen? Was wird aus meinen einsamen 100 Flips, wenn Hitflips.de dann dicht macht?

Was Hitflip besonders gespenstisch macht ist, dass die Platform in der Regel nicht eine Liste aller angebotenen Artikel anzeigt sondern eine Liste aller anbietbaren oder jemals angebotenen Artikel. Wenn man sich beispielsweise in die Kategorie Filme->Komödie begibt, dann findet man dort 2 Bildschirmseiten von unverkäuflichen Holzklasse-DVDs und dann nur noch tausende von Bildschirmseiten an existierenden Komödien, die niemand auf hitflip anbietet und wahrscheinlich auch nie mehr jemand anbieten wird (wenn er nicht so blöd wie ich ist…). Neben jedem dieser Gespenster steht einfach nur „kein Angebot“ oder „wird nicht angeboten“. Man kann sich natürlich auf die Warteliste setzen lassen. Es ist wie eine Geisterstadt, in der verlassene Häuser herumstehen, überall steht „zu vermieten“ oder „zu verkaufen“…gruselig. Übrigens bereitet es mir auch ein gewisses Vergnügen, mir vorzustellen, dass es Nutzer mit vielen Flips und viel Freizeit gibt, die aus lauter Verzweiflung sich in jede dieser Wartelisten für nicht angebotene Artikel eintragen.

Meine Empfehlung für den Beitritt zu solchen Plattformen deshalb:

Erstmal einen genauen Blick ins Angebot werfen, was denn überhaupt noch verfügbar ist. Lässt sich herausfinden, wieviele Artikel angeboten werden? Und nach einem Beitritt: Nicht gleich die ganze verdammte Sammlung einstellen, nur weil es so schön einfach ist! Mit einer DVD starten, ruhig den Preis deutlich zu hoch ansetzen und abwarten. Wenn sofort jemand zuschlägt, dann stimmt etwas gehörig nicht.

Weekly Update

Hello out there, a lot of time has passed since my last update. I was very busy in real life but this weekend I finally found some time again to work on my research on Ecstatica.

I am now able to read the z-data in the view data files (in subfolder „views“). The attached screenshot shows such a piece of data.

depthbuffer

Currently I’m working on a number of Blender plugins to import Ecstatica data files like

  • characters and their animations
  • puzzling together the complete game world from all the camera views.

Ecstatica Scene Views

I invested quite some time into figuring out, how to decode the files containing the different camera views for all the scenes in Ecstatica. Well, I finally got somewhere, after some unsuccessfull attempts. At least those attempts made me learn a lot new things about Huffman codes, the LZW algorithm and RL enconding. The amazing game mod wiki helped much again.

The phenotypic facts

I rather quickly found out that:

  1. The scene files are much to small to contain a raw pixel representation.
  2. Changing a byte somewhere in the file sometimes affected a single pixel in the game, sometimes a sequence of pixels
  3. All changes had only local impact, just sometimes the decoding algorithm in Ecstatica seemd to crash and omitted all following pixels. Amazingly this didn’t make Ecstatica crash. Congratulations to the programmers for this stability!

Could it be LZW?

The wikipedia article about the LZW algorithm is quite insightful. After reading it and reconsidering the facts, I came to the conclusion, that it its propably not LZW. Why? As noted above, changes in the pixel values have only local impact. This is also true for the first few pixels. But in my opinion changing values in the first stage of a compressed  LZW data stream should have global impact on the decompressed stream. For example:

Input Output
LZW<256> LZWLZ
ZZW<256> ZZWZZ

Could it be RLE?

Well, could it be RLE? I learend a lot about the algorithm from the wikipedia article about the PCX format and the respective modding wiki article. What made me doubt that we have RLE here was, that in my favourite HEX editor, I could see no connection between the most-significant bits and the impact of a value change.

So what is it?

It is some kind of RLE. A special form of RLE: T’here are color bytes and there are RL bytes, like in the standard RLE. The RL bytes are structured in the following way:

  • The 6 most-significant bits are the run-length, let’s call the value L
  • The 2 least-significant bits are flags.

The flags have the following meaning

bit #0 bit #1 meaning
0 0 L pixels. Each pixel’s color is determined using the previous pixel’s color and a 4bit value giving the relative change of color
0 1 L pixels of the same color
1 0 L pixels whose colors are represented absolutely using 1 byte each. If none is set, there are following L pixels in which each pixel

The RLE data starts at position 10 (decimal) in the file.

Is that all?

No, absolutely not. What I was able to decode was merely a part of the scene files. There’s a lot more in there. Some candidates

  • z-Values. In order to correctly let walls occlude characters, there has to be a Z map or something like that.
  • Camera properties. To be able to render the characters correctly, the camera properties (focal length, etc.) have to be known.

Not understanding theories

Have you ever witnessed or experienced the moment when someone finally understands a scientific theory? In German, one uses phrases like „the coin has fallen“ or „she has got risen a light“ to describe it. What does happen in that moment? I think it is basically the second, where the picture used in the theory gets apparent. The backbone of theories are always pictures. Mathematical pictures in most scientific theories. A mathematical entity to represent something in the real world.

Understanding scientific theories is therefore based on understanding the properties of the entities used. Like for example a harmonic oscillator, which is a ridiculously simple picture used to represent thingies „swinging“. As a result, people don’t understand scientific theories if they lack understanding of the used mathematical pictures.

But even if one owns knowledge about the properties of a specific picture already, there still can be problems in understanding a theory using them. The very same mathematical object can appear in quite a lot of different forms. You can talk about matrices as operators transforming vectors or you can see matrices as bilinearforms mapping 2 vectors onto a number. Those are completely equivalent descriptions, but they impose completely different pictures in our mind. Even if you own a certain intuition for vectors, you might lack intuition for bilinearforms.

How to solve ‚undefined reference‘ linker errors

They are normally the first errors, any C/C++ newbie stumbles across. And they, at least for me as I remember, seemed a bit mysterious, because the linker never told me why he couldn’t resolve the symbol. Like someone supposed to bring you a tool from the tool shed, but no matter how often you rephrase your description of the tool, he comes back, simply stating the obvious fact „Couldn’t bring you the tool“. It was pretty annoying. Very much later I discovered nm as a nifty tool, to take a look into those libraries yourself. Using nm, you’re – so to say – getting a list of tools in the tool shed yourself, so you can check if your friend is unable to bring it to you simply because it is not there.

bash functional programming

Yes, I like using constructs like echo $(getlastentryfromlist(list, "bash sucks")) even in a bloody shell script.
It’s important to remember, that $() opens a subshell, so bash actually enforces a strict functional programming paradigma, because you cannot (at least not straight-forwardly) cause any side effects within the function.

Python-Ogre build misery I

Oh god, their linux build scripts suck. And the linux installation user guide in the wiki as well. It’s completely useless, because they expect you to download all required libraries and build them – without thinking about the very likely possibility that you already have a lot of those libraries on your system. Let’s cite another frustrated user

i gave up, useless guide.

Why is it so complicated to use an established build system like scons to automate the search for required libraries? No, the python-ogre guys hacked together their own little build system which is lacking the basic ability to recognize that a user has his ogre installation in /usr/local/lib instead of /usr/lib. Oh and if you answer now „ok, then i change it by hand in the build script“ then you will learn that they enforced the use of either /usr/local or /usr for all library access because they derive every f*cking library search path from a single base path. Thanks!