Ich glaube, ich will in meinen Spielen etwas mehr Irrsinn sehen. Es geht mir nicht nur um komische Auflockerung, denn es wird am Tisch recht viel gelacht. Aber leider wird diese Energie nicht ins Spiel hineingebracht. Sie bleibt auf der Spieler Ebene stehen.
Das gilt für komische Aktionen, freche Antworten, Slapstick, und so weiter. Vielleicht gibt es einen Hang dazu, im Spiel einen ernsten Film mit der Gravitas von Tolkien zu simulieren. Dazu gehören viele Elemente: Genretreue, Ernsthaftigkeit, Konsequenzen, Realismus.
Meine Idee ist nun diese: Falls am Tisch so viel geblödelt wird, dann will die Runde eigentlich – vielleicht auch nur unbewusst – diesen ernsten Film nicht. Klar, im Moment wird dies durch komische Auflockerungen ausserhalb des Spieles kompensiert. Wenn aber das Spiel selber mehr komische Elemente enthielte, die Handlung einfacher wäre, die Dialoge frecher daher kämen – dann wäre vielleicht allen besser gedient?
Es könnte natürlich sein, dass durch die Aufhebung dieser ironischen Distanz ein Spassvogel am Tisch sich plötzlich fehl am Platz fühlt, denn was vorher klar ein Witz war, ist nun in dieser Comic Welt plötzlich völlig normal. Das müsste man halt beobachten.
Darauf gekommen bin ich, weil ich auf dem Netz mich immer wieder von exzentrischen Genre-Mischungen faszinieren lasse:
Ich erhoffe mir dadurch natürlich auch, dass ich und andere Spieler aus unseren gedanklich festgefahrenen Bahnen geworfen werden. D&D mit Robos. Und Pistolen. Und Krakenmenschen. Rein damit!
Vermutlich muss dies wohldosiert werden. Obwohl ich möchte, dass mehr Dinge “möglich” sind, will ich ja trotzdem nicht, dass das Spiel beliebig wird. Die Regeln gelten weiter hin. Aktionen haben weiterhin konsequenzen. Die Welt bleibt stimmig. Ich wünsche mir einfach etwas mehr Ausbruch aus der oft gesehenen Fantasy Welten und etwas mehr Beimischung von Cthulhu, Laserwaffen und Mars.
Dieser Beitrag hätte wohl kürzer sein können.
I’m trying to implement something like GridMapper using Clojure. The software appears to be simple to use, and requires a GUI. I know nothing of Clojure, very little Java, and nothing about Swing. A perfect setup to learn the new language. Let’s go!
Some googling showed me the way to Heating Up Clojure & Swing by Stuart Sierra. Unfortunately I still have problems generating a 20 × 20 grid. Because I seem to be incapable of building lists the way I’m used to do it:
(let (result) (dotimes (x 20) (setq result (cons x (cons :gridx result))) (dotimes (y 20) (setq result (cons '(empty-tile) (cons y (cons :gridy result)))))) (apply 'grid-bag-layout (nreverse result)))
Or is there a simpler solution not using Stuart’s grid-bag-layout?
Ich fand Zornhaus Bericht Der Tod kam nach 36 Metern ... und er wollte nicht gleich wieder gehen auf dem Blutschwerter Forum ziemlich gut. Nachdem ich vor einiger Zeit mal den Palast der Silberprinzessin geleitet hatte, war mich klar geworden, dass D&D alter Schule auf den tiefen Stufen verdammt tödlich ist. Der einzelne Spielabend wird garantiert nicht zu einem Heldenfilm. Wenn man geschickt ist, schlau spielt und alles überlebt, dann können einzelne Charaktere vielleicht im Rückblick das Leben eines Helden geführt haben. Die meisten aber sind völlig unnötig und banal gestorben.
Apparently Fight On magazine is participating in yet another Lulu sales contest. And again hardbound compendiums collecting four issues each will be available. They usually are not. And apparently there’s free shipping within the US. But not for Europe. Grrrr!
More info on the boards:
It turns out that the MouseInputAdapter is the best class to use for drawing by toggling the icons. It took me forever to get the mouse button code right. Aaargh!
I’m happy about the little code reorganization, reusing the instances of ImageIcon and MouseInputAdapter.
The result already allows me to toggle between floor tiles and empty tiles:
My next plan: Use ‘d’ to switch to drawing a door tile. I’ll need to figure out how to rotate the door tile, and how to display the current ‘mode’ in some sort of status bar.
(import '(javax.swing JLabel JPanel JFrame ImageIcon) '(javax.swing.event MouseInputAdapter) '(java.awt GridBagLayout GridBagConstraints) '(java.awt.event InputEvent)) (def EMPTY_TILE (ImageIcon. "empty.png")) (def FLOOR_TILE (ImageIcon. "floor.png")) (defn empty-tile  (JLabel. EMPTY_TILE)) (defn floor-tile  (JLabel. FLOOR_TILE)) (defn get-tile  "Return the tile the user wants to place. By default this will be a FLOOR_TILE." FLOOR_TILE) (defn edit-grid [e] "Draw a tile at the position of the event E. If the button is pressed, and the tile is empty, use GET-TILE to determine which tile to draw. Otherwise, erase the current tile and place an EMPTY_TILE." (let [cell (.getComponent e)] (if (.equals (.getIcon cell) EMPTY_TILE) (.setIcon cell (get-tile)) (.setIcon cell EMPTY_TILE)))) (defn mouse-input-adapter  "A MouseInputAdapter that will call EDIT-GRID when the mouse is clicked or dragged into a grid cell." (proxy [MouseInputAdapter]  (mousePressed [e] (edit-grid e)) (mouseEntered [e] (let [mask InputEvent/BUTTON1_DOWN_MASK] (if (= mask (bit-and mask (.getModifiersEx e))) (edit-grid e)))))) (defn simple-grid [panel width height] "Creates a grid of WIDTH + 1 columns and HEIGHT + 1 rows where each cell contains the result of a call to (EMPTY-TILE) and adds it to the PANEL." (let [constraints (GridBagConstraints.) adapter (mouse-input-adapter)] (loop [x 0 y 0] (set! (. constraints gridx) x) (set! (. constraints gridy) y) (. panel add (doto (empty-tile) (.addMouseListener adapter) (.addMouseMotionListener adapter)) constraints) (cond (and (= x width) (= y height)) panel (= y height) (recur (+ x 1) 0) true (recur x (+ y 1)))))) (defn app  (let [frame (JFrame. "Grid Mapper") panel (doto (JPanel. (GridBagLayout.)) (simple-grid 5 5))] (doto frame (.setContentPane panel) (.pack) ;; (.setDefaultCloseOperation JFrame/EXIT_ON_CLOSE) (.setVisible true)))) (app)
Ok, so I got a bit further compared to last time. As you can see I got rid of that fancy macro and decided to just write simple code that works for this particular situation. And it works.
(import '(javax.swing JLabel JPanel JFrame ImageIcon) '(java.awt.event MouseListener) '(java.awt GridBagLayout GridBagConstraints)) (defn empty-tile  (JLabel. (ImageIcon. "empty.png"))) (defn floor-tile  (JLabel. (ImageIcon. "floor.png"))) (defn simple-grid [panel width height] "creates a grid of WIDTH + 1 columns and HEIGHT + 1 rows where each cell contains the result of a call to (EMPTY-TILE) and adds it to the PANEL" (let [c (GridBagConstraints.)] (loop [x 0 y 0] (set! (. c gridx) x) (set! (. c gridy) y) (. panel add (empty-tile) c) (cond (and (= x width) (= y height)) panel (= y height) (recur (+ x 1) 0) true (recur x (+ y 1)))))) (defn app  (let [frame (proxy [JFrame MouseListener] ["Grid Mapper"] (mouseClicked [e] (println e))) panel (doto (JPanel. (GridBagLayout.)) (simple-grid 5 5))] (doto frame (.setContentPane panel) (.pack) ;; (.setDefaultCloseOperation JFrame/EXIT_ON_CLOSE) (.setVisible true)))) (app)
It turns out that I needed to call addMouseListener at some place. So app changed:
(defn edit-grid [e] "placeholder" (println e)) (defn mouse-listener  "A mouse listener that will call EDIT-GRID when the mouse is clicked" (proxy [MouseListener]  (mouseClicked [e] (edit-grid e)) (mouseEntered [e]) (mouseExited [e]) (mousePressed [e]) (mouseReleased [e]))) (defn app  (let [frame (JFrame. "Grid Mapper") panel (doto (JPanel. (GridBagLayout.)) (simple-grid 5 5))] (doto frame (.addMouseListener (mouse-listener)) (.setContentPane panel) (.pack) ;; (.setDefaultCloseOperation JFrame/EXIT_ON_CLOSE) (.setVisible true))))
If I don’t implement all of the MouseListener interface, I end up getting a ton of exceptions whenever the mouse entered or exited the frame and whenever the button was pressed or released. It felt weird adding all those empty methods.
I think I should start thinking about getting a working SlimeMode.
There’s a lot of work to do in the office. But this is the last week before summer break, so I’m willing to put in the extra effort. I can’t wait. I want to work on this Clojure stuff. I want to ride on all the trails with my new Bike. I want to practice my Aikido diligently and finally sign up for my 1st Dan test. I want to do a lot of hiking all over Switzerland. I want to enjoy the warm air, light rains, bumblebee buzz, and sunshine of summer. I want to join my wife for lunch in a restaurant when she’s working. I want to do some decent cooking for dinner. I thirst for time!
Im Geschäft habe ich auf dem Firmenblog drei Artikel geschrieben, welche Clojure/Swing kurz vorstellen.
Clojure ist eine Lisp Sprache, welche auf der Java Virtual Machine läuft. Wir können alle Java Klassen verwenden. Ein Beispiel:
(import '(javax.swing JLabel JPanel JFrame ImageIcon) '(java.awt GridBagLayout GridBagConstraints)) (def EMPTY_TILE (ImageIcon. "empty.png")) (defn empty-tile  (JLabel. EMPTY_TILE)) (defn simple-grid [panel width height] "Creates a grid of WIDTH + 1 columns and HEIGHT + 1 rows where each cell contains the result of a call to (EMPTY-TILE) and adds it to the PANEL." (let [constraints (GridBagConstraints.)] (loop [x 0 y 0] (set! (. constraints gridx) x) (set! (. constraints gridy) y) (. panel add (empty-tile) constraints) (cond (and (= x width) (= y height)) panel (= y height) (recur (+ x 1) 0) true (recur x (+ y 1)))))) (defn app  (let [frame (JFrame. "Grid Mapper") panel (doto (JPanel. (GridBagLayout.)) (simple-grid 5 5))] (doto frame (.setContentPane panel) (.pack) (.setDefaultCloseOperation JFrame/EXIT_ON_CLOSE) (.setVisible true)))) (app)
In einem Arbeitsverzeichnis muss folgendes vorhanden sein:
Aufruf nun wie folgt: java -cp clojure.jar clojure.main gridmapper.clj
Es erscheint ein kleines schwarzes Quadrat in einem Fenster, das man wieder schliessen kann.
Was ich hier interessant finde:
PS: Wer keinen Emacs verwendet, kann ja mal das Eclipse Plugin Counterclockwise ausprobieren und im Kommentar Bericht erstatten.
Nun wollen wir drauf zeichnen! Hierfür brauchen wir ein zweites Bild: floor.png.
Und hier der Source Code für gridmapper-2.clj:
(import '(javax.swing JLabel JPanel JFrame ImageIcon) '(javax.swing.event MouseInputAdapter) '(java.awt GridBagLayout GridBagConstraints) '(java.awt.event InputEvent)) (def EMPTY_TILE (ImageIcon. "empty.png")) (def FLOOR_TILE (ImageIcon. "floor.png")) (defn edit-grid [e] "Draw a tile at the position of the event E." (let [cell (.getComponent e) here (.getIcon cell)] (if (.equals here EMPTY_TILE) (.setIcon cell FLOOR_TILE) (.setIcon cell EMPTY_TILE)))) (defn mouse-input-adapter  "A MouseInputAdapter that will call EDIT-GRID when the mouse is clicked or dragged into a grid cell." (proxy [MouseInputAdapter]  (mousePressed [e] (edit-grid e)) (mouseEntered [e] (let [mask InputEvent/BUTTON1_DOWN_MASK] (if (= mask (bit-and mask (.getModifiersEx e))) (edit-grid e)))))) (let [mouse (mouse-input-adapter)] ;; share the mouse input adapter with every other tile (defn empty-tile  (doto (JLabel. EMPTY_TILE) (.addMouseListener mouse) (.addMouseMotionListener mouse)))) (defn simple-grid [panel width height] "Creates a grid of WIDTH + 1 columns and HEIGHT + 1 rows where each cell contains the result of a call to (EMPTY-TILE) and adds it to the PANEL." (let [constraints (GridBagConstraints.)] (loop [x 0 y 0] (set! (. constraints gridx) x) (set! (. constraints gridy) y) (. panel add (empty-tile) constraints) (cond (and (= x width) (= y height)) panel (= y height) (recur (+ x 1) 0) true (recur x (+ y 1)))))) (defn app  (let [frame (JFrame. "Grid Mapper") panel (doto (JPanel. (GridBagLayout.)) (simple-grid 5 5))] (doto frame (.setContentPane panel) (.pack) (.setDefaultCloseOperation JFrame/EXIT_ON_CLOSE) (.setVisible true)))) (app)
Was ist neu?
Wir brauchen ein drittes Bild: trap.png.
Und hier der Source Code für gridmapper-3.clj (nun schon 90 Zeilen):
(import '(javax.swing JLabel JPanel JFrame ImageIcon) '(javax.swing.event MouseInputAdapter) '(java.awt GridBagLayout GridBagConstraints) '(java.awt.event KeyAdapter InputEvent)) (def EMPTY_TILE (ImageIcon. "empty.png")) (def FLOOR_TILE (ImageIcon. "floor.png")) (def TRAP_TILE (ImageIcon. "trap.png")) (def current-tile (atom FLOOR_TILE)) (defn get-tile  "Return the tile the user wants to place. By default this will be a FLOOR_TILE." @current-tile) (defn set-tile [tile] "Set the tile the user wants to place. This must be an ImageIcon." (println tile) (reset! current-tile tile)) (defn edit-grid [e] "Draw a tile at the position of the event E." (let [cell (.getComponent e) here (.getIcon cell) tile (get-tile)] (cond (.equals here EMPTY_TILE) (.setIcon cell FLOOR_TILE) (and (.equals here FLOOR_TILE) (.equals tile FLOOR_TILE)) (.setIcon cell EMPTY_TILE) (.equals here FLOOR_TILE) (.setIcon cell tile) true (.setIcon cell FLOOR_TILE)))) (defn mouse-input-adapter  "A MouseInputAdapter that will call EDIT-GRID when the mouse is clicked or dragged into a grid cell." (proxy [MouseInputAdapter]  (mousePressed [e] (edit-grid e)) (mouseEntered [e] (let [mask InputEvent/BUTTON1_DOWN_MASK] (if (= mask (bit-and mask (.getModifiersEx e))) (edit-grid e)))))) (let [mouse (mouse-input-adapter)] ;; share the mouse input adapter with every other tile (defn empty-tile  (doto (JLabel. EMPTY_TILE) (.addMouseListener mouse) (.addMouseMotionListener mouse)))) (defn simple-grid [panel width height] "Creates a grid of WIDTH + 1 columns and HEIGHT + 1 rows where each cell contains the result of a call to (EMPTY-TILE) and adds it to the PANEL." (let [constraints (GridBagConstraints.)] (loop [x 0 y 0] (set! (. constraints gridx) x) (set! (. constraints gridy) y) (. panel add (empty-tile) constraints) (cond (and (= x width) (= y height)) panel (= y height) (recur (+ x 1) 0) true (recur x (+ y 1)))))) (defn keyboard-adapter  (proxy [KeyAdapter]  (keyTyped [e] (let [c (.getKeyChar e)] (condp = c \t (set-tile TRAP_TILE) \n (set-tile FLOOR_TILE) true))))) (defn app  (let [frame (JFrame. "Grid Mapper") panel (doto (JPanel. (GridBagLayout.)) (simple-grid 5 5))] (doto frame (.addKeyListener (keyboard-adapter)) (.setContentPane panel) (.pack) (.setDefaultCloseOperation JFrame/EXIT_ON_CLOSE) (.setVisible true)))) (app)
Das aktuelle Projekt ist auf GitHub erhältlich.
Looking at the ten sessions per month I play (→ MyCampaigns), I see the following trend:
|system||session per month|
|Various Indie games||two|
Once a month I play Labyrinth Lord with my godchild, her siblings, and her dad. The picture shows dad working on the treasure sheet with sections for each player character and sections for the two buried treasure chests. The adventure we’ve been on is Tomb of the Iron God. I’m starting to think that maybe the adventure is a tiny bit too long, but we’ve explored about 80% of the entire thing, so the Sword of Iron will soon be found, I assume.
As far as I can tell, the stuff they enjoy is
I think we’re having a good time!
We play for about two hours. By the end they’re usually really tired. The oldest two want to continue playing but the youngest one is already sitting on the couch and looking at Elfquest instead of playing. But that’s ok.
Anyway… the Sword of Iron. I think they’ll have to bring it to Captain Mithika in Curnithia somewhere in the Faris Hills. Yeah, this will move the campaign into the Wildlands described in Points of Light by Robert Conley.
Previous entries in the series: 2010-01-11 Playing With Kids.
Back in October 2009 my D&D 3.5 Monday game went biweekly and I decided to find some people interested in playing all these games on my shelf that I had bought but not played. And I hoped that these other people might also have some cool games that I had heard about but didn’t want to buy because I was afraid of collecting even more gaming detritus.
It has been a great experience!
What we would do is try a game and if we liked it, we’d schedule a follow-up session. This is what we have played:
I think the two games I have enjoyed most are Mountain Witch (the setup involving trust and betrayal, and the idea that more and more of our dark fate needs to be revealed before the story can progress) and Dogs in the Vinyard (how to solve conflict with nothing but your rifle, the bible, and mechanics that reward escalation of violence).
The two games I was most disappointed in were Spirit of the Century (we had great fun but I was shocked when I saw how big the rulebook was; I’m not going to buy another fat FATE book anytime soon) and Blossoms Are Falling (the setup was unbalanced in hindsight ).
I don’t often post about politics anymore, having turned HomoLudens a few years ago. But sometimes things still catch my eye. I’ve become a BoingBoing reader via @boingboing. Recently I found an interesting comment regarding the 2010 oil-spill in the Gulf of Mexico.
I had read similar comments before. Thank you Lobster, for saving me the time to formulate a response. And I don’t even drive a car.
Jetzt muss ich nur noch überlegen, ob ich den alten Renner vom Schwiegervater mit den gebrochenen Speichen nun spenden soll oder nicht… Heute war ich in der Velowerkstatt der Stadt Zürich. Ich wollte schauen, ob ich etwas für mein Velo bekomme (nein), wieviel es kosten würde, alles neu zu machen (etwas zwischen 390.- und 540.- je nachdem ob ein oder zwei Räder ersetzt werden), und wieviel neu malen kosten würde (etwa 200.- zum sandstrahlen und 200.- für die Farbe). Neue interessante Velos fangen hier in Zürich bei 1000.- an (single-speed); interessante occasion Velos findet man so um die 500.- und sind damit etwa gleich teuer wie die Instandsetzung des alten Velos. Also habe ich beschlossen, das alte Velo wieder instand setzen zu lassen.
In my Alder King game I’ve been using the following two rules:
The defining elements of what I call a generational game are the following:
The goals for my campaign in particular were the following:
Has it worked? Perhaps it’s too early to say. The first session report was written 2008-12-14 and we’ve been playing on a biweekly schedule ever since. We’re currently playing through the Caverns of Thracia with the second generation of characters. Let’s look at the players:
The first generation of characters is currently on 7th level. I also doubled all XP requirements for this game. We’re using D&D 3.5 and this slows leveling up down to once every four or five sessions, which seems about right for what I like.
I think that the setup is certainly working as a mechanism to keep the sandbox alive. I don’t want to stop this generational game anytime soon.
I was looking for images of Set and Nergal to add to our campaign wiki. After hours of surfing I ended up on the Project Gutenberg site. This site is awesome. I still remember downloading a simple ASCII copy of Milton’s Paradise years ago and realizing that there was a source of free texts available online. But what I was interested in was the History of Egypt – you should do a search for it right now. I found some good quotes in the History Of Egypt, Chaldæa, Syria, Babylonia, and Assyria by Gaston Maspero.
Notice the subtitle: “containing over twelve hundred colored plates and illustrations”. Check out the instructions for downloading all the volumes. Once you have all the images in a single directory, picking them for your blog, campaign wiki, or PDF project is so much simpler.
Some finds in Volume III:
I just added the EFF’s HTTPS Everywhere to my FireFox extensions. That reminded me of the following annoying fact: On my Ubuntu machine I have seven English dictionaries installed and I don’t know how to get rid of them. I switch a lot between English and German – having to pick the right English variant annoys me, specially since I don’t have to do it on other Firefox installations. But where can I deinstall them?
Extensions lists only “German (Switzerland)”. Languages only lists “Firefox en-GB” which I cannot uninstall. Disabling appears to have no effect. Is this something outside of Firefox?
When character open a door in a dungeon, when characters approach a monster lair in the wilderness – how stingy are you with information?
In the old days I used to test players’ adherence to smart routines. If they didn’t say their characters tried to move silently then obviously they were making a lot of noise. If they didn’t listen at the door then obviously they just barged in.
Little did I know what a fool I was. I was training my players to state the obvious, to repeat it again and again, I trained them to be paranoid, cautious, meticulous, and boring.
Remembering to do the obvious is not an interesting choice to make. These days I try to rid myself of these bad habits. I’m assuming the characters are smart and competent by default. Dice get rolled when ordinary precautions have already failed.
That’s why forgetting to listen at a door doesn’t happen, that’s why the giant footsteps on the trail leading up the mountain are not missed.
Once players have the basic info meaningful decisions can be made.
The terms and conditions of the iTunes app store have changed. I need to agree to them. There’s 110 fucking pages of legal mumbo jumbo to read. I click the button to get on with the show, thinking that this can’t possibly be a contract I’m signing.
I recently sent the following email to the players of my biweekly Monday D&D game. I’m sure many other referees have done the same thing in the past. Any links you want to suggest? I’m also interested in what feedback these people got and what changes they implemented based on that feedback.
You’ll note that the questions are unsorted and unstructured. I did that on purpose thinking that a more organic, conversational style would read more personal, with answers read by a nice person rather than a typical questionaire asking you to rate stuff on a scale from bla to blargh to be fed to a computer.
I guess I should answer these questions as well.
Anyway. Here we go:
We’ve finished 4/6 of the Rise of the Runelords Adventure Path. I’d like to get some feedback on how we’re doing. I’m particularly interested if your ideas changed from previous feedback when we talked about the game in the past. Some questions to let you know how about the stuff that I’m thinking of:
Thanks for taking the time to write back.
There’s currently a discussion regarding gamers being a bad business target group or something. I don’t really care that much. But I really liked the following paragraph by James Edward Raggi IV of Lamentations of the Flame Princes:
Haha, I see that one of the commenters on that blog post also felt like quoting the above lines. 
I’m sure there are other quotes out there involving roleplaying games and using your imagination – instead of more rules, I guess.
It reminds me of the Swords & Wizardry blurb by Matt Finch of Mythmere Games:
I guess this one also works, but it’s a bit longer:
Wasn’t there a good quote by Rob Conley of Bat in the Attic making the rounds a while back? Something about the definition of old school gaming? Or was it A Definition of Sandbox Gaming… There’s also the EN World thread What is OSR about? Hm… Where was it…
Update: Rob helped me find what I was looking for in a comment. Thanks!
I’ve been feeling inspired and worked on it some more. It is now available as a PDF.
Attention conservation notice:
Should I expand the tables on the last page or are they good enough?
I’ve called the entries “subclasses” – ie. bandit is a subclass of fighter, hermit is a subclass of cleric. Theoretically it would be possible to provide real class abilities for them all. I’m not sure this is required, however. Instead, I might eventually add one or two spells for each wizard and cleric to cut character generation time down even more.
Yeah, I know. Why the hell am I still using Mac OS 10.4 instead of upgrading – or moving to a Debian system? I dunno!
So I was trying to compile the ui-fix branch for BitlBee. It includes the killerbee branch, so it uses libpurple and all that.
LDFLAGS=-lintlin the Makefile to compile it.
I wasted a lot of time on this.
This is so sad.
The sun was shining, too.
I was unable to find something prepackaged for me. So I started to follow the instructions in DocBook XSL: The Complete Guide.
Installing the DocBook DTD – xmlto doesn’t use the latest one so I got version 4.2 – http://www.oasis-open.org/docbook/xml/4.2/docbook-xml-4.2.zip and unpacked it. I wanted everything in
/usr/local/share/xml so that’s what I did –
sudo mv docbook-xml-4.2 /usr/local/share/xml…
Installing the DocBook stylesheets – so now we need stylesheets to create the manpages. I got the following file: http://sourceforge.net/projects/docbook/files/docbook-xsl-ns/1.75.2/docbook-xsl-ns-1.75.2.tar.bz2/download and used
sudo mv docbook-xsl-ns-1.75.2 /usr/local/share/xml…
How to write an XML catalog file – next I needed to write the catalog for the minimum stuff I needed. I created a the file
/usr/local/share/xml/docbook.cat with the following content:
<?xml version="1.0"?> <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"> <group prefer="public" xml:base="file:///usr/local/share/xml/" > <public publicId="-//OASIS//DTD DocBook XML V4.2//EN" uri="docbook-xml-4.2/docbookx.dtd"/> <rewriteURI uriStartString="http://docbook.sourceforge.net/release/xsl/current/" rewritePrefix="docbook-xsl-ns-1.75.2/" /> </group> </catalog>
I set the environment variable in my .bashrc:
And with that,
make xmlto and
make bitlbee worked!
I was looking for an alternative to LaTeX. I recently learned how to setup DocBook. There’s a book explaining what DocBook is and how to use it; the old version of the book is available online. I also followed the instructions in the DocBook XSL book on how to install FOP, so in theory I had the entire tool chain to write an XML file, translate it to FO format using
xsltproc and translating that to PDF format using
It looked very ugly. I felt like going back to LaTeX – and that’s pretty ugly, too!
I found that by default, FO processors only know about Times Roman, Helvetica, and Courier by default. So I decided to try and get the article font switched to Garamond before continuing my delve into Docbook. I got followed the instructions on adding a font and wasted some time tracking down jar files that were not needed and tracking down a copy of the Garamond font I could embed. In the end I got it all working! I had an ugly document, but it was A4, two columns, had some bold, and some italic, and my name on it.
But I also felt that maybe – just maybe – LaTeX and OpenOffice were not such a bad ideas after all.
Maybe I should just stick to OpenOffice and focus on getting things done.
all: test.pdf %.fo: %.xml Makefile xsltproc \ --output $@ \ --stringparam fop1.extensions 1 \ --stringparam paper.type A4 \ --stringparam column.count.body 2 \ --stringparam body.font.family Garamond \ /usr/local/share/xml/docbook-xsl/fo/docbook.xsl \ $< %.pdf: %.fo fop -c garamond.xml -fo $< -pdf $@ # Garamond # curl http://garamond.org/font/urw/GaramondNo8.Files.txt | xargs wget fonts: GaramondNo8-Ita.xml GaramondNo8-MedIta.xml GaramondNo8-Med.xml GaramondNo8-Reg.xml GaramondNo8-%.xml: GaramondNo8-%.ttf java -cp "/usr/local/share/xml/fop/build/fop.jar:/usr/local/share/xml/fop/lib/commons-io-1.3.1.jar:/usr/local/share/xml/fop/lib/commons-logging-1.0.4.jar:/usr/local/share/xml/fop/lib/xmlgraphics-commons-1.3.1.jar" \ org.apache.fop.fonts.apps.TTFReader \ $< $@
/usr/local/share/xml/fop is a symlink to
garamond.xml I also had to write:
<fop version="1.0"> <renderers> <renderer mime="application/pdf"> <fonts> <font metrics-url="GaramondNo8-Ita.xml" kerning="yes" embed-url="GaramondNo8-Ita.ttf"> <font-triplet name="Garamond" style="italic" weight="normal"/> </font> <font metrics-url="GaramondNo8-Med.xml" kerning="yes" embed-url="GaramondNo8-Med.ttf"> <font-triplet name="Garamond" style="normal" weight="bold"/> </font> <font metrics-url="GaramondNo8-MedIta.xml" kerning="yes" embed-url="GaramondNo8-MedIta.ttf"> <font-triplet name="Garamond" style="italic" weight="bold"/> </font> <font metrics-url="GaramondNo8-Reg.xml" kerning="yes" embed-url="GaramondNo8-Reg.ttf"> <font-triplet name="Garamond" style="normal" weight="normal"/> </font> </fonts> </renderer> </renderers> </fop>
Uhm… That’s it, I think.
My test file:
<?xml version="1.0"?> <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"> <article> <artheader> <title>My Article</title> <author><firstname>Alex</firstname> <surname>Schroeder</surname></author> </artheader> <sect1><title>Testing</title> <para>This is an ordinary paragraph with some <emphasis role="bold">bold</emphasis> and <emphasis>italic</emphasis> words.</para> </sect1> </article>
Oh, and this required the installation of the DocBook 4.5 XSL files and an entry in my catalog file. I got it from here: http://www.oasis-open.org/docbook/xml/4.5/ and followed my own instructions on how to update the catalog file.
All of this seems mighty complicated compared to just starting OpenOffice and writing a document or two. Sure, I don’t like working with it. But I don’t like working with all these arcane files and formats either. I can already see myself trying to get a title page or a little table just right in a three page document. It’ll never be worth my time. I’d be a gazillion times faster using Emacs and plain text!
Many people seem to be posting their gaming history these days…
Back when I was about 12 we lived in Portugal and anything from Germany was “hot” and passed around in the community. My mother brought a boxed set of something she had gotten from friends: Das Schwarze Auge first edition aka. The Dark Eye. I was supposed to run it for her, the couple she had gotten it from, and their older foster children, if I remember this correctly. We played some classic modules until it fell apart. Scheduling problems? I can’t remember.
I had returned to Switzerland when I was 14, and when I switched schools around 15 I talked some friends into playing it again. We loved it and played it in a public room associated with our school. One of these guys still plays with me! On a school trip I discovered that the Canadian guy in our class played D&D – and I vaguely knew that this was related to what we were playing. We decided that AD&D 1st edition was cooler than this German game we were playing. We never played a single module, however. We figured they must all be lame.
That must have been 1989 and AD&D 2nd edition arrived in the stores. I saw no need for change. Already being conservative with my gaming, I see. The others bought the cool aid and the new books. We switched.
Then I left for Thailand, and by the time I returned two years later gaming had disappeared, life caught up… I bought some games that I never played. Amber Diceless, Paranoia, Gatecrasher (Fudge). I think we tried the GURPS quickstart rules, we tried DM-less pure-storytelling, a friend and I tried to write our own short rules, but nobody else wanted to play them.
In 2006 I decided I wanted to try gaming again. I think greywulf did it! He used my software and talked about the Rules Cyclopedia. I bought it online and discovered the PDF market. He wrote M20 and I started reading EN World. I learnt about D&D 3.5. I bought the rules. And I started gaming again!    
Last year I think I started getting interested in the Old School Renaissance. But I had and still have a hard time finding players for it. My godchild, her siblings, and her father are playing a monthly Labyrinth Lord game with me. Nice! In my other campaigns we mostly play D&D 3.5. One campaign has moved to Pathfinder RPG. I’ve managed to arrange for a biweekly Indie game night. Yay!
I guess that’s it.
Wohnungen sind nicht für WLAN ausgerüstet. Ab zwei diagonal entgegengesetzten Enden der Wohnung hat es Kabelanschluss, und wenn man dort die Basisstation hinstellt, hat man in der anderen Ecke keinen Empfang. Bei uns ist in der einen Ecke das Büro, in der anderen Ecke der Balkon.
Today we played some Pathfinder RPG. I laughed when two of our characters failed their massive damage rolls with a natural 1 and everything seemed to point to a narrow escape by the sorceress and maybe the rogue. But using a contingency spell she was able to get everybody out in a single round, and we got teleported to back to a temple, raised, restored, teleported back “a few days later” and just continued the same fight, with no penalties what so ever, no levels lost. In fact, with all our hit points restored and all our spells back.
That felt a bit cheap. Apparently Pathfinder RPG has even less penalties for getting raised than D&D 3.5 had – namely none. I still remember the days where getting raised cost you a point of Constitution. And in my D&D 3.5 game people still loose levels. I think that without the pain, there is no tragedy, no moaning over “meaningless” death, no fear – things I need in my D&D for me to enjoy it. As we say in German: Viel Feind, viel Ehr’! “Many enemies, lots of honor!” Something was lost when practically all the pain got removed. Negative levels are only temporary. Essentially that sets us up for a total party kill. Any interesting and challenging situation will now have to threaten a TPK in order to put fear back into the experience.
I also remember playing a paladin once that rolled a 1 for hit points gained as she leveled up. The DM had me roll again. “What?” I thought. That’s cheap! If the dice want me to play a low hit point paladin, so be it. I accept the challenge. But everybody at the table was expecting me to reroll. And I got another one. And another. And a fourth. And a fifth! I laughed so hard I cried. I got more hit points on the last roll, but the dice had certainly made it clear that they wanted Rhysalis Eina to have below average hit points!
The adventure we played, by the way, was very enjoyable: It was the old Dungeon Crawl Classic about sphinxes for level 14 and 15 characters, Lost Tomb of the Sphinx Queen. I liked it! Riddles, fights, playing smartly. The labyrinth was a bit too big, and the two last fights at the end too long. If you ever run it, try eliminating the “daughter” encounter. And think about the rules you’re going to use. Will they be for wusses? ;)
I really wanted to like Polaris after listening to Canon Puncture 89: Game Advocates – Polaris, but it fell a bit flat at the table. I would have liked to see more free roleplay, and more epic tragedy, but somehow the magic didn’t happen. The other players have scheduled a second session a few weeks from now, but I’m not so sure whether I want to join. For the moment Harald has lent me his Polaris book, and I’ll have a read through the book.
Regarding that Canon Puncture link above… That’s an RPG Podcast with Indie game focus I really recommend.
In their own words:
At the end of the Polaris session Harald, Lior, and I were talking about our plans and I mentioned that I was starting to see the end of the line of Indie game one-shots for me. It was an excellent opportunity to quickly play through a lot of games that are being talked about online, and that was good. I was also looking for a new game to play for a longer time, and testing various systems is going to help me make an informed decision. Unfortunately that also limits my interest in games that cannot be played long-term. My Life With Master, Mountain Witch – I guess not.
Twelve hours later, I’m listening to Podcasts and as luck would have it, Canon Puncture is talking about using Indie games for longer campaigns! Canon Puncture 96: Indie Campaign Games. I agree with the suggestions of Burning Wheel, Dogs in the Vinyard, and The Shadow of Yesterday. We haven’t played Prime Time Adventures, yet.
I’m still bummed that my Burning Wheel / Blossoms are Falling one-shot didn’t work out. I still want to like the game! Perhaps if I just started a campaign and pushed! … Irrational, I know.
What I’m really afraid of is contracting Gamer ADD.
For more on that topic, I recommend the following recent blog posts:
I think that’s key. Deciding on six sessions in my Burning Wheel Campaign:Krythos game worked but at the same time it made clear that we were not serious about the game, that we were just trying to experience some of it instead of making it our own.
I don’t mind a campaign folding after half a year, but I fear the encouragement of Gamer ADD.
I installed both a Docbook and a LaTeX tool chain on my laptop recently. I’ve used LaTeX for my thesis – nearly fifteen years ago. I remember forgetting more and more about it in the years that followed until I finally decided that it was just easier to write stuff on a wiki, work on the CSS stylesheet, and print to PDF if required. I got curious again and decided to make an experiment:
Here’s how it went: I quickly wrote up some stuff using my wiki. Getting it ready for the web took a few minutes, maybe half an hour of fiddling with CSS; I’m assuming I can just keep this CSS for the next time I need to convert one of my wiki pages to PDF. On the other hand, there are many things it doesn’t do: hyphenation, orphan protection when paginating, quick and easy floating boxes and images (it always needs a lot of CSS fiddling).
Using Open Office, things went just as quickly. I’m not sure I’ll be able to reproduce the exact output when I look at making my next PDF file, but it was more or less intuitive. Installing and using the Behrens-Schrift font by Dieter Steffman was trivial. The file doesn’t use quite the same font and it’s landscape instead of portrait, but my conclusions are – I hope – independent of these small differences.
Docbook was a pain to setup, but at least there were some books available online. It turns out that the one book that explains all the tags is a dry technical reference that is practically unusable when you’re starting out. When I looked at the output, I realized how tricky it was to fiddle with it. The large table at the beginning needs some more space between the cells, the four smaller tables need to be more compact. I found XSLT fragments that allowed me to set the padding for all tables, but didn’t figure out how to do this for one table only. If you look at the source file (which I edited with nXML Mode and Emacs), you’ll note that looking at the table markup is a pain. I wasn’t sure how to have two columns or floating tables for the four compact tables, so I nested tables. The markup got a lot worse. The output looks good, so that’s a plus.
LaTeX was easy to setup because my GNU/Linux distro already comes with excellent packages. LaTeX documentation for beginners, however, is hard to find. Where do I learn about the basics? I see that the texlive-doc-en package has a “gentle” document somewhere. Maybe someday! I fell back to my “LaTeX Einführung Band 1” by Helmut Kopka – the second printing, 1996 – it has a price in Deutsche Mark instead of Euros, that’s how old it is. I was surprised to see how ugly the table turned out, and I have no idea on how to improve that. The source doesn’t look too hot either. Very cryptic. (I edited it using AUCTeX and Emacs.)
I will be using Open Office!
It hurts my markup sensibilities, but if I want to get stuff done, I can’t waste it on Docbook and LaTeX.
Update: I returned to rst2pdf again and tried it. It took me quite a while to get the font importing right. But I think it finally worked! The command used:
rst2pdf chargen.rst -s style.json --font-path ~/.fonts (the font-path is where I installed the fonts I got from elsewhere).
Suddenly I’m no longer sure. ReST seems quite a viable solution. And I’ve started playing around with the style sheet… Not bad! The only question I could not answer was how to center the first column of my tables.
Update: I’ve returned to LaTeX in 2013.
When: June 23
A french book from a very well known french author, touted to be a cult-book. This is a (shortened) amazon review which matches the review I just got at lunch time: This is a difficult book but a necessary one and, I have no hesitation in now saying, a brilliant one. The book is full of some extraordinary ideas and incisive commentary on humanity in the late 20th century, especially that of European society. The ending--it goes into (very plausible) hard science fiction territory--the erudition of the writer, his eye for detail, and his twin obsessions of sex and violence, and his ability to be brave enough to write what he sees without any thought for political correctness or any of the other sops of the liberal left, is breathtaking and his racism, makes this book essential reading especially after the tragic events of 9/11 and those in London on 7/7 and after. This book has more important and accurate things to say about the human condition of contemporary European man than any number of the dry academic essays on sociology and anthroplogy you can care to read. Understand Houllebecq and you understand what people nowadays really care about and think. I don’t think I’d like the man but to ignore him and what he is saying would be to do so at our own peril. I haven’t read a book full of such big and radical ideas for a long time.