Mirror, Mirror on the Map … Spiegelbilder fürs 2D-Tileset

Auch wenn ich seit einem Jahr nicht mehr über meinen RPG-Editor geschrieben habe, hat die Entwicklung vor allem im vergangenen Herbst einen entscheidenden Schub bekommen. Seitdem habe ich den Code außerdem nach Python 3 portiert, ihn dokumentiert und ihn überwiegend an den De-facto-Styleguide PEP 8 angepasst. Von nun an plane ich den Aufbau der Spielengine, wenn ich Zeit und Lust habe.

Heute beschäftigt mich die Frage, ob und wie ich Spiegelbilder ermögliche, z.B. von Figuren im Wasser. Das ist bei 2D-Karten nicht so einfach, wie man denkt. Die einzelnen Felder auf der Karte können Terrainübergänge zeigen, also Stein über Gras über Sand über Wasser. Diese Terrainübergänge können allerdings auch animiert sein, also Stein über animiertem Gras über Sand über animiertem Wasser – oder beliebige andere Kombinationen. Damit diese Übergänge im Spiel nicht immer wieder neu gemalt werden müssen, werden sie nur einmal gemalt und dann als jeweils ein Bild zwischengespeichert. Stellt sie euch wie zu einem gemeinsamen Bild vereinigte Ebenen in einem Bildverarbeitungsprogramm vor.

Quizfrage: Wie schiebt man jetzt nachträglich ein Spiegelbild in diese Terrain-Sandwiches?

Tileset-Terrainübergänge

A) Machen wir es genauso wie mit den Terrains! Jedes Spiegelbild wird einmal mit dem darunterliegenden spiegelnden Feld kombiniert und zwischengespeichert! Oh, natürlich müssen wir das bei animierten Feldern für jedes Einzelbild tun! Oh, natürlich müssen wir den Terrainübergang neu malen, um das Spiegelbild zwischen die spiegelnden und nicht-spiegelnden Oberflächen zu klemmen! Oh, und natürlich müssen wir das auch für jedes Einzelbild des Spiegelbildes tun, wenn es selber animiert ist, z.B. ein tanzender NPC. Oh, und natürlich müssen wir es für jede 32 x 32 Pixel große Teilgrafik jedes Spiegelbild-Einzelbildes tun, denn die Spiegelbilder können größer als 32 x 32 Pixel sein und sich in beliebig vielen Nachbarfeldern spiegeln! Ich hoffe, ihr habt Kombinatorik im Mathematikunterricht gelernt, denn jetzt wäre ein ziemlich guter Zeitpunkt, eine Formel dafür aufzustellen, was für ein Wahnsinn diese Methode ist.

B) Okay, das ist viel Rechenarbeit im laufenden Spiel – aber könnten wir diese ganzen Einzelbilder nicht ein einziges Mal in einem großen Rutsch erstellen, in einer handlichen Binärdatei speichern und dann im Spiel bequem nachladen, wenn wir sie brauchen? Oh, natürlich wäre das angesichts der unendlichen Kombinationsmöglichkeiten eine riesige Datei, die um ein Vielfaches größer wird als alle Bilddateien des Spiels zusammengenommen, den Download des Spiels wahnsinnig aufbläht und beim Spielstart den Arbeitsspeicher mit vielleicht oder vielleicht auch nicht genutzten Bilddateien zumüllt! Oh, natürlich könnten wir diese Datei auch pro Karte erstellen und damit die Dateigrößen auf der Festplatte und den Speicherverbrauch ganz erheblich reduzieren, aber damit gleichzeitig die Kombinationen, die auf mehr als einer Karte möglich sind, doppelt, dreifach, vierfach, n-fach speichern und die Gesamtgröße des Spiels damit noch einmal um ein Vielfaches aufblähen! Okay, es bleibt wohl eine schlechte Idee mit hohen Kosten für ein bisschen eye candy.

C) Geben wir jeder Figur auf der Karte ein eigenes Spiegelbild-Item, das ständig existiert und bei jeder Veränderung der Figur-Grafik entsprechend angepasst wird! Aber dieses spezielle Item lebt unterhalb der Karte und ist daher niemals sichtbar, es sei denn … die spiegelnden Teilbereiche eines Feldes sind semi-transparent! Die Tilesets müssen also entsprechend angepasst sein. Doch halt! Bei Wasser ist das zwar kein Problem, weil Wasser normalerweise keine anderen Terrains überlagert, sondern selber überlagert wird. Wenn aber eine spiegelnde (= semi-transparente) Glasoberfläche über einer Steinfläche liegt, bleibt der Bereich ja undurchsichtig und spiegelt daher nicht! Das ist wahr, aber vernachlässigbar, da es nur Randbereiche eines Feldes betrifft – vielleicht lässt es sich aber auch mit einem Paint-Verfahren lösen, das transparente Pixel eines Terrains vernichtend (wie einen Radiergummi) begreift: Dann würden die halb-durchsichtigen Pixel des Glas-Bildes die undurchsichtigen Pixel des Stein-Bildes ersetzen, statt mit ihnen addiert zu werden. Nachfolgende undurchsichtige Bilder könnten dann aber wieder wie gewohnt das Glas überschreiben.

Tileset-Spiegelbilder

Überraschenderweise werde ich wahrscheinlich Methode C ausprobieren, wenn ich mit der Entwicklung so weit bin. Es ist gut, solche scheinbar nebensächlichen Details vorher zu klären, damit man kein Fundament baut, das es schwierig bis unmöglich macht, sie später noch hinzuzufügen.

Posted in Programmieren | Tagged , , | Leave a comment

Life of Py: Simples Kampfsystem in Python

Heyho, aufstrebender Pythonista! Du hast jetzt genug Einkaufslisten erstellt, dutzendmal den ollen Zinseszins berechnet und bringst dich beim nächsten “Hello world”-Programm um? Du willst endlich deinem Traum näher kommen und ein eigenes Spiel in Python schreiben? Perfekt! Lassen wir also diesen Unsinn und legen wir los.

Simple battle system for python (console).

Wir beginnen mit einem simplen, RPG-ähnlichen Kampfsystem, das wir in den folgenden Artikeln ausbauen werden. Natürlich kannst du den kompletten Code einfach kopieren und damit anstellen, was du willst, aber es wäre vielleicht cool, wenn du wüsstet, was du da kopierst. ;)

Kein Kampf ohne Kämpfer, hier ist der Bauplan:

Wir können mithilfe des Konstruktors bestimmen, wie der Kämpfer heißt, auf welchem Level er sich befindet und ob entweder der Spieler oder der Computer ihn steuert. Dann setzen wir nicht nicht einfach feste Werte für Hitpoints, Angriffsstärke, Verteidigung und Flinkheit, sondern lassen sie von einer globalen attribute()-Funktion in Abhängigkeit vom Level und des Zufalls bestimmen. Die Funktion sieht so aus:

Um zu verstehen, was diese Funktion macht, stell dir eine exponentiell steigende Kurve in einem Koordinatensystem wie in der Schule vor und greif dir einen beliebigen Punkt aus der Kurve heraus. Je weiter rechts der Punkt liegt, desto höher ist der Level, und weil die Kurve steigt, spuckt die Funktion auch einen höheren Attributwert aus als bei den weiter links liegenden Punkten. Die Formel für die Kurve ist ziemlich simpel: Der Level dient als Basis, und der Exponent von 1 wird um einen zufälligen Wert zwischen mindestens 0 und höchstens 0.1 erhöht, je nach dem, ob eine Abweichung in beide Richtungen(deviation) angegeben ist. Das Zufallselement ist wichtig, damit die Kämpfer selbst bei gleichem Level noch individuelle Stärken und Schwächen haben. Das Ergebnis wird dann noch mit einem beliebigen Faktor multipliziert.

Ein Kämpfer muss ordentlich zuschlagen können, darum fügen wir der Fighter()-Klasse eine hit()-Methode zu:

Die kriegt den Gegner als Argument mitgeteilt und berechnet nach einer einfachen Formel den Schaden, den sein Schlag verursachen würde. Genau wie in richtigen Fights fällt nicht jeder Schlag immer genau gleich aus, darum schwankt hier der tatsächliche Angriff zwischen 30% und 170% des eigenen Angriffswertes. Davon ziehen wir zwischen 0% und 50% des aktuellen gegnerischen Verteidigungswertes ab. Dann prüfen wir mit der beats()-Methode, ob der Angreifer in diesem Moment flinker als sein Gegner reagiert, und falls ja, berührt der Schlag den Gegner – falls nicht, konnte der Gegner ausweichen. Die beats()-Methode ist ziemlich clever, weil sie Zufall simuliert und darum auch bei gleichen Attributen verschiedene Ergebnisse liefern kann:

Mithilfe der globalen compare()-Funktion berechnet sie das Verhältnis des eigenen und gegnerischen Attributes in Prozent und dann die Differenz von gegnerischem und eigenem Prozentsatz – das Ergebnis ist entweder negativ oder positiv, aber nie weniger als -100 und nie mehr als 100. Eine Formel, die im Grunde genauso funktioniert wie in attribute(), berechnet schließlich die Chance des Gegners, den Kämpfer in einem Attributvergleich zu schlagen. Je größer eine positive Differenz ist, desto höher ist die Potenz und desto kleiner ist der Teiler, und desto größer ist im Ergebnis die Chance für Kämpfer 2, Kämpfer 1 im Vergleich zu schlagen. Für eine negative Differenz gilt jeweils das Gegenteil.

Die compare()-Funktion ist dagegen extrem simpel:

Sie gibt einfach nur die Prozentsätze der beiden Kämpfer für ein Attribut zurück, wobei der stärkere mit 100% den Orientierungswert bietet. Diese Funktion wird auch später von der “AI” benutzt, um Entscheidungen zu treffen.

Gut, Kämpfer können nun Schläge austeilen. Aber was passiert, wenn jemand getroffen wird? Das erledigt die get_hit()-Methode der Fighter()-Klasse:

Die hit()-Methode des Angreifers teilt dem Verteidiger den berechneten Schaden mit. Wenn der kleiner oder gleich Null ist, kann der Verteidiger diesen Schlag abwehren, ansonsten wird ihm der Schaden von den Hitpoints abgezogen. Wenn ihm dadurch die Hitpoints ausgehen, markieren wir den Kämpfer als besiegt. Das Spiel reagiert später darauf. Die get_defeated()-Methode ist ausgelagert, weil sie in Zukunft noch mehr erledigen könnte. Im Moment ist sie ganz spartanisch:

Unter Umständen zieht es ein Kämpfer vor, in einer Runde auf einen Angriff zu verzichten und stattdessen seine Chancen zu verbessern, den nächsten Schlag des Gegners abzuwehren. Dafür beherrscht er die defend()-Methode, die einen zufälligen Faktor zwischen 1.1 und 1.3 bestimmt, mit dem sein Verteidigungswert beim nächsten gegnerischen Angriff multipliziert wird.

Oder er könnte versuchen, dem Kampf zu entfliehen, hier die escape()-Methode:

Hier benutzen wir wieder die beats()-Methode, diesmal um den Fluchtversuch zu simulieren, und wieder ist die Flinkheit das entscheidende Attribut. Der Rückgabewert steht für den Erfolg oder Misserfolg der Flucht und wird in der Spielschleife aufgegriffen, die darauf angemessen reagiert.

Wo wir von der Spielschleife sprechen …! Jetzt haben wir unsere Kämpfer, doch wie lassen wir sie gegeneinander antreten? Weil das Programm noch nicht besonders komplex ist, können wir die Logik komfortabel in der main()-Funktion des Programms ausbreiten:

Erst einmal erstellen wir natürlich zwei Kämpfer, und blue_fighter soll vom Spieler gesteuert werden. Dann bedienen wir uns wieder einmal der beats()-Methode, um zu erfahren, wer das Flinkheits-Duell gewinnt und als Erster angreifen darf. Die while-Schleife ruft nun so lange die globale fight()-Funktion auf, bis der Kampf auf irgendeine Art beendet wird (Sieg bzw. Niederlage, Flucht, Spielende). Die turn_update()-Methode ist dafür gedacht, etwaige temporäre Zustände wieder zu entfernen und Standardwerte wiederherzustellen, aber bisher setzt sie nur den temporären Verteidigungsbonus von defend() wieder zurück:

Die globale print_stats()-Funktion zeigt dem Spieler vor jedem Zug eines Kämpfers die Hitpoints der Kämpfer an, damit er eine begründete Entscheidung treffen kann:

Kommen wir nun zur fight()-Funktion, in der die wesentlichen Entscheidungen der Kämpfer getroffen und bearbeitet werden:

Hier teilt sich der Weg: in einen für vom Spieler kontrollierte und einen für vom Computer gesteuerte Kämpfer. Erstere erhalten mit der fight_options()-Funktion ein Menü angeboten, in dem sie ihren Zug bestimmen, und je nach Auswahl wird die entsprechende Fighter()-Methode ausgeführt. Wenn daraufhin der Kampf weiterläuft, gibt die Funktion True zurück, doch falls der Kampf durch irgendeine Auswahl oder einen besiegten Kämpfer beendet wird, gibt sie False zurück, worauf main() mit dem Abbruch der Spielschleife, break, reagiert (siehe oben).

Sehen wir uns kurz die Kampfoptionen von fight_options() an:

Der Spieler trifft seine Entscheidung also über ein Eingabefeld in der Konsole, und der entsprechende String wird fight() mitgeteilt.

Wesentlich interessanter ist die decide()-Methode der Fighter()-Klasse, die von fight() aufgerufen wird (siehe oben). Sie ist unsere “AI”, unsere künstliche Intelligenz für die vom Computer gesteuerten Kämpfer, obwohl sie in diesem Fall sehr einfach gestrickt ist:

Zunächst holt sich die “AI” die Prozentsätze seines eigenen Kämpfers für Angriffsstärke, Verteidigung und verbliebene Hitpoints im Vergleich zu denen seines Gegners. Wenn der computergesteuerte Kämpfer schwächer abschneidet, wird ein Prozentsatz kleiner als 100 sein. Das ist noch kein Grund für Gefahr. Aber falls sowohl seine eigene Angriffsstärke als auch seine Verteidigung weniger als 20% der gegnerischen Werte ausmachen oder falls sie weniger als 50% ausmachen und dafür die Hitpoints weniger als 20% der gegnerischen Hitpoints entsprechen, sieht der Computer einen gewichtigen Grund, die Flucht anzutreten, statt sich auf einen aussichtslosen Kampf einzulassen. Wenn lediglich die Angriffsstärke nur 20% des gegnerischen Wertes ausmacht, probiert er es mit Verteidigung, um einen Schlag abzuwehren. In allen anderen Fällen greift der Computer seinen Gegner an. Die decide()-Methode gibt außerdem den Wert True zurück, falls der Kampf weitergeht, und False, falls der Kampf durch Sieg bzw. Niederlage oder eine erfolgreiche Flucht beendet wird.

Weil wir ein paar Mal die in der Python-Standardbibliothek enthaltene round()-Methode benutzen, um Dezimalzahlen zu runden, diese Methode aber seit Python 3 nicht mehr dem Verfahren entspricht, wie man es aus der Schule kennt und erwartet (“Runde immer ab .5 auf!”), sondern bei geraden Vorkommastellen vor .5 ab- und bei geraden aufrundet, stellen wir das alte und erwartete Verhalten wieder her, indem wir in unserem Programm round() mit einer globalen Funktion überschreiben:

Damit ist die Konsolen-Version unserer RPG-artigen, rundenbasierten Kampfengine so gut wie fertig. Fehlen nur noch die Importe und ein paar Konventionen:

Die komplette Fassung als Python-Skript: simpleFight

Nachdem wir jetzt verstanden haben, wie die Kämpfer interagieren und die Züge sich abwechseln, reisen wir in der nächsten Ausgabe in die 90er Jahre und spielen mit grafischer Oberfläche, Maus und diesen ganzen neumodischen Interfaces, die sich niemals durchsetzen werden! Und weil ich keine sadomasochistische Ader habe, setze ich auf Qt und PyQt.

Posted in Programmieren | Tagged , | Leave a comment

Handbuch gegen Zyniker

Der Zyniker ist an einem sachlichen Austausch von Argumenten nicht interessiert, sondern allein daran, eine Sache oder eine Person zu diskreditieren, die seiner eigenen Meinung zuwiderläuft. Er hat Ideale, doch der Weg dahin ist für ihn ein schmutziges Geschäft. Darum ist es ein schwerer Fehler, ihm allein mit besseren Argumenten begegnen zu wollen. Dieses “Handbuch” ist nicht als allgemeine Diskussionshilfe misszuverstehen, sondern speziell für den Fall geschrieben, dass eine faire Diskussion absichtlich zerstört zu werden droht.

1. Saat von Zweifeln
Wer es mit einem zynischen Diskutanten zu tun hat, stellt sich seine eigene Falle, wenn er sich ohne Not dadurch absichern will, etwas als eine Selbstverständlichkeit darzustellen, das nicht jedem Menschen bekannt ist. Der Zyniker wird es sofort in Zweifel ziehen und die Diskussion auf diesen Punkt konzentrieren, um mit dem Anzweifeln dieser behaupteten Selbstverständlichkeit grundsätzlich deine Glaubwürdigkeit infrage zu stellen.

Wie du dich dagegen wehrst: Am besten verzichtest du ganz auf Formulierungen, die mit “Außerdem” oder “Nebenbei erwähnt” beginnen und “selbstverständlich” oder “natürlich” beinhalten, weil sie dann offenbar nicht zentral für deine Argumentation sind und dich nur angreifbar machen. Doch wenn sie dir versehentlich herausrutschen, beendest du diese Nebendiskussion um jeden Preis.

2. Nebenkriegsschauplätze
Viele andere Taktiken laufen letztlich auf diese eine hinaus: die Diskussion von ihrem ursprünglichen Feld auf ein anderes zu verlagern, auf dem der Zyniker dich für verwundbarer hält.

Wie du dich dagegen wehrst: Nicht darauf eingehen, sondern offensiv darauf hinweisen, dass er dem eigentlichen Thema ausweicht. Weil er keinen blassen Schimmer hat?

3. Die Weichei-Falle
Weil der Zyniker von vornherein nicht mit Argumenten punkten will, ist es sinnlos, ihn für seinen Mangel an Argumenten zu schelten. Im Gegenteil wird er mit einer Personalisierung kontern: “Ja, wenn du nicht mehr weiter weißt, haben die anderen einfach keine Argumente.” Damit stellt er dich als Verlierer dar, der einem Treffer im Boxring nichts entgegensetzen kann und über die gegnerische Technik jammert.

Wie du dich dagegen wehrst: Fingerzeigen wirkt schwach. Auf keinen Fall wirfst du ihm seine argumentative Schwäche vor, ohne deine eigenen Argumente cool, in knappen Sätzen, aber rhetorisch scharf zu wiederholen. Das Publikum muss wissen, wer die Hosen anhat und wer ohne Kleider dasteht. Das gibt dir genug Stärke, um auch den obigen Satz an dir abtropfen zu lassen: “Getroffene Hunde bellen.”

4. Die Hysteriker-Falle
Sachlichkeit ist der Feind des Zynikers, denn sein Handwerk lebt von der Enttäuschung, Wut, Desillusionierung, Abgeklärtheit, Abgestumpftheit anderer Menschen. Darum wird er die Diskussion sofort emotionalisieren, indem er dir genau diese Emotionalisierung vorwirft. Deine Feststellungen wird er als Übertreibungen brandmarken, deine Gedankengänge als aufgeregt, deine Schlussfolgerungen als hysterisch. Vortragen wird er diese Vorwürfe in einem lässig-amüsierten Ton: “Ach Gottchen …”

Wie du dich dagegen wehrst: Diese Vorwürfe kannst du nicht im Vorhinein verhindern, weil der Zyniker sie äußert, egal wie sachlich du bist. Wichtig ist, wie du auf sie reagierst: Du sollst genau in diese Aufregung getrieben werden, um sein Urteil zu bestätigen. Daher versteht es sich von selbst, dass du nun cool bleibst, dich zu keiner hitzigen Aussage verleiten lässt, die dir später auf die Füße fällt, und bloß nicht die Stimme erhebst. Du trägst deine Argumente ruhig, aber hart und offensiv vor.

5. Die Parteilichkeits-Falle
Eine Aussage ist nur so glaubwürdig wie die Person, die sie ausspricht. Also wird der Zyniker deine politische Heimat nutzen, dich als unkritischen Parteisoldaten darzustellen. Dies gilt auch dann, wenn deine politische Heimat nicht so einfach festzustellen ist, weil er dir dann eine unterstellt, indem er dich mit der öffentlichen Meinung gleichsetzt. Viele Menschen werden sich mit ihm solidarisieren, weil er sich als Freund einer objektiven Sichtweise profiliert.

Wie du dich dagegen wehrst: Dein Ruf ist schnell ruiniert und zementiert, darum weist du den Vorwurf der Einseitigkeit umgehend und nachsichtig lächelnd mit einem Beispiel von dir. Notfalls denkst du dir ein Beispiel aus, denn du überlässt einem Falschspieler nicht das Feld. Bei dieser einen Klarstellung bleibt es, mit mehr tappst du in die Weichei-Falle.

6. Die Parteilichkeits-Falle reversed
Nun gibt es zweifelsfrei Organisationen und Personen, die als Faktenverdreher und verbohrte Ideologen bekannt sind und mit Behauptungen in die Öffentlichkeit treten, die sich von Fachleuten leicht widerlegen lassen. Der Zyniker nutzt jedoch den Umstand aus, dass die wenigsten Menschen Fachleute auf diesem Gebiet sind und daher nur mit angelesenem Wissen argumentieren können. Diese Menschen wissen, dass die Urheber dieser Behauptungen einseitig und interessengeleitet argumentieren, aber sie können diesen Vorwurf nicht vortragen, weil der Zyniker ihnen sonst unterstellt, eine seriöse Debatte totzuschweigen, keine Antworten auf die Mahner zu haben und sie bloß als parteilich zu diffamieren.

Wie du dich dagegen wehrst: Da hilft nur die Macht der Wiederholung der eigenen Argumente. Unseriöse Quellen werden als solche benannt, eine Diskussion über sie gar nicht erst begonnen. Da der Zyniker wenig Wert auf die Güte seiner Argumente legt, wirst du irgendwann seinen Schwachpunkt gefunden haben, den du gnadenlos ausschlachtest und wiederholst, bis er die Fassung verliert oder sich zurückzieht.

7. Die Vernunft-Falle
Der Zyniker profiliert sich als die fleischgewordene Vernunft, allerdings nicht mit sachlichen Argumenten, sondern mit einem aufreizend ruhigen Habitus. Seine Vernunft ist nicht die der Aufklärung, sondern seine Interpretation des “gesunden Menschenverstands”. Diese Taktik und die Hysteriker-Falle sind zwei Seiten der gleichen Medaille, nur lässt er dich hier zuerst auflaufen, um dann zu einem späteren Zeitpunkt zu emotionalisieren, wenn du auf seine zur Schau getragene Nüchternheit mit mehr Herzblut bei der Sache bist.

Wie du dich dagegen wehrst: Ignorieren, wenn es möglich ist, denn mehr Argumente spielen dem Zyniker genauso gut in die Karten, wie zu zeigen, wie genervt du von ihm bist. Wenn du reagieren musst, dann ruhig, sachlich und vor allem extrem knapp.

8. Spott und Häme
Lachen schweißt die Menschen zusammen, ganz besonders, wenn man über andere Menschen oder Ansichten lacht. Darum ist es ein Leichtes für den Zyniker, eine bestehende Grundstimmung aufzugreifen und mit Witzen auf ihre Kosten zu verstärken. Obwohl sie durchaus derbe Beleidigungen enthalten können, sucht der Zyniker für gewöhnlich die Nähe zum Kabarett mit einem inhaltlichen Bezug zum Thema. Er präsentiert sich damit als humorvoller und cleverer Geist und verleitet andere dazu, mit einzustimmen, wodurch er sein Ziel erreicht, die Diskussion auf Sachebene zu verhindern oder ihr einen Dreh zu geben. Wichtig ist, dass wir hier nicht von Witzen über dich ganz persönlich sprechen, sondern über Menschen oder Ansichten, die du mit deinem Standpunkt vertrittst.

Wie du dich dagegen wehrst: Auf Witze einzugehen, wertet sie nur auf und verlängert die Zeit, die dafür verloren geht. Im schlimmsten Fall gerät das zu einem Ping-Pong-Spiel sarkastischer Bemerkungen, die deiner Sache nicht dienen. Stattdessen nimmst du sie zum Anlass, zur Diskussion zurückzukehren. Sollte dies nicht gelingen, ist das ein Anzeichen dafür, dass du mit deiner Ansicht alleine dastehst und weder du noch der Zyniker etwas gewonnen oder verloren haben, wenn du aussteigst.

9. Polemik
Die gelegentliche Überspitzung in einer Diskussion kann man mit dem Salz in der Suppe vergleichen. Genau wie in Fast Food zu viel Salz steckt, enthält jedoch auch das argumentative Fast Food des Zynikers meist sehr viel Polemik. Auf diese Weise kann er einen Sachverhalt oder eine These sehr vereinfachen und seine entsprechend einfache Argumentation vortragen, die geeignet ist, dich zu provozieren und in eine der beschriebenen Fallen zu locken oder die Diskussion insgesamt verflachen zu lassen.

Wie du dich dagegen wehrst: Weil du die Diskussion nicht auf verfälschten Grundlagen weiterführst, demaskierst du die Polemik und nutzt sie, um die Unkenntnis oder unlauteren Methoden des Zynikers herauszustellen. Dies muss fundiert und hart in der Sache geschehen und darf nicht mit einer einfachen Schuldzuweisung enden, um der Weichei-Falle zu entgehen.

10. Verbrüderung oder Bauchgefühl
Zusätzlich zu anderen Taktiken wird der Zyniker mit einem jovialen Auftreten versuchen, seine Meinung als die instinktiv als richtig zu erkennende Meinung auszugeben. Beginnt ein Satz mit “Seien wir mal ehrlich”, soll der Eindruck erweckt werden, man halte sich bisher aus Rücksicht auf Konventionen zurück, müsse jetzt aber mal Klartext sprechen und gehe davon aus, dass jeder vernünftig denkende Mensch diese Meinung insgeheim teilt, auch wenn er vielleicht noch eines kleinen Rucks bedarf, sich das einzugestehen. Eine argumentative Differenzierung erscheint in diesem Licht wie ein Produkt des Elfenbeinturms oder wie eine unnötige Verkomplizierung eines einfachen Sachverhalts.

Wie du dich dagegen wehrst: Das Bauchgefühl ist leicht mit Tatsachen zu widerlegen, doch es besteht die Gefahr, als abgehobener Großkopferter wahrgenommen zu werden, der von den Lebensumständen der “normalen” Leute keine Ahnung hat. Darum verzichtest du auf jeglichen Pathos, Polemik und rhetorischen Zucker und konzentrierst dich stattdessen auf knappe, nüchterne und nachprüfbare Fakten.

Posted in Allgemein | Tagged , | Leave a comment

Anime-Review: El Cazador de la Bruja

Worum es geht

Kopfgeldjäger leben eigentlich nach so gefährlichen wie einfachen Regeln: “Tot oder lebendig” ziert nicht nur die Steckbriefe ihrer Beute; es ist ihre Berufsbeschreibung. Als Nadie den Job übernimmt, das Leben der rätselhaften Ellis auf unbestimmte Zeit zu schützen, stellt sich die Schar der anderen Kopfgeldjäger, die sich auf die Jagd nach dem Mädchen machen, allerdings noch als eine der geringsten Schwierigkeiten heraus. Ihre lange Reise nach Süden beginnt …

26 Episoden, Bee Train

El Cazador de la Bruja | Screenshots

Story: 7

Ohne Details auszubreiten, will ich gleich zu Beginn feststellen, dass die Handlung mit kleinen logischen Schwächen gespickt ist, wie man sie aus vielen Geschichten, besonders im Action-Genre, kennt. Vormals extrem flinke Menschen zögern die entscheidenden Angriffe plötzlich so lange hinaus, bis sie überwältigt werden. Helden lassen den eigentlich bereits am Boden liegenden Gegnern nicht nur ihre Schusswaffen, sondern auch noch gleich potentielle Geiseln zurück. Undercover-Agenten, die als besonders gerissen vorgestellt werden, beschatten ihre Ziele auf einmal ohne jegliche Tarnung aus nicht einmal zehn Metern Entfernung auf offener Flur. Schurken tragen absurde “Alien-Ninja”-Kostüme, und Geheimbünde treffen sich stets in Kapuzenmäntel gehüllt, die gerade so ihre Augen verbergen. Die üblichen Schnitzer eben. Doch auch davon abgesehen glänzt die Haupthandlung nicht durch besondere Originalität oder gar Logik. Das alles ist hingegen nicht weiter schlimm, weil die erste Hälfte des Animes sowieso aus mehr oder weniger unzusammenhängenden Kurzgeschichten besteht, die für sich genommen spannend, witzig, manchmal leider auch langweilig sind – das ist wahrscheinlich Geschmackssache. In der zweiten Hälfte dominiert zusehends die Hauptgeschichte, die trotz der erwähnten Schwächen überaus spannend umgesetzt wird. Obwohl ich schon nach wenigen Episoden vergessen hatte, wohin die Kopfgeldjägerin Nadie und ihre “Beute” Ellis überhaupt unterwegs sind, ist ihre gemeinsame Reise der rote Faden, der die ganze Geschichte zusammenhält und mit diesem unwiderstehlichen, von den wundervollen lateinamerikanischen Zwischenstationen verstärkten Road-Movie-Charme erfüllt, derentwegen man der Serie so viel verzeiht. Nadie und Ellis zu begleiten, erfreut vielleicht nicht den Verstand. Aber Herz und Seele.

Art & Animation: 8

Möglicherweise ist es meiner Einbildung geschuldet, aber die erste Hälfte des Animes wirkt auf mich statischer, mehr von Standbildern geplagt als die zweite. Für eine erstmals 2007 ausgestrahlte Serie ist das überraschend. Sie nehmen jedoch in der zweiten Hälfte deutlich ab, und zu jeder Zeit wird der Zuschauer durch eine Fülle von malerischen Landschaftspanoramen entschädigt, die das Auge erfreuen. Ob Städte, ländliche Villen, Fast-Food-Restaurants oder staubige Straßen durchs kakteenbewehrte Nirgendwo, die Szenerie ist vielfältig und schafft eine ganz besondere Atmosphäre. Die Farben sind angenehm und ansprechend, die Orte wecken das Gefühl von Abenteuer und Risiko, die Charakterdesigns riechen beinahe nach Staub, Schweiß und Schwarzpulver. Auch wenn die Animationen gerade zu Beginn flüssiger hätten sein können, kann ich den Art-Teil nur jedes Mal wieder bewundern.

Musik & Sound: 10

Die englischen Synchronsprecher hinterlassen bei mir als Nicht-Native-Speaker einen sehr guten Eindruck, für die deutschen kann ich nicht sprechen. Aber auch die japanischen Stimmen kann man sich gut anhören und sprengen niemandem mit übertriebenen Piepsstimmen das Trommelfell, wie das bei anderen Serien schon mal der Fall sein kann. Hintergrundgeräusche klingen überzeugend, Motoren, das metallene Klicken von Pistolenteilen und das beständige Zirpen der Heuschrecken leisten ihren Beitrag zur rastlosen, geladenen Atmosphäre. Aber der eigentliche Star sind der Stück für Stück mitreißende Soundtrack sowie die Opening- und Ending Themes. Alleine schon für die einzigartige, spannungsgeladene, westernmäßige Mundharmonika- und Flötenmusik, die sich schon sehr bald ins Gedächtnis einbrennen wird, lohnt sich der Kauf der Serie.

Charaktere: 7

Es fällt nicht schwer, sich vorzustellen, wie die Handlung in sich zusammenfiele wie ein Soufflé, würde sie nicht von diesen äußerst sympathischen Helden getragen. Die Nebencharaktere der einzelnen Kurzgeschichten sind bestenfalls durchschnittlich, aber man kann in 25 Minuten auch keine Charakterstudien erwarten. Einige sind meiner Meinung nach langweilig, andere viel zu leicht zu durchschauen, jene flach wie eine ausgerollte Tortilla. Eigentlich sind nicht einmal die Hauptpersonen besonders stark entwickelt geschweige denn facettenreich. Das Mädchen Ellis macht immerhin einige Veränderungen durch, auf die ich nicht näher eingehen möchte, die aber vom unschuldigen süßen Strohkopf im Minirock wegführen. Man könnte vielleicht sagen, Ellis entwickele sich vom lebendigen MacGuffin mit Comedy-Einlagen zu einer ernstzunehmenden Persönlichkeit. Die Begründung für ihren anfänglichen Zustand hängt mit der bereits belächelten Story zusammen, aber es wäre unfair, Ellis darauf zu beschränken. Ellis ist nicht Nyuu. Nadie, die bissige Kopfgeldjägerin an Ellis’ Seite, ist so etwas wie ihre große Schwester. Eine Episode beschäftigt sich mit ihrem Leben, bevor sie diesen “Beruf” ergriff, was diesem Charakter wirklich gut tut, andererseits nimmt man ihr nicht immer die Rolle des harten Hundes ab, weil sie manchmal ein wenig zu schwesterlich und weich auftritt.

Das andere ungewöhnliche Charakterpaar und eines der Highlights dieser Serie, Ricardo und Lirio, lässt zwar viele Fragen offen, erfüllt allerdings gleich mehrere Funktionen: Der stets bis zur Karikatur ernste, aber väterliche Ricardo in Hut und Mantel und das immer gut gelaunte, kleine Mädchen Lirio wecken zwar ihrer schieren Gegensätzlichkeit wegen Zweifel an ihren (oder Ricardos) Absichten, doch mit der Zeit lernt der Zuschauer, sie als ständige “zufällige” Gefährten zu akzeptieren. Ihre Begegnungen mit Nadie und Ellis und ihre Rolle in der Geschichte sind nachvollziehbar, doch über ihre persönlichen Hintergründe hätte ich gerne mehr erfahren.

Schwächer sind die Gegenspieler ausgeprägt, unter anderem der von sich selbst eingenommene Wissenschaftler Douglas Rosenberg: Auch wenn er selten von den Ereignissen überrascht, sondern im Gegenteil meistens überaus zufrieden mit dem Fortschritt seiner Pläne wirkt, ist sein Verhalten bisweilen widersprüchlich. Einmal bestraft er einen Untergebenen für sein unangebrachtes Benehmen mit ziemlich harten “Umerziehungs”-Maßnahmen, kurz darauf scheinen ebendiese Handlungen genau in seine Karten zu spielen. Rosenberg ist mit seiner Eloquenz, Arroganz und Durchtriebenheit der Erzschurke von der Stange. Interessanter ist die Agentin Jody Hayward, die ihre eigene Agenda zu verfolgen scheint, aber nach einigen Enthüllungen leider an Profil verliert, auch wenn die Macher sichtlich vom Gegenteil überzeugt sind. Bleibt noch der gruselig-verrückte L.A., dessen inkonsequentes Verhalten mir mehr als einmal Kopfzerbrechen bereitete, das andererseits wegen seiner emotionalen Instabilität vergleichsweise leicht zu erklären ist.

Insgesamt bleiben gemischte Gefühle. Die Charaktere sind größtenteils sympathisch, unterhaltsam, einprägsam, treiben die Geschichte voran, schaffen starke emotionale Momente, doch sind selten tiefgründig oder rational.

Fazit:

Mit fiktionalen Werken verhält es sich oft wie mit den Menschen, die einem am nächsten sind: Man kennt ihre Schwächen … und meine Fresse, was sind das manchmal für Schwächen … doch man liebt ihre Stärken nur umso mehr. El Cazador de la Bruja ist eines dieser Werke, die ich für das liebe, was sie sind und was sie tun. Dieser Anime bringt mich zum Lächeln und zieht mich in seine Latino-Western-Welt, und wenn sich einige Klischées hinein verirren, dann ist es eben so. Gemessen an den eigenen Ansprüchen hätte die Geschichte des Animes durchdachter, die Charaktere konsequenter und tiefer sein können, dafür gibt es Punktabzüge. Doch wer einen actionreichen Western mit Mystery- und Comedy-Elementen sucht, wird diesen Anime genauso mögen wie ich.

Posted in Anime | Tagged , , , , , | 2 Comments

First Impression: Deadman Wonderland – … und wenn er seine Freunde berührte, starben sie sofort.

Zugegeben, der Werbetext des Verlags auf dem Rückdeckel hätte mich bereits ernüchtern können (“Die Apokalypse ist vorbei! Kämpfe um dein Leben!!!”), doch die darunter zusammengefasste Ausgangssituation des Mangas fand ich verrückt genug, um neugierig zu werden: Igarashi Ganta wird als einziger Überlebender Zeuge, wie ein rotes Monster seine Freunde und Mitschüler im Klassenraum ihrer Mittelschule auf grausame Weise tötet, doch wird daraufhin selber als Massenmörder zum Tode verurteilt. Der makabere Ort seiner Strafe: das titelgebende, zum Vergnügungspark für die ganze Familie umgebaute Gefängnis.

Deadman Wonderland: Facepalm

Deadman Wonderland: Facepalm

 

Leider gelingt es Deadman Wonderland nicht, darauf eine gute Geschichte aufzubauen. Zuerst plagte mich nur das unbestimmte Gefühl, dass etwas “nicht stimmt”, ohne seinen Grund genauer eingrenzen zu können, doch mit jedem Kapitel wurde mir klarer, was mich beschäftigte oder besser gesagt: nicht beschäftigte: die Hauptperson. Nun ist meine ganz besondere Meinung zu vielen männlichen Anime-Helden kein Geheimnis, doch mit dem Verzicht auf jede erkennbare Persönlichkeit oder auf irgendeine emotionale Verbindung haben Gantas Schöpfer ihm wirklich keinen Gefallen getan. Im Gegensatz zu den vielen Harem-Konstellationen, in denen Charaktere seiner Güteklasse normalerweise auftreten, um mit ihrer schieren Merkmalslosigkeit keine Romanze im Vorhinein auszuschließen, hätte es in diesem Genre und mit dieser Absicht viele Möglichkeiten gegeben, ihn für den Rezipienten interessant zu machen – ihm zu vermitteln, warum sein Schicksal ihn kümmern sollte. Gantas Freunde kriegen exakt vier Seiten mit (mehr oder weniger) Dialog spendiert, bevor ihnen das rote Cyborgwesen den Kopf abtrennt und Ganta in den Knast wandert. Über den weiß man zu diesem Zeitpunkt lediglich, dass er sich nicht mehr genau an sein Leben vor einem großen Erdbeben erinnert, das sich vor zehn Jahren in Tokyo ereignete. Reaktionen von Gantas Eltern oder möglichen Geschwistern erfährt man nach dem Mord und dem Gerichtsurteil keine, aber offensichtlich ist deren Verhältnis grundlegend belastet, denn er verschwendet umgekehrt auch keinen Gedanken an sie. Doch wann immer Gantas schreckgeweitete Augen aus dem Panel stieren, erwartet der Manga anscheinend meine empörte Anteilnahme.

Zwar war die Idee nicht schlecht, die Sicherheit des Lesers aufzulösen, dass Freunde von Hauptpersonen nicht sterben, doch niemand von ihnen ist als Charakter ansatzweise weit genug entwickelt, um Ärger, Trauer oder ein Gefühl des Verlustes zu wecken. Es wäre besser gewesen, die Geschichte nicht mit der Brechstange anzugehen, sondern ihnen und Ganta mehr Raum zur Vorstellung zu gönnen, um die emotionale Fallhöhe zu steigern. Um diese Seiten nicht wie einen Fremdkörper voranzustellen, hätte man bedeutsame Hintergrundinformationen scheinbar nebensächlich integrieren können, statt sie dem Leser wie das Erdbeben praktisch ins Gesicht zu schmieren.

Deadman Wonderland: Die Deadmen kämpfen mit Blut. Aber nicht mit zu viel, sonst wird ihnen schwindlig.

Deadman Wonderland: Die Deadmen kämpfen mit Blut. Aber nicht mit zu viel, sonst wird ihnen schwindlig.

 

Blättern wir ein paar Seiten weiter. (Die folgenden Absätze enthalten selbstverständlich Spoiler.) Mit Shiro begegnet uns bald die zweite Hauptperson des Mangas, die im Gegensatz zu Ganta einige, ähm, buchstäblich hervorstechende Merkmale aufweist: Sie trägt nichts als einen hautengen Ganzkörperanzug, irrwitzig plumpe Handschuhe und eine verdammte Halsberge. Zum Glück muss sie offensichtlich nie auf die Toilette. Außerdem ist sie natürlich ein Albino, weil Albino-Mädchen seit einigen Jahren sehr beliebt sind und ihnen mit diesem Äußeren die Botschaft “hat übermenschliche Fähigkeiten” beinahe auf die Stirn tätowiert ist, damit es auch der letzte Hammel versteht. Diese Charakterschablone ist aber mittlerweile so verbreitet, dass sie mich gar nicht an der Immersion hindert – die Reaktionen der anderen Charaktere auf sie tun das. Sie ist nämlich gar kein Häftling, trägt zumindest keines der im “Deadman Wonderland” verpflichtenden Halsbänder zur Identifikation und wurde nach Aussage einer anderen Gefangenen noch nie im Frauentrakt gesehen. Trotzdem kann sie ungestört durch das Gefängnis laufen, zieht trotz ihrer lächerlichen Aufmachung keine besondere Aufmerksamkeit auf sich und nimmt sogar an einem von der Gefängnisleitung veranstalteten Hindernislauf teil. Übrigens vergaß ich zu erwähnen: Shiro ist eine Kindheitsfreundin von Ganta, doch er erinnert sich nicht daran. Duh.

Das Verhalten der Charaktere ist allgemein sehr merkwürdig. Der Promoter Tamaki Tsunenaga hat Ganta überhaupt erst mit einem üblen Trick ins Gefängnis gelockt, weil er wohl seine besonderen Kräfte erahnte und im Gefängnis herauslocken wollte, wo er sie gegebenenfalls erforschen könnte. Doch die beste Idee, die ihm einfällt, um Gantas Fähigkeiten zu testen, ist, das Baugerüst eines ganzen verdammten Turms zu sprengen, während Ganta darunter Gefängnisarbeit verrichten muss. Den Blick fürs rechte Maß kam allerdings auch dem für Handlung und Text des Mangas verantwortlichen Kataoka Jinsei abhanden, wenn er Tamaki vor dem Hindernislauf dem Stadionsprecher mitteilen lässt, dieser solle Gäste und Mitarbeiter weiterhin im Glauben lassen, die für jeden sichtbaren öffentlichen Hinrichtungen mit Elektroschocks, Klingen und Spießen seien nur eine “Inszenierung”, und er solle schon einmal die Leichenbeseitigung rufen. Diese regelmäßigen Massaker finden also angeblich im Geheimen statt, weil die Gäste des Vergnügungsparks und vor allem ihre ständigen Mitarbeiter zu doof sind, zu kapieren, was vor sich geht – und die Leichenbeseitiger erzählen es niemandem beim Feierabendbier weiter? Wir reden hier über Zehntausende von Menschen, und Journalisten würden einen solchen Braten sowieso kilometerweit riechen. Ich bezweifle, dass man das einfach so verheimlichen kann, indem man den Stadionsprecher bittet, es nicht direkt ins Mikrofon zu brüllen. Dass Politiker und andere Personen in Führungspositionen wieder einmal als strunzdumm hingestellt werden, als sie mit Tamaki über dieses offensichtliche Problem sprechen, erwähne ich nur, weil es mich in dieser Plattheit einfach viel zu oft stört.

Mir ist bewusst, dass mancher insgeheim denkt: Der schon wieder, ständig hängt er sich an Kleinigkeiten auf und macht eine ansonsten gute Serie schlecht. Der Punkt ist, dass ich gar nicht weiß, ob der Manga gut oder schlecht ist, weil ich nur die ersten zwei Bände kenne (= ein großformatiger Band von Tokyopop). Eigentlich wird er während des zweiten Bands recht spannend, nachdem die Charaktere sich einmal ein bisschen weiterentwickeln und nicht mehr nur rotzdoof, durchtrieben oder krank sind. Die Kämpfe sind Shounen-typisch aufgebaut, statt mit Feuerbällen werfen die Deadmen halt mit Blut, und es werden ordentlich Wärter abgemurkst wie von Elfen Lied inspiriert.

Doch ehrlich gesagt interessiert mich gar nicht mehr, wie die Geschichte weitergeht, weil sie mir schon bewiesen hat, wie wenig Neues und wie wenig Durchdachtes ich zu erwarten habe. Vielleicht wird sie das Manga-Pendant zu gutem Popcorn-Kino, doch dann ist Deadman Wonderland nichts, was ich schlechten Gewissens verpassen würde.

Posted in Manga | Tagged , , , | 4 Comments