ck's Blog

Dies ist der Blog von Christoph Riesinger.

Archiv für Januar, 2010

Mit Bats durch Arkham.

Batman: Arkham Asylum.

Meine große Ausgleichsbeschäftigung zur Diplomarbeit ist neben den obligatorischen Serien im Moment das PC Spiele daddeln. Kurz vor Weihnachten war ich mir “Stalker: Call of Pripyat” durch, über die Feiertage nahm ich mit “Call of Duty: Modern Warfare 2″ vor (zu dem’s keinen Artikel geben wird, da brauche ich ja zum schreiben länger als zum durchspielen) und bis gestern unterhielt mich “Batman: Arkham Asylum”, einer der Überraschungserfolge des vergangenen Jahres. Und um dieses Spiel geht’s heute in diesem Blogeintrag.

Wie schon an anderer Stelle erwähnt bin ich eigentlich überhaupt kein Comic- und Superheldenfan. Aber wenn ich mich für ein solches Universum entscheiden müsste, dann würde die Welt rund um Batman recht weit oben stehen. Ich denke die Tatsache, dass bei Batman niemand gottgegebene Superkräfte hat sondern dass sich die besonderen Eigenschaften der Protagonisten halbwegs rational erklären lassen (zumindest für eine Comicwelt) und auf Wissen und Wissenschaft beruhen, weckt bei mir die meisten Sympathien. Als ich die ersten Tests zum Fledermausspiel las, waren diese allesamt sehr überschwänglich und an jeder Ecke hieß es, dass es auch ein toller Zeitvertreib für Nicht-Batmanfans ist.

Außerdem war das die perfekte Gelegenheit mein neues technisches Spielzeug auszuprobieren. Denn zu Weihnachten habe ich mir einen Wireless XBox 360 Controller für den PC besorgt. In der Vergangenheit hat es mich nämlich immer geärgert, dass die Steuerung vieler Topspiele, die von der Konsole stammen, nur äußerst unzureichend auf die Maus-/Tastatursteuerung am PC portiert wurden. Ganz besonders bekam ich das zu spüren bei Assassin’s Creed , aber auch bei Dead Space war das ein großer Kritikpunkt. Also dachte ich mir: Wenn der Prophet nicht zum Berg kommt (das Spiel keine anständige Steuerung bekommt), dann kommt der Berg eben zum Propheten (ich besorge mir einen Konsolencontroller für den PC).

So, nun aber genug der Einleitung. Ist der virtuelle Ausflug auf die Gefängnisinsel von Gothan City wirklich so toll, wie’s überall heißt? Kurze Antwort: Ja! Lange Antwort: Ja, “Batman: Arkham Asylum” ist so toll, wie’s überall heißt. Ganz lange Antwort:

Das auffälligste ist die Grafik und das Setting und die Atmosphäre die mit ihr erschaffen werden. Die Irrenanstalt ist stimmig und abwechslungsreich in Szene gesetzt. Zwar ist man während des ganzen Spiels nachts unterwegs und an vielen Orten kommt man unfreiwillig mehrmals vorbei, das macht aber überhaupt nichts, da man sich schwer an den Höhlen, Gebäuden und den Außenarealen satt sieht. Hier haben die Designer viel Liebe zum Detail bewiesen, angefangen von der kleinsten Gefängniszelle über die Pflanzen von Poison Ivy bis hin zu großen Gewölben, durch die sich der dunkle Ritter mittels Batgrapple schwingt. Da sieht man mal, zu was die aktuelle Unreal-Engine in der Lage ist: Schöne Schatteneffekte, fein strukturierte Oberflächen und äußerst realistische Charaktere.

Letztere (die Charaktere) sind die zweite große Stärke von Arkham Asylum. Nichtkenner des Batman Universums werden perfekt in die Welt des DC Comics eingeführt, Kenner der Geschichte werden viele bekannte Gesichter wiedersehen. Ob Scarecrow, der Riddler, Poison Ivy, Killer Crow und vor allem der Joker (aber auch noch sehr viele andere): Alle haben ihren grandios inszenierten Auftritt und ihre ganz eigenen Missionen. Das sorgt für Abwechslung: Ob nun in den (Alp-) Traumwelten von Scarecrow, den pflanzenüberwucherten Levels von Posion Ivy oder in der Kanalisation von Killer Croc, ständig ist Neues geboten.

Trifft man einmal nicht auf einen der zahlreichen Hauptcharaktere des Batman Universums ist man die meiste Zeit damit beschäftigt die Handlanger des Jokers zu verkloppen. Vor allem hier merkt man dem Spiel seine Konsolenherkunft an: In klassischer Beat-’em-up Manier muss man Angriffe kontern, Gegner verwirren und Schläge austeilen. Das macht höllisch Spaß. Bei diesen Kämpfen helfen auch die vielseitigen Gatgets von Herrn Wayne wie die Batgrapple, mit der man sich von Wasserspeier zu Wasserspeicher schwingt, dem Batarang, mit dem aus der Ferne Gegner kurzzeitig gelähmt werden können oder der Batclaw, mit der man einzelne Gegner an sich heran ziehen kann. Das ist auch bitter notwendig, denn klassische Waffen wie Messer, Pistolen oder gar Gewehre bleiben dem Flattermann vorenthalten. Über sie verfügen nur die Gegner und diesen Nachteil gilt es mit Batman’s Gadgets auszugleichen.

Wo Licht ist, ist aber auch Schatten (jedoch nicht all zu viel). Schade ist es wirklich, dass das Spiel zwar automatisch (und fair) speichert, man jedoch keine eigenen Spielstände anlegen kann. So lassen sich die wirklich zahlreichen Gebiete der Insel Arkham nur einmal und dann nie mehr besuchen. Einmal vorbei, immer vorbei. Das ist wirklich sehr sehr schade.

Kritikpunkt Nummer Zwei ist eine schlechte Eigenschaft, die sich immer mehr Computerspiele aneignen und die so aus dem Reich der Konsolen stammt: Anstatt dem Spiel ein zwei Level mehr zu spendieren wird die Spielzeit des Spiels durch Suchrätsel der Marke “finde alle XYZ im Level ABC” oder “meistere alle Herausforderungen in der und der Zeit” künstlich aufgebläht. Versteht mich nicht falsch: Bietet ein Spiel so viel zu entdecken wie “Batman: Arkham Asylum” blicke ich gerne in Winkel und Ecken. Nach ein paar Stunden wird das aber langweilig. Dann doch lieber ein paar zusätzliche Levels, auch wenn diese freilich mehr Entwicklungsaufwand bedeuten.

Abschließend bleibt auch mir nur zu sagen: Arkham Asylum ist ein überragendes, kurzweiliges und atmosphärisches Spiel, das auch nicht Nicht-Batmanfans ruhigen Gewissens ans Herz gelegt werden kann.

Wie immer in meinen letzten Spielekritiken gibt’s zu guter Letzt einen Link auf den Spieletest bei gamestar.de sowie das von dort stammende Testvideo.

Kein Kommentar vorhanden

Deflektometrische Positionsbestimmung gegebener Geometrien mit Grafikkartenbeschleunigung.

…, so lautet er, der Titel meiner Diplomarbeit. Jetzt und heute nehme ich mir endlich mal die Zeit um zu schreiben, was mich seit einem halben Jahr und so richtig intensiv seit knapp über drei Monaten beschäftigt und noch spätestens bis zum 09. April beschäftigen wird.

Dass ich meine Abschlussarbeit im Fach Informatik erarbeite dürfte hinlänglich bekannt sein. Genauer gesagt in der Disziplin “Bild- und Signalverarbeitung”, meinem Vertiefungsgebiet, in dem ich auch schon Programmierpraktikum, HiWi-Job und gesonderte Diplomprüfung gemacht habe. Noch genauer gesagt wird mein Thema von FORWISS gestellt, einem an die Uni angegliederten Forschungsinstitut.

Deflektometrie ist ein optisches Inspektionsverfahren zur Qualitätsprüfung stark spiegelnder Oberflächen. Sie kann beispielsweise kleinste Kratzer und Unebenheiten der zu vermessenden Bauteile detektieren. Solche Bauteile können Komponenten von Maschinen und im Speziellen Teile von Autos sein aber auch andere Dinge wie hoch präzise geschliffene Spiegel für die Astronomie oder Werkzeuge für den Medizinbereich. Daher das Wort “deflektometrische” im Titel.

Jedoch betrachtet Deflektometrie nur die Oberfläche selbst, liefert jedoch keine direkten Informationen über das zu inspizierende Objekt. Das heißt, sie macht keine Aussagen über die räumliche Orientierung oder das geometrische Aussehen des zu untersuchenden Bauteils. An dieser Stelle kommt das Wort “Positionsbestimmung” ins Spiel. Während die deflektometrischen Messdaten bisher hauptsächlich für die Oberflächeninspektion eingesetzt werden, möchte ich sie verwenden, um Ort und Lage des zu vermessenden Gegenstands zu berechnen.

Das bedeutet genauer, dass ich einen (digitalen) Entwurf des zu prüfenden Objekts habe (daher das “gegebener Geometrien”) und nun wissen will, wie ich diesen virtuellen Entwurf rotieren (also drehen) und translieren (also nach nach oben/unten, vorne/hinten und links/rechts bewegen) muss, damit er mit dem gerade unter dem Versuchsaufbau durchlaufenden realen Bauteil übereinstimmt. Diese Informationen benötigt man, wenn man weitere Qualitätsprüfungen, die über die bloßen Oberflächeneigenschaften hinaus gehen, machen möchte. Zum Beispiel ist es interessant zu wissen, ob die Geometrie innerhalb gewisser Toleranzen gefertigt wurde, ein Fortsatz beispielsweise nur in geringen Maßen vom Optimum abweicht.

Zwar gibt es schon Verfahren, die einem diese Informationen liefern (zum Beispiel Stereorekonstruktion oder Lasermessverfahren), der Clou besteht jedoch darin, eine einzige Messung (nämlich die deflektometrische) herzunehmen um möglichst viele Aussagen über den zu prüfenden Gegenstand machen zu können.

Fehlt noch das “mit Grafikkartenbeschleunigung” aus dem Titel. Dazu muss ich ein bisschen weiter ausholen und beschreiben, wie diese Positionsbestimmung genau abläuft. Im Prinzip geht man her, wählt sich einen beliebigen Satz von Positionsdaten (im Detail handelt es sich dabei um sechs Parameter), führt mit diesem Parametersatz eine virtuelle, simulierte deflektometrische Messung durch und vergleicht diese mit den real aufgenommenen deflektometrischen Messdaten. Virtuell und simuliert bedeutet in diesem Fall, dass diese Berechnungen am Computer stattfinden. In der Regel wird dieser erste beliebige Satz von Positionsparametern nicht mit dem realen Satz von Positionsparametern übereinstimmen. Aus diesem Grund versuche ich im nächsten Schritt einen neuen Satz von Variablen zu finden, die dem realen Satz eher entsprechen als der Erste. Da ich den realen Parametersatz gedoch nicht kenne (den suche ich ja, Stichwort “Positionsbestimmung”) muss ich wieder den Umweg über die Simulation und den Vergleich der virtuellen deflektometrischen Messung mit der realen gehen. Das wiederhole ich so lange, bis Simulation und Realität möglichst gut (am besten perfekt) übereinstimmen.

Natürlich wähle ich nicht wild irgendwelche virtuellen Positionsparameter. Ich möchte ja zum Ziel kommen. So sollte in jedem Schritt der Fehler zwischen virtueller und realer deflektometrischer Aufnahme kleiner werden. Eine Metrik, die mir diesen Fehler misst, musste ich unter anderem in den letzten Monaten erarbeiten. Dass ich auch eine gefunden habe, hatte ich schon gebloggt. Nun kann ich endlich zur Grafikkartenbeschleunigung kommen. Die Algorithmik für die Simulation der Deflektomtrie ist nämlich extrem aufwändig. Außerdem werden extrem viele Iterationsschritte benötigt, bis Simulation und Realität übereinstimmen. Jedoch lassen sich die Berechnungen an vielen Stellen massiv parallelisieren. An dieser Stelle kommen die Grafikkarten ins Spiel: Diese können heutzutage nämlich nicht nur 3D-Visualisierungen erstellen sondern lassen sich mit beliebigen Berechnungen füttern, die überhaupt nichts mit der Darstellung von 3D-Szenen am Monitor zu tun haben. Dabei profitieren im Vergleich zur klassischen CPU-Berechnung eben genau diejenigen Probleme, die sich gut parallelisieren lassen, so wie das bei meinen Simulationen der Fall ist.

Wer nun denkt, dass sich das schon alles kompliziert anhört, dem sei eine kurze Liste von Fachtermini ans Herz gelegt, die bei der Lösung der eben skizzierten Aufgabe auftauchen: Bounding Volume Hierarchies, baryzentrische Koordinaten, nichtlineare Optimierung, effektives Hashing, Quadriken, registerarmes Programmieren, Modellierung präziser Kameraoptiken mit Verzeichnungen und und und…

Einer der zahlreichen Schritte meiner Simulationsberechnungen ist die Darstellung extrem dreiecksreicher Modelle der (gegebenen) Geometrien, deren Position ich bestimmen möchte. Somit haben meine Grafikkartenberechnungen doch wieder was mit der Visualisierung von 3D-Szenarien zu tun. Jedoch handelt es sich bei mir wie gesagt nur um einen Zwischenschritt und während bei 3D-Spielen das Verfahren der Rasterisierung zum Einsatz kommt verwende ich das wesentlich präzisere Raytracing. Der Grund, warum ich den letzten Absatz geschrieben habe ist, dass ich meiner Leserschaft auf diese Weise ein paar tolle Bilder präsentieren kann, die mittlerweile facettenreicher und vor allem korrekter schattiert sind als die meines ersten Blogeintrags zu diesem Thema.

Genus.
Eine Fläche mit Geschlecht 3 bestehend aus 467240 Dreiecken schattiert mit einem leicht modifizierten Gouraud Shading.

Dragon.
Dieser Drache besteht aus 869910 Dreiecken. Auf meiner Hardware (GeForce 8800 GTS 512) dauert das Rendern dieses Bildes etwa 150ms.

Kein Kommentar vorhanden