Archive for the ‘Sonstiges’ Category

Wie sieht ein GameBook von oben aus?

Februar 25, 2010

Da sich das Korrekturlesen von Dormholm als außerordentlich kompliziert herausgestellt hat, brauchte ich ein Mittel,m das 600 Stationen große Buch zu visualisieren. Früher habe ich so etwas immer von Hand gemacht, aber als guter Informatiker ist mir die Idee gekommen, das ganze zu automatisieren.

Wie sieht so ein Buch eigentlich in der Konzeptionsphase aus? Zu Beginn gibt es meist eine Karte, die einzelne Orte (Zimmer, etc.) enthält und was es dort grob zu tun und zu finden gibt. Noch feingranularer aufgelöst ist nur ein sogenannter Graph, der jede Station als Kreis enthält und für jede Option einen Pfeil von einem Kreis zum nächsten enthält. Für das kleine Buch Phyrax sieht das dann zum Beispiel so aus:

Kompletter Graph von Phyrax

Kompletter Graph von Phyrax

Noch da? Wunderbar! Die gestrichelten Linien sind übrigens versteckte Hinweise, die man z.B. durch geheime Gegenstände benutzen kann. Wie vor allem für das ungeübte Auge leicht zu erkennen ist, kann selbst ein kleines Buch mit 50 Stationen schnell unübersichtlich werden.

Über die technischen Hintergründe sei nur so viel gesagt, dass dieser Graph automatisch aus dem Text des Buchs generiert wird, was vor allem für neue Bücher eine Menge Arbeit spart.

Angespornt aber doch nicht ganz zufrieden habe ich mir überlegt, welche Informationen in diesem Graph eigentlich fehlen. Unter anderem wäre es doch nützlich, wenn die Stationen aussagekräftiger beschriftet werden. Mit ein paar kleinen Erweiterungen entstand dann dieses Bild:

Graph von Phyrax mit Kommentaren

Graph von Phyrax mit Kommentaren

Kaum sind die einzelnen Stationen zu Gruppen zusammengefasstvermittelt das ganze doch einen ganz schönen Eindruck von der Struktur des Buchs.

Für die programmiertechnisch Interessierten werde ich bald noch einen Artikel schreiben, wie das Ganze funktioniert.

Und wer neugierig ist, wie das bei einem großen Buch aussieht, hier ein kompletter Graph des Tempel der Zerstörung , allerdings ohne jeglich Annotationen (Achtung, sehr, sehr großes Bild!).

Advertisements

Roboduel Trading Card Game

Januar 31, 2010

Sammelkartenspiele haben mich schon immer fasziniert. Als langjähriger Magic-Spieler war es schon immer mein Traum, einmal ein eigenes zu entwerfen.

Vor ein paar Jahren wurden wir an der Universität in der Kunst der Assembler-Programmierung unterwiesen und wie es bei Vorlesungen so manchmal ist, schweifen die Gedanken in weite Ferne. Mir kam die Idee, ein Kartenspiel zu machen, bei dem der Kartenstapel jedes Spielers ein Programm darstellt, das im Laufe des Zuges abgearbeitet wird.

Die Programme steuern Roboter, die sich gegenseitig bekriegen, wie beispielsweise beim Roboterfußball.

Eine Roboter-Karte

Ein Roboter hat drei Werte. Links die Box mit dem Blitz ist sein Energievorrat, daneben die Zeit, die ihm pro Runde zur Verfügung steht und rechts seine Panzerung. Sind Energievorrat oder Panzerung erschöpft, so ist das Spiel verloren. Das soll dafür sorgen, dass sich wildes Herumballern nicht lohnt, da die eigene Energie verbraucht ist, bevor man den Gegner erledigt hat.

Wer ich jetzt wundert, welche Zahl A sein soll, dem muss ich zu meiner Schande gestehen, dass Roboduel des Realismus wegen Hexadezimalzahlen verwendet. A ist also 10, B ist 11, …

Jeder Spieler hat also einen Roboter, doch der ist nichts ohne seine Programmierung. Wie programmiert man nun seinen Roboter? Ganz einfach: Es gibt drei Arten von Karten:

  • Befehle, die ein Roboter ausführt (z.B. eine Bewegung)
  • Bedingungen, mittels denen verschiedene Alternativen gewählt werden können
  • Daten, die als Parameter für Befehle und Bedingungen dienen
  • Waffen, um dem Gegner einzuheizen

Ein Befehl

Es gibt zwei Arten von Befehlen, interne und externe. Ein externer Befehl wie der obige ist immer eine Aktion des Roboters. In diesem Fall ein Schritt vorwärts, solange natürlich nichts im Weg steht. Einen Befehl auszuführen benötigt Zeit, die in dem kleinen Fenster unten rechts angegeben ist. Überflüssige Bewegungen sollte man also vermeiden.

Der Sprungbefehl

Im Gegensatz zu externen Befehle brauchen interne keine Zeit, da sie sich sozusagen nur im Gehirn des Roboters abspielen. Der hier abgebildete Befehl ist ein Sprungbefehl, der die nächsten n Befehle überspringt. Er entspricht ein wenig einem GOTO-Befehl, nur, dass er relativ und nicht absolut springt. Allerdings muss natürlich ein Datum folgen.

Ein Datum

Datumskarten gibt es für die Zahlen von 0-F. Als kleinen Bonus enthält die Illustration die Zahl jeweils in Binär- und Hexadezimaldarstellung.

Eine externe Bedingung

Natürlich hilft ein Sprung nicht viel, wenn er immer ausgeführt wird. Dann könnte man sich nämlich einfach die übersprungenen Karten sparen. Deswegen gibt es Bedingungskarten wie die oben abgebildete. Auch hier werden interne und externe Bedingungen unterschieden, wobei die externen wieder Zeit kosten.

Der Text einer Bedingung klingt auf den ersten Blick ein wenig verwunderlich, aber er ist genau das, was man benötigt, um einen bedingten Sprung zu modellieren. Ein Beispiel ist die Kartenfolge „Vor Objekt“, „Sprung“ und „Neun“. Angenommen, unser Roboter befindet sich tatsächlich vor einem Objekt, wird die Bedingung ignoriert und der Sprung um neun Karten wird ausgeführt. Befindet er sich allerdings nicht vor einem Objekt, so wird die Karte „Sprung“ übersprungen, das Datum „Neun“ ignoriert, da es nicht verlangt wurde und das Programm läuft ohne Sprung weiter. Verwirrt? Keine Angst, das ging vielen so.

Eine Waffe

Hat man zu guter Letzt seinen Roboter positioniert, ist es an der Zeit, seinen Gegner in Stücke zu schießen. Dazu benötigt man eine Waffenkarte. Die wird genau wie ein Befehl in den Kartenstapel getan und abgefeuert, sobald sie aufgedeckt wird. Dabei gibt es einen Energieverbrauch (Mitte links) und den beim Gegner verursachten Schaden (Mitte rechts). Die Waffen unterscheiden sich allerdings in der Reichweite, so schießt der Laser z.B. in einer geraden Linie.

Das waren so weit alle Kartentypen, jetzt noch kurz der Spielablauf:

  1. Beide Spieler positionieren ihre Roboter in einer quadratischen Arena, die von Mauern umgeben ist (z.B. mit einem Blatt Karopapier).
  2. Per Münzwurf wird entschieden, wer beginnt.
  3. Die Spieler führen abwechselnd ihre Programme aus, bis die jeweilige Zeit pro Runde für ihren Roboter abgelaufen ist. Reicht die Zeit nicht, den letzten Befehl auszuführen, so wird vorher abgebrochen.
  4. Verloren hat, wessen Roboter keine Energie oder Panzerung mehr hat. Außerdem ist das Spiel verloren, wenn der Speicher überläuft (man hat alle Karten aufgedeckt und keine weiteren Befehle mehr).
  5. Eine Endlosschleife bedeutet unentschieden. Das ist allerdings nicht so ohne Weiteres herauszufinden.

Klingt spannend? Dann empfehle ich, sich einen leidensfähigen Freund zu schnappen und das ganze auszuprobieren. Mehr als ein halbes Dutzend Partien Roboduel wurden bisher nämlich noch nicht gespielt. Der Grund dafür ist einfach: Menschen sind keine Computer. Ist das Spiel begonnen, so ist nämlich bereits entschieden und es liegt nun an den Spielern, ihre Algorithmen auszuführen: Bis zum bitteren Ende. Und obwohl ein Rechenknecht so etwas ohne Anstand in Sekundenbruchteilen erledigt, ist das für ein menschliches Gehirn nicht sonderlich spaßig.

Was allerdings Spaß macht, ist das „Programmieren“ mittels Kartenzusammenstellung. Wer sich mit dem Assemblerlernen ein wenig schwertut, kann es ja mal mit Roboduel versuchen. Nach ein paar Partien hat man auf jeden Fall verstanden, wie so ein Assemblerprogramm funktioniert. Roboduel gibt er hier als druckfertiges PDF.

Tja, leider leider hat es mit Roboduel nicht so ganz geklappt, aber nichtsdestotrotz hat das Design und die grafische Gestaltung jede Menge Spaß gemacht. Aber es war weder das erste selbstgemachte Kartenspiel, noch soll es das letzte bleiben. doch dazu ein andermal mehr…

Ein Datum

Hello World…

Januar 10, 2010

Juchhu, noch ein Blog! Darauf hat die Welt gewartet…

Naja, aber da das Bloggen ja inzwischen wieder unmodern ist und man schon fleißig die nächste Sau durch’s Web 2.0 treibt, kann ich ja beruhigt der „Blogosphere“ beitreten, ohne das Gefühl zu haben, dem Hype erlegen zu sein.

Keine Angst, ich werde meine geneigten Leser nicht mit meinen letzten Urlaubsfotos nerven, sondern stattdessen über meine verschiedenen Projekte (hört hört!) berichten und einige Fundstücke aus dem Internet sammeln, die ich für interessant halte.

Insofern: Viel Spaß beim Lesen und Entdecken!