Dampfbeben

7 08 2011

You know your green from your red
You know the quick from the dead
So much better than the rest
You think you’ve been blessed
But I know you
—  Peter Gabriel: Steam

Anlässlich der id-Software Hausmesse Quakecon gibt es bei Steam den Quakecon Pack – ein Paket mit „allen id & Bethesda Spielen zu einem günstigen Preis“. Soviel versprechen zumindest die Werbebanner.

Die Einzelteile des Packs

Tatsächlich bekommt man für rund 70€ eine ganze Menge Spiele. Ein genauerer Blick auf die Liste der Spiele entäuscht dann aber leider doch: Keiner der namensgebenden Quake-Titel ist zu finden. Tatsächlich finden sich von id nur ganze zwei Titel auf der Liste, nämlich Commander Keen und Doom 3. – Das ist wohl ein schlechter Witz.

Natürlich hat uns der deutsche Jugendschutz dieses Süppchen eingebrockt, der es auch erwachsenen Gamern nur zu gerne verbieten möchte ab 18-Titel zu spielen. Allerdings sollte sich Valve dann lieber mit seinen Werbesprüchen zurückhalten! Was mich hier aber tatsächlich am meisten aufregt, ist Valves Preispolitik: Unsere Freunde über dem großen Teich zahlen für das ganze, unkastrierte Pack nämlich nur 69,99$! Zur Erinnerung, beim aktuellen Dollar-Kurs sind 69,99$ + 19% MwSt. nur 58,40€. – Die Europäer, und dank Jugendschutz speziell die Deutschen, sollen also mal wieder als Melkkühe herhalten!

Auch ansonsten können mich Valves Rechenkünste nicht beeindrucken. Valve versrpicht im Quakecon Pack einen Rabatt von 75% gegenüber den Eizelpreisen. Wenn ich diese addiere und durch vier teile komme ich nur auf 65€. Aber man kann ja mal großzügig zu seinen Gunsten runden…

Warenkorb

Dieses Bild setzt sich leider im Weiteren fort. Wer Skyrim vorbestellt, bekommt 20% Rabatt auf das Quakecon Pack und wer Rage vorbestellt sogar 30%. Diese Rabatte sind kombinierbar, aber die Mathematik dahinter erschließt sich mir nicht wirklich: Wenn ich beide im Warenkorb habe, kostet das Quakecon Pack nur noch 39,99€ – die 20% und die 30% addieren sich also nicht direkt, sonst wären es ja 35€. Stattdessen werden sie nacheinander angewendet (ergibt 39,19€) und dann „aufgerundet“.

Durch die letzten Rabattaktionen (Weihnachtsverkäufe und Summer Camp) bin ich zu einem echten Steam-Fan geworden. Doch mit solchen Aktionen versaut Valve sein positives Image bei mir gründlich! Zur Verdeutlichung: Ich bin echt heiß auf Skyrim, und durch den Rabatt auf das Quakecon Pack hätte ich auch eine Rage-Vorbestllung mitgenommen. Hier wäre ein dreistelliger Betrag drin gewesen. So aber fühle ich mich verarscht, und es gibt erst mal gar kein Geld!

Na ja, ich hab‘ von den letzten Sales eh noch genug zu spielen…





Welcher Rollenspieler-Typ bist Du?

30 07 2009

Der gute Joni hat einen interessanten Test gefunden, wo Du herausfinden kannst, welcher Rollenspieler-Typ Du bist. Lustige Sache, die in meinem Fall wohl gar nicht so weit von der Wirklichkeit weg ist:

You Scored as Storyteller

You’re more inclined toward the role playing side of the equation and less interested in numbers or experience points. You’re quick to compromise if you can help move the story forward, and get bored when the game slows down for a long planning session. You want to play out a story that moves like it’s orchestrated by a skilled novelist or film director.

Storyteller
92%
Method Actor
67%
Butt-Kicker
58%
Specialist
42%
Tactician
42%
Casual Gamer
33%
Power Gamer
33%

Welcher Spieler-Typ bist Du?





Con-Bericht: Auryn 2009

30 06 2009

Der vollkommen subjektive Blick eines Rollenspielers auf die Böblinger Con.

Am 26. Juni war es wieder so weit: Das jährliche Rollen-, Brett-, Strategie- und Kartenspieltreffen des FsF, „Auryn“ fand zum 10. Mal statt. Wie immer lockte die nach dem Artefakt aus Michael Endes „Unendliche Geschichte“ benannte Veranstaltung viele Besucher ins Waldheim Tannenberg am Rande von Böblingen. Ein großer Andrang, den ich auch auf anderen Cons, wie zum Beispiel dem TeckCon, gerne einmal wieder sähe. Diese Masse an Besuchern ist jedoch sicherlich auch der reichhaltig erschienenen TableTop-Fraktion geschuldet. Unter anderem fand einmal wieder ein großes Blood Bowl Turnier statt. Die Anzahl ausgeschriebener Rollenspielrunden hielt sich hingegen in Grenzen.

Wie immer galt es gleich bei der Ankunft eine der begehrten Auryn-Tassen zu erstehen. Diese gewährt unbegrenzten Kaffee- und Teenachschub während der ganzen Con. Erfahrungsgemäß sind diese Tassen bis Samstag-Nachmittag ausverkauft. Anders als bei der TeckCon gelten sie jedoch nur für einen Con – man muss sich also jedes Jahr eine neue Tasse kaufen. Bei so mancher nächtlicher Rollenspielrunde und einem Preis von 0,50 € für eine kleine Tasse Kaffee, rechnet sich der 6,00€-Humpen aber dennoch. Auch die Steaks vom Grill konnten wie immer überzeugen! – Die Versorgung war also gesichert.

Nach dem Begrüßen alter Bekannter und des Bedauerns der Abwesenheit anderer, galt es wie immer die angebotenen Spielrunden zu sondieren. Bald war auch für den Freitag Abend eine Lodland-Runde und für den Samstag Morgen eine D&D-Runde gefunden.

Nach einiger Verzögerung konnte es schließlich mit der Lodland-Runde losgehen. Ich wollte mich schon länger mal mit diesem SciFi-Unterwasser-Szenario beschäftigen, bin bislang aber noch nicht dazugekommen. (Ich hab‘ sogar das alte Softcover-Regelbuch und einen Quellenband mal gratis bekommen, aber noch nicht gelesen. Schande über mich! 😉 ) Es handelt sich um ein solides W100-System und auch die Welt macht einen durchdachten Eindruck. Das Abenteuer war nett, jedoch nicht sehr umfangreich. Da es dennoch zwei Uhr Nachts wurde, bis wir den Bösewicht schließlich stellten, war das aber auch nicht das Schlechteste. Lediglich die Fixierung auf und ständige Erwähnung seiner Wurst, hätte mir eine Warnung sein können, was mich am nächsten Abend noch mit Amos erwarten sollte…

Ab nach Hause in die Heia und am nächsten Morgen wieder frisch auf die Con! Frisch? Oh ja, sogar ziemlich frisch: Es schüttete wie aus Eimern! Also kurz Sonja samt Rollenspiel-und-Fressalien-Kiste vor der Tür abgesetzt und auf Parkplatzsuche. Aber auch trotz Schirm kommt man da nicht trocken zurück zur Con…

Als Entschädigung gabs eine sehr schöne „D&D 3.5 Forgotten Realms„-Runde. Powergamer waren hier definitiv fehl am Platze. In der ganzen spannenden Geschichte um einen Toten an einem einsamen Gasthaus und einen mysteriösen Schwarzen Reiter kam es zu keinem einzigen Kampf. Wenn nicht ab und an gelauscht oder geschlichen worden wäre, hätten wir auch ohne Charakterblätter, Regelbücher und Würfel spielen können. An dieser Stelle nochmal ein großes Lob an unsere fabelhafte Spielleiterin Manuela!

Da ich mal wissen wollte, was sich in Shadowrun getan hat seit ich das zum letzten mal vor Jahren spielte, gabs dann am späten Nachmittag eine Shadowrun 4 Runde mit Bernd vom Pegasus Support Team. Nun ja, was soll ich sagen – man braucht immer noch tonnenweise sechsseitiger Würfel. Andererseits haben sie das System schon vereinfacht, und da man Sechser nicht mehr „hochwürfelt“, muss auch nicht mehr gar so viel gewürfelt werden. Wirklich einsteigerfreundlich ist es aber immer noch nicht. Man muss sich halt schon recht gut in der Welt auskennen, sonst kommt man auf manche Sachen einfach nicht. Auch bei Charaktererschaffung kann man sich nach wie vor an zahlreichen Details austoben. Aufgrund einer guten Auswahl an vorgefertigten Charakteren, konnten wir uns diesen langwierigen Vorgang aber sparen. Das Abenteuer war interessant und tatsächlich kampfarm. Dies traf jedoch nicht den Geschmack aller Spieler, und so wurde die Runde anlässlich der Tombola vorzeitig beendet.

Es bleibt zu sagen, dass Shadowrun ganz nett ist, aber wohl nie mein Lieblingssystem und -szenario werden wird. Sonja hingegen hat Feuer gefangen und sich gleich für eine spätere Runde angemeldet…

Ich habe mich dann hingegen lieber einer Kobolde!-Runde angeschlossen, die der gute Amos geleitet hat. Allerdings nahmen wir Spieler unsere Rolle als eine Bande marodierender, bekloppert Kobolde wohl ein wenig zu ernst. Die Runde triftete zumindest bald ins totale Chaos ab. Das ganze war jedoch ungemein unterhaltsam – ich habe mir das eine oder andere Mal vor Lachen den Bauch gehalten! Das nicht immer ganz jugendfreie Abenteuer endete jedoch nach ca. 2 Spielstunden bevor es überhaupt so richtig angefangen hatte, als die Kobolde die Feen, denen sie eigentlich helfen sollten, letzten Endes verspeisten. So bleibt nur eins zu sagen: Gepriesen sei König Torg!

Der Rest der Nacht klang dann mit angeregter Unterhaltung aus. Doch selbst Müdigkeit nützt nichts, wenn man eine Zocker-Freundin hat: Sonja war noch bis zu später Stunde mit ihrer Shadowrun-Runde zu gange. Doch wenigstens hatte ich einen Leidensgenossen: Auch Amos musste warten, bis Sandras „Star Wars„-Runde endete. Immerhin leistete uns der Auryn-Fuchs Gesellschaft…

Auryn-Fuchs

Die Auryn 2009 war eine sehr unterhaltsame und gut organisierte Con, auf der ich einmal wieder viel Spaß hatte. Ich freue mich schon aufs nächste Jahr!





JavaFX Sequences aus Java-Klassen erzeugen

23 06 2009

In JavaFX wird intensiv von sogenannten Sequences gebrauch gemacht. Diese erlauben den flexiblen Umgang mit Listen. Was jedoch, wenn man solche Sequences aus Java-Klassen heraus erzeugen möchte?

Die JavaFX-Dokmentation verweist hierzu auf die make(…)-Methoden der com.sun.javafx.runtime.sequence.Sequences-Klasse. Hier hat mir jedoch das obligatorische TypeInfo-Attribut zunächst Kopfschmerzen bereitet. Es gibt nämlich in der TypeInfo-Klasse keinen öffentlichen Konstruktor und bei den vordefinierten TypeInfo-Konstanten ist für eigene Klassen natürlich nichts dabei. Allerdings gibt es Factory-Methoden die hier weiterhelfen.

Das nachfolgende Beispiel zeigt anhand zweier einfacher Java-Klassen und einer JavaFX-Klasse wie’s geht.

Burper.java (Das „Nutzobjekt“):

public class Burper {
 private final String name;

 public Burper(String name) {
  this.name = name;
 }

 public String burp() {
  return name + ": *burp*";
 }  
}

BurpMaster.java (erzeugt die Sequence):

import com.sun.javafx.runtime.TypeInfo;
import com.sun.javafx.runtime.sequence.Sequence;
import com.sun.javafx.runtime.sequence.Sequences;
import java.util.ArrayList;
import java.util.List;

public class BurpMaster {

 public static Sequence<? extends Burper> getBurpers() {
  List<Burper> burpers = new ArrayList<Burper>();
  burpers.add(new Burper("John"));
  burpers.add(new Burper("Fred"));
  burpers.add(new Burper("Bob"));

  return Sequences.make(TypeInfo.getTypeInfo(Burper.class), burpers);
 }
}

Main.fx (die JavaFX-Testklasse):

import javafx.scene.layout.VBox;
import javafx.scene.Scene;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import javafxapplication1.BurpMaster;

def burpers = BurpMaster.getBurpers();
def burpTexts = for (burper in burpers) {
 Text {
  y: 20
  content: burper.burp();
 }
}

Stage {
 title: "BURPMASTER!"
 width: 200
 height: 150
 scene: Scene {
  content: {
   VBox{
    spacing: 10
    content: burpTexts
   } // VBox       
  } // Scene content
 } // Scene
} // Stage

Ein Start der JavaFX-Anwendung zeigt das erwartete Ergebnis – die Sequence wird problemlos verarbeitet:

Screenshot

Screenshot

Wenn man erstmal weiß wie’s funktioniert, ist’s gar nicht mehr so schwer… 😉





Doppelte Emails mit Dovecot

16 06 2009

In den letzten Tagen hatte ich das Problem, dass ich in Thunderbird die neusten Emails im Posteingang doppelt hatte. Ein Blick in die Logs des Dovecot-Mailservers brachte diese Fehlermeldung zu Tage:

IMAP(oli): UIDs broken with partial sync in mbox file /var/mail/oli

Weitere Recherchen ergaben, dass dieses Problem wohl auf falsche, bzw. unterschiedliche Locking-Einstellungen für die Mailbox-Dateien zurückzuführen ist. Tatsächlich waren bei mir die Locking-Einstellungen bei Dovecot und Postfix unterschiedlich.

Deshalb habe ich nun sichergestellt, dass beide Programme die selben Locking-Verfahren für die Mailbox benutzen:

/etc/dovecot/dovecot.conf:

...
mbox_read_locks = fcntl dotlock
mbox_write_locks = fcntl dotlock
...

/etc/postfix/main.cf:

...
virtual_mailbox_lock = fcntl, dotlock
mailbox_delivery_lock = fcntl, dotlock
...

Nun sollte die mysteriöse Email-Verdoppelung ein Ende haben!





Audioscrobbler mit Firefly unter Linux

14 06 2009

Firefly, der freie daap-Server, der es ermöglicht unter Linux Musik für iTunes oder die Roku Soundbridge freizugeben, hat leider keine last.fm-Unterstützung.

Dieses Manko lässt sich jedoch mit lastfmsubmitd und einem kleinen Shell-Skript, das regelmäßig mit cron aufgerufen wird, einfach beheben:

#!/bin/bash

# fetch newly played songs from fireflydb and write
# into lastfmsubmitd readable format

# config
SQLITE=sqlite3
DATABASE=/var/cache/mt-daapd/songs3.db
LASTFILE=/var/cache/mt-daapd/lastfmsubmit.date
DBLSFILE=/var/cache/mt-daapd/lastfmsubmit.ls

# get last database file date
if [ -e $DBLSFILE ]
then
 . $DBLSFILE
else
 DBLSRUN=
fi

# exit when database file unchanged
DBLSNOW=`ls -l $DATABASE`
if [ "$DBLSRUN" == "$DBLSNOW" ]
then
 exit
fi

# get last run time
if [ -e $LASTFILE ]
then
 . $LASTFILE
else
 LASTRUN=0
fi

# log file date
echo "DBLSRUN="\"$DBLSNOW\""" > $DBLSFILE

# query database
OUTFILE=$(mktemp /tmp/mt-daapd-XXXXXXXX)
$SQLITE $DATABASE 'SELECT artist,album,title,track,song_length,time_played FROM songs where time_played > '$LASTRUN' ORDER BY time_played ASC;' | gawk -F '|' '{ printf "---\nartist: %s\nalbum: %s\ntitle: %s\ntrack: %s\nlength: %d\ntime: !timestamp %s\n",$1,$2,$3,$4,$5/1000,strftime("%Y-%m-%d %T",$6,1) }' > $OUTFILE
mv $OUTFILE /var/spool/lastfm

# log query date
echo "LASTRUN="`date +%s` > $LASTFILE

# make lastfmsubmitd files readable
chmod 664 /var/spool/lastfm/*

Das Skript basiert auf einem ähnlichen Skript, das ich im Netz gefunden und angepasst habe.

Bei mir wird es einmal in der Stunde ausgeführt.