Community Wiki

November 22, 2015

Alex Schroeder

Encryption Hard

So, I’m trying find the public key of somebody I need to email. But it won’t work. Here’s what I get when searching for a key from the command line:

alex@Megabombus:~$ gpg --search-key
gpg: searching for "" from hkps server
gpgkeys: HTTP search error 60: SSL certificate problem: Invalid certificate chain
gpg: key "" not found on keyserver
gpg: keyserver internal error
gpg: keyserver search failed: Keyserver error

Uh oh. SSL certificate chain invalid? Are they using stuff I disabled in my SSL setup? Is this a man in the middle attack?

No email tonight, I guess!

Tags: RSS

November 22, 2015 09:29 PM

November 21, 2015

Alex Schroeder

Fountain Pen

These days, I’m taking notes with a fountain pen. I asked for one for my birthday in April and got a LAMY studio imperialblue with an F nib. I used this pen to draw the faces for my Face Generator using T10 blue ink. And I’m still using it. When I looked at the notes I scanned, yesterday, I was reminded of all the note taking I’m doing on those notebooks with my fountain pen. There is an anachronistic pleasure in it. :)


November 21, 2015 07:57 PM

November 20, 2015

Alex Schroeder


Uns hat Chur sehr gefallen. Der Brambrüesch war auch nicht schlecht. Claudia war halt mitten in der Chemotherapie und konnte keine längere Wanderung unternehmen.


November 20, 2015 03:53 PM

November 19, 2015

Alex Schroeder

Being a Man

Travis Scott said on Google+: “It’s International Men’s Day, which is a time I like to reflect on the positive things about masculinity, being a man, and having men in our lives. I’d like to hear all kinds of perspectives, with this additional challenge: say it with honesty and without snark. Dig deep and tell us what you appreciate about men and masculinity!”

I said: My father, good male friends – the thing I like about male culture is that it is acceptable to enjoy physical activity with no talking. We can meet and play or hike or ride a bike or run, and we might talk, or not talk, or talk nonsense, but the shared activity in itself communicates well being, harmony, lack of conflict, sympathy, joy of life, appreciation, encouragement, inner peace. I love that.

As for masculinity these days, and where I am these days, I’m happy to notice that there are not a lot of expectations imposed on my masculinity that I notice. I can work part time, I can cook and clean the house, my wife can work full time, my wife can drive the car, we can have no kids, I don’t need to be smarter, I don’t need to make all the decisions, I don’t need to plan our holidays, I don’t need to have any mechanical skills, I don’t have to drive a car, I don’t need to play team sports involving a ball, I don’t need to laugh at awkward jokes. I am at peace with being a man.

When a friend has left, Claudia might asks, “How is he?” I’ll answer, “He’s doing OK.” She’ll ask, “What did he say?” I’ll say, “Not much.” Incredulous, she’ll ask, “Didn’t you ask?” I’ll say, “No, of course not.” She’ll shake her head and laugh. But I’ll know that in that moment, when we did things, in that moment of doing, there was no need for words. There was no need to talk about our feelings because our feelings were inscribed into our grinning, our yelling, our waving of controllers, our jumping up and our little victory dances… It was a timeless moment of joy.

Tags: RSS

November 19, 2015 08:24 PM

Dungeon World

So, I wrote a few posts about Dungeon World in the recent past and then I ran a game, last Monday!

How did it go? It went well. I had six players, a bit of a language split – three native English speakers and three native German speakers and two of them sometimes had trouble understanding some of the stuff on the character sheets. That was unfortunate. On of the players had been a backer and had both soft-cover and hard-cover books with him where as I just has some print-outs and the sheets by Maezar. I also offered my players to use the Freebooters of the Frontier sheets instead, but since nobody had a strong opinion about that and the backer didn’t know about Freebooters, I dropped it. I guess I still used some moves from Perilous Wild behind the screen and it was good.

What about prep? Prep was OK. I had a map, I had some ideas, I had some dangers and discoveries listed, two fronts, dooms, stuff was going to happen but for a 3h One Shot including character generation, I’d say I was slightly over-prepared in terms of map and settlements and slightly under-prepared when it came to dangers and discoveries. I should have had longer lists of cool stuff. I also started the game with the party in a swamp on the way to a barrow, the ranger posited that he had been following tracks, soon it was determined that there were smaller tracks following the larger tracks (announcing future badness) and soon we had a fight with six player characters vs. ten froglings. I think that fight could have been a shorter. Using ten enemies was a bit much.

What about feedback? The players said they liked it. At first, the lack of a turn structure might have been strange but I guess it worked. The two mostly German speaking players weren’t as active as they might have been, perhaps. But I know one of them from another campaign where he’s also not one to take center stage – and sadly, one prone to looking at his phone a lot, during the game. I didn’t feel too bad about him getting less spot light.

What about my own feelings regarding player agency? Tricky. Comparing it to my old school sandbox games, I’d say many things were similar or the procedures resulted in a similar experience for players.

  • there was a regional map with lairs and sources of evil and going to particular places had consequences
  • there was no dungeon map and as time was running out, I shortened it dramatically – moving to the final chamber in no time; but adjusting to time constraints is something I do all the time
  • my traditional dungeon prep sometimes starts with a sort of point-crawl between interesting locations that are barely described; the rest is improvised – and it didn’t feel very different from my perspective; perhaps also because the dungeon was super small in the end: entrance, water filled corridor, central chamber

Some pictures to illustrate my points.

Traditional point crawl dungeon:

My Dungeon World prep:

Also note the terrible mix of German and English in my notes. ;-)


November 19, 2015 07:23 PM

November 16, 2015

Alex Schroeder

Middle East

I haven’t written much about politics in years. I just read the newspaper and cringe. Sometimes I feel like I should “share” links – but with whom? Nobody on Facebook seems interested because it’s friends and family and coworkers and students from many years ago. Nobody on Google+ seems interested because most of the people I know there are there for the gaming with the exception of a small number of information sources, in other words, information just flows in one direction. Nobody on Twitter seems interested because I’m mostly following journalists and politicians and when I finally realized this, I figured there was no point in sharing anything because they don’t read what I’m sharing. Information just flows in one direction.

Luckily for me – unluckily for you, perhaps :) – this blog not only serves as a platform to share information, it also serves as my externalized memory. Which is why I’m trying to push myself to post interesting links here instead of on so-called “social” media – gated communities that will one day be replaced by something else, taking all the information down with them.

I really need to find links to sources outside of Google+ since the inevitable sunsetting of G+ will drag down all those links as well.

Tags: RSS

November 16, 2015 06:59 AM

November 15, 2015

Alex Schroeder


Joey Lindsey recently asked on Google+ about adventure prep.

My answer: I start with a theme or a particular need based on the campaign. Then I draw a map, perhaps a rough one, perhaps just a point crawl, based on some visuals I want in my game. I’ll often add doodles to bridge the time between interesting ideas. They don’t come so fast, sadly. The doodles also serve as visual reminders for later. At the same time, I start thinking about the monsters and make a big random list of them. Sometimes there are small lists per area or level instead of a single big one. Most of these monsters also have a lair where they’re guaranteed to be. Then I’ll roll for treasure and I usually accept what the table tells me. If the campaign setup requires a particular item to be here, then I’ll add it as well.

The order of these elements will sometimes vary. I might also start with the doodle of a monster, add stats, make a list, and then draw a map. Rolling up treasure always comes last, however.

Some recent examples:


November 15, 2015 10:54 AM

November 12, 2015

Alex Schroeder


On Google+, Amber Yust linked to this post by Kate Heddleston: Argument Cultures and Unregulated Aggression. As I started reading, I kept thinking about other forms of broken interactions online. I’ve seen Kristian Köhntopp defend Linus Torvalds’ style on Google+ (Code of Conflict, Fuck the Community) and Martin Seeger defend civility in the comments. I’ve seen annoying comments in my discussions of role-playing game on Google+ that annoyed me. I’ve seen aggravating comments in my discussions of politics on Facebook. Sometimes I wonder whether my own comments cause similar discomfort to others.

Identifying problems and avoiding them:

The single most important issue is a lack of charitable reading – that is, when we read things that irritate us, we jump to unwarranted conclusions. The simplest of these is that the author of what we just read is an idiot. And from there, everything else follows. We might leave a comment revealing our opinion of the idiot author, for example. This is not going to end well.

  • Don’t write that comment you thought of
  • Don’t post that comment you just wrote
  • Don’t defend that comment you just posted

When reading an annoying posts, I try to read it again in a jovial voice. Perhaps the author is laughing or winking while they say the words they wrote?

Sometimes, Occam's razor comes to mind. We read some idiotic words online. Here are two hypotheses that we might posit: 1. the author is an idiot, or 2. the author is a joker. The first hypothesis usually leads to a large number of questions such as: “why aren’t all posts by this author idiotic?” Or, “why aren’t all the people that comment on this author’s posts idiots?” Or, “how can they have a partner?” Or, “how can they have a job?” Clearly, even if this post is idiotic, this person must be likable under different circumstances. A climate change denier can still be a good grandfather.

Some possible explanations I usually try to think of:

  • This person has trouble explaining themselves and that’s OK
  • This person hasn’t thought it through and that’s OK
  • This person is so enthusiastic, they don’t see how they’re insulting everybody else and that’s OK
  • This person likes to write like a robot and that’s OK
  • This person is so set in their ways when it comes to this, there’s just no reaching them and that’s OK

I think the important part of “and that’s OK” is that it offers us a way out. This conversation doesn’t need to continue. We don’t need to engage. There is no last word to be had.

This doesn’t mean that I have to accept all the garbage people throw around, but it offers a counter move that is oblique.

me: talking about a topic…
somebody: exaggerates my point and takes it down
me: ?

Exaggerating a point to take it down is taking down a straw man. I don’t enjoy polemic debates. If nobody is ready to learn, then there should be no debate. There might be a point to having two people unwilling to learn debate a topic for an audience willing to learn – politicians are usually unwilling to learn in a debate. They still debate a topic because they’re convinced that their audience is willing to learn. If neither of the two people talking nor their audience is willing to learn, then the debate should stop. There’s no point.

My preferred reaction in these situations:

  • Talk about my feelings: I don’t enjoy this kind of discussion
  • Talk about rhetorics – check out the list of fallacies on Wikipedia

We’re changing the topic. We’re no longer talking about the topic I originally wanted to talk about.

Alternatively, the discussion ends, there.

Sadly, this may not be enough. If people persistently annoy you, you need to change your social circles. Unfriend them, uncircle them, block them. If you don’t, then you’re setting up an asshole filter – all the nice people will go away, unwilling to engage, and you’re left with the idiots. That is, the people that might be nice and friendly when you talk to them in person, but when when they leave comments on your posts, they are aggravating and you seem to be unable to change this pattern.

On Wikipedia: Principle of charity, Principle of humanity.

Tags: RSS

November 12, 2015 09:02 AM

November 08, 2015

Alex Schroeder


I’ve been thinking about Dungeon World some more. Here are some of my comments from a recent post on Google+.

It all started with me reading the answer to How to ask nicely in Dungeon World on StackExchange. The answer says: There’s also no GM move called “have a freeform social interaction.” If the GM is following the rules, this kind of stall should not happen. […] Since the “everyone looks to you to find out what happens” trigger matches, it’s now the GM’s turn to make an appropriate move, instead of falling into “time for unstructured social exchange improvisation!” habits that they have brought with them from some other game. The rest of the answer picks all the GM moves in the book and provides an explanation of how it might have gone.

When talking about my classic D&D games with others, we sometimes talked about procedures (or the lack thereof). When I tried to explain how great classic D&D was to Lior oh so long ago, he said that he would love to see some practical instructions on how to make a game interesting. Classic D&D seemed to be steeped in oral culture transmitted outside the written rules. You learned how to do it from friends, or through years of experience, or by reading and talking about it online (which is how I finally got it). As we gave Apocalypse World a try, it seemed to us that there was something here about telling us how to run a game but we just couldn’t nail it. I don’t remember whether we were just too blind to see, or too distracted by all the new jargon, or too fascinated by the moves in play books. I think that now, I’m slowly starting to get it.

There are still reasons not to like the game. The game no longer promises ever changing game play via mechanics (spells changing the adventures you can run, hit-points being replaced by saving-throws, and so on). And I still don’t quite see how the game can surprise me – how will I avoid making decisions that I feel the rules should make for me? The advice for running a dungeon basically suggest improvising a dungeon based on moves, i.e. whenever the players are at a loss, or when they fail their rolls, the dungeon grows, the monsters move, dead ends appear, signs of trouble ahead show up, and so on. “Dungeon Moves are a special subset that are used to make or alter a dungeon on the fly. Use these if your players are exploring a hostile area that you don’t already have planned completely.”

Even if I use The Perilous Wilds as my rules, these thing are still true. Except now there are more tools to work with, more specific instructions: countdowns for themes, a predetermined size, and so on. It seems to me that DW and friends are very interested in “play to see what happens” and one of the consequences is that the world is being generated as you go, based on your moves and the improvisations of the DM. That, in turn, is perhaps why my suspension of disbelief might not work as well. Or perhaps that’s simply a problem for an old school D&D player. If we’re exploring an existing place with an existing map, and existing dangers and treasures, it feels more “real” than generating things as we go. If the consequences of failure are generated by random rolls on a table, if the danger of monsters depends on the severity of my moves, then the rules can say fiction first as long as they want, I read it as DM fiat. But: This could be my D&D bias. Perhaps DW does not shirk from DM fiat as long as it follows from the fiction. Perhaps it works at the table even if everybody knows that the DM is improvising. After all, D&D also requires improvising but generally DMs will try to hide the fact that they’re doing it. The impression of impartiality is generated by dice rolling. Staying true to the fiction is presumed.

Then again, when I look at some of my recent “dungeons”, I find that I mostly think of them as interesting areas, connect one way or another, it doesn’t really matter. Plus monsters and treasure, and traps, rarely. Perhaps that’s not very far away from what Dungeon World and friends are suggesting. After all, the improvisation and dice rolling at the table is only for “a hostile area that you don’t already have planned completely.” I’m suspecting that – at the table! – my current method and the Dungeon World method with a little planning are not very different, after all.

Curious and willing to learn, in any case.

This is what a recent dungeon map for classic D&D looked like, in my campaign:


November 08, 2015 08:00 AM

November 06, 2015

Alex Schroeder

Level Limits

Gavin recently proposed replacing demi-human level limits for classic D&D with an XP penalty, on G+. Here’s what I said.

Whenever level limits for demi-humans come up I wonder: is this an actual problem at the table? I’ve been playing for years and the first cleric characters are slowly reaching level nine, now. And I’m tiring of these campaigns. The chances our campaign ending before level limits come up are far higher.

But I have a point regarding the math, too. If XP requirements double every level, then getting 50% XP simply means loosing a level. In the long run, that doesn’t make much of a difference. You could argue that this is exactly what elves in B/X D&D or Labyrinth Lord actually do: If you think of elves as splitting their XP between fighter and magic-user, then they only get 50% of their XP for their magic-user class and thus they need to gain 5000 XP to get to the equivalent of a magic-user with 2500 XP…

So, part of my argument is: “it has already been done.”

As an argument with players at the table, however, I’d simply pull out a list mapping levels to the importance of people in the world. Something short and visual, like this:

1. noobs
3. veterans, village heroes, sergeants, squad commanders
5. town leaders, captains, company commanders
7. lieutenants, second-in-commands
9. rulers of a castle, of a hex, of a tribe, barons

So basically, the level of non-magical types shows how big their domain in this campaign setting is. If the limit is 8, then ambitions are smaller than a castle. If the limit is 12, then the domain they rule can be larger: various mountain hexes. If the limit is 10, then the domain is simply a forest hex, maybe two. With no level limit, immortality or fighting the gods for divinity is the end game.

If your players agree with the power distribution of the end game, then the level limits remain. If they prefer to go for immortality and divinity, then just get rid of the level limits, no XP penalty required. You can still keep those level limits for non-player characters, if you want.

Or you could say that elves without level limits are obviously Melnibonéan overlords riding dragons and they exist and they run this place. :)


November 06, 2015 09:39 AM

November 03, 2015

Alex Schroeder


Was war ich nicht begeistert, früher.

Dann habe ich festgestellt, dass ich nichts davon gelesen habe. Verstaubt alles auf der Festplatte.

OK, den Megadungeon, der in Fight On! erschienen ist, habe ich immer wieder mal verwendet. Der hat aber auch fantastische Kritiken von Bryce erhalten. [1] [2] [3]

Aber ansonsten ist nichts hängen geblieben.

Siehe auch Periodicals bei RPG Geek.


November 03, 2015 03:56 PM

November 02, 2015

Alex Schroeder


Reading the Dungeon World chapter on fronts makes me want to rewrite the list of open plots and the todo lists for a quest or two, and the list of random upcoming campaign changes as fronts. Perhaps that would make all these things clearer to me. Now that I think about it, my campaign threats are a confusing mess of half baked ideas. They work – I think – but perhaps they’d work better if written up as fronts.

See the picture on the right for what I have for my campaign fronts. I probably have one or two more which I don’t consider to be a urgent. One thing I noticed is that the old structure of my notes was this: if you want to resurrect Arden, you need to do the following… and what followed was a list of quests, each of which I felt would make a nice adventure, should the players decide to follow up on it. The write-up as front changes the setup: if players don’t resurrect Arden, his insanity will spread, somebody else will take the throne of light and so on. I’m not sure I like this shift from “this is a sandbox and whatever you want to achieve will be full of adventure” to “the world will go from bad to worse if you don’t take matters into your own hands”. I suddenly feel like might be preparing two or three campaign arcs or adventure paths… a kind of campaign setup I tried to avoid because players end up feeling like they have less choice. Everything is falling to pieces and there is pressure everywhere and time is running out and go, go, go!

This seems to be the biggest difference in terms of how fronts work compared to my traditional preparations. In my sandbox, players get interested in things, they learn more about it, they formulate goals and then they discover all the difficulties that need to be overcome. The world is essentially static.

Sure, we like to talk about “living” sandboxes and all that but my campaign events are random intrusions where I think to myself, “an invasion of mind-flayers sounds great” and then the setting starts to change.

This process is less structured than the fronts of Dungeon World. Fronts are also tied into moves, so a failed roll by a player can advance a front.

No such thing happened in my sandboxes. People felt free to calmly consider the missions they care about and do some horse trading: “You’ll help me bring down Susrael and I’ll help you bring back the fire giant’s wife, OK?” Fronts put pressure on players and I don’t think they’ll feel as free to pick and choose because there will be consequences, always.

Anyway, I recently bought Freebooters on the Frontier, A Book of Beasts, Perilous Almanacs, The Perilous Wilds and The Perilous Wilds Survival Kit by Jason Lutes as well as Dungeon World by Sage LaTorra and Adam Koebel.

Comments here or on G+.


November 02, 2015 07:08 PM

October 31, 2015

Alex Schroeder

Reputation, again

I’ve been thinking about a system to track reputations again and again over the years. They never seem to work as intended. The players are not too invested.

In 2009, I thought of something I called “the gods are watching you.”. If you do something to please or annoy a particular god, you gain a reputation. It doesn’t matter if it’s good or bad. The gods will know you whether you’re building their temples or desecrating their altars. Reputation is neutral, so to say. I still like this part. The trouble is keeping track of it all.

In 2010, I proposed a system based on quests. Depending on the importance of the deed, the limit for gaining reputation would shift. To raise your reputation from +2 to +4, for example, it was no longer enough to save a life (or sacrifice a life) – you had to basically save (or destroy) entire settlements.

In 2012, I proposed to modify the system in order to allow players to roll dice. I thought that this would get players more invested. They might ask me, “Hey, don’t I get to roll my reputation die?” If I modify their reputation between sessions as part of writing the session report, it doesn’t have the same kind of impact as when we’re sitting at the table, negotiating reputation effects and rolling dice. Sadly, it still hasn’t taken off.

Today, I saw a blog post by Cecil Howe called Guilty By Association: A Simple, Visual REP System which has a little PDF with a system that allows you to keep visual track of reputation. (Also on Google+.)

                     Character: ______________

Faction             Negative     Bonus      Positive
	       ┌─┬─┐ ┌─┬─┐ ┌─┬─┐ ┌───┐ ┌─┬─┐ ┌─┬─┐ ┌─┬─┐ 
               ├─┼─┤ ├─┼─┤ ├─┼─┤ │   │ ├─┼─┤ ├─┼─┤ ├─┼─┤ 
_____________  └─┴─┘ └─┴─┘ └─┴─┘ └───┘ └─┴─┘ └─┴─┘ └─┴─┘ 
	       ┌─┬─┐ ┌─┬─┐ ┌─┬─┐ ┌───┐ ┌─┬─┐ ┌─┬─┐ ┌─┬─┐ 
	       ├─┼─┤ ├─┼─┤ ├─┼─┤ │   │ ├─┼─┤ ├─┼─┤ ├─┼─┤ 
_____________  └─┴─┘ └─┴─┘ └─┴─┘ └───┘ └─┴─┘ └─┴─┘ └─┴─┘ 
	       ┌─┬─┐ ┌─┬─┐ ┌─┬─┐ ┌───┐ ┌─┬─┐ ┌─┬─┐ ┌─┬─┐ 
	       ├─┼─┤ ├─┼─┤ ├─┼─┤ │   │ ├─┼─┤ ├─┼─┤ ├─┼─┤ 
_____________  └─┴─┘ └─┴─┘ └─┴─┘ └───┘ └─┴─┘ └─┴─┘ └─┴─┘ 

Perhaps I should do something similar? You could keep track of both positive and negative elements and get a clearer picture. Perhaps if we had a sheet at the table, they’d be more invested?


October 31, 2015 09:02 AM

October 22, 2015

Alex Schroeder

War and Statistics

I recently saw a Tweet by William Easterly, citing work by Max Roser, claiming that global deaths in conflicts are trending downwards (see pic below). Roser had tweeted it before but I could not find it on his website, Our World in Data. On Twitter, Sébastien Broos posted a link to a paper by Pasquale Cirillo and Nassim Nicholas Taleb (“Black Swan”): On the tail risk of violent conflict and its underestimation.

The abstract: _We examine all possible statistical pictures of violent conflicts over common era history with a focus on dealing with incompleteness and unreliability of data. We apply methods from extreme value theory on log-transformed data to remove compact support, then, owing to the boundedness of maximum casualties, retransform the data and derive expected means. We find the estimated mean likely to be at least three times larger than the sample mean, meaning severe underestimation of the severity of conflicts from naive observation. We check for robustness by sampling between high and low estimates and jackknifing the data. We study inter-arrival times between tail events and find (first-order) memorylessless of events. The statistical pictures obtained are at variance with the claims about “long peace”._

They repeat this in the summary at the end: In other words, a large event and even a rise in observed mean violence would not be inconsistent with statistical properties, meaning it would justify a "nothing has changed" reaction.

That’s harsh. It means that statistics do not support our subjective point of view that the world has been more peaceful in recent decades. Statistics tell us that both the current lull and a threefold increase are both plausible. There is no rest for the wicked.

The first two and the last two pages are the most readable pages. I’m not big into statistics so I can’t comment on the actual math. As a listener to the Chinese History Podcast and having just heard about The Rise and Fall of the Qin (Part 1, Part 2), and all those battles with 400,000 enemy soldiers buried alive after the fighting was over… Ugh! I looked at that big red bubble for An Lushan on page 2 for quite a while. There is a short discussion about the numbers on Wikipedia. Some people say that the decrease is due to the census system breaking down and due to the shrinking territory. The raw numbers, however, show the last census before the rebellion recording a population of 53M in 755 and of 17M in 764, the year following the end of the rebellion. That would mean 36M dead, or about one sixth of the world population at the time.

Now consider one of the methods Cirillo and Taleb used to make their risk assessment: a log transformation to account for the fact that the number of casualties in a conflict cannot be larger than the world population.

Also consider that their examination showed no visible autocorrelation. The large wars are independent from each other. There is no “slowing down” or “speeding up” of occurrences to observe.

Anyway, what a chilling thought to start the day with. :(

Tags: RSS

October 22, 2015 08:31 AM

October 21, 2015

Alex Schroeder

Red Dead Redemption

I recently started playing Red Dead Redemption. It’s an open world Western game from 2010. You’re a guy, you walk around, random stuff happens, you can do missions at a ranch like cow herding and breaking in horses, or you can do missions for the sheriff, shooting outlaws and the like. But some of the random stuff is creeping me out.

I had just shot some outlaws and was riding back to the ranch and suddenly there’s a guy running from right to left, crying for help, hunted by a pack of coyotes. I fumble around, looking for my rifle, aiming in all directions, trying to locate the damn dogs. I shoot one. Or did I shoot the guy? When I come closer, he’s dead.

I had just shot some outlaws and was riding back to the ranch and spotted two guys by a campfire. I approached and a cut scene shows me asking whether it was OK to take a seat. Sure, they said. One talked about this and that and the other said he should write a book. I got up. Did I touch the wrong button? Suddenly they get up and run. The first jumps on his horse. The other shoots me! The guy on the horse shoots me! Draw my rifle. Where are they? Blam! Blam! I’m dead.

I had just stepped out of my little hut and was walking towards some men near the ranch’s smithy when I heard some people hollering and shots being fired. I stopped and looked around. Everybody around me seemed afraid. I pulled my revolver. Four guys come riding down the road, shooting into the air. I watch them ride. I don’t dare to shoot because they’re four and I’m just one. As they ride past, I see they’re dragging a screaming man after them. I still don’t dare to shoot because they’re four and I’m just one.

I had just left the saloon and walked across the road to the sheriff’s office when I hear a woman cry for help. Help, please, somebody help me! I turn around a draw my revolver. There are some men standing around. There’s a man kneeling on top of a woman crying for mercy. He shouts that he’ll cut another hole in her. I shoot, missing him. She dies. There’s a lot of blood. I’m being shot at. One of the bystanders belonged to the same gang as the murderer. The murderer also shoots. I turn and try to take aim. They shoot. Blam! Blam! I’m dead.

So, what does all that mean? The animation shows my guy walking with a threatening swagger. When I walk into people, he pushes them aside and they grumble mumble. But I’m starting to fear people. I no longer walk into people. Who knows, they might shoot back. When I witness a crime, I look at bystanders. How many are in league with the criminal? I swear I’ll mend all the wrongs, eventually. But right now, I’m not good enough. I can’t get into a fight with an unknown number of gangsters. I feel terrible. There is so much hate.

I mean, there’s nice people, and I’m happy when I can have some small talk, or sleep in a bed or rescue some cattle farmers. But when there’s a man being dragged to his death, I look the other way. When there’s a man sitting by a camp fire, I pull my gun and scan the area for his friends. Better avoid strangers than get into a fight.

I guess this game is great? I still feel terrible.

Tags: RSS

October 21, 2015 08:02 PM

October 20, 2015

Alex Schroeder

Man in the Middle

I wonder…

The authenticity of host ' (' can't be established.
RSA key fingerprint is 3f:fa:ee:ae:af:f4:37:9e:c5:ff:b6:85:8b:14:44:0e.
Are you sure you want to continue connecting (yes/no)?


alex@kallobombus:~$ for f in /etc/ssh/ssh_host_*.pub; do ssh-keygen -lf $f; done
1024 a4:f6:b3:f6:6b:c0:73:db:66:13:9e:6f:35:aa:aa:d5  root@kallobombus (DSA)
256 d7:0f:d0:39:08:f7:8b:5d:dd:1c:92:4c:57:5b:2f:d2  root@kallobombus (ECDSA)
2048 49:60:86:36:2d:52:46:7e:9a:10:fc:13:5d:58:e9:c5  root@kallobombus (RSA1)
4096 9f:ad:00:25:ff:d6:07:5f:9c:90:f1:10:43:56:d4:c4  root@kallobombus (RSA)


  1. Why do I have anything other than RSA in my /etc/ssh directory?
  2. Why doesn’t any fingerprint match?

Is this what a Man-in-the-middle attack looks like?

I think that these are the files it should be using:

alex@kallobombus:/etc/ssh$ grep Key sshd_config
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
# HostKey /etc/ssh/ssh_host_ecdsa_key
KeyRegenerationInterval 3600
ServerKeyBits 768
#AuthorizedKeysFile     %h/.ssh/authorized_keys

And when I’m on the system itself, the fingerprint remains the same, so I guess it’s not a Man-in-the-middle attack but simply me not understanding where these fingerprints come from.

alex@kallobombus:/etc/ssh$ ssh alex@localhost
The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is 3f:fa:ee:ae:af:f4:37:9e:c5:ff:b6:85:8b:14:44:0e.
Are you sure you want to continue connecting (yes/no)?

Is this the correct public key? The timestamp looks suspicious.

alex@kallobombus:/etc/ssh$ ls -l *rsa*
-rw------- 1 root root 1679 Jul 16 00:04 ssh_host_rsa_key
-rw-r--r-- 1 root root  742 Jan  6  2015

Let’s print the public key and compare!

alex@kallobombus:/etc/ssh$ sudo ssh-keygen -y
[sudo] password for alex:
Enter file in which the key is (/root/.ssh/id_rsa): ssh_host_rsa_key
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDSrPJvgUtpgyW61lQXZqsFME3BQqr4BeZnh4QDk2UQJsSmYevyQuLVtMj/CXRHZLgujuW2ptKGgFgHA/fW0mvJM0NDcCoaQGkyNWcNUV6DGGRu0ttRccLwlasm+Iq4WZI5UuIpFvGgfjkgqUXNA058zfcFogOZzHk/gPuFruxjS6K6HtQ/c7bUPOZJrv/C804F9vq07tzy5S9ts587PWZjMLshC6UzErOOrzUIcv5LEE+V+xpy9gQfnkCPTtO/1ZeVLGlrSyWWIqFCso16zquQAvva9xzXiKQ/02FPPqx6EZ7EsHNekWdFwx3Z8xge8Og7nZfhS/E5fNPrSfseNpFB
alex@kallobombus:/etc/ssh$ cat
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDSiJzkRHePMo2oiUvwEE86E9iAMKz5M2wQ4oPUS0iEO4CV62NKDro5IpQplLrf9WfwUDL1HDyi0UJZbBVBIRMNg4jNEgwWD6Cv11QqlWQ7IZ4bRkVZhKPhP81Ftk5SevnxW9xB9F9fIBggjJMnSbgSGCjM3p4vHAwflYNp4tyo8t/UUlTnzGFywv8Qlvxsc5vcaxuXiOGkP6k35tbcIMJLwthOnCocg56R02Wuq8pMI7GcC5sYCuhzeMfukLnS1bnkZ1mUqHUqXFSrpK4mheVS8ftP8OeUdJPRxNdS9a0xIHTdLngz2JaC6qvVM5byJWz3FWr25Vyhon1WAUYHc5LNEQMMYkO6lhYedSwKeltncgwRkrUZmtEvpQHK7CYfGVXeHRJB+VhaTT9H5rc1jqaPzrd6N9djjUU5c3yk2YxgyzVjCoCZIojuxU6/YlCBckVwJWZqADkYlN4GRq9D970FD4H3EasZUg/bOFlSRXZDPfZzHymP76G5gUhZFztu9C1qJId6jYpWOg7EQBjoyaXqhkBC7YrH2uHPob4BkEuNKTGsC9nJXLVLEFLYmfzY+qD7x+jUHGonr36xCfEjqIzCP5jiQ2NSHj+Ro3dCjdUloBH3d2m9lhfXWTa3+X4P5HUqxaqO4b558qsZIv9es5LFGFRrOg1wApVouVarQ0Bu+w== root@kallobombus

So, is the shorter key the actual key being used?

alex@kallobombus:/etc/ssh$ sudo ssh-keygen -yf ssh_host_rsa_key > /tmp/
alex@kallobombus:/etc/ssh$ ssh-keygen -lf /tmp/
2048 3f:fa:ee:ae:af:f4:37:9e:c5:ff:b6:85:8b:14:44:0e /tmp/ (RSA)

This matches the actual message when I log in:

The authenticity of host ' (' can't be established.
RSA key fingerprint is 3f:fa:ee:ae:af:f4:37:9e:c5:ff:b6:85:8b:14:44:0e.
Are you sure you want to continue connecting (yes/no)?

The riddle’s solution is that the public key in my /etc/ssh directory is simply some old cruft that’s not being used. I should replace it.

Thanks, EmacsWiki:PierreGaston, for lending a helping hand. :)

Tags: RSS

October 20, 2015 12:41 PM

October 14, 2015

Alex Schroeder

CSS Changes

I changed the fonts used for this website. I liked Noticia Text by JM Solé but loading it from the web was making the site slow on my old phone. It would load the page with invisible text and then add the font with a noticeable delay. Too bad the phone’s browser cache is too limited.

So now it is, in order: Palatino Linotype, Book Antiqua, or Palatino.

Here’s to faster loading times! 🍷

Tags: RSS

October 14, 2015 10:10 AM

October 09, 2015

Alex Schroeder

Oddmuse and Mojolicious

I’m trying to run Oddmuse within a Perl web framework: Mojolicious using Mojolicious::Plugin::CGI. It won’t be as perfect as a true Mojolicious app, but it will still be much faster than a simple CGI script. When running as a CGI script, every request loads Perl and compiles all the modules – including the CGI module itself – and Oddmuse and the config files. When running under Mojolicious, we no longer load Perl and we compile Oddmuse just once. Oddmuse itself will keep loading the config file and all that, but it’s still much better than before. The Mojolicious app itself is then started by Toadfarm. And in order to force myself to test it, I’ve switched this wiki over to the new setup!

First, tell Apache to act as a reverse proxy and pass all /wiki requests to the new server. The two ProxyPass instructions at the bottom are the important bits:

<VirtualHost *:80>
    Redirect permanent /
<VirtualHost *:443>
    <Directory />
        Options None
        AllowOverride None
        Order Deny,Allow
        Deny from all
    DocumentRoot /home/alex/
    <Directory /home/alex/>
        Options ExecCGI Includes Indexes MultiViews SymLinksIfOwnerMatch
        AddHandler cgi-script .pl
        AllowOverride All
        Order Allow,Deny
        Allow from all

    SSLEngine on
    SSLCertificateFile      /home/alex/ssl/alexschroeder.crt
    SSLCertificateKeyFile   /home/alex/ssl/alexschroeder.key
    SSLCertificateChainFile /home/alex/ssl/GandiStandardSSLCA2.pem
    SSLVerifyClient None

    ProxyPass /wiki   
    ProxyPass /mojo   


Toadfarm setup in ~/farm/farm:

#!/usr/bin/env perl
use Toadfarm -init;

logging {
  combined => 1,
  file     => "farm.log",
  level    => "info",

# other apps go here...

mount "$farm/" => {
  "Host" => qr{^(www.)?alexschroeder\.ch$},
  mount_point => '/wiki',

plugin "Toadfarm::Plugin::AccessLog";

start; # needs to be at the last line

The above means that all requests to htpp:// and htpp:// will be handled by Oddmuse.

Mojolicious wrapper in ~/farm/

#! /usr/bin/env perl

use Mojolicious::Lite;

plugin CGI => {
  support_semicolon_in_query_string => 1,

plugin CGI => {
  route => '/',
  script => '', # ~/farm/
  env => {WikiDataDir => '/home/alex/alexschroeder'},
  errlog => 'alexschroeder.log', # path to where STDERR from cgi script goes


In this case, is simply the original Oddmuse script, unchanged. :)


October 09, 2015 09:03 AM

October 08, 2015

Alex Schroeder


I’m super happy with my dwarven faces!

Here, have a random dwarf:


October 08, 2015 10:26 AM

October 06, 2015

Alex Schroeder

Pink Bliss

Pink Bliss has improved somewhat. Mostly, I just added some magit faces.

You know you want it! Download from GitHub!

Emacs, in it’s maximized glory:


October 06, 2015 04:14 PM

March 31, 2015



Google+ is a social networking application on the web.

Learn more...

March 31, 2015 02:26 PM

August 14, 2014

Alex Schroeder

Gnus Mystery Emails

These days I have a Raspberry Pi running Dovecot running as my IMAP Server. I connect to this IMAP Server from my iPhone using Apple’s Mail and from my Laptop using Gnus. For a while now I have noticed that the two don’t list the same mails in my INBOX. In Gnus, I enter the group using C-u RET or I use / o to insert old articles and I see 14 mails. When I enter the Server buffer from the Group buffer using ^ and switch to the INBOX, I see 72 mails. What could be the reason for this?


August 14, 2014 07:54 AM

August 06, 2014

Alex Schroeder


Im August sind wir von Vrin im Graubünden auf die Terrihütte gewandert, haben dort übernachtet, und sind dann über die Scaletta Hütte hinab ins Tessin gewandert.

Mehr Infos zur Wanderung.

Einziger Nachteil: Massenschlag auf der Terrihütte mit Schnarchlern links, rechts, und gegenüber. Und wir ohne Lärmschutz.



August 06, 2014 08:01 PM

July 30, 2014

Alex Schroeder


I was reading Gavin Norman’s post on spell research and did not manage to leave a comment. That’s what I hate about blogs these days. Too often, leaving a comments has become too complicated. So now I’m posting it here. I wanted to offer an idea for spell research (which doesn’t happen in my campaign) that works like my chase rule. It’s a 2d6 test with a table of drawbacks. For example:

Research: If you’re nearly done, roll 2d6. On a 2, it explodes, destroying much of your glass wares (500 gp) and setting back your research. On a 3–6, you are suffering delays. You need another week. On a 7–9, choose two points from the list. On a 10–11 choose one point. One a 12, you succeeded, no problem.

  • you need a specimen of a magical creature; choose one of the following: basilisk eye, chimera tongue, displacer beast tentacle, phase spider silk, unicorn horn, xorn tooth.
  • you need more information; pick a wise one to contact: Sutr, an efreeti lord in the City of Brass, Lady Gerdana, the legendary elf queen of the Sea of Five Winds, Senator Schwarz, a collector of art items in Tlan, Qwaar the Axiomatic, on Righteous Timing, one of the wheels of Mechanus, …
  • you are missing a crucial bit of context; pick a tome to find: The Hidden Metamorphoses, Advanced Ursomancy, …
  • the intended range is drastically reduced; pick one lower than what you hoped for: 60 feet, 20 feet, touch, self
  • the spell’s deadly energy is spread out; pick one: double the radius and deal one third of the damage, deal one die of damage per round, it goes off in 1d4 rounds instead of right now
  • the effect is partial; examples: invisibility only works for you but not the things you are wearing, flying only works in the absence of wind, knocking on wood doesn’t open doors, it breaks them
  • the effect is flashy when it was intended to be subtle; examples: the detection of lies work because angry ghosts appear to accuse the liars, invisibility works but you you give off a pungent cinnamon fume, the transformation of self works but you always end up covered in blood as you are turned inside out for a second
  • the powerful spell is tainted by demonic powers; every time you cast it, abyssal side effects happen

The list of strange creatures, wise ones and magical tomes needs to be adapted to your campaign. You don’t necessarily have to replenish the list as the easy complications are being picked. This is how initially, research is easy. Later, it gets harder as all the nearby wise ones have been contacted, all the creatures that are easy to slay have been killed, all the obvious tomes have been found.

Also, since I’m using the best magic house rule ever—a strict reading of the magic system—and since I give experience points for gold spent, I have no need to siphon off gold or to force magic users to spend extra in-game time researching. Why should research therefore take 1000 gold pieces per week and a week per spell level, or other some such number? Before introducing this house-rule, I’d probably say that you get to roll once per in-game week of research. Most of the time my game runs as one session per in-game week, so if the party returns home, or if the magic-users and elfs have henchmen doing the research for them, no problem. If they need to do the research themselves, then I’m sure they can talk the other players into spending an extra in-game week resting. My plots are rarely that rushed, so that should not be a problem.


July 30, 2014 07:50 AM


Here’s an interesting read: Gender Equality in Education, Employment and Entrepreneurship: Final Report to the MCM 2012, OECD Week 2012, Meeting of the OECD Council at the Ministerial Level, Paris, 23–24 May 2012. It’s long, though: 252 pages.

Tags: RSS

July 30, 2014 06:53 AM

July 28, 2014

Alex Schroeder

Best of Sandbox Posts

Recently, Yora asked for Sandbox logs. Those are tricky to provide. After all, if you’re looking for advice on how to run a game, the session report is filled with useless in-game stuff that nobody but the players will read (if at all).

What I’ve done instead is collect blog posts where I think I have some advice backed up by anecdotes from my game.


July 28, 2014 01:23 PM


I have occasionally linked the podcasts I listen to both as an effort to remember and as an attempt at recommendation. It has been more than a year since my last update. These days, I mainly listen to history and philosophy podcasts, and I download a bit of music via podcasts. No more RPG podcasts.

Podcasts I just don’t have the time for:

Podcasts that I recommend, even though they’re no longer adding new episodes:

Tags: RSS

July 28, 2014 10:11 AM

OSR Top Blogs

There are various reasons to like a blog. Generally speaking, I’ve heard it say that posting controversial opinions gets you more interaction than “useful” content. I know I fall into the same category. My gaming category on Feedly has 243 unread posts and when I start reading, I skip a lot.

Not only do I skip all the session reports, I also skip most of the new classes, most of the new spells, most of the new magic items, most of the house rules… I guess I feel that my game hasn’t reached a point where I’ve exhausted the material at my fingertips and therefore I have no need for all the little extras.

Links to Wisdom

This is where Links to Wisdom comes in. This is the wiki to collect cool OSR house rules, including new classes, new spells, new monsters, advice for the creation of dungeon adventures, wilderness adventures, urban adventures, and so on.

OK, so Links to Wisdom has been growing steadily. It has nearly 1000 links on it, right now. 998 as I’m writing this, to be exact. I kept wondering, though: which sites had contributed the most links? Shouldn’t that be some sort of blog recommendation, as people would have to actually recommend particular posts on a blog? It’s better than a simple popularity contest, it would seem. And it would be better than a simple list of blogs. (If you’re interested in a list, check out The Great Blog Roll Call 2014 on Dyver’s blog.)

Anyway, I wrote a script to extract the blog domains from

Links to Wisdom and list them according to numbers appearing:

Top Blogs

If you click on the domain, you’ll be taken to the blog (unless it’s a useless domain such as or It also says how many links were found, and if you click that number, it links to a list of all the matching entries.

At the moment, Daddy Grognard is the top dog because he’s been adding all his monsters. Thanks! Check out all the Daddy Grognard items.

Here’s how to make it easy to contribute to the wiki:

  1. create a dummy bookmark
  2. edit the bookmark and replace the URL with this: javascript:location=''+encodeURIComponent(window.location.href)
  3. rename the bookmark to “Submit OSR Links to Wisdom”
  4. save

If you’re looking at a cool page, click the link, and you’ll be taken to the submission form immediately.

It works if you’re on a mobile device, too. On my iPhone, there’s this little dance I do: Read cool stuff in G+ app → “Open in Safari” -> “Submit OSR Link” bookmark. How did I manage to get a javascript link in my bookmarks? Create a dummy bookmark and edit it. Paste the javascript URL over the dummy URL.

As for the categories: they are generated automatically from the web pages of the wiki. That means it’s all editable.

If you’re a coder yourself, you might want to write your own app to submit links or edit the wiki, something easier to use, for example. Check out the Help page, if you’re so inclined.


July 28, 2014 09:27 AM


Sam Harris wrote a blog post, Why Don’t I Criticize Israel? As one who read more Noam Chomsky than I could bear, as one who donated money to the Electronic Intifada, I think I’m clearly in the camp critical of Israel, and yet Sam Harris’ article gave me pause. So, even if you’re quite sure of the opinions you hold, even if you think that the moral aspects of what Hamas says need to be balanced with the actual power they wield, that article is still interesting.

For the record: My favorite solution would be for all the evil dudes to be tried in court, for Israel and Palestine to unify, for the establishment of a secular state, for a solid protection of minorities, for equal rights for everybody. I’m just not quite sure of the means to get there. 😰

There is also a huge economic issue at hand. I want some sort of land reform that undoes all the confiscating and appropriating of “abandoned” land. I want the refugees in the neighbouring countries to return. This will come at an incredible cost, at a point where nobody can afford these things. But the current situation comes at a cost just a daunting.

I keep thinking about Apartheid and how it went, and how much it cost, and how much there still is to do. I just can’t think of an alternative, at the moment.


July 28, 2014 08:34 AM

July 26, 2014

Alex Schroeder

Oddmuse Curl

These days I’ve been working on Oddmuse Curl, an Emacs mode for editing Oddmuse wikis including this one, and Emacs Wiki. I’ve been trying to fit more and more functionality into the Emacs Version Control (VC) framework. It has been an interesting challenge. There still many things I’m missing, but a surprising amount of stuff already works.

  • better highlighting of wiki markup
  • inserting known pages
  • following links
  • creating new pages
  • posting any buffer to a wiki
  • creating new “blog” pages (name starts with current date)
  • searching wiki for a text (this does not work for Emacs Wiki because of Duck Duck Go unless you add old=1 to oddmuse-search-command – and that’s very slow)
  • searching wiki for matching page names (since we already have a list of page names cached, I guess a fancier interface is possible)
  • preview of edits in an Emacs buffer
  • preview of edits in a local file with a browser
  • preview of current page in a browser (browse-url)
  • diff with current version on the wiki
  • revert to current version on the wiki
  • log of all the changes made to a page
  • recent changes


July 26, 2014 09:31 PM

July 20, 2014

Alex Schroeder

Sir Walther von Klingen

I’ve joined The Summer Faire of Karog using Sir Walther von Klingen, also known as Sir Walther of Blades, if you catch my drift.

The character creation rules used for The FlailSnails Jousting Tourney are cruel and harsh.

Knight Name: Sir Walther von Klingen
Player Name: Alex Schroeder
Class/Level: Fighting Man (Bachelor) 1
HP: 6 / 1
AC: 8
Str: 11
Int: 10
Wis: 9
Dex: 9
Con: 8
Cha: 4
Horse: Light Warhorse
Armor Worn: Boiled Leather
Shield Type: Reinforced Kite Shield
Gold: 35


Squire Name: Ulrich
Class/Level: Fighting Man 1
HP: 4
AC: 5
Gear: Scale Mail, Wooden Round Shield, Sword, Dagger

No retinue.

As it turns out, Sir Walther was beaten by Sir Enguerrand in the first round of the tourney. He was unable to buy back his Mail Hauberk and his Medium Warhorse. And so he left, hurting badly, on a light warhorse and with cheap boiled leather armor.

* * *

My wife saw me create my knight and enjoyed my mumblings so she wanted to create a knight as well, and so here is Sir Aliduke, in honor of her first knight in our Great Pendragon Campaign… Good times!

Knight Name: Sir Aliduke de Giez
Player Name: Claudia Frei
Class/Level: Fighting Man (Mercenary) 1
HP: 6
AC: 5
Str: 9
Int: 16
Wis: 10
Dex: 9
Con: 6
Cha: 11
Horse: Riding Horse
Armor Worn: Mail Hauberk
Shield Type: Reinforced Round Shield


Squire Name: Wendel
Class/Level: Magic-User 1
HP: 3
AC: 6
Gear: Dagger, Spell Book with Sleep and Read Magic

Retinue: 2 Filthy Peasants you pay to guard your camp.

Tags: RSS

July 20, 2014 09:30 PM

July 18, 2014

Alex Schroeder


Ich verwende für meine langstehende Kampagne Labyrinth Lord und habe meine Hausregeln in einem kleinen Dokument gesammelt: Hellebarden & Helme. Vor ein paar Tagen habe ich meinen Spielerinnen und Spielern einen Vorschlag geschickt.

Ich studiere wieder mal an den Magierregeln rum. Insbesondere geht es mir um das Lernen der Sprüche am Morgen. Im Adventure Conqueror King System ist das ganz einfach fallen gelassen worden.

Für Elfen und Magier gilt: Die Anzahl Sprüche, welche man am Tag zaubern kann, sind das «Repertoire» der Elfen und Magier. Aus ihrem Repertoire können sie alle Sprüche jederzeit zaubern, solange sie noch «Slot» frei haben. Das wäre auf alle Fälle für Anfänger leichter zu verstehen. Diese Auswahl der Sprüche am Morgen wird gerne vergessen und als Spieler ist es immer wieder mühsam, wenn man die falschen Sprüche gelernt hat.

Im Adventure Conqueror King System wird das sehr schön beschrieben: «For an arcane spellcaster to have a spell in his repertoire, he must keep track of complex astrological movements and star signs that are constantly changing; he must daily appease various ghosts and spirits that power certain dweomers; he must remember and obey special taboos that each spell dictates. All of these strictures, and they are many, can vary with the season, the lunar cycle, the caster’s location, and more. Having a spell in the repertoire is thus an ongoing effort, like maintaining a friendship or remembering a song. Mages may collect spell formula from many sources, but only the most intelligent and learned arcane spellcasters can maintain a repertoire of more than a few spells at a time.»

Für Kleriker habe ich eine andere Idee. Mir passt eigentlich der Fokus auf die biblishen Sprüche nicht. Mir schwebt vor, den Klerikern je nach verehrten Göttern andere Sprüche zur Verfügung zu stellen. Um beim «Repertoire» zu bleiben: Ich stelle mir vor, dass je nach verehrter Gottheit ein anderes Repertoire zur Verfügung steht. Ich bin mir noch nicht so sicher, wie das aussehen wird. Vielleicht so: Heilen Leichter Wunden wird von einem Dämonenlord nicht zur Verfügung gestellt. Böses Entdecken, Magie Entdecken, Gesinnung erkennen, das sind vielleicht eher Sprüche für Geweihte der Mitra (Ehrlichkeit, Schwüre). Schlangenzauber ist vielleicht eher was für Set. Ich würde dann also eine spezielle Liste für Freya Kleriker zusammenstellen.

Was meint ihr dazu? Meine Hoffnung ist, dass es etwas einfacher wird für die Spieler, und ich hoffe, dass es so mehr Sinn macht, wenn Kleriker via ihren Göttern eigene Spruchlisten bekommen. Ich gehe eigentlich davon aus, dass sich für Logard & Co. nicht viel ändern wird, weil die Sprüche, die er zaubert, sowieso der Freya zugerechnet werden.

Nachdem ich nun die Antworten meiner Spielerinnen und Spieler erhalten habe, zeigt sich, dass nicht alles so einfach ist, wie ich es mir vorgestellt hatte.

Generell waren sich alle einig, dass dieses Auswählen der Sprüche am Morgen mühsam ist. Deswegen werde ich dies wohl einfach fallen lassen. Die einzelnen Sprüche müssen nicht am Morgen gelernt, sondern durch beten, Sterne beobachten, Bücher studieren, usw. wird das ganze Repertoire aufgefrischt. Davon kann man nun alles zaubern, solange man die jeweilige Limite noch nicht erreicht hat.

An den Klerikersprüchen ändern wir vorerst nichts. Ein Votum war, dass das Ändern der Spruchlisten im laufenden Spiel für den Charakter seltsam wäre. Ein weiteres Votum war, dass ja auch den Göttern unliebsame Sprüche gezaubert werden können sollen. Vielleicht, so ein Gegenvorschlag, auf höherer Stufe? Dieser Gegenvorschlag passt mir aber irgendwie nicht. Zu kompliziert?

Vielleicht muss man die elenden Kleriker als verhunzte Van Helsing Charaktere ja einfach im Spiel lassen. Vielleicht war es sowieso ein Fehler, aus den Klerikern auch gleich Geweihte zu machen, welche einen Gott verehrten, einem Gott dienten. Meine aktuelle Lösung für Paladine gefällt mir besser: Wer will, kann sich einem Gott verschwören und bekommt dann, je nach Stufe und Ruf, nach und nach ein paar wenige übernatürliche Fähigkeiten. Das sollte doch eigentlich reichen, denke ich.

Etwas Hintergrund zur Entstehungsgeschichte der Klerikerklasse gibt es auf Havard’s Blackmoor Blog. Da sieht man eigentlich schon, dass die Kleriker eine spezifische Entwicklung waren, um die Untoten zu bekämpfen, welche sich in der Kampagne von Arneson ausbreiteten.

Schon habe ich Lust, die Kleriker ganz abzuschaffen, oder sie zu “Van Helsings” zu machen. Vielleicht ist das natürlich die Lösung. Die jetzigen Kleriker lassen wir einfach so, wie sie sind, aber wir gehen nicht mehr davon aus, dass generell alle Religionen Kleriker benötigen.

Ein Votum war, dass Kämpfer immer langweiliger werden, je flexibler und vielfältiger die zaubernden Klassen werden. Das will mich nicht so recht überzeugen, obwohl es auf den ersten Blick plausibel wirkt. Das wichtigste Gegenargument scheint mir zu sein, dass dies nur bei Kämpfen ein Problem sein sollte, und Kämpfe eigentlich kurz sein sollten. Das Ungleichgewicht sollte also auch nur von kurzer Dauer sein. Ausserhalb der strengen Würfelregie kann sich ja jeder beliebig gut einbringen, weswegen in meinen Spielen manchmal Charaktere der Stufen eins bis acht miteinander auf Abenteuer gehen.

Dann kommt es auch auf das Verhältnis von Anzahl Kämpfe pro Tag an. Wird mehr gekämpft, gehen die Sprüche bald aus. Wieviel pro Tag gekämpft wird, hängt nun aber von Spielern und Spielleiter ab. Das führt mich dann zum generellen Problem der “Balance” (Scheinwerferlicht, Handlungsfreiheit, agency). Mir scheint das schwer zu messen, abhängig vom aktuellen Abenteuer, irgendwie auch beeinflussbar durch die Wahl der Questen, und auch wählbar durch das Spielen dieser und nicht jener Klassen. Deswegen sehe ich im Moment noch keinen Grund, diese Erleichterung für zaubernde Klassen durch einen Nachteil auszugleichen.

Ganz Konkret zur Kampfkraft allerdings: Solange Kleriker keine spitzen und scharfen Waffen verwenden können und solange Schwerter die wichtigsten magischen Waffen sind, werden Kämpfer immer einen Platz haben. Das ganze Theater mit den stumpfen Waffen hat eigentlich nur diesen Vorteil: Es dämmt die Anziehungskraft der Kleriker etwas ein. Woher diese Idee in der christlichen Tradition kommt, findet man in diesen Artikeln zum Thema Odo, dem Bischof von Bayeux…

Es ist nicht einfach mit diesen verdammten Klerikern! Bald packe ich mein DSA Abenteuer Ausbau-Spiel aus und lese das Kapitel über die Geweihten nochmal.

Also, dort steht: vier allgemeine Wunder (Essen, Trinken, Mut, Heilung) sowie je drei spezifische Wunder, welche von dem jeweiligen Gott abhängen.


July 18, 2014 08:44 PM

July 15, 2014

Alex Schroeder

Soon to be Moving

We signed a new contract! Starting in October, we’ll be living in Altstetten. It’s still within the city limits, but no longer as central as that. The now flats are being built at the moment. This is what Google Street View is showing…

Tags: RSS

July 15, 2014 03:59 PM

July 13, 2014

Alex Schroeder


Recently, I wrote the following on Google+:

Sometimes I feel like the constant chatter of social media is reducing my creative output. While I’m on G+ or Facebook or Twitter or IRC or even reading and answering mail, I’m not producing things. Somehow my education taught me to value so many other things over the talking about things. The creating of things. The reading of books. Hiking. Perhaps this devaluation of talking about things is not a healthy attitude. In addition to that, there’s the lingering doubt about my willingness to do these other things. If I did not have computers to connect me to all the people out there, would I really be doing these other things, or would I just play on my console, or sleep, or eat?

When it comes to role-playing games, for example: I see all those great pictures people are drawing, and great tables people are writing, and I nod my head and scroll down, and read and nod, and—whaaat, game in 2h and no prep!?

It’s totally true that I don’t see myself as a lone creative person. I need discussion, mutual enthusiasm, a little competitive outdoing, sharing, positive feedback and all that for my creative endeavors. Unfortunately for me, social media provides this, as well as backbiting, acerbic commentary, put downs, cynicism, banter, cat pictures, ranting, and more. I haven’t found a way to control this extra information, however. I need some to feel the bonds of humanity, to experience friendship and joy, to build that social net that will help me when I’m down, talk about my feelings such that I don’t bury them deep within me, but it also distracts me, takes away my ability to focus, allows me to procrastinate… So I think I need a structure like The G+ Hour or aggressive filtering, or a change in lifestyle to find a way out. No longer young enough, when my desires exceeded my ability to digest it all, not yet old enough, when hopefully my wisdom will put it all into perspective automatically…


July 13, 2014 09:02 PM

July 12, 2014

Alex Schroeder

Rule of Uncool

This is an alternative to the various encumbrance rules out there. It works as follows:

  1. Encumbrance is not tracked.
  2. When in doubt, the referee can ask a player to start reading their character’s inventory out loud.
  3. As soon as people groan, laugh, boo or facepalm, that’s enough. Drop some stuff!

Tags: RSS

July 12, 2014 07:37 PM

July 11, 2014

Alex Schroeder

Speaking in Public

There was a huge disturbance in the force, recently. D&D 5 got published and Zak Smith and the RPG Pundit were credited therein. One of the posts summarizing the issue I read was On the D&D5 Credits Controversy by Gary N. Mengle.

As far as this post is concerned, I’m not so much interested in the peculiarities of this affair, I’m more interested in how we could get here. I think the key to understanding the causes of the problem are to be found in this comment by Zak Smith on a private post on Google+:

There are certain things you don’t say in public no matter what someone means . I don’t care what they mean or if they’re a good person I care what’s in the public record and what people might think who see that public record. – Zak Smith

I was reading the comments on a public Google+ post by Rob Donoghue. The question being discussed was how to disengage from a hurtful discussion. Viktor Haag had just provided an example where person A said something, person B contested it and asked for proof and person A decided to disengage. Now A is angry and feels assaulted by B, and B is angry because A simply left the discussion instead of offering a fair discussion of the accusations. Anna Kreider then offered a different example where person A said something ambiguous (“I have mixed feelings about a thing”) and person B then attacks A for saying all sorts of things they felt this implied while A keeps maintaining that they never said any such thing. So now I started wondering. Why do these things happen? Rob Donoghue said: “Causation is complicated and multi-faceted, nuance is critical and perfect information is impossibly rare. Discussing something under those limitations requires trust and good faith. They must be entered with an interest in finding insight, not right answers.” I think that’s a good position to start with, but it doesn’t explain the vitriol that I’ve been seeing. The rest of this post is the comment I left on Rob’s post…

I can’t help thinking that part of “The Internet Problem” of communication spiraling downwards (as has been the case ever since flame wars erupted on USENET) is the inability of ordinary people to perceive the Internet as a very public space. In the old days, it was hard to say something in public. You basically had to find a publisher and print stuff. It could get heated if you stood up in a town hall meeting and said the wrong thing. But these days, anybody with Internet access can speak in public, and they—we, all of us—are unaware that “there be lions.” We are unaware that public speaking has always come with a distinct understanding of our freedoms and the limits thereof, and of the potential consequences. There’s defamation (libel, slander) laws, copyright laws (intellectual property, digital copying and distributing), and these laws are there to offer recourse for the most problematic aspects—but they don’t offer recourse for most of our actual problems. Our actual problems are often much smaller. That’s how I explain what has been happening: Person A tells their friends that they really don’t like what B has said and done (and they use strong language because they have strong feelings and they feel amongst friends) and person B says “you can’t say X on the Internet in public, to damage my reputation for ever and ever!”

Now, if person A feels that their reputation is being attacked in public, it’s only natural that they want to defend themselves. In public, there is no disengaging from such a discussion because person A has the support of the law. It’s the law that says person A can defend their reputation. If person B then feels harassed because they are being contacted by phone or they are receiving letters to their physical address, then they need to understand, that as far as the law is concerned, there is no difference between life “online” and “real” life. The law only cares about defamation.

To provide you with a different example. I run a site and it attracted spam. One of the links posted linked to a Swiss site. I made fun of them and because this other site is ranked highly by Google, my statements were soon the number two hit for the company’s name. I soon got contacted and told to take it down or face charges. Do I feel they are spammers? Yes I do! Did I take it down? Yes I did. There was no way to disengage without going to court or retracting my statements.

Given that speaking in private and speaking in public has such different consequences, and given all the various ways in which we are now able to publish our thoughts, and given our lack of practice, I think these conflicts are unavoidable, every now and then.

Were you taught about copyright, defamation, and all those laws in school? I sure wasn’t! I was taught to type. I was taught to open my mouth and I was not told about the foot I was soon going to put in there…

I don’t know how to resolve this. I think we need to develop cultural norms to handle this, and we aren’t there yet. I want to talk to my friends like I want to. I want to reach out to strangers and make more friends, and talk to them. The Internet makes this possible. I’m always on the verge of forgetting that so many things are in public, in writing, apparently forever. I may make troubling mistakes. The Internet makes this possible, too.

When it comes to publishing on the Internet, we had to develop cultural norms. Does Information want to be free? How will be pay game developers? Journalists? How will we make sure that our computers will do what we want instead of just doing what their vendors want? And we aren’t there, yet. When it comes to speaking on the Internet, same problem. How do we curate our circle of friends? How about the shades of publicness, social media friends, lists, circles, groups, communities? How do we make sure that our statements will not stand forever and ever? How will we read the deep history of people we talk to, hire, befriend, marry? We aren’t there, yet.

What I took away from all those years on the Internet was being more careful about what I said. At first I felt like a coward. Afraid of comments on my own blog, I was. Then I felt like a hypocrite, wanting people to be open, wanting to feel free, but not ranting like I used to. Was I betraying my ideals? These days I take a legalistic approach. I tread lightly because I’m in public. If I can’t stand the heat after nailing my blog posts to the church door, I’m not going to post. Yes, it’s sad. I will still rant and rave amongst my friends. But online, my friends aren’t Google circles and Facebook friends. Even though the audience appears to be limited, there is no intimacy. This communication is not ephemeral. It’s basically in public.

Tags: RSS

July 11, 2014 04:10 PM


Recently, Jürgen Hubert shared a link to a Foreign Policy post and said on Google+ that while the German system wasn’t perfect, at least it worked.

Some people commented and said they agreed. I wrote that from what I heared Germans in Switzerland say, many like it here as well. I love the Swiss system. And the weird thing is: the Swiss Federal Constitution of 1848 “was influenced by the ideas of the constitution of the United States of America and the French Revolution.” (Emphasis mine.)

I guess what I’m trying to say is that I wholly support efforts by Lawrence Lessig: Rootstrikes.

I just finished listening to the latest bunch of episodes about the American Revolution and the drafting of the United States Constitution, and the List of amendments to the United States Constitution, at the Revolutions Podcast. Excellent material if you’re into podcasts at all.

When I read the FP article, I felt disappointed because of its shallow analysis. What about Exportweltmeister and the price the Germans paid, stagnating wages? What about the discussions of the 5% hurdle after recent elections? What about the historic justifications for the Senate in order to convince smaller entities to join the federation? These can be an important issue in heterogeneous federation like Switzerland (there was a time when each canton had its own currency)—and possibly also of interest for nations after a civil war (Bosnia and Herzegovina, Lebanon, Syria) or countries where so many regions strive for more autonomy and the state is always in fear of breaking apart (Spain, Italy). So yes, the Basic Law for the Federal Republic of Germany is great. But the US has its United States Bill of Rights, and a Constitutional Court, and that’s great. In contrast, Switzerland allows its citizens to easily amend the constitution, but there is no constitutional court, so sometimes issues linger for years before appropriate laws get passed! So it would seem to me that the US has all the tools it needs. I suspect it has mostly a broken process. Something needs reform, but I’m not sure that the German system is a good place to start looking.


July 11, 2014 01:08 PM

July 08, 2014

Alex Schroeder

Character Names

For a while, my character generator used a name list based on German saints and an English list of saints. Later, I switched to a different list of names but now I feel that maybe I should have kept it.

So, I’m posting it. 1664 items… I dunno, roll 1d1664? Or help me pad the list in order to get to a nice number? Or put the list into a random name generator of your liking. There is no copyright attached to this list of names. I added it to the Names section of Choose Your Own Generator.

  1. Aaron
  2. Abadiu
  3. Abakuh
  4. Abanoub
  5. Abaskhayroun
  6. Abban
  7. Abbo
  8. Abdas
  9. Abel
  10. Abelina
  11. Abelka
  12. Abib
  13. Abo
  14. Abraam
  15. Abraham
  16. Absalom
  17. Absalon
  18. Abuna
  19. Abundius
  20. Abāmūn
  21. Acacius
  22. Acca
  23. Achatius
  24. Achaz
  25. Achille
  26. Achilles
  27. Achilleus
  28. Achim
  29. Achmed
  30. Ada
  31. Adalar
  32. Adalbald
  33. Adalberga
  34. Adalbero
  35. Adalbert
  36. Adalberta
  37. Adalbod
  38. Adalbrand
  39. Adalburg
  40. Adaldag
  41. Adalfried
  42. Adalgar
  43. Adalgard
  44. Adalger
  45. Adalgot
  46. Adalgott
  47. Adalhard
  48. Adalmann
  49. Adalmar
  50. Adalrich
  51. Adalsind
  52. Adaltraud
  53. Adalwin
  54. Adam
  55. Adamo
  56. Adauktus
  57. Adelaide
  58. Adelbert
  59. Adele
  60. Adelgund
  61. Adelgunde
  62. Adelheid
  63. Adelhelm
  64. Adelin
  65. Adelinde
  66. Adeline
  67. Adelmar
  68. Adelmut
  69. Adelphos
  70. Adelphus
  71. Adeltraud
  72. Adeltrud
  73. Adeodatus
  74. Adina
  75. Ado
  76. Adolf
  77. Adomnán
  78. Adonis
  79. Adrian
  80. Adriana
  81. Adrianus
  82. Adula
  83. Aemiliana
  84. Aemilianus
  85. Ägidius
  86. Ämiliana
  87. Ämilianus
  88. Æthelberht
  89. Afan
  90. Afer
  91. Afra
  92. Agape
  93. Agapetus
  94. Agapitus
  95. Agatha
  96. Agathe
  97. Agatho
  98. Agilof
  99. Aglaia
  100. Agnellus
  101. Agnes
  102. Agricola
  103. Agrippa
  104. Agrippina
  105. Agrippinus
  106. Agritius
  107. Aida
  108. Aidan
  109. Aileen
  110. Aischa
  111. Aischylos
  112. Akazius
  113. Akim
  114. Alain
  115. Alan
  116. Alanus
  117. Alarich
  118. Alba
  119. Alban
  120. Alberic
  121. Alberich
  122. Albert
  123. Alberta
  124. Alberto
  125. Albertus
  126. Albin
  127. Albinus
  128. Albrecht
  129. Albrun
  130. Albuin
  131. Alchmund
  132. Alcuin
  133. Alda
  134. Aldebrand
  135. Aldegund
  136. Aldemar
  137. Alderich
  138. Aldhelm
  139. Aldowin
  140. Aldric
  141. Alec
  142. Alexa
  143. Alexander
  144. Alexandra
  145. Alexandre
  146. Alexandrine
  147. Alexei
  148. Alexis
  149. Alexius
  150. Aleydis
  151. Alfons
  152. Alfred
  153. Alfwold
  154. Ali
  155. Alice
  156. Alicia
  157. Alida
  158. Alina
  159. Aline
  160. Alipy
  161. Alix
  162. Aljoscha
  163. Alkuin
  164. Allegra
  165. Almut
  166. Alnoth
  167. Alois
  168. Aloisius
  169. Alonso
  170. Aloysius
  171. Alphege
  172. Alphio
  173. Alphonsa
  174. Alphonse
  175. Altfrid
  176. Althea
  177. Altmann
  178. Alto
  179. Alva
  180. Alwin
  181. Alypius
  182. Amabella
  183. Amadea
  184. Amadeus
  185. Amalberga
  186. Amalia
  187. Amalie
  188. Amaltrud
  189. Amand
  190. Amanda
  191. Amandus
  192. Amarin
  193. Amata
  194. Amatus
  195. Ambrose
  196. Ambrosius
  197. Ammerentie
  198. Ammon
  199. Amor
  200. Amos
  201. Amphilochius
  202. Anastasia
  203. Anastasius
  204. Anatolia
  205. Andrea
  206. Andreas
  207. Andrei
  208. Andrew
  209. Andronicus
  210. André
  211. Anenkletos
  212. Angela
  213. Angelika
  214. Angelikus
  215. Angelina
  216. Angelus
  217. Angilibert
  218. Angus
  219. Anianus
  220. Anicetus
  221. Anika
  222. Anita
  223. Anja
  224. Anjo
  225. Anka
  226. Anke
  227. Anna
  228. Anne
  229. Annemarie
  230. Annette
  231. Annika
  232. Anno
  233. Ansbald
  234. Ansbert
  235. Anschar
  236. Ansegisus
  237. Anselm
  238. Anselma
  239. Ansgar
  240. Ansoalda
  241. Answald
  242. Answer
  243. Answin
  244. Anterus
  245. Anthelm
  246. Anthimos
  247. Anthony
  248. Antje
  249. Antoine
  250. Anton
  251. Antonia
  252. Antonino
  253. Antonio
  254. Antonius
  255. Aonio
  256. Aper
  257. Aphianus
  258. Aphrodisius
  259. Apollinaris
  260. Apollo
  261. Apollonia
  262. Apollonius
  263. Apollos
  264. Aprax
  265. Aquila
  266. Aquilinus
  267. Arabella
  268. Arbeo
  269. Arbogast
  270. Archangela
  271. Ardalion
  272. Argula
  273. Ariadne
  274. Arialdo
  275. Ariana
  276. Ariane
  277. Arianus
  278. Ariella
  279. Aristus
  280. Arkadios
  281. Arlette
  282. Armin
  283. Arn
  284. Arno
  285. Arnoald
  286. Arnold
  287. Arnulf
  288. Arsacius
  289. Arsenius
  290. Arthold
  291. Arthur
  292. Asclepiades
  293. Asella
  294. Ashley
  295. Asia
  296. Asja
  297. Asta
  298. Asteria
  299. Astrid
  300. Atanasij
  301. Athanasia
  302. Athanasios
  303. Athanasius
  304. Athena
  305. Athene
  306. Attala
  307. Attila
  308. Atto
  309. Attracta
  310. Attroban
  311. Auctor
  312. Aude
  313. Audomar
  314. August
  315. Augustina
  316. Augustine
  317. Augustinus
  318. Augustus
  319. Aurea
  320. Aurelia
  321. Aurelius
  322. Aurora
  323. Autbert
  324. Auxentios
  325. Ava
  326. Avia
  327. Avilius
  328. Avitus
  329. Axel
  330. Aya
  331. Babette
  332. Bacchus
  333. Balbina
  334. Balderich
  335. Baldo
  336. Baldomerus
  337. Baldred
  338. Balduin
  339. Balko
  340. Balthasar
  341. Balthild
  342. Baltram
  343. Baptist
  344. Barachisus
  345. Barbara
  346. Barbatus
  347. Bardo
  348. Barnabas
  349. Barnard
  350. Barsanuphius
  351. Barthel
  352. Bartholomäa
  353. Bartholomäus
  354. Baruch
  355. Basil
  356. Basilissa
  357. Basilius
  358. Bastian
  359. Bathilde
  360. Beata
  361. Beate
  362. Beatrice
  363. Beatrix
  364. Beatus
  365. Beda
  366. Begga
  367. Bela
  368. Ben
  369. Benedetta
  370. Benedetto
  371. Benedict
  372. Benedicta
  373. Benedikt
  374. Benigna
  375. Benignus
  376. Benito
  377. Benjamin
  378. Benno
  379. Berard
  380. Berengar
  381. Berlind
  382. Berlinda
  383. Bermund
  384. Bernadette
  385. Bernard
  386. Bernardino
  387. Bernardo
  388. Bernd
  389. Bernhard
  390. Bernharda
  391. Bernhardin
  392. Berno
  393. Bernold
  394. Bernulf
  395. Bernward
  396. Bert
  397. Berta
  398. Bertger
  399. Bertha
  400. Bertharius
  401. Bertheid
  402. Berthild
  403. Berthold
  404. Bertin
  405. Bertold
  406. Bertram
  407. Bertrand
  408. Bertuin
  409. Bertulf
  410. Bertwald
  411. Bettina
  412. Bianca
  413. Bibiana
  414. Bibianus
  415. Bilhildis
  416. Birger
  417. Birgit
  418. Birgitta
  419. Birinus
  420. Birte
  421. Birthe
  422. Björn
  423. Blaise
  424. Blanca
  425. Blanche
  426. Blandina
  427. Blasius
  428. Bodard
  429. Bodo
  430. Bona
  431. Bonaventura
  432. Bonaventure
  433. Boniface
  434. Bonifatius
  435. Bonosus
  436. Boris
  437. Botho
  438. Botolph
  439. Botulph
  440. Brendan
  441. Bridget
  442. Brigid
  443. Brigitta
  444. Brigitte
  445. Brioc
  446. Bronislawa
  447. Brun
  448. Bruno
  449. Brynolf
  450. Budoc
  451. Burchard
  452. Burkhard
  453. Bärbel
  454. Caesar
  455. Caesarius
  456. Caius
  457. Cajetan
  458. Callistus
  459. Camilla
  460. Camillus
  461. Can
  462. Candida
  463. Candidus
  464. Canice
  465. Canute
  466. Carantoc
  467. Carl
  468. Carla
  469. Carlo
  470. Carmen
  471. Carola
  472. Carolin
  473. Casimir
  474. Caspar
  475. Catald
  476. Catherine
  477. Cathrin
  478. Cedd
  479. Celadion
  480. Celestine
  481. Celina
  482. Cettin
  483. Chad
  484. Chantal
  485. Charbel
  486. Charleen
  487. Charles
  488. Charline
  489. Charlotte
  490. Chiara
  491. Christa
  492. Christel
  493. Christian
  494. Christiana
  495. Christiane
  496. Christina
  497. Christine
  498. Christof
  499. Christoph
  500. Christopher
  501. Christophorus
  502. Chrysanthus
  503. Ciarán
  504. Cinderella
  505. Cindi
  506. Cindy
  507. Clara
  508. Clare
  509. Clarissa
  510. Claude
  511. Claudia
  512. Claudine
  513. Claudius
  514. Claudus
  515. Claus
  516. Clemens
  517. Clement
  518. Clementine
  519. Cleopatra
  520. Clodoald
  521. Clothilde
  522. Clotilde
  523. Coelestin
  524. Coelina
  525. Coleta
  526. Colette
  527. Colomba
  528. Columba
  529. Columbanus
  530. Comgall
  531. Concordia
  532. Congar
  533. Conrad
  534. Constantin
  535. Constantine
  536. Constanze
  537. Cora
  538. Cordula
  539. Cornelia
  540. Cornelius
  541. Corsin
  542. Cosima
  543. Cosimo
  544. Cosmas
  545. Crescentia
  546. Cristobal
  547. Cristóbal
  548. Cunigunde
  549. Cuthbert
  550. Cynllo
  551. Cynthia
  552. Cyriacus
  553. Cyril
  554. Cyrill
  555. Cyrillus
  556. Cyrus
  557. Cäcilia
  558. Cäcilius
  559. Cäsar
  560. Dafne
  561. Dagmar
  562. Dagobert
  563. Daisy
  564. Damaris
  565. Damasus
  566. Damian
  567. Damien
  568. Dan
  569. Danax
  570. Daniel
  571. Daniela
  572. Danielle
  573. Danilo
  574. Danuta
  575. Daphne
  576. Daria
  577. Darius
  578. Dasya
  579. Dave
  580. David
  581. Dawn
  582. Daydara
  583. Dean
  584. Debora
  585. Deborah
  586. Declan
  587. Degenhard
  588. Deikola
  589. Delia
  590. Delphina
  591. Demetrios
  592. Demetrius
  593. Demiana
  594. Denise
  595. Deocaruis
  596. Deochar
  597. Deodatus
  598. Derek
  599. Desideratus
  600. Desideria
  601. Desiderius
  602. Detlef
  603. Detlev
  604. Deusdedit
  605. Devota
  606. Diana
  607. Didactus
  608. Didatus
  609. Didier
  610. Didymus
  611. Diego
  612. Diemut
  613. Dieter
  614. Dietger
  615. Diethard
  616. Diethelm
  617. Diether
  618. Diethild
  619. Dietlind
  620. Dietlinde
  621. Dietmar
  622. Dietrich
  623. Dietwolf
  624. Dimitri
  625. Dimitrij
  626. Dimitry
  627. Dina
  628. Dinah
  629. Dionysia
  630. Dionysios
  631. Dionysius
  632. Dioscorus
  633. Diotima
  634. Dirk
  635. Disibod
  636. Dodo
  637. Dolf
  638. Dolly
  639. Dolores
  640. Domenica
  641. Domenicus
  642. Dometios
  643. Domingo
  644. Dominic
  645. Dominica
  646. Dominicus
  647. Dominika
  648. Dominikus
  649. Domitian
  650. Domitilla
  651. Donald
  652. Donata
  653. Donatus
  654. Donewald
  655. Dora
  656. Doreen
  657. Dorian
  658. Dorin
  659. Doris
  660. Dorkas
  661. Dorle
  662. Dorothea
  663. Dorotheus
  664. Douai
  665. Douglas
  666. Dragan
  667. Drago
  668. Drees
  669. Dries
  670. Drogo
  671. Druthmar
  672. Duncan
  673. Dunja
  674. Dunstan
  675. Dustin
  676. Dwight
  677. Dymphna
  678. Dénis
  679. Désirée
  680. Eanflæd
  681. Ebba
  682. Eberhard
  683. Eberwin
  684. Ebrulf
  685. Eckard
  686. Eckart
  687. Eckehard
  688. Eckhard
  689. Eckhart
  690. Edbert
  691. Edberta
  692. Edburga
  693. Edda
  694. Eddo
  695. Edelburg
  696. Edeltraud
  697. Edgar
  698. Edigna
  699. Edistus
  700. Edith
  701. Editha
  702. Edmar
  703. Edmund
  704. Eduard
  705. Edward
  706. Edwin
  707. Edwine
  708. Effi
  709. Efraim
  710. Egbert
  711. Eileen
  712. Eirene
  713. Eleonora
  714. Elfriede
  715. Elias
  716. Eligius
  717. Elin
  718. Elisabeth
  719. Elizabeth
  720. Elke
  721. Elvira
  722. Elysee
  723. Elysia
  724. Emanuel
  725. Emanuela
  726. Emerentia
  727. Emerentiana
  728. Emeric
  729. Emilia
  730. Emilie
  731. Emma
  732. Emmanuel
  733. Emmanuela
  734. Emmelia
  735. Emmeram
  736. Emmerich
  737. Enda
  738. Engelbert
  739. Enrique
  740. Enya
  741. Ephraem
  742. Ephraim
  743. Ephrem
  744. Erbin
  745. Erentrude
  746. Erich
  747. Erik
  748. Erika
  749. Ermengol
  750. Ermenilda
  751. Ermin
  752. Erwin
  753. Esther
  754. Ethelburga
  755. Etheldreda
  756. Etienne
  757. Eudokia
  758. Eugene
  759. Eulogius
  760. Eumenes
  761. Euphemia
  762. Euphrosyne
  763. Eustochia
  764. Euthymius
  765. Eva
  766. Evangelos
  767. Eysteinn
  768. Fabian
  769. Fabianus
  770. Fabien
  771. Fabienne
  772. Fabrizio
  773. Fachanan
  774. Faro
  775. Faustina
  776. Faustus
  777. Feichin
  778. Felicitas
  779. Felix
  780. Ferdinand
  781. Ferréol
  782. Fiacre
  783. Fidelis
  784. Filan
  785. Filippo
  786. Finbarr
  787. Finn
  788. Fiona
  789. Florentina
  790. Franca
  791. Frances
  792. Francesca
  793. Francis
  794. Frank
  795. Franka
  796. Franklin
  797. Franz
  798. Franziska
  799. Franziskus
  800. Frauke
  801. Fraw
  802. Frei
  803. Frideswide
  804. Frieda
  805. Frieder
  806. Friederike
  807. Friedrich
  808. Fritz
  809. Fructuosus
  810. Fulgentius
  811. Fynn
  812. Gabriel
  813. Gabriela
  814. Gabriele
  815. Gaetano
  816. Gaius
  817. Gal
  818. Gall
  819. Gallicanus
  820. Gaspar
  821. Gaudentius
  822. Gelasius
  823. Gelert
  824. Gemma
  825. Genesius
  826. Genevieve
  827. Georg
  828. George
  829. Georges
  830. Georgette
  831. Georgia
  832. Georgina
  833. Georgine
  834. Georgios
  835. Georgius
  836. Gerald
  837. Gerard
  838. Gerardus
  839. Gerasimus
  840. Gereon
  841. Gerhard
  842. Gerhardus
  843. Gerhild
  844. Gerlinde
  845. Gertraud
  846. Gertrud
  847. Gertrude
  848. Gerulfus
  849. Gesa
  850. Gesina
  851. Gesine
  852. Ghislain
  853. Gianna
  854. Gilbert
  855. Giorgia
  856. Giorgio
  857. Giovanni
  858. Gisela
  859. Giselbert
  860. Goar
  861. Godehard
  862. Godric
  863. Gonsalo
  864. Gottfried
  865. Gratus
  866. Gregorio
  867. Gregory
  868. Grellan
  869. Gudrun
  870. Guinefort
  871. Gunter
  872. Gunther
  873. Géraud
  874. Gönül
  875. Günter
  876. Günther
  877. Hagen
  878. Hallvard
  879. Ham
  880. Hanna
  881. Hannah
  882. Hanne
  883. Hannelore
  884. Harald
  885. Harold
  886. Hartmut
  887. Hartwig
  888. Hechard
  889. Hedwig
  890. Heike
  891. Heinrich
  892. Heinrike
  893. Heinz
  894. Helena
  895. Helene
  896. Helga
  897. Helier
  898. Helmstan
  899. Helmut
  900. Henning
  901. Henriette
  902. Henrik
  903. Henrika
  904. Henrike
  905. Henry
  906. Herbert
  907. Heribert
  908. Herman
  909. Hermann
  910. Herta
  911. Hertha
  912. Hertula
  913. Hervé
  914. Herwig
  915. Hieronymus
  916. Hilarius
  917. Hilda
  918. Hilde
  919. Hildebrand
  920. Hildegard
  921. Hildegund
  922. Horestes
  923. Hormisdas
  924. Horst
  925. Hubert
  926. Hubertus
  927. Hugh
  928. Hyacinth
  929. Hyacintha
  930. Ibrahim
  931. Ida
  932. Idesbald
  933. Iduna
  934. Ignatios
  935. Ignatius
  936. Igor
  937. Ildefons
  938. Ildiko
  939. Ilga
  940. Ilja
  941. Ilka
  942. Ilona
  943. Ilse
  944. Imanuel
  945. Imelda
  946. Imma
  947. Immanuel
  948. Immo
  949. Imre
  950. Ines
  951. Ingbert
  952. Inge
  953. Ingeborg
  954. Ingenium
  955. Ingmar
  956. Ingo
  957. Ingobald
  958. Ingobert
  959. Ingolf
  960. Ingomar
  961. Ingrid
  962. Ingwar
  963. Inka
  964. Inken
  965. Innocencio
  966. Innocent
  967. Innocentius
  968. Innozenz
  969. Ioann
  970. Irene
  971. Irenäus
  972. Irina
  973. Iris
  974. Irma
  975. Irmengard
  976. Irmgard
  977. Irmhild
  978. Irmina
  979. Irmintrud
  980. Irmtraut
  981. Irmtrud
  982. Irmund
  983. Isaac
  984. Isaak
  985. Isabel
  986. Isabella
  987. Isebel
  988. Isfrid
  989. Isfried
  990. Isidor
  991. Isidora
  992. Isidore
  993. Ismael
  994. Iso
  995. Isolde
  996. István
  997. Italo
  998. Íte
  999. Ithamar
  1000. Ivo
  1001. Ivonne
  1002. Iwan
  1003. Jacobo
  1004. Jacqueline
  1005. Jadwiga
  1006. Jakob
  1007. Jakobine
  1008. James
  1009. Jan
  1010. Jana
  1011. Jane
  1012. Janet
  1013. Janette
  1014. Janina
  1015. Jannes
  1016. Jannik
  1017. Japhet
  1018. Jaqueline
  1019. Jarno
  1020. Jaromir
  1021. Jasmin
  1022. Jean
  1023. Jeanette
  1024. Jeanne
  1025. Jennifer
  1026. Jeremia
  1027. Jeremias
  1028. Jerome
  1029. Jessika
  1030. Jette
  1031. Jirina
  1032. Joachim
  1033. Joan
  1034. Joaquina
  1035. Job
  1036. Joel
  1037. Johann
  1038. Johanna
  1039. Johannes
  1040. John
  1041. Jolanda
  1042. Jona
  1043. Jonas
  1044. Josaphat
  1045. Josef
  1046. Josefa
  1047. Josefine
  1048. Josemaría
  1049. Joseph
  1050. Josepha
  1051. Josephine
  1052. Josse
  1053. Jostein
  1054. José
  1055. Juan
  1056. Judith
  1057. Judoc
  1058. Julia
  1059. Julian
  1060. Juliana
  1061. Julianus
  1062. Julie
  1063. Julius
  1064. Jurgis
  1065. Justin
  1066. Jutta
  1067. Jérôme
  1068. Józef
  1069. Jürgen
  1070. Kai
  1071. Kaj
  1072. Kamil
  1073. Karin
  1074. Karina
  1075. Karl
  1076. Karolina
  1077. Karoline
  1078. Kaspar
  1079. Kassia
  1080. Katharina
  1081. Katharine
  1082. Kathrin
  1083. Katja
  1084. Katrin
  1085. Kea
  1086. Kenneth
  1087. Kerstin
  1088. Kessog
  1089. Kevin
  1090. Kilian
  1091. Kim
  1092. Kimball
  1093. Kimberley
  1094. Kimi
  1095. King
  1096. Kinga
  1097. Kirill
  1098. Klara
  1099. Klaus
  1100. Kolonat
  1101. Konrad
  1102. Konstantia
  1103. Konstantin
  1104. Konstanze
  1105. Kora
  1106. Kreszentia
  1107. Kristin
  1108. Kunibert
  1109. Kunigunde
  1110. Kuno
  1111. Ladislaus
  1112. Lambert
  1113. Lamprecht
  1114. Lana
  1115. Landelin
  1116. Landfried
  1117. Landoald
  1118. Landrada
  1119. Landricus
  1120. Lanfranc
  1121. Lantpert
  1122. Lara
  1123. Larissa
  1124. Lars
  1125. Laura
  1126. Laurentius
  1127. Laurus
  1128. Lavinia
  1129. Lazar
  1130. Lea
  1131. Leander
  1132. Lena
  1133. Leo
  1134. Leodegar
  1135. Leona
  1136. Leonardo
  1137. Leonhard
  1138. Leonie
  1139. Leonor
  1140. Leonore
  1141. Leontia
  1142. Leopold
  1143. Lia
  1144. Liana
  1145. Liane
  1146. Lidwina
  1147. Lilith
  1148. Linda
  1149. Linnea
  1150. Lisa
  1151. Livinus
  1152. Lorcán
  1153. Lore
  1154. Lorenzo
  1155. Louis
  1156. Louisa
  1157. Louise
  1158. Luana
  1159. Luca
  1160. Lucy
  1161. Ludolph
  1162. Ludwig
  1163. Luigi
  1164. Luis
  1165. Luisa
  1166. Luise
  1167. Lukas
  1168. Lupus
  1169. Lutgardis
  1170. Lutz
  1171. Léon
  1172. Léonard
  1173. Machar
  1174. Magdalen
  1175. Magdalena
  1176. Magdalene
  1177. Maik
  1178. Maike
  1179. Maja
  1180. Malachy
  1181. Malo
  1182. Malte
  1183. Malvine
  1184. Malwin
  1185. Malwine
  1186. Mandy
  1187. Manfred
  1188. Manuel
  1189. Manuela
  1190. Maraike
  1191. Marcellin
  1192. Marco
  1193. Marcouf
  1194. Mareike
  1195. Margaret
  1196. Margareta
  1197. Margarete
  1198. Margaretha
  1199. Margarethe
  1200. Margit
  1201. Margo
  1202. Margot
  1203. Margret
  1204. Margrit
  1205. Marguerite
  1206. Maria
  1207. Mariamne
  1208. Marianita
  1209. Marianna
  1210. Marianne
  1211. Marie
  1212. Marie-Eugénie
  1213. Marijke
  1214. Marika
  1215. Marina
  1216. Marinus
  1217. Marit
  1218. Marita
  1219. Mark
  1220. Marko
  1221. Markus
  1222. Marlon
  1223. Marlow
  1224. Martha
  1225. Martin
  1226. Martyr
  1227. Martyrs
  1228. Marvin
  1229. Mary
  1230. Mathilde
  1231. Mattea
  1232. Matthew
  1233. Matthias
  1234. Matthäus
  1235. Maurontius
  1236. Maximilian
  1237. Maximillian
  1238. Maximus
  1239. Melania
  1240. Melanie
  1241. Melina
  1242. Melissa
  1243. Melitta
  1244. Mellitus
  1245. Melvin
  1246. Meret
  1247. Merle
  1248. Merula
  1249. Methodius
  1250. Mia
  1251. Michael
  1252. Michaela
  1253. Michele
  1254. Miguel
  1255. Mike
  1256. Milburga
  1257. Mirco
  1258. Miriam
  1259. Mirijam
  1260. Mirjam
  1261. Mirko
  1262. Miroslav
  1263. Miroslava
  1264. Miroslaw
  1265. Miroslawa
  1266. Modwen
  1267. Mona
  1268. Monika
  1269. Moninne
  1270. Mono
  1271. Mother
  1272. Muno
  1273. Nadine
  1274. Nadja
  1275. Nadjeschda
  1276. Name
  1277. Naomi
  1278. Narcisa
  1279. Natalie
  1280. Natascha
  1281. Naum
  1282. Nectan
  1283. Nehemia
  1284. Neot
  1285. Neriman
  1286. Nicephorus
  1287. Nicholas
  1288. Nicolai
  1289. Nicole
  1290. Nicolette
  1291. Niels
  1292. Niklas
  1293. Nikola
  1294. Nikolai
  1295. Nikolaus
  1296. Nil
  1297. Nils
  1298. Nilus
  1299. Nimattullah
  1300. Noemi
  1301. Norbert
  1302. Norman
  1303. Nothelm
  1304. Noël
  1305. Nuno
  1306. Odile
  1307. Odo
  1308. Offo
  1309. Olaf
  1310. Olga
  1311. Oliver
  1312. Opportuna
  1313. Orestes
  1314. Oskar
  1315. Oswald
  1316. Osyth
  1317. Otbert
  1318. Otto
  1319. Ouen
  1320. Paavo
  1321. Pamela
  1322. Paola
  1323. Paolo
  1324. Paraskeva
  1325. Pascal
  1326. Paschal
  1327. Paschalis
  1328. Patricia
  1329. Patricius
  1330. Patrick
  1331. Paul
  1332. Paula
  1333. Paulina
  1334. Paulinus
  1335. Paulus
  1336. Pavel
  1337. Pedro
  1338. Peregrine
  1339. Peter
  1340. Petra
  1341. Petroc
  1342. Petrus
  1343. Philip
  1344. Philipp
  1345. Philippa
  1346. Philippine
  1347. Philippus
  1348. Philothei
  1349. Photios
  1350. Pierre
  1351. Pio
  1352. Piran
  1353. Pius
  1354. Praejectus
  1355. Prætextatus
  1356. Pyr
  1357. Quentin
  1358. Quinidius
  1359. Quintian
  1360. Quintinius
  1361. Quiriacus
  1362. Quirinus
  1363. Rabanus
  1364. Rabea
  1365. Radulf
  1366. Rafqa
  1367. Raimund
  1368. Rainerius
  1369. Ralf
  1370. Ralph
  1371. Ramon
  1372. Ramona
  1373. Raphael
  1374. Raphaela
  1375. Raymond
  1376. Rebecca
  1377. Rebekka
  1378. Recep
  1379. Regina
  1380. Reginald
  1381. Reginbald
  1382. Reginbert
  1383. Reginhard
  1384. Regintrud
  1385. Regula
  1386. Reinhard
  1387. Remigius
  1388. Renata
  1389. Renate
  1390. Renatus
  1391. Renzo
  1392. René
  1393. Renée
  1394. Ricarda
  1395. Richard
  1396. Richarda
  1397. Richardis
  1398. Rictrude
  1399. Rimbert
  1400. Rina
  1401. Rita
  1402. Robert
  1403. Roberta
  1404. Roberto
  1405. Robin
  1406. Roch
  1407. Roger
  1408. Rognvald
  1409. Roland
  1410. Rolf
  1411. Roman
  1412. Romana
  1413. Romanos
  1414. Romanus
  1415. Romuald
  1416. Ronja
  1417. Roque
  1418. Rosa
  1419. Rosalia
  1420. Rosalinde
  1421. Rosamunde
  1422. Rose
  1423. Rosemarie
  1424. Rosi
  1425. Rosina
  1426. Roswitha
  1427. Roxana
  1428. Rudger
  1429. Rudi
  1430. Rudolf
  1431. Rut
  1432. Ruth
  1433. Ruthy
  1434. Rüdiger
  1435. Sabbas
  1436. Sabina
  1437. Sabine
  1438. Sabinus
  1439. Sacharja
  1440. Sachso
  1441. Sadalberga
  1442. Saethryth
  1443. Salome
  1444. Salonius
  1445. Salvius
  1446. Samson
  1447. Sandra
  1448. Sara
  1449. Sarah
  1450. Sascha
  1451. Saskia
  1452. Sava
  1453. Scholastica
  1454. Seaxburh
  1455. Sebastian
  1456. Selina
  1457. Selma
  1458. Sem
  1459. Seraphim
  1460. Seraphina
  1461. Sergei
  1462. Sergej
  1463. Sergius
  1464. Severinus
  1465. Sharbel
  1466. Sidonius
  1467. Siegfried
  1468. Siegrun
  1469. Sigeberht
  1470. Sigfried
  1471. Sigrun
  1472. Silke
  1473. Silverius
  1474. Silvia
  1475. Simeon
  1476. Simon
  1477. Simone
  1478. Simplicius
  1479. Sina
  1480. Sofia
  1481. Sofie
  1482. Sonja
  1483. Sophia
  1484. Sophie
  1485. Sophronius
  1486. Stefan
  1487. Stefanie
  1488. Steffen
  1489. Stella
  1490. Stephan
  1491. Stephana
  1492. Stephanie
  1493. Stephanos
  1494. Stephanus
  1495. Stephen
  1496. Stylianos
  1497. Susanna
  1498. Susanne
  1499. Sven
  1500. Svenja
  1501. Swithun
  1502. Sylvia
  1503. Symeon
  1504. Symmachus
  1505. Tabea
  1506. Tabitha
  1507. Tamar
  1508. Tamara
  1509. Tanja
  1510. Tarasios
  1511. Tarek
  1512. Tari-sayi
  1513. Tarik
  1514. Tariq
  1515. Taris
  1516. Tarisai
  1517. Tarishi
  1518. Tathan
  1519. Tatiana
  1520. Tatjana
  1521. Tekle
  1522. Teresa
  1523. Thamar
  1524. The
  1525. Theodegar
  1526. Theodor
  1527. Theodora
  1528. Theodore
  1529. Theodoros
  1530. Theodorus
  1531. Theodosius
  1532. Theophan
  1533. Theophanes
  1534. Theresa
  1535. Therese
  1536. Theresia
  1537. Thilo
  1538. Thirza
  1539. Thomas
  1540. Thorlak
  1541. Thorsten
  1542. Thyra
  1543. Théodore
  1544. Thérèse
  1545. Tiara
  1546. Tikhon
  1547. Tilo
  1548. Tim
  1549. Timo
  1550. Timotheus
  1551. Torsten
  1552. Traudel
  1553. Tristan
  1554. Trude
  1555. Trudi
  1556. Tsar
  1557. Tuncay
  1558. Turibius
  1559. Tydfil
  1560. Ubald
  1561. Udalfried
  1562. Udo
  1563. Uffo
  1564. Ulfrid
  1565. Ulrich
  1566. Ulrika
  1567. Ulrike
  1568. Urban
  1569. Urbicius
  1570. Urs
  1571. Ursicinus
  1572. Ursmar
  1573. Ursula
  1574. Ursus
  1575. Urte
  1576. Utto
  1577. Uwe
  1578. Valentin
  1579. Valentina
  1580. Vanessa
  1581. Varghese
  1582. Varvara
  1583. Vavrinec
  1584. Venantius
  1585. Veranus
  1586. Verena
  1587. Vergilius
  1588. Veronica
  1589. Veronika
  1590. Vicelinus
  1591. Vicente
  1592. Victor
  1593. Victoria
  1594. Vietnamese
  1595. Viktor
  1596. Viktoria
  1597. Vincent
  1598. Viola
  1599. Violetta
  1600. Virginia
  1601. Vitalian
  1602. Vitalis
  1603. Vitonus
  1604. Viviana
  1605. Viviane
  1606. Vivianus
  1607. Vladimir
  1608. Walburga
  1609. Waningus
  1610. Wenceslaus
  1611. Werburgh
  1612. Werner
  1613. Wiborada
  1614. Wiebke
  1615. Wigbert
  1616. Wigfrid
  1617. Wigger
  1618. Wilfrid
  1619. Wilhelm
  1620. Willehad
  1621. Willi
  1622. William
  1623. Willibrord
  1624. Wim
  1625. Wolfeius
  1626. Wolfgang
  1627. Wolfhelm
  1628. Wolfried
  1629. Wulfram
  1630. Xaver
  1631. Xena
  1632. Xenia
  1633. Xenophon
  1634. Yannic
  1635. Yaropolk
  1636. Yegor
  1637. Yehudi
  1638. Yolanda
  1639. Yrieix
  1640. Yves
  1641. Yvette
  1642. Yvonne
  1643. Zacharias
  1644. Zachary
  1645. Zachäus
  1646. Zarah
  1647. Zdenko
  1648. Zdislava
  1649. Zena
  1650. Zeno
  1651. Zenobia
  1652. Zenobius
  1653. Zenzi
  1654. Zephyrinus
  1655. Zeus
  1656. Zilla
  1657. Zilly
  1658. Zita
  1659. Zofia
  1660. Zosimas
  1661. Zosimus
  1662. Zoticus
  1663. Zoë
  1664. Zygmunt

Tags: RSS

July 08, 2014 02:56 PM

July 06, 2014

Alex Schroeder

Your First Time Game

Never ran a fantasy role-playing game like Dungeons & Dragons before? Get yourself the D&D Basic Rules, Labyrinth Lord or the Basic Fantasy RPG (or any of the other role-playing games out there). Find some friends and volunteer to run a game for them. Here’s some excellent advice by Greg MacKenzie which he left on a Google+ post by Davin Asiala. I made some slight edits, too.

The important thing to realize is that unless you have a command of the material, an overview, you may have difficulty getting a sense of where it is all going. You are also treading in someone else’s footsteps. My personal advice is reduce your scope: make your own 6-10 room dungeon, and roll up the monsters for each room.

My early adventures went something like this: The adventurers start out at a local tavern where they meet. They hear a few rumours about some horrible hole and are offered either a guide to the spot or a map for a few coins. At which point they set off for the entrance. When they get there the guide leaves and they enter the dungeon. Now note that I provide no obstacles, save that for the dungeon.

You should have a few words of description for the entrance to set the mood. Each room should have a description and may or may not have a monster 1 in 6. The dungeon should be on one sheet of paper. The idea here is to make sure there is something to do. You don’t have to be terribly original here as the game takes on its own life as you play it.

The monsters should have treasure, and make sure to allocate a few magic items among the treasure. You want the players to gain experience points and get a taste of the good things, those magic items. The players should find a shut door for example, listen, try to open it, let the players make Strength rolls to open the doors, your giving them something to do and it involves them. If there are monsters inside, roll for surprise, and initiative to see if the players or monsters go first, and then follow the rest of the combat sequence for the player and monster groups. You will need those combat sheets to make your life easier. When you conclude each round of combat you re-roll for initiative. You can continue until one side or the other quits.

Because these are new players, and monsters aren’t dumb, you can decide if the monsters run away if things go against them or if they fight to the death, try to bargain, etc. Players inevitably fight to the bitter end when they should withdraw. Remind the players when they are low on HP that it might be wiser to run away. Running away is highly under-rated. In any event the monsters don’t have to follow the players beyond the entrance of the dungeon, making for a scary chase when you are low on HP.

If the players defeat the monsters they should be rewarded with treasures… Now what I am really suggesting here is not a give away, players have to earn these things, but in order to allow yourself and the players to get a sense of what the game is about it won’t hurt to be a little liberal with treasure starting out.

When you make your dungeon you can allocate monsters randomly by the tables, but if something is really nasty move it to the farthest point away from the entrance and put in references to it in the dungeon. Kobolds have scrawled on the wall “Go Back end of Kobold Territory”, or players might hear, “wait until ugly finds out” if the monsters are allied with whatever it is. As the GM, you have the decision to place monsters. I usually pick the worst one, and go random from there.


  • stick with the basics
  • know your combat sequence
  • know the dungeon
  • learn to improvise as you go along

Let the players clear the place out to give them a sense of accomplishment.

Improvisation is all about giving the monsters some personality. You can swipe references from film or novels. The players will know them. Juxtapositions are useful does the Orc leader behave and talk and sound like a film gangster? “Gimmie all your coins and I’ll let you go see…” Is one of the Orcs dumb and getting it wrong like one of the Three Stooges? He turns around a sets off a trap, a giant stone rolls through the middle of the room. Is one of them a coward like Ichabod Crane? Have fun with it.

Allow the players to make several trips to and from the dungeon as they may have to heal up before trying again. New players won’t complete this in one go. Compress the time takes, reset hit-points and spells, and carry on the story from that point so many days later. The tavern or village is a sanctuary where nothing should happen at this early juncture.

Some of their characters will be killed, that is part of the game. Re-rolling a character in the middle of the game is a pain for the rest of the players. It may be wise to have a spare on hand to hand out. I usually found that at the start of play, if players are rolling up characters that will eat up a good hour of the play session but it is absolutely essential to building the player-character relationship.

In short: Small dungeon, not big on plot, just players vs. monsters, hidden secrets, and traps. That’s how we did it. Just keep the action going if you can.

Players often go to the tavern to hire help. These non-player characters you play—or you can allow a player to role play one when their character is killed. Players will sometimes simply take over the non-player character for their own use.

When you describe something always have it end ambiguously, e.g. “When you hold your torch in the room you see that this is a 30 x 30 room with a stack of 10’ poles in the southwest corner. Nearby in the south wall there is a small round 2 inch hole in the stonework.” This sort of thing leaves all sorts of questions in the players minds, what are the poles for? Do we insert one in the hole, and if we do what might happen? Is it a trap? Nothing might happen, unless you find all of the other holes and put the poles in, then a secret room opens. Or the thing might set off a trap, release a monster, reward the players with treasure etc. Even when they fight orcs or goblins they might find a key when they are defeated and searched, what is it for? Always leave something open ended. Players will hang onto that key in the hopes it opens something long beyond when it may have been useful just because of the mystery.

– Greg MacKenzie

Greg MacKenzie also runs the website Busy Game Master.


July 06, 2014 05:45 PM

July 03, 2014

Alex Schroeder

Publishing a Setting

Gregor Vuga recently asked on Google+, “Is there a need for a new fantasy setting? What’s the appeal of published settings for you, if any? What’s useful about them? Even if you don’t use published settings, what would make you take a look at it?”

I said:

I wish all those new referees to have a great selection of settings, each catering to different sensibilities. As for myself, I already run a long-term campaign and thus I don’t really have a need for new settings. But what are the needs of beginners? Art, inspiration, fans, forums, so many things beyond the simple text.

If it’s a mini-campaign setting like Qelong, I can fit it into my campaign world (which is what I have done), just like adventures.

If the setting comes with a small package that can be played as a one-shot at a convention or at my indie nights, then that’s cool too. Things like Lady Blackbird, for example. That is, where rules, setting and adventure are so short, they’re one. All in one document to be experienced in three hours.

I document my long-term campaign setting as we play. It’s mostly for my players, though. Who else would want to read it? It’s too big, idiosyncratic, not enough illustration, not well organized… The campaign wiki has 489 pages. I don’t want to repeat the mistakes that so many others have made before me and publish a long and sprawling book that will not be read and used.

Thus, given how little need there is, what remains is inspiration for others, sharing ideas in order to have more ideas. What works and what doesn’t work. A conversation about the setting. I guess that’s what I’m mostly interested in.

Tags: RSS

July 03, 2014 04:23 PM

July 02, 2014

Alex Schroeder

Darkening Skies

The other day we played Darkening Skies, an unofficial Lady Blackbird sequel. It went very well. My prep was minimal (a few minutes at most), the rules were easy to understand, the setting quick to get into. Rules, plot and setting borrow so heavily from current sensibilities, it’s incredibly easy to digest. Everybody at the table sees within the material the things they like: Firefly, Star Wars, The City of Lost Children, Solar System, Apocalypse World, Fate, Mouse Guard, it can all be there if you start looking for it.

One thing to look out for is the additional freedoms built into the setup. Lady Blackbird had characters with diverging goals, but they were all going to a particular destination on a ship. So even if the stories diverged on the way, characters always returned to the ship an proceeded on to the next chapter. In Darkening Skies, the characters all have a reason to come to the ship, but they have different reasons for leaving the ship.

As soon as Jezebel had found her target, for example, she was ready to leave the ship. After contacting all the factions on board, the remaining party soon decided that they needed to split up. Half of them were going to blow up the bridge while the other half was going to find a lander. The bridge fight was going very, very badly. The two characters ended up “presumed dead”.

Should I run it again, I’ll have to push harder in order for the party to feel the need to stick together. Perhaps I was to lax in the beginning and when players realized how deep the shit was they were getting themselves into, it was too late. No more refreshment scenes, no more helping dice, no more group efforts. I think players where surprised to see this happy Hackbird go into survival horror mode.

I loved it, 4/5 stars.

★ ★ ★ ★ ☆


July 02, 2014 08:20 AM

July 01, 2014

Alex Schroeder

Oddmuse Setup Using Makefiles

Here’s how I do it:

My home directory contains two directories for every site. One directory is the document root for the site, and other directory is the data directory for the wiki. Thus, you’ll see (includes and alexschroeder (the wiki data directory which isn’t published via the web server).

The home directory has a clone of the Oddmuse sources in ~/src/oddmuse and a Makefile as follows:

	rm -rf ~/src/oddmuse/build; \
	cd ~/src/oddmuse; \
	git pull; \
	make prepare;

	cd; make
	cd alexschroeder/modules; make
	cd; make
	cd communitywiki/modules; make

Remember that those commands are all indented using a TAB.

The command make prepare prepares a copy of all the Oddmuse sources with version information in the ~/src/oddmuse/build directory.

In every document root you’ll find another Makefile containing a wrapper script as follows:

package OddMuse;
$DataDir = '/home/alex/alexschroeder';
do '';

It also contains a Makefile which will update The Makefile usually also does a bunch of other, site-specific things. Update CSS files, update other scripts, and so on. ~/src/oddmuse/build/
	cp $< $@

Every modules directory also contains a Makefile. These Makefiles are all just linked because these are always identical: source/*.pl
	cat $^ > $@

source/ ~/src/oddmuse/build/
	cp $< $@

This is a bit weird. Years ago, I believed that concatenating all those module files would speed up the wiki. Who knows whether that’s true. I never measured it.

Anyway, you copy all the modules you want into the source directory and run make in the modules directory. This will update any outdated copies in the source directory and concatenate them all into one single file called If you want to delete modules or add new modules, delete and run make again.

So, at the top level, I can run make && make install. This pulls the new revisions from git, runs make prepare which populates the build directory with all the version information in the source files. The new script replaces existing copies of and the new modules get copied to the source directories, all of the modules are concatenated into a single file for the modules directory.


Well, it makes life easier for people maintaining multiple Oddmuse wikis.

Tags: RSS

July 01, 2014 02:52 PM

June 30, 2014

Alex Schroeder


I recently saw Mapping the Dungeon on the Aeons & Auguries blog, where the author argues that mapping is a great annoyance to players, which makes it a drag to run megadungeons, and one of the solutions is the referee showing sketches to the players. The point is illustrated by accurately describing a non-trivial room in words.

In my mind, showing sketches is tantamount to the referee mapping for players. As a player, however, I love mapping, and I love inaccurate mapping. Mistakes made and their dire consequences are part of what make the game exciting. When my characters are lost, I like it when we as players feel lost, too. “The map is wroooong!”

At the same time, I think that describing rooms doesn’t have to be such a problem.

  1. Don’t use non-trivial layouts.
  2. If the map shows a non-trivial room, describe it in terms of decisions to make. To take the room from the Aeons & Auguries blog: Three doors, a fountain and a statue. That’s it.
    1. You came in through a door on the west.
    2. There’s a door to your right, going south. (Notice how I’m providing some redundancy, here.)
    3. There’s “an overflowing gurgling fountain filling most of the area with a puddle of water”, also to your left, next to the door. (Link new info to info you just gave.)
    4. There’s a door straight on, going further east.
    5. There’s “a short run of stairs across from you” leading to “a nook which seems to hold a statue”, in the eastern wall.
  3. Wave your hands while you describe things. Ahead. To your left. Up some stairs. A puddle of water. Hands in motion, head turning, eyes tracking your hands, that’s how I do it.
  4. Who cares about the exact layout? Your players will only care if past experience has taught them to care. Don’t train your players to care about the boring stuff. That’s how I see it.

What do you think?

Related: 2013-02-15 Players Mapping

June 30, 2014 09:39 AM

June 29, 2014

Alex Schroeder

Welcome to the New Server

Welcome to the new server! I’ve moved from @sagonetworks to @edisat, an Austrian company that also offers servers in Zurich. Good for me, not so good for people in the US, I guess. Does the site feel sluggish to you? Leave a comment and say Hi. Also, let us know from where you’re connecting. 😊


June 29, 2014 02:38 PM

New Hosting Sometime Soon

Last year, I wondered about webhosting in Switzerland. Today @sagonetworks had another outage and I think I’m going to move my wikis to @edisat. This will take a few days, but I’ve already started the process. Moving data. Setting up the system. When the time comes, I’ll be locking all the wikis on the old host, change the DNS entries and as soon as you get the update, the wiki will be editable again because you’ll be connecting to the new system.

Note the outage in the graphic to the right, and the tapering out of requests as the new DNS entries start sending traffic to the new host. I love my Monitoring. 👍

The new host is called Kallobombus.


June 29, 2014 02:34 PM

June 26, 2014

Alex Schroeder

Encrypting Mail using Gnus on OSX

Today I learned…

  1. If you want to use GPG, and you’re on OSX, pinentry will not work. You need a graphical pinentry tool. Your best bet is GPG Tools which is linked from the GnuPG website. You get Mail and Keychain integration for free, which I don’t really care about at the moment, and you get all the command line tools. Thus when I ran gpg in eshell just now, I was asked for my passphrase.
  2. If you want Emacs to know about your gpg-agent, you need to tell it about the PID and the temporary file and all that. My solution is Emacs-only. There’s probably a better way to do this such that you can use GPG from elsewhere as well. See the code snippet below.
  3. If you use Gnus to send mail, you cannot read the encrypted mails unless you set a mysterious variable. See the code snippet below.

First, how to run gpg-agent from your init file:

(setenv "GPG_AGENT_INFO"
	  (shell-command "/usr/local/bin/gpg-agent --daemon" (current-buffer))
	  (goto-char (point-min))
	  (when (re-search-forward "GPG_AGENT_INFO=\\([^;\n]+\\)" nil t)
	    (match-string 1))))
;; (getenv "GPG_AGENT_INFO")

How to make sure that mails are always encrypted to you, too:

(setq mml2015-encrypt-to-self t
      mml2015-signers '("353AEFEF"))

There you go.

The alternative to mml2015-signers would be to set mml2015-sign-with-sender to t, I guess.


June 26, 2014 10:20 AM

June 24, 2014

Alex Schroeder

Emacs and Dice

Recently, somebody asked on Google+:

If I roll one of the five standard gaming dice (d4, d6, d8, d10, d12) and you also roll one of those, what are my chances of rolling higher, equal or lower than you, for each possible combination of dice.

I decided to write a little program to simply count it since I was unable to figure it out by thinking it through.

Update: Now that I’ve looked at the data, the formula is obvious. Assume x is the lower die:

x winning `(x(x-1))/2/(xy) = (x-1)/(2y)`
tie `x/(xy) = 1/y`
y winning `((x(x-1))/2 + x(y-x))/(xy) = 1 - ((x+1)/(2y))`
(dolist (die-1 '(4 6 8 10 12))
  (dolist (die-2 '(4 6 8 10 12))
    (unless (< die-2 die-1)
      (let ((a 0) (b 0) (n 0))
	(insert (format "d%d vs. d%d" die-1 die-2))
	(insert "     ")
	(dotimes (roll-1 die-1)
	  (insert (format " %4d" (1+ roll-1))))
	(dotimes (roll-2 die-2)
	  (insert (format " %4d" (1+ roll-2)))
	  (dotimes (roll-1 die-1)
	    (insert "    "
		    (cond ((> roll-1 roll-2)
			   (incf a)
			  ((= roll-1 roll-2)
			   (incf n)
			   (incf b)
	(let ((total (+ a b n)))
	  (insert (format "A: %d / %d = %4.3f\n" a total (/ a 1.0 total)))
	  (insert (format "B: %d / %d = %4.3f\n" b total (/ b 1.0 total)))
	  (insert (format "-: %d / %d = %4.3f\n" n total (/ n 1.0 total))))

d4 vs. d4

         1    2    3    4
    1    -    A    A    A
    2    B    -    A    A
    3    B    B    -    A
    4    B    B    B    -

A: 6 / 16 = 0.375
B: 6 / 16 = 0.375
-: 4 / 16 = 0.250

d4 vs. d6

         1    2    3    4
    1    -    A    A    A
    2    B    -    A    A
    3    B    B    -    A
    4    B    B    B    -
    5    B    B    B    B
    6    B    B    B    B

A: 6 / 24 = 0.250
B: 14 / 24 = 0.583
-: 4 / 24 = 0.167

d4 vs. d8

         1    2    3    4
    1    -    A    A    A
    2    B    -    A    A
    3    B    B    -    A
    4    B    B    B    -
    5    B    B    B    B
    6    B    B    B    B
    7    B    B    B    B
    8    B    B    B    B

A: 6 / 32 = 0.188
B: 22 / 32 = 0.688
-: 4 / 32 = 0.125

d4 vs. d10

         1    2    3    4
    1    -    A    A    A
    2    B    -    A    A
    3    B    B    -    A
    4    B    B    B    -
    5    B    B    B    B
    6    B    B    B    B
    7    B    B    B    B
    8    B    B    B    B
    9    B    B    B    B
   10    B    B    B    B

A: 6 / 40 = 0.150
B: 30 / 40 = 0.750
-: 4 / 40 = 0.100

d4 vs. d12

         1    2    3    4
    1    -    A    A    A
    2    B    -    A    A
    3    B    B    -    A
    4    B    B    B    -
    5    B    B    B    B
    6    B    B    B    B
    7    B    B    B    B
    8    B    B    B    B
    9    B    B    B    B
   10    B    B    B    B
   11    B    B    B    B
   12    B    B    B    B

A: 6 / 48 = 0.125
B: 38 / 48 = 0.792
-: 4 / 48 = 0.083

d6 vs. d6

         1    2    3    4    5    6
    1    -    A    A    A    A    A
    2    B    -    A    A    A    A
    3    B    B    -    A    A    A
    4    B    B    B    -    A    A
    5    B    B    B    B    -    A
    6    B    B    B    B    B    -

A: 15 / 36 = 0.417
B: 15 / 36 = 0.417
-: 6 / 36 = 0.167

d6 vs. d8

         1    2    3    4    5    6
    1    -    A    A    A    A    A
    2    B    -    A    A    A    A
    3    B    B    -    A    A    A
    4    B    B    B    -    A    A
    5    B    B    B    B    -    A
    6    B    B    B    B    B    -
    7    B    B    B    B    B    B
    8    B    B    B    B    B    B

A: 15 / 48 = 0.312
B: 27 / 48 = 0.562
-: 6 / 48 = 0.125

d6 vs. d10

         1    2    3    4    5    6
    1    -    A    A    A    A    A
    2    B    -    A    A    A    A
    3    B    B    -    A    A    A
    4    B    B    B    -    A    A
    5    B    B    B    B    -    A
    6    B    B    B    B    B    -
    7    B    B    B    B    B    B
    8    B    B    B    B    B    B
    9    B    B    B    B    B    B
   10    B    B    B    B    B    B

A: 15 / 60 = 0.250
B: 39 / 60 = 0.650
-: 6 / 60 = 0.100

d6 vs. d12

         1    2    3    4    5    6
    1    -    A    A    A    A    A
    2    B    -    A    A    A    A
    3    B    B    -    A    A    A
    4    B    B    B    -    A    A
    5    B    B    B    B    -    A
    6    B    B    B    B    B    -
    7    B    B    B    B    B    B
    8    B    B    B    B    B    B
    9    B    B    B    B    B    B
   10    B    B    B    B    B    B
   11    B    B    B    B    B    B
   12    B    B    B    B    B    B

A: 15 / 72 = 0.208
B: 51 / 72 = 0.708
-: 6 / 72 = 0.083

d8 vs. d8

         1    2    3    4    5    6    7    8
    1    -    A    A    A    A    A    A    A
    2    B    -    A    A    A    A    A    A
    3    B    B    -    A    A    A    A    A
    4    B    B    B    -    A    A    A    A
    5    B    B    B    B    -    A    A    A
    6    B    B    B    B    B    -    A    A
    7    B    B    B    B    B    B    -    A
    8    B    B    B    B    B    B    B    -

A: 28 / 64 = 0.438
B: 28 / 64 = 0.438
-: 8 / 64 = 0.125

d8 vs. d10

         1    2    3    4    5    6    7    8
    1    -    A    A    A    A    A    A    A
    2    B    -    A    A    A    A    A    A
    3    B    B    -    A    A    A    A    A
    4    B    B    B    -    A    A    A    A
    5    B    B    B    B    -    A    A    A
    6    B    B    B    B    B    -    A    A
    7    B    B    B    B    B    B    -    A
    8    B    B    B    B    B    B    B    -
    9    B    B    B    B    B    B    B    B
   10    B    B    B    B    B    B    B    B

A: 28 / 80 = 0.350
B: 44 / 80 = 0.550
-: 8 / 80 = 0.100

d8 vs. d12

         1    2    3    4    5    6    7    8
    1    -    A    A    A    A    A    A    A
    2    B    -    A    A    A    A    A    A
    3    B    B    -    A    A    A    A    A
    4    B    B    B    -    A    A    A    A
    5    B    B    B    B    -    A    A    A
    6    B    B    B    B    B    -    A    A
    7    B    B    B    B    B    B    -    A
    8    B    B    B    B    B    B    B    -
    9    B    B    B    B    B    B    B    B
   10    B    B    B    B    B    B    B    B
   11    B    B    B    B    B    B    B    B
   12    B    B    B    B    B    B    B    B

A: 28 / 96 = 0.292
B: 60 / 96 = 0.625
-: 8 / 96 = 0.083

d10 vs. d10

         1    2    3    4    5    6    7    8    9   10
    1    -    A    A    A    A    A    A    A    A    A
    2    B    -    A    A    A    A    A    A    A    A
    3    B    B    -    A    A    A    A    A    A    A
    4    B    B    B    -    A    A    A    A    A    A
    5    B    B    B    B    -    A    A    A    A    A
    6    B    B    B    B    B    -    A    A    A    A
    7    B    B    B    B    B    B    -    A    A    A
    8    B    B    B    B    B    B    B    -    A    A
    9    B    B    B    B    B    B    B    B    -    A
   10    B    B    B    B    B    B    B    B    B    -

A: 45 / 100 = 0.450
B: 45 / 100 = 0.450
-: 10 / 100 = 0.100

d10 vs. d12

         1    2    3    4    5    6    7    8    9   10
    1    -    A    A    A    A    A    A    A    A    A
    2    B    -    A    A    A    A    A    A    A    A
    3    B    B    -    A    A    A    A    A    A    A
    4    B    B    B    -    A    A    A    A    A    A
    5    B    B    B    B    -    A    A    A    A    A
    6    B    B    B    B    B    -    A    A    A    A
    7    B    B    B    B    B    B    -    A    A    A
    8    B    B    B    B    B    B    B    -    A    A
    9    B    B    B    B    B    B    B    B    -    A
   10    B    B    B    B    B    B    B    B    B    -
   11    B    B    B    B    B    B    B    B    B    B
   12    B    B    B    B    B    B    B    B    B    B

A: 45 / 120 = 0.375
B: 65 / 120 = 0.542
-: 10 / 120 = 0.083

d12 vs. d12

         1    2    3    4    5    6    7    8    9   10   11   12
    1    -    A    A    A    A    A    A    A    A    A    A    A
    2    B    -    A    A    A    A    A    A    A    A    A    A
    3    B    B    -    A    A    A    A    A    A    A    A    A
    4    B    B    B    -    A    A    A    A    A    A    A    A
    5    B    B    B    B    -    A    A    A    A    A    A    A
    6    B    B    B    B    B    -    A    A    A    A    A    A
    7    B    B    B    B    B    B    -    A    A    A    A    A
    8    B    B    B    B    B    B    B    -    A    A    A    A
    9    B    B    B    B    B    B    B    B    -    A    A    A
   10    B    B    B    B    B    B    B    B    B    -    A    A
   11    B    B    B    B    B    B    B    B    B    B    -    A
   12    B    B    B    B    B    B    B    B    B    B    B    -

A: 66 / 144 = 0.458
B: 66 / 144 = 0.458
-: 12 / 144 = 0.083


June 24, 2014 02:49 PM


Instead of writing a ton of tables I find myself wasting time. It’s sad.

  1. I waste time reading a ton of posts on Google+.
  2. I waste time fiddling with software used to run wikis.
  3. I waste time writing posts on said wikis.
  4. I waste time writing posts on said wikis complaining about writing posts on said wikis…

What I should be doing instead:

Write a ton of tables.

Pearce Shea recently posted Storing Information, Playing Information, Dungeons on his blog. The part that stuck with me as far as setting description and session prep is this:

  1. “maps and keys are facts about the game world” – this is the static information you base your game on
  2. “tables and charts describe […] possible facts” — this is where the referee gets to also play the game

Another interesting was this: “As a GM, I don’t want to run the kind of dungeon we discover together, because of things like stakes, and fairness and me not being amazingly good. As a player, I really, really, don’t want to explore a dungeon we discover together with the GM, for all those reasons and more.” I thought of my need to believe in the independent existence of imaginary worlds.

On the whole, Pearce’s article is confusing and now that I went back to it, I had trouble finding the passages I thought I had read. At the same time, the article set something off. An urgency to write down the relevant facts about the game world, right now. An urgency to write tables for actual use. Think about the possible non-player characters, monsters, items, buildings, and so on. My problem is that I’m a visual person and I close my eyes and I see a vista of where the game is going and think to myself: “That’s cool!” But it’s not, not yet. It needs more.

The techniques to be used against improvising the entire adventure or railroading the party through the vision I had earlier that day:

  1. map
  2. key
  3. lists
    1. lists of monsters looking for a fight, random wandering monsters
    2. lists of people with names and jobs and interests and friends and enemies
    3. lists of things to see and do, these also provide topics to talk about
    4. lists of valuables to find and trade
    5. lists of spells for spell books
    6. lists of treasures in the area

OK. This is going to be my goal for tonight.

Tags: RSS

June 24, 2014 10:36 AM

June 23, 2014

Alex Schroeder

Recalling the Eighties

Are people recalling the eighties with a particular fervor? I don’t think so. And yet, they seem to be everywhere—and I have an unscientific hypothesis as to why.

I think our culture has the unique ability to recall cultural artifacts produced in the past that are not books: movies, pictures, fashion, and they are all integrated. You can be interested in Bond movies, in the Soma FM secret agent sound track, in cocktail drinks, bikinis and British cars—and the James Bond RPG. And you could talk about it online with strangers. Without the digital world that surrounds us, that would be hard to do.

I think the generation of our parents had much less to choose from. My dad could read and go to classical concerts and opera. My grandfather only had his job, his friends, fellow veterans. They could talk about it less, they had fewer people to share it with, and perhaps less freedom from financial troubles than we have.

Thus, I don’t think that we today have a particular interest in the 80s and 90s. Every generation that comes after us will have an interest in the various cultural periods that came before them. It’s just that we’re living so close to the digital divide that the 80s are the only thing we have access to on a massive scale.

To pick a different example: I am interested in Ancient Greece. What is there beyond a few books? Movies from the seventies onwards. Music? None. Fashion? Hell if I know. Paintings? A few murals. I’m stuck with a visit to the Pergamon altar and the Ishtar gate in Berlin once every twenty years. Compare that to the staggering amount of movies, pictures, hair styles, video clips, and all the other cultural artifacts the eighties left behind—accessible online.

Tags: RSS

June 23, 2014 09:05 AM

Oddmuse Migration

Recent developments of Oddmuse forced me to write a little upgrade extension that helps users upgrade their installations. I’m unhappy with the entire thing.

Yes, I think upgrades are sometimes necessary. Ideally, users would never need to care. Additionally, users should never have to worry about installing all the upgrades they missed, in order. The usual way of doing this involves an installer. That’s tricky, too! What about permissions? Idiosyncratic installations? It’s messy.

What I did was write an extension that disables itself once it has run. This makes sure it has the same user, group, and permissions as the wiki itself.

And yet, I just discovered that something isn’t right with my permissions and ownership settings. I’ve had to run my fix-data-dir-permissions script again. The setup involves my account (alex) and the account that runs CGI scrips (www-data). Thus, the files and directories must belong to www-data and to the group alex. I am also part of group alex, which is why I will have write permissions for new files even though www-data creates them.


if test "$1" == "-n"; then
    echo Not executing

if test -z "$1"; then
    F=`basename $0`
    echo Usage: $F [-n] DATADIR
    exit 1

if test ! -d "$1"; then
    echo You need to provide an existing directory
    exit 2

echo fixing directory permissions for `pwd`/$1
find $1 -type d -not -perm 2770 -exec $ECHO sudo chmod 2770 {} \;
echo fixing file permissions
find $1 -type f -not -perm 0660 -exec $ECHO sudo chmod 0660 {} \;
echo fixing ownership
find $1 \( -not -group alex -or -not -user www-data \) -exec $ECHO sudo chown www-data.alex {} \;

Tags: RSS

June 23, 2014 08:42 AM

June 20, 2014

Alex Schroeder

Rewarding a Thing

Recently Ian Borchardt wondered on Google+, what people thought of basing experience gains off of class. He was thinking of fighters gaining experience fighting, magic users gaining experience learning spells, and so on. Ian was interested in applying this to D&D solo play. I think the topic bears a wider discussion, however.

I see two things to consider. How will this rule affect gameplay at the table? How will this rule affect what characters do in the game world?

I remember playing Burning Wheel and related games from Burning Wheel Headquarters. These games usually tie advancement to successes and failures in tests. Therefore, every test you make takes a tiny bit of bookkeeping. How difficult was the test? Did I succeed or fail? Jot it down. That’s too much bookkeeping for my taste.

In the games of The Shadow of Yesterday, Solar System or Lady Blackbird, characters have at least one Key. Each key describes a very individual way of gaining experience.

Example Key from Lady Blackbird:

Key of the Paragon
As a noble, you’re a cut above the common man. Hit your key when you demonstrate your superiority or when your noble traits overcome a problem. Buyoff: Disown your noble heritage.

Each key also has a buyoff. If the buyoff condition occurs, you have the option of removing the Key and earning two advances, which you can use to buy another Key or two.

Whenever I ran or played these games I liked this mechanic because it gave players the choice to pick whichever Key they desired, implicitly telling the GM what they wanted the game to be about.

As players get to select the Keys and they get to change them as part of their advancement, Keys can be more fine-grained than just the character’s class, and yet they don’t require as much bookkeeping as Burning Wheel and all those games because not every roll of the die needs record keeping. Players actively try to trigger their Key, and when it happens, they mark it off. Easy.

It is pretty free form, however. As the referee of such a game, you should have a list of Keys prepared that serves as an implicit indication of where you see the game going. By agreeing on a set of Keys beforehand, referee and players can make sure that the Keys stay within the kind of game they want play. It doesn’t have to be an anything goes kind of game.

Mazes & Minotaurs has the kind of experience system that Ian Borchardt was suggesting. I’ve never tried it, it seemed reasonable on paper, but I had trouble imagining it at the table. After every encounter, the fighter player speaks up and says, “that was worth 3 XP for me, right?” The mage player loots the lab and says, “two new scrolls found, 2 XP?” If it happens a lot, it could be a lot like the bookkeeping after every test in the Burning Wheel Headquarters games. If it happens rarely, it could be like a permanent Key in Lady Blackbird.

Then again, something I like in role-playing games is changing gameplay over time. It seems to me that making this Key basically permanent prevents this to some extent.

In a D&D game with dungeons and wilderness adventures I’d say that rewards based on class lead to a kind of reinforcement that I don’t like. Fighters will want to fight monsters that don’t need fighting, thieves will want to steal from people we don’t want to steal from, etc.

To elaborate – and this goes for solo as well as party play – I think that doing a thing should not be rewarded. That’s going to go Pavlov quickly is what I’m guessing. What I want is players doing things in order to get a reward, in other words, they are doing something else in order to get a reward. The action and the reward should be orthogonal. Fighters fight in order to get treasure. Wizards cast spells in order to get treasure. This is how they get to choose their approach, quietly or forcefully, quickly or slowly, talking or fighting, and so on. It allows for more ingenuity in my book.

Anyway, this is what I expect to happen without actually having tried it, and only based on my D&D 3.5 experience. There, fighting monsters granted most of the XP. Avoiding a fight and going about the mission quietly was always an uphill mental battle. It was going against the

affordance of the rules. The reward structure did not invite players to push harder, it invites players to optimize harder (since combat appears unavoidable, in a way, combat is the reward).


June 20, 2014 08:35 PM

June 17, 2014

Alex Schroeder


Yesterday I ran Tony Dowler’s Isotope for four friends. It’s a free game and your can download it from his Patreon page.

Isotope is a 4-page post-apocalyptic RPG. When I read it, it looked like a simpler Apocalypse World to me. Easier to create characters, none of the playbooks, moves, and all that extra. I was reminded of Vincent Baker’s 2011 blog post Concentric Game Design. There, Vincent says that Apocalypse World has 4 layers of rules. The first layer has a few stats and uses 2d6: “On a 10+, the best happens. On a 7-9, it’s good but complicated. On a miss, it’s never nothing, it’s always something worse.” That’s basically what Isotope does.

There are four classes, human, mutant, wolfling and troll. Assign -1, 0, 1 and 2 to the four classes, get some perks, mutations and some equipment, go. It has an optional list of character names. We played for about 2½h. After the game, players said that they really enjoyed character creation. It was short and the two pages of classes, names, mutations and equipment provided all the setting information they needed and just enough complexity to have them pondering their choices without getting bogged down.

The rules being so short we ran into two issues. One player really wondered about gaining levels and hit-points. You basically have between seven and twelve hit-points. Roll a d6 for every level you have and pick the highest result, add six. You optionally reroll whenever you get to eat, drink and sleep and you reroll when you gain a level. I think I get it but something about how this was worded confused one of us, as I said.

The thing that confused me was how combat works if a creature has multiple attacks. The way I see it, combat means rolling 2d6 and adding appropriate numbers. On a 10+, you deal damage as per weapon. On a 7-9, you deal damage and you take damage, I guess? Not sure about this one. On a miss, you take damage. But then the rules say that monsters should have one to three attacks. How does that work? Just triple damage? Wow! Perhaps I should check Apocalypse World or Dungeon World.

The sample adventure provided was interesting but light on stats. As I said in another blog post, I like to believe in the independent existence of my game world. This means that I don’t like improvising monsters, traps and rewards on the spot. If I do, I feel like it’s me against the players instead of me acting as the impartial referee between the game world and the players. Improvising in this context often means adjusting the difficulty, being tempted by an imaginary arc of excitement, reducing player agency.

⚠ Spoilers! ⚠

This is where I made a misake. I started with a few notes:

  • 1 bear, 4hp, AC 0, 3 Attacks, no trespassers
  • 4 mutants, 2hp, AC 1, 1 Attacks, giants, chainsaws, see invisible, wings
  • Grüber, 8hp, AC 0, 3 Attacks, sticky giant tentacles
  • 3 giant ants, 3 hp, AC 2, 1 Attack, acid fog envelops combat

As the game went on, I added more:

  • Orbyx, 6hp, AC 0, 4 Attacks, friendly, curious, hungry, psychic
  • 1 extradimensional shadow dragon, 12 hp, AC 0, 2d6 of non-euclidean space ruptures
  • 4 arachnoids, 3hp, AC 2, 1 Attack, poisonous, hungry

It was quick to do, no problem. It just felt a bit weird to write these things down on the fly.

Figuring out which rooms contained useful loot was a similar problem. Was the big loot in the flooded room at the bottom? If so, what did it contain? What would be the big reward for successfully launching the rocket? Should I run it again, I would have to better prepare a few end scenarios so that I can push players towards one of these endings with appropriate closure as time starts running out. As it stands, the end was a bit flat.

So, next time: More prep!

As far as plot goes: the party got split towards the end. One managed to have the shadow dragon open the sarcophagus and so the character went exploring and found some valuable power tools to sell. The other characters found the map room and managed to set the intercontinental missile targeting system on a few cities by accident, but I decided that more was required to actually launch the rocket. We didn’t have the time, however, so we broke off saying that the delvers camping around the titan sarcophagus had finally caught up to what was happening and would start exploring the structure soon enough. The power tools where the only loot recovered.

We spent half an hour after the game talking about it, comparing it to Apocalypse World (which was deemed longer and harder to get into for little benefit), Lady Blackbird (which was deemed to promise better character development via keys and locked tags) and Traveller (which was deemed to similar in that character development basically meant the accumulation of gear and allies instead of powers).

I said I’d run a Lady Blackbird hack in two weeks time. Perhaps The Bugs of Venus? Then again, I like the original Lady Blackbird characters, I like the romantic angle, and I don’t have much experience in the military fiction genre, didn’t like Starship Troopers too much, don’t know whether I can recreate the Alien feel… We’ll see!


June 17, 2014 09:51 AM

June 12, 2014

Alex Schroeder

Blog to Book

Closet Cases was Patrick Stuart’s recent blog post about bloggers producing a best-of PDF, and possibly a physical book via print on demand. He has done it for his own blog, A False Machine. I guess it was available for free when I got it. I agree with many of his points. Books are read differently from blogs. I take my time. I’m not skimming but exploring, drinking the words. It works for A False Machine because in the end it is a collection of weird essays, inspiring, with a touch of Beat Culture.

Would it work for my blog, though? Sometimes, in my efforts not to ramble, I feel that the result would be not be enjoyable to read in the long term. Perhaps a some of the “summary” pages on this site are all that is required? The Swiss Referee Style Manual would be a good place to start. How I Roll was supposed to be a “best of” collection talking about the gaming I enjoy. What about the German pages, though? There are fewer posts in the RSP category, and fewer long essays like Spielertyp. I probably need to keep these two separate even though I am both.

I think I’d write differently for a book. Aiming for that Zen Slap.

It would involve a lot of rewriting. I wonder. Perhaps I should simply write the text I’d want to read in a book? Then again, I read so much online and so little in books.

The issue remains unresolved. I have some free time in the upcoming weeks. We’ll see whether this idea gathers traction.

Tags: RSS

June 12, 2014 10:39 PM

June 07, 2014

Alex Schroeder

Craula Besh und die Katabasis

Den Craula Besh Blog habe ich schon einmal in einem Kommentar empfohlen.

Super Serie zum Thema Hellenismus im Rollenspiel: Teil 1, Teil 2, Teil 3, Teil 4

Vor kurzem hat der Autor nun seine Tunnels & Trolls Regelvariante mit hellenistischem Hintergrund und seiner systemneutraler Einführung zu einem PDF zusammengefasst und stellt dieses als Tunnels & Trolls: Katabasis kostenfrei zur Verfügung. Schon nur die zwei Seiten des Kapitels “Die Unterwelt” sind es wert, gelesen zu werden. Auch die “Anhänge und schmückendes Beiwerk” kann ich samt und sonders empfehlen. Selbst eine kleine Sammlung von griechischen Floskeln – natürlich passend zum Leben eines Grabräubers – gibt es. Wer darüber nachdenkt, seiner Kampagne einen griechischen Anstrich zu geben, wer in der Antike spielen will, wer Mazes & Monsters cool findet, der sollte sollte sich dieses PDF mal anschauen. Ich empfehle wie gesagt vor allem Anfang und Ende des Dokumentes; wer allerdings selber T&T Spieler ist, der muss nicht lange überlegen!

star star star star star


June 07, 2014 08:13 PM

June 04, 2014

Alex Schroeder

Net Neutrality

The United States of America are trying to nail their feet to the ground when it comes to the Internet. And knowing their power and influence, and their spying and blackmailing, I wouldn’t be surprised if their ideas start spreading elsewhere. That’s the unfortunate reality of life on the Internet: I feel like I need to pay $10/month to the EFF and $10/month to the FSF in order for them to fight for their rights such that their problems don’t spread to where I live. Globalising the fight for our right!

If you don’t know what I’m talking about, here are two recommended and entertaining videos to explain it all.

If you’re American, you can tell them how you feel. Or, according to FCC Establishes New Inbox for Open Internet Comments, you can send them email:

Here’s what I sent, even though I am not an American:

Dear FCC,

Net neutrality, the principle that Internet service providers (ISPs) treat all data that travels over their networks equally, is important to me because without it users have fewer options. ISPs should not be the gate keepers to what we do on the Internet. As it stands, there is also precious little competition between providers. If I don’t like my service provider, what am I going to do? I cannot take my business elsewhere.

A pay-­to-play Internet worries me because new services cannot compete. There is no such thing as a video startup with slow download speeds. We’re automatically favoring existing businesses and making life hard for future entrepreneurs and startups. And we gain nothing in return!

The Internet has the unique ability to make all of us authors. We can read and write, share and consume. By making a fast service more expensive, we’ll be limiting good quality to commercial ventures. We also want non-commercial projects to succeed. We want to download free software, for example. We want to watch our own videos, hosted on our own servers. We don’t want an Internet Apartheid. That is not the “freedom” I want.

Help us make the Internet into the thing almost all of us want, not into the Internet the ISPs want.


Alex Schroeder


June 04, 2014 11:37 AM

Homebrew, GitHub

A reminder for my future self: When fixing something in /usr/local (which is the domain of Homebrew, just commit it, and then:

git push

Commits will show up in my Homebrew fork and I’ll be able to create a pull request from there. Such as this one.

Also, as noted in the pull request: “For future reference the preferred commit message format for simple version updates is libcaca 0.99b19.”

You are welcome, future me.

Also, I managed to make a mess of merges, consecutive commits, pushed and all, and now I’m confused. Aaargh!


June 04, 2014 10:02 AM

June 03, 2014

Alex Schroeder


Indie Spielabend in ein paar Stunden – was soll ich leiten? Eigentlich würden mich Ryuutama reizen, aber da ist die richtige Anleitung noch nicht draussen. Tenra Bansho Zero wäre auch cool, aber die Bücher sind so dick und ich habe so wenig davon gelesen. Ein klarer Fall von Spielleitermimimimimimimi! Dabei habe ich doch extra hierfür mein Games on Demand Menü vorbereitet, an dem ich mich orientieren will. Die Idee war, dass mir damit die Auswahl einfacher fällt und ich mir durch die Einschränkung auch eine Art von Systemgewandtheit aneigne und nicht jedes mal wieder bei Null beginne. Also… Ein Lady Blackbird Hack mit einem anderen Szenario? Ich merke schon meine Konzentrationsschwäche: Ich würde ja soooo gerne etwas neues spielen. Oder ich packe mein Geist Mesopotamiens aus, also Fate. Vielleicht kann ich das Spiel ja cool machen, obwohl ich selber kein grosser Bennies Fan bin. Hm. Nun bräuchte ich nur noch ein Mesopotamisches Szenario. Oder ein Hellenistisches, um bei der Katabasis von Craula Besh zu bleiben.

Einfach zufällige Seiten in Die Karthager, Die klassische Welt, Der Peloponnesische Krieg, Hellenika oder Die schönsten Sagen des klassischen Altertums aufschlagen?

Mal schauen, was sich da ergibt:

  • Glaukos und Diomedes stellen sich vor und schliessen Freundschaft. Hm.
  • Athen und Sparta im Konflikt, Gesandschaft beim Perser Tiribazos, Geld des Grosskönigs, Konon, Teleutias… nicht schlecht
  • Flucht und Verurteilung des Alkibiades. Krieg in Sizilien. Versklavung von Dörfern. Hm.
  • Römischer Sold, Militärkasse, Sonderprämien… Nein.
  • Karthager in Sardinien, Organisation… Nein.

OK, es scheint, dass ich mich in die Tiribazos Geschichte einlesen werde, um daraus ein Abenteuer zu machen.


Diese Karte spiegelt den Stand am Vorabend des Krieges. Wir befinden uns allerdings im Jahre 392 v. Chr.

Ich verstehe die paar Seiten in der Xenophons Hellenika IV 8, 7–17 so:


Der Grosskönig Artaxerxes hat zwei Satrapen in Hellas: Pharnabazos unterstützt die Athener unter Konon gegen Sparta. Er ist im Moment nicht da. Tiribazos ist Satrap von Ionien und vertritt den Grosskönig im Moment. Das Treffen findet in Sardeis, der Residenz des Satrapen von Ionien, statt. Diese Fussnote hatte ich allerdings bei den Vorbereitungen übersehen und liess das Treffen in Korinthos stattfinden. Egal.

Als Sparta erfährt, dass Konon an Pharnabazos Sieg um Sieg erringt und dass der Grosskönig die Mauern von Athen wieder aufbauen lässt, wollen sie bei Tiribazos vorsprechen, auf dass dieser die Unterstützung der Athener unterlasse oder die Lakedaimonier gar gegen die Athener unterstütze. Antalkidas übernimmt diese Gesandtschaft. Weil kurz davor Herippidas erwähnt wurde, der eine Flotte der Lakedaimonier befehligt, habe ich ihn zur Nummer zwei der Gegner gemacht.

Als Athen von dieser Gesandtschaft erfährt, kommt Konon mit den Athenern Hermogenes, Dion, Kallisthenes und Kallimedon ebenfalls nach Sardeis, um einen Abfallen des Grosskönigs zu verhindern. Gesandte der befreundeten Städte von Argos und Korinthos kommen ebenfalls.

Das Spiel beginnt mit der Ankunft der Athener in Sardeis.


  • Begegnung mit Herippidas am Hafen. Wird der Spartaner provoziert oder angegriffen? Wird der Gesandte Antalkidas belästigt?
  • Ein Treffen mit den Verbündeten Gesandten aus Korinthos und Argos? Falls ja, müsste man noch ein paar Namen bereit halten, zum Beispiel Pasimelos, Proainos und Alkimenes.
  • Ein Treffen beim Baal Tempel im Quartier der Phönizier Diese sind Händler, welche grösstenteils unter der Herrschaft der Perser stehen. Hier könnte man Spartaner belauschen, welche von Tiribazos zwar nicht öffentlich unterstützt werden, denen aber Geld für den Aufbau einer grösseren Flotte versprochen wird. Im Gegenzug wollen sie dem Grosskönig die griechischen Städte in Kleinasien überlassen und nur die Unabhängigkeit der Inseln erhalten wissen. (Also dürfen sie auch den Athenern nicht in die Hände fallen.)
  • Eine Audienz im Palast des Tiribazos, wo die Athener sich weigern, auf die Vorschläge der Spartaner einzugehen, weil sie Angst haben, die Inseln Lemnos, Imbros und Skyros zu verlieren. Auch die Argeier weigern sich, weil sie Angst haben, Korinthos zu verlieren.
  • Im letzten Moment lässt Tiribazos den Konon gefangen nehmen und behauptet, dieser habe das Vertrauen des Grosskönigs missbraucht. Athen wolle den Friedensvertrag nicht unterzeichnen, erobere Inseln wieder zurück, sei ein Kriegstreiber, und so weiter. Dass dies mit Hilfe eines anderen Satrapen (Pharnabazos) geschehen war, interessiert ihn nicht.
  • Falls die Schiffe noch nicht gesunken sind, gibt es sicher eine Gelegenheit, dass eine der Parteien den Athenern nach segelt, und diese zu versenken versucht.
  • Falls die Athener herausgefunden haben, dass die Spartaner noch eine Menge Geld erhalten haben, könnte man auch den Spartanern nachsegeln, um das Silber zu klauen.


Weil wir nur drei Stunden Zeit hatten, wollte ich die Charaktere schon vorbereiten.


Feldherr, brütender Fatalist, grosser Redner, goldgierig, unermüdlich

4: Rhetorik, 3: Schild, Entschlosenheit; 2: Speer, Akrobatik, Kurzschwert; 1: Speerwurf, Athletik, Ringen, Handeln

Begabung: Rhetorik auch unter widrigsten Umständen; Ersatzfähikeit für andere: Rhetorik 3; Kästchen: Gesundheit +1

Gesundheit: ☐☐☐☐ Fassung: ☐☐☐☐ Vermögen: ☐☐


Hoplit, jähzornig, Töpfer, Nachkomme des Herakles, gesellig

4: Speer; 3: Schild, Athletik; 2: Muse, Speerwurf, Schild; 1: Akrobatik, Handeln, Mittel, Ringen

Bonusfertigkeit für andere: Schild +1; Zählerfertigkeit: Athletik statt Entschlossenheit; Kästchen: Gesundheit +1

Gesundheit: ☐☐☐☐☐ Fassung: ☐☐☐☐ Vermögen: ☐☐☐


Kapitän, zögerlich, berechnender Halunke, weit gereist, Zorn der Athena

4: Steuermann; 3: Bogen, Handeln; 2: Schild, Speer, Rhetorik; 1: Schiffsbau, Mittel, Mystik, Schleichen

Gegenstand: Trireme “Zorn der Athena”; Begabung: Handeln mit Feinden; Ersatzfähigkeit: Steuermann für Mystik 3 oder mit Schicksalspunkt für Mystik 4

Gesundheit: ☐☐ Fassung: ☐☐ Vermögen: ☐☐☐


Geschichtsschreiber, liebt seine Frau, Honigzunge, schnell wie der Blitz, Kindermörder

4: Rhetorik; 3: Kurzschwert, Schleichen; 2: Akrobatik, Überleben, Mystik; 1: Muse, Entschlossenheit, Reiten, Alchemie

Ersatzfertigkeit: Rhetorik für Muse 3 oder mit Schicksalspunkt für Muse 4; Kästchen: Gesundheit +1 Gegenstand: Kurzschwert des Baal namens “Kindermörder”

Gesundheit: ☐☐☐ Fassung: ☐☐☐ Vermögen: ☐☐


Tiribazos: Rhetorik 4, Schwert 3, Akrobatik 3 ☐☐☐

Antalkidas: Speer 4, Schild 3, ☐☐☐

Herippidas: Speer 3, Schild 2, ☐☐☐

Spartanischer Hoplit: Speer 2, Schild 2, ☐☐

Berater: Rhetorik 3, ☐☐

Tänzer, Flötenspieler: Verführung 2, ☐☐

Priester des Baals: Mystik 4, Dolch 2, ☐☐


(Zum Bearbeiten des Diagrams haben ich yUML verwendet:




June 03, 2014 08:03 AM

May 31, 2014

Alex Schroeder

One Page Dungeon Contest 2014

The One Page Dungeon Contest 2014 page has a link to all the PDF files.

The instructions I have seen to download all the files where these:

  1. Visit the folder view.
  2. Click the blue Add to Drive button.
  3. The button changes to an Open in Drive button. Click it again.
  4. Then click on the “1pdc-2014-entries-pdf” folder itself and see the little triangle.
  5. Click it and click on the Download… menu item.

If that doesn’t work for you (if you don’t have Google Drive, for example), you can also get the 1PDC 2014 zip file and all the individual entries from my Wuala account.


May 31, 2014 10:14 PM

May 22, 2014

Alex Schroeder

Stat Blocks

Random Wizard writes about the OSR Stat Block and mentions Semper Initiativus Unum’s OSR Compatible Logo. I myself use a slightly different notation.

I started wondering: Why is it unlikely that I will be adopting a different notation?

The most important issue is probably that I don’t care enough about other systems and I feel that it’s incredibly easy to move from one system to another. If I can run D&D 3.5 adventures using Labyrinth Lord converting stats on the fly, then I’m sure you can do a quick “19 minus descending armor class = ascending armor class” or a quick “19 minus HD = single saving throw”.

Another important issue is that I usually take notes for myself, so I’m used to my particular format. This format continues to evolve (in minuscule steps). Perhaps we can look to the tech world. The Tao of IETF (the Internet Engineering Task Force) is “rough consensus” and “running code”—and it would seem to me that we are close to rough consensus and we have a lot of actual experience running and writing adventures and monster collections. We’re just quibbling about the details.

Here’s how I feel the B1 stat block mentioned by Random Wizard compares to mine.

Random Wizard and B1: Orcs (1-4) – HP: 6, 4, 3, 1; #AT: 1; D: 1-6; AC 7/12; SA: None

Mine: 2d10 orcs HD 1 AC 7 1d6 F1 MV 12 ML 7 XP 5

  • I don’t like the ranges because simple ranges can be expressed using die notation (1–4 = 1d4) where as weird ranges take too much time to figure out (5-14 = 3d4+2).
  • I don’t like the sorted hit points. Do I randomize the list at the table? If so, I might just as well roll the hit points myself (which is what I do).
  • I usually don’t see the point of listing the number of attacks.
  • I like AC to be at the beginning because I’ll refer to it a lot (every time a player attacks).
  • I’m a big fan of morale. Morale scores are important.
  • I’m not much of a fan of movement, but I sometimes I still care. How many shots can you fire at a charging enemy? Who can outrun the werecamel?
  • I wouldn’t mind listing ascending and descending AC. The simple a/b notation is short and it doesn’t use parenthesis. I like it.
  • As a nitpicker, I don’t understand why AC doesn’t need a colon were as HP, #AT, D and SA need one.
  • For that matter, I don’t understand why Damage or Special Abilities need a label. Isn’t it obvious that the only range or die notation in the stat block must be damage and that the only plain text must be special abilities?
  • XP is optional, I agree (and often forget to list it in my prep notes).

Longer example which includes a name, multiple attacks and various special abilities.

Bel, Slayer of Men, HD 10 AC 2 -/3d6 ML 11 MV 9; flaming whip does no damage but on a hit it grants +4 on the hit with the flaming sword in the same round and on a 20 it disarms the opponent; flaming aura deals an extra 1d6 to everybody nearby; immune to non-magic weapons; immune to fire

Perhaps if more people posted their favorite monster notation and argued for their differences, we could start building said “rough consensus”.


May 22, 2014 08:50 AM

May 16, 2014

Alex Schroeder


Captain Phillips. I liked this movie about Somalian pirates and international waters.

The Hobbit parts 1 & 2. I could watch Jackson’s Middle Earth for days.

On May the Fourth I watched Star Wars Episodes 1–6.

Tracks. Makes me want to visit Australia.

Snowpiercer. Not so good.

Tempo Girl. Not so good. Includes an abortion.

Tags: RSS

May 16, 2014 08:05 PM

Firefox and DRM

I just sent the following email to Andreas Gal, following a call by the Free Software Foundation, FSF condemns partnership between Mozilla and Adobe to support Digital Restrictions Management. Gal is the Chief Technology Officer at Mozilla and wrote Reconciling Mozilla’s Mission and W3C EME. In my email I also mention Mitchell Baker’s blog post DRM and the Challenge of Serving Users. If you’re wondering what Iceweasel is: It’s a rebranded Firefox by the Debian Project.

I guess it’s fairly obvious where I stand. Free Culture! Maybe Cory Doctorow’s piece can serve as an introduction, Firefox’s adoption of closed-source DRM breaks my heart.

(I also fixed some typos in this copy.)

Subject: DRM
From: Alex Schroeder <>

Dear Mr. Gal

I recently learned of Mozilla’s decision to include DRM in their product. In the past, people have been switching from IE to Firefox. It was the obvious choice. These days people seem to be switching to Chrome. Apparently it is faster or whatever. I didn’t care very much, because I felt that Firefox was the obvious choice for users that valued their privacy and their freedom. None of my peers made the switch to Chrome because they wanted DRM. Those of us who stayed with Firefox, those of us who keep recommending Firefox to younger users, those of us who care about privacy and freedom, however—we might end up leaving. I’m not quite sure what I’ll choose instead. Perhaps it will simply be Iceweasel.

By choosing to cave in to the demands for DRM, Mozilla has become one of them instead of remaining one of us. It hurts! From what I’ve read online, Mozilla has tried to soften the blow, and I appreciate that. Nevertheless, DRM is a symbol of oppression instead of freedom. DRM is a symbol for disenfranchisement instead of empowerment. DRM is a symbol for big business streaming their content down to silent users instead of Remix Culture. Is this the future we want for ourselves? Even if a lot of people wanted this future, is this the future Mozilla wants? Instead, Mozilla could be the future it wanted to be. DRM takes away the rights we have as users and forces us to place our trust in companies that only think of our money. We must necessarily hope that in their mercy they will allow us to exercise our rights (Fair Use and similar regulations in other countries).

To illustrate this absurdity, I’d like to illustrate the situation here in Switzerland where I live. I have the explicit right to make copies of copyrighted works for myself and my close circle of friends and family. DRM prevents me from exercising this right. In order to exercise my right, I need to use software that removes DRM, and this is legal in Switzerland. Advertising for such software, however, is illegal. What were they thinking? I don’t know. All I know is that DRM is degrading. It tramples my rights and requires me to dabble with the Dark Side. That’s not the future I want to be!

All of the above doesn’t even touch the issues around Free Software and proprietary DRM blobs. Yuck!

I’m not sure if there’s a good way out of this situation. In Mitchell Baker’s blog post she said that each user “will be able to decide whether to activate the DRM implementation or to leave it off and not watch DRM-controlled content.” Perhaps a good first step would be simply distribute two versions of Firefox: Firefox and Firefox+DRM. The unfortunate symbol would still stand. The separation would have benefits, however: The separation would make sure that the separation remains a simple one on the source level. It would make life easier for people repackaging Firefox as totally free software. I’m thinking of Iceweasel, obviously. It would make it easier to ditch DRM later. It would assure us that the sandbox wasn’t even there if we didn’t want it. Less code to maintain, less code to review, less bugs to fix, for those of us that don’t care about DRM. It would also allow you to discover whether 30% of the traffic also corresponds to 30% of the users. Who knows whether that is true?

Anyway, I’m hoping to see Mozilla leave at least a foot and hopefully all of its feet in the free software camp. I’d love to see Mozilla take steps to make a change in course at a later date easy to implement. Pack the flexibility to change the stance on DRM into the source code, don’t just make it a setting.

Yours sincerely
Alex Schroeder


May 16, 2014 09:48 AM

May 15, 2014

Alex Schroeder


Tengu auf Wikipedia
Abb.: Karasu Tengu Statue, Wolfgang Michel
In meiner Runde kann man neue Klassen “frei spielen” in dem man sich mit Leuten dieser Klasse anfreundet. Ich verspreche dann jeweils, eine passende Klasse auf dem Kampagnenwiki bereit zu stellen. Im Moment wären das also Tengus. Ich gehe meistens wie folgt vor:
  1. Ähnlich wie welche Klasse: Kämpfer, Magier oder Dieb? Falls besonders widerstandsfähiger Krieger: Zwerg. Falls besonders widerstandsfähiger Dieb: Halbling. Falls besonders widerstandsfähiger Magier: Elf. Das bestimmt mal Erfahrungspunkte und Rettungswürfe.
  2. Dann bestimme ich die maximale Stufe. Meistens denke ich dann folgende Grenzen: Stufe 3 ist Anführer von einem Dutzend. Stufe 5 ist ein Dorfvorsteher. Stufe 7 ist ein Stellvertreter, ein Armeeführer. Stufe 9 ist ein Burgherr, ein Tempelvorsteher, ein Führer. Stufe 12 sind Warlords, mächtige Zauberer. Ab dann geht es Richtung epische Konflikte mit Göttern und Teufeln.
  3. Spezielle Fähigkeiten, die sich in etwa die Waage halten sollen.

Folgendes ist nun für die Tengus herausgekommen. Was meint ihr: Zu mächtig? Zu lahm?

Zu Beginn ist ein Tengu ein einfacher Krähenmensch.

Stufe XP TW
  • natürliche RK 6
  • gegen Gegner, die grösser als ein Mensch sind, verbessert sich der Rüstungschutz nochmals auf RK 4
  • darf keine Schilder und keine Rüstung tragen
  • kann fliegen
  • im Sturzflug (am Anfang des Kampfes) gibt es +1 auf den Nahkampfangriff (Angriff und Schaden)
  • kann mit Wald- und Bergtieren sprechen

Es gibt auch eine edlere Form von Tengus, deren Gesicht nicht so klar an Krähen erinnert. Diese Tengus haben andere Fähigkeiten. Mit dem Segen des Königs aller Tengus, dem heiligen Sōjōbō, kann ein Karasu-Tengu (ein Krähen-Tengu) sich in einen Dai-Tengu (einen Gross-Tengu) verwandeln lassen.

Stufe XP TW
  • natürliche RK 6
  • darf keine Schilder und keine Rüstung tragen
  • kann fliegen
  • im Sturzflug (am Anfang des Kampfes) gibt es +1 auf den Nahkampfangriff (Angriff und Schaden)
  • Ki-Ai 3×/Tag (doppelter Schaden bei einem Treffer, kumulierbar mit Sturzflug)
  • kann mit Wald- und Bergtieren sprechen
  • Polymorph 3×/Tag (Verwandlung in ein beliebiges Wesen, z.B. einen Drachen, der fliegen kann, aber ohne magische Fähigkeiten)
    • auf Stufe 6: mit den Agriffen 1W4/1W4/2W8 und RK 3
    • auf Stufe 7: mit den Agriffen 1W5/1W5/2W10 und RK 2
    • auf Stufe 8: mit den Agriffen 1W6/1W6/3W8 und RK 1
Rettungswurf 1–34–67–8
Drachenodem, Explosion 13107
Lähmung, Versteinerung 1086
Tod, Gift 864
Strahlen, Zauberstäbe 975
Zaubersprüche 12108

• ❦ •

Ähnliche Projekte:


May 15, 2014 12:57 PM

May 08, 2014

Alex Schroeder

The End of the World

A game idea about the First World War. We start with a simple variant without diplomacy. Every country produces a number of soldiers, and a number of guns. Every year you give orders, sending troops here or there. When armies meet, the weaker one falls back automatically until it reaches mountains, woods or a river. There it digs in, increasing its defense significantly.

Instead of moving, armies can dig in, further increasing their defensive advantage.

Losses are computed every year depending on the ratio of attacking and defensive power. Additionally, in winter, losses happen everywhere. Winter losses are grave for any army in foreign territory or any army that has recently moved.

I envision the game being about the decision to send millions to their grave. At the beginning there will e nice and colorful pictures of cavalry and breastplates and sabers. At end, there will be pictures of corpses and trenches and victims of poison gas.

The game will also be about making it hard to quit and about the hope of finding a breakthrough. As defense is always better than offense in these times, it will be an atrocious grind.

Once the basic game play stands, I would like to add details such as “taking Istanbul” (and the Dardanelles and Gallipoli) and theaters outside of Europe and add fleet combat.

More importantly I would like to write a “story generator” that takes these events and archive material and generates news reports and letters home and a rotation of generals and politicians to make it more immersive. There will be joy in reading about Armageddon.

Ideally every year will consist of one or two turns by the player and the game will end after six to ten turns. An ever increasing weariness of war will result in countries giving up and signing a separate peace.

The question will be—and I’d like the story generator to support this: what if? And then you try again and again. Go for Africa, first. Next time, use the fleet. Next time, push the Western Front.

Perhaps long term it will be possible to add technology like early tanks and bombers and we can release more and more upgrades to push the question. Would you have won the war if you had fire bombs? What about poison gas?

It’s terrible, I agree. I wonder whether there’s a little market for the morbid obsession about war. I think tapping into the alternate history via the story generator is important to differentiate the game from a strategy game.

Tags: RSS

May 08, 2014 03:59 PM

May 07, 2014

Alex Schroeder

Twenty Questions

Ramanan recently answered Brendan’s twenty questions about the rules used on his blog. Here’s how I’ve been running my campaign over the last years.

(Update: I’ve answered these twenty questions two years ago. The answers are practically unchanged. How embarrassing!)

Ability scores generation method? 3d6 in order.

How are death and dying handled? Roll on the Death and Dismemberment table every time you reach 0 hit points or whenever you get hit after reaching 0 hit points.

What about raising the dead? The highest level cleric in the area is a player character. A long time ago they’ve met another cleric but never returned to that particular town. I would require the fulfillment of a quest upon returning to life.

How are replacement PCs handled? Start at level 1, gain no more than one level per session. This works well because in the long run, you’ll simply loose a level (as XP requirements essentially double for every level).

Initiative: individual, group, or something else? Group initiative using a d6.

Are there critical hits and fumbles? How do they work? A natural 1 is always a miss. A natural 20 is always a hit and does max damage.

Do I get any benefits for wearing a helmet? Some entries on the Death and Dismemberment table take helmets into account.

Can I hurt my friends if I fire into melee or do something similarly silly? I used to say that targets will be picked at random but nobody ever risked it. After seeing Legolas shoot orcs at point blank I was ready to toss the rule but my players wanted to keep it. Effectively the rule is that you cannot fire into melee.

Will we need to run from some encounters, or will we be able to kill everything? As in all good sandboxes, some fights require more preparation, so retreats will be necessary.

Level-draining monsters: yes or no? Absolutely. There comes a time when simply hitting each other is boring. Level draining is a change in game play that keeps things interesting.

Are there going to be cases where a failed save results in PC death? There comes a time when simply hitting each other is boring. Save or die spells are a change in game play that keeps things interesting.

How strictly are encumbrance and resources tracked? Not at all. Sometimes we make fun of people if they carry too many weapons. In a chase, the rule is that wearing metal armor halves your speed and that carrying more than 800 coins also halves your speed. You may not carry more than 1600 coins. In practice, money is converted into buildings, salaries for specialists and the like in order to gain experience, and gems are most likely kept, so that I stopped tracking. Thus, the only real rule is that metal armor halves your speed in a chase.

What’s required when my PC gains a level? Training? Do I get new spells automatically? Can it happen in the middle of an adventure, or do I have to wait for down time? You gain most of your experience when you spend money. Therefore you usually gain levels between sessions. Training is not required. There are no new spells gained automatically. Spells are always taught from one magic user or elf to another. No copying of spells from spell books or scrolls.

What do I get experience for? Killing monsters and spending treasure gained on adventure.

How are traps located? Description, dice rolling, or some combination? Description or dice rolling will work.

Are retainers encouraged and how does morale work? Retainers are encouraged but you can only bring two along for an adventure. The others will perform other duties in your name such as running ships, guarding estates, ruling over towns, and so on. Morale will only be used if you’re giving unreasonable orders.

How do I identify magic items? Experiments, sages, and sometimes I’ll just tell you. There is no identify spell and there is no questing for command words or the like.

Can I buy magic items? Oh, come on: how about just potions? You can buy potions from alchemists and they cost around 500 gold per potion. You might get scrolls from clerics, magic-users or elves if they have a high enough level (finding such non-player characters is very rare) and only in exchange for service, never for gold.

Can I create magic items? When and how? If you reach the appropriate level, you might. We’ll talk about each one of them individually and make sure to turn it into an adventure. Sometimes you can pay for other people to go on adventure for you, but that just means next session we’ll be running the low level scum trying to get those ingredients you need. There will be an adventure.

What about splitting the party? Your call.

Tags: RSS

May 07, 2014 08:50 AM

April 30, 2014

Alex Schroeder

Independent Existence of Imaginary Worlds

Recently, David McGrogan asked for our favorite treasure tables on Google+. I said that I didn’t care for any particular one. I just use the official ones. For me, the most important aspect of using treasure tables is that there is no choice involved. Just roll. It’s like discovering the world by rolling on the table, it’s about being surprised even if you’re the referee of the game, it helps me suspend disbelief. The mechanics make sure that I’m not thinking of it as a figment of my imagination. It feels like a real thing. It’s like learning about object permanence as a toddler. You close your eyes, and you open them again, and the objects are still there. No amount of wishing, crying, pulling, pushing or punching changes this. Rolling the dice makes sure that my wishing has no effect on the outcome. I might embelish this or that, but if a deck of many things comes up, then that’s what you’ll find. If something boring comes up, I might change it. A sword +1 might get changed to an elven sword of a particular elven house. Or it might belong to a set. Or it might have a minor magic effects.

Treasure tables act a bit like random encounter tables. They are also part of the implied setting. You’ll find a lot of potions, scrolls and magic swords because that’s what this is all about.

This also explains why I hate treasure schemes that pull away the curtain and say things like you choose or you should always place or anything else that implies that the treasure found might be simply a figment of my imagination.

This initial impression grows stronger as the dice rolling slowly turns into a ritual. I do it every time when I prepare a session.

I still dole out quests involving particular items which are not rolled on the random treasure charts, of course. But these adventure seeds, these plot relevant items, they are a different thing.

Anyway. Random treasure. No choosing.

Tags: RSS

April 30, 2014 09:50 PM

April 29, 2014

Alex Schroeder

The Village

OK, time to give my entry for the One Page Dungeon Contest 2014 a spin!

The entry grew out of my Recovering from a lame session blog post. You can get the SVG sources from my GitHub account or download the PDF. I’ve used the Noticia Text font by JM Solé (downloaded it from Google Fonts – click Add "Noticia Text" to your collection, then click the ⬇ down arrow, and choose to download the zip file). I’ve used Jez Gordon’s DungeonFu to create the three little maps.

Right, got my 3d6 and I’m ready to roll.

Inn: Delikatessen. Remember the movie? Clearly something fishy is going on in this red-orange inn. Rumors of cannibalism, I say!

Name: Gorknok. Sounds like an orc to me. Too obvious? A redcap disguised as a gnome. He calls himself “Gorki”, of course.

The faction leaders, traits, goals:

  1. Spider Ali, a magic user, careful, has escape planned, defend HQ
  2. Silent Sereina, a cleric, funny, friendly (join her faction?), return my book
  3. Patra the Good, a fighter, well educated (might help us later?), defend HQ

Looks like an all female cast to me, and all the positive traits. Androgynous Ali in her spider webs, white Sereine, lost in thought, and Patra the Good, the good … fighter? I’m thinking a strong, bulky woman. No nonsense. Thinking of the magic item with the Set connection, I’m going to say Sereina is a protegé of Set, maybe the campaign can find inspiration from the Legend of the White Snake? I guess Sereina is in love with a man that is currently imprisoned somewhere. A potential lead for where the campaign might go: “My husband has left to study a the Seven Harmonies monastery and not returned…”

The goals are weird. I guess Silent Sereina is the active one. She really wants back her book. I guess the two others are on the defensive. The first scene should be agents of Set attacking minions of Spider Ali, at Delikatessen, where the party is meeting up.

Who else is there? Rolling for a conspicuous person… Ælvig, a singing huldra looking for a man (HD 3). Another woman! She has a fox tail, but hides it. Of course the party members will spot it. Mentioning it, however, is a grave insult. Remember that a huldra is somehow hollow inside and lined with bark, open at the back. It’s weird, and terrible. If any of the players is interested in the weirdness of faerie love and faerie courtship, this would be an opportunity.

Let’s look at the magic items. I get:

  1. elven sword
  2. bane cards
  3. ring of djinn mastery

Clearly, the book is not amongst the magic items! How about the The Investigation into the True Names and Habits of the Lords of Air. The person with the ring of djinn mastery – Ali — borrowed the book because it was necessary to learn more about the ring. A close encounter with a djinn resulted in great damage to the book. Spider Ali thinks its disgraceful to return this book and sent ample gold instead. Sereina feels there is more to this and decides to up the ante. So, Spider Ali has the ring.

Patra the fighter owns the elven sword and realizes that it might grant access to elven lands. But this would require some elves. Make a not for later. If one of the players is interested in elves, the campaign could go there. We need some elves nearby! The elves of Red Acorn forest are at war with pig men. Will you join them, hoping to win their favor?

That leaves the bane cards. They are in the hands of the redcap Gorki. Should the players spend too much time at the inn, the redcap will use the cards on one of the characters when they’re alone and kill them, and prepare a cannibal feast for any who would join him. Uncovering these shape shifting recap is going to be a side quest.

I guess we’re done? Get a monster book and write down some stats? As for maps, I’m not going to use the tower twice.

Spider Ali keeps tamed war spiders instead of animated objects in her tower. Let’s say he has has the spell charm spider instead of charm object. The spiders’ poison is not lethal. It paralyzes victims for an hour. Oh, and give Ali a web spell instead of read thoughts.

Silent Sereina is running a little temple and has ten followers and two acolytes (C1) with light spells they’ll use to blind foes. Patra the Good has taken up residence in an old bakery and running a little protection racket in order to finance her visit to the Red Acorn forest. You’ll have to bring gifts for the elven lords, right?

The thing took me a bit less than an hour. What do you think? A useful tool? Not efficient enough? It’s probably faster if you don’t spend time googling for images and writing it up as a blog post. 😏


April 29, 2014 12:35 AM

April 27, 2014

Alex Schroeder

Recovering from a lame session

I recently read a Google+ post by Dallas M where he says that his game didn’t go well. He suspects too many beers and considers nuking the game. Here’s what I said:

It happens. I’m not sure what the exact fail moment was, so I’m just going to assume “players didn’t know where to go and had no ideas so they got drunk and picked on each other and nothing interesting happened”. I’m also assuming low level characters in a typical starting village in a frontier region. My basic advice is “send ninjas” except I’m going to be more specific than that. 😃

In order to get the campaign back on track, I’d prepare three mini-adventures consisting each of an interesting NPC boss, something they want (an item, a service, protection), and their minions. Basically one of these groups is going to attack the players, another group will seek the help of players, the other is there as you backup if one or the other needs help, or an additional complication. Trying to put the pressure on players, force them to pick allies and enemies, run it, and after the session you can build on that: add allies in need of help, enemy organizations grow, NPCs hide in strongholds (small dungeons).

Three sections for your notebook or for an index card each:


Make sure you use a reaction roll to determine how these NPCs react to players and surprise yourself as well as your players with unexpected results.

Random list of wants:

  1. his or her son’s engagement ring, which he lost in a rigged bet
  2. a overdue book borrowed from her personal library
  3. an apology by another NPC for what they said yesterday at the Roaring Boar
  4. proof of cooperation of another NPC with a newly arrived monster tribe in the region
  5. protection from the minions of another NPC looking to steal a supposed treasure map
  6. the return of a son or daughter that has run off with the thieving gang run by another NPC

Minions need to be prepared. Start with one or two dozen minions. Thieves, kobolds, lobster men, hooligans (fighters without armor), mercenaries (fighters with armor). Split these up into groups of random size. Some will be easy to overpower, some the party will have to avoid, outsmart, split up, and so on. Being able to recognize bad odds and being able to do something about it allows players to use strategy, to decide when to pick fights. When in a fight, make sure you use morale checks in order to provide your players with surrenders, traitors, opportunities to show mercy or cruelty.

Locations need to be prepared. Start with very small maps. This is where you should have treasure, tricks, traps, and the NPC. Make sure you use reaction rolls if the party decides to parley in order to surprise yourself and your players!

At first, the sandbox elements happens between sessions. Players only get to choose between three groups that are actively engaging with the players. Player reactions determine where the sandbox will grow between sessions. We just need to make sure is that players always have a handful of things to do, always a choice to make.

Time passes and I decided to try and make it into an entry for the One Page Dungeon Contest 2014! You can get the SVG sources from my GitHub account or download the PDF. I’ve used the Noticia Text font by JM Solé (downloaded it from Google Fonts – click Add "Noticia Text" to your collection, then click the ⬇ down arrow, and choose to download the zip file). I’ve used Jez Gordon’s DungeonFu to create the three little maps.


April 27, 2014 09:18 AM

April 26, 2014

Alex Schroeder

Down the rabbit hole of software installing

It all started with this:

alex@Megabombus:~$ inkscape
dyld: Library not loaded: /usr/local/lib/libpng15.15.dylib
  Referenced from: /usr/local/bin/inkscape
  Reason: image not found
Trace/BPT trap: 5

It seemed I had 1.5 and 1.6 in the Homebrew Cellar, but only 1.6 was installed. I tried to have both libraries linked but missed this hint:

ln -s /usr/local/Cellar/libpng/1.5.18/lib/libpng15.15.dylib /usr/local/lib/libpng15.15.dylib

(It would have been 1.5.17 in my case.)

Instead I deleted both versions of libpng and hoped that reinstalling all the stuff would work.

brew update && brew upgrade

But look at this:

alex@Megabombus:~$ brew reinstall inkscape
==> Reinstalling inkscape
intltool: Unsatisfied dependency: XML::Parser
Homebrew does not provide Perl dependencies; install with:
  cpan -i XML::Parser
Error: An unsatisfied requirement failed this build.

Now we’re switching from Homebrew issues to Perl issues!

alex@Megabombus:~$ cpanm XML::Parser
--> Working on XML::Parser
Fetching ... OK
Configuring XML-Parser-2.41 ... OK
Building and testing XML-Parser-2.41 ... FAIL
! Installing XML::Parser failed. See /Users/alex/.cpanm/work/1398513458.18494/build.log for details. Retry with --force to force install it.
alex@Megabombus:~$ less /Users/alex/.cpanm/work/1398513458.18494/build.log

Looking at the log file:

PERL_DL_NONLAZY=1 /Users/alex/perl5/perlbrew/perls/perl-5.18.1/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
Can't load '/Users/alex/.cpanm/work/1398513458.18494/XML-Parser-2.41/blib/arch/auto/XML/Parser/Expat/Expat.bundle' for module XML::Parser::Expat: dlopen(/Users/alex/.cpanm/work/1398513458.18494/XML-Parser-2.41/blib/arch/auto/XML/Parser/Expat/Expat.bundle, 2): no suitable image found.  Did find:
        /Users/alex/.cpanm/work/1398513458.18494/XML-Parser-2.41/blib/arch/auto/XML/Parser/Expat/Expat.bundle: mach-o, but wrong architecture at /Users/alex/perl5/perlbrew/perls/perl-5.18.1/lib/5.18.1/darwin-2level/ line 194.
 at /Users/alex/.cpanm/work/1398513458.18494/XML-Parser-2.41/blib/lib/XML/ line 18.
Compilation failed in require at /Users/alex/.cpanm/work/1398513458.18494/XML-Parser-2.41/blib/lib/XML/ line 18.

WTF “wrong architecture”? Now I’m thinking of our recent upgrade of the laptop to OSX Mavericks. Oh, and before that I migrated my account from the old Mac Mini using Mac OS 10.6.8 to this laptop… Considering that we’re using Perlbrew and that the resulting Perl is stored in my home directory, this might indeed be an issue.

Thus, deeper into the rabbit hole we go!

alex@Megabombus:~$ perlbrew install perl-stable
Fetching perl 5.18.2 as /Users/alex/perl5/perlbrew/dists/perl-5.18.2.tar.bz2
Download to /Users/alex/perl5/perlbrew/dists/perl-5.18.2.tar.bz2
Installing /Users/alex/perl5/perlbrew/build/perl-5.18.2 into ~/perl5/perlbrew/perls/perl-5.18.2

I think I will go and take some pretty pictures in the mean time.

In the end, everything seems to be ready.

alex@Megabombus:~$ cpanm XML::Parser
! Can't write to /Library/Perl/5.16 and /usr/local/bin: Installing modules to /Users/alex/perl5
! To turn off this warning, you have to do one of the following:
!   - run me as a root or with --sudo option (to install to /Library/Perl/5.16 and /usr/local/bin)
!   - Configure local::lib your existing local::lib in this shell to set PERL_MM_OPT etc.
!   - Install local::lib by running the following commands
!         cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
XML::Parser is up to date. (2.41)
alex@Megabombus:~$ cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
--> Working on local::lib
Fetching ... OK
Configuring local-lib-2.000011 ... OK
==> Found dependencies: ExtUtils::MakeMaker
--> Working on ExtUtils::MakeMaker
Fetching ... OK
Configuring ExtUtils-MakeMaker-6.96 ... OK
Building and testing ExtUtils-MakeMaker-6.96 ... OK
Successfully installed ExtUtils-MakeMaker-6.96 (upgraded from 6.63_02)
Building and testing local-lib-2.000011 ... OK
Successfully installed local-lib-2.000011
2 distributions installed

I did notice something strange, though. When I opened a new terminal:

ERROR: The installation "perl-5.18.1" is unknown.

I had to manually change perl-5.18.1 to perl-5.18.2 in my ~/.perlbrew/init file:

export PERLBREW_MANPATH="/Users/alex/perl5/perlbrew/perls/perl-5.18.2/man"
export PERLBREW_PATH="/Users/alex/perl5/perlbrew/bin:/Users/alex/perl5/perlbrew/perls/perl-5.18.2/bin"
export PERLBREW_PERL="perl-5.18.2"
export PERLBREW_ROOT="/Users/alex/perl5/perlbrew"
export PERLBREW_VERSION="0.66"

Yeah, ignore the comment on the first line. I wonder why perlbrew didn’t do this automatically when I uninstalled 5.18.1 and installed 5.18.2. Oh well.

And now, Inkscape!

alex@Megabombus:~$ brew reinstall inkscape
==> Reinstalling inkscape
==> Installing inkscape dependency: boost-build
==> Downloading
######################################################################## 100.0%
==> ./
=º  /usr/local/Cellar/boost-build/1.55.0: 269 files, 3.0M, built in 65 seconds
==> Installing inkscape
==> Downloading
Already downloaded: /Library/Caches/Homebrew/inkscape-0.48.4.tar.gz
==> ./configure --prefix=/usr/local/Cellar/inkscape/0.48.4 --enable-lcms --disable-poppler-cairo
==> make install
collect2: ld returned 1 exit status
make[1]: *** [inkview] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: *** [inkscape] Error 1
make: *** [install-recursive] Error 1


These open issues may also help:
inkscape fails on 10.9.2 (


OK, following the instructions of mistydemeo:

alex@Megabombus:~$ rm -rf /Library/Caches/Homebrew/inkscape--bzr
alex@Megabombus:~$ brew install inkscape --HEAD
Warning: inkscape-HEAD already installed
alex@Megabombus:~$ brew uninstall inkscape
Uninstalling /usr/local/Cellar/inkscape/HEAD...
alex@Megabombus:~$ brew install inkscape --HEAD
==> Cloning lp:inkscape/0.48.x
Not checking SSL certificate for
You have not informed bzr of your Launchpad ID, and you must do this to
write to Launchpad or access private data.  See "bzr help launchpad-login".
==> ./ / Build phase:Apply phase:adding file 280/282                                                    
==> ./configure --prefix=/usr/local/Cellar/inkscape/HEAD --enable-lcms --disable-poppler-cairo
==> make install
🍺  /usr/local/Cellar/inkscape/HEAD: 853 files, 81M, built in 22.6 minutes

Testing… YES!! 😺 👍


April 26, 2014 12:14 PM

April 17, 2014

Alex Schroeder

Crazy Campaign

Recently I was responding to a Google+ post by Gavin. He was putting together a list of potential goals for the wizards in his campaign because he felt that players tend to shy away from doing cool stuff.

I started thinking about the cool things that have happened in my campaign, and the cool things I wanted to happen in my campaign but which didn’t.

First, the failures. These were goals I had hoped players would set themselves but they did not.

In my games, I’ve been trying to let players find books on particular topics. I never went all out and maintained a page on the campaign wiki with the actual books they own. My idea was that the books would allow them to research spells related to these topics (one of my house rules says you can only learn spells from other casters, so this sort of research would be the only alternative). I’d say that “building a library” didn’t happen.

Another thing I had hoped for was that players would actively seek out wizards with particular spells but as it turns out, I have not been placing a lot of rumors about particular spells. All the casters they befriended they befriended because of an adventure they were having and they happened to meet and connect on some level. I’d say that “meeting and befriending other casters” went well, but “actively seeking out other casters and befriending them” didn’t happen.

There have been successes as well, though.

One character is sponsoring four sages (and plans to hire more, each costing about 2000 gold pieces per month; usually one week passes in-game for every session). For one, money spent generates XP (one of my house rules). At the same time, every sage writes a little something about the setting. It’s great for me to provide rumors and adventure hooks. It also allows me to add new spells to the campaign. I’d say “hiring sages” has been a success. I think this worked because one of my players is interested in learning new things about the setting, and because of the rules that requires players to think of ways to spend their goal.

The need to spend money has resulted in a lot of public buildings in the domain of my players. We use An Echo Resounding for the domain game, so the gold spent doesn’t actually grant mechanical benefits. But it generates a bit of setting: temples are built (and I can have pirates rob them and kidnap the priests), an ivory tower has been built for the sages, a hospital was built (and taken over by demon worshippers), a bath house has been built (and more are being planned as the backbone of a spy network), a unicorn station has been sponsored, a tavern has been built… “building infrastructure” and contributing to the setting has been a success powered by the rule requiring the expenditure of gold, a price list with various buildings on it, me listing the buildings on the campaign wiki for all to see (seeing the changes to the environment and “leaving your mark”), and events sometimes referring back to things built by players add to a sense of ownership.

Another thing I had was a “master of anatomy” who could graft extra stuff on to characters. One of my players got a replacement arm and a replacement leg (he had lost limbs due to the Death and Dismemberment table I have been using), but the new limbs were gray and shriveled. I just don’t feel like punishing players for missing limbs. If pirates can have a wooden leg, if captain Hook can have a missing arm, why can’t player characters? If you’re missing both legs or both arms, it’s time to quit. I guess “body modification” has been a success.

The same player also got two dragon wings, which required an auxiliary brain to control them (so now he’s a cone head) and the extra brain can act independently in an emergency (although I never remember to roll for it). The Frankenstein look sometimes provokes an explanation for negative results on the reaction rolls, but there is no Charisma penalty. I guess this worked because it was perceived as useful, it was cool and it felt special even if it didn’t provide any real benefit (except for flight, which hasn’t been an issue). I think I’ve managed to balance benefits and drawbacks on this issue. Great!

Another thing that happened was that the players befriended a devil worshiper who proceeded to invite them to a succubus party (a ritual, not a spell). I think this happened organically. I rolled up a random encounter with some hobgoblins carrying 5000 gold pieces. I decided that this was tax. The players defeated the hobgoblins and took the gold. They arrived at a castle and gifted the gold to the wizard, saying that they want to throw a huge party, not knowing that he is a devil worshipper. Excited, he agrees… This was unplanned, but “have fun with devil worshippers” definitely worked. I think the key was to have some lame idea and not being afraid to turn it up to eleventy one.

The key to pushing my campaign to eleven is to use every idea as soon as possible. Do not save good ideas for later! Use them now. You will have more good ideas in the future.

Another thing is that you need to take something the players are doing and amplify it. They want to throw a party? Think of something crazy and let it happen. They want to build something? Think of something crazy to happen to the building, a crazy person to visit the building, something, anything. Let there be cool consequences.

Being generous with cool stuff works even if you fear for game balance. Avoid mechanical consequences for characters, if you want to. That doesn’t mean it cannot be crazy, something for your players to talk about in the future, something the non-players characters talk about in-game!

Always keep adding new plot lines. Minor things. Provide your players with three to five options at the end of the session and ask them what they want to do next. Prepare that. Having players choose allows them to influence where the story is going. My campaign is still about reviving a dead god because a long time ago, one of the players decided that his character was interested in all things elven. When I let it be known that they had a dead god, the player wanted to learn more. This is great. I keep adding stuff where ever the players start looking. To them, the campaign is infinitely deep. It keeps growing where they are most interested because it grows where ever their characters actually do something. Sure, they don’t always follow the main plot and that’s OK.

Some of the best moments happen when the older players are trying to explain past events to new players. They sound like kids. It’s convoluted and confusing and oral history at its best.

I’m not sure these notes will make it easy for you to turn your campaign to eleven. If I had to list things to avoid, I’d say this: Don’t be too cautious. You will be able to fix things later. Don’t prepare too much, don’t have too much seting detail or you’ll be afraid to change it. You’ll be afraid of rulers getting killed, shops getting burnt, characters having to leave towns, the campaign taking surprising directions.

Update: On Normalizing the Fantastic is similar.


April 17, 2014 10:09 PM

April 07, 2014

Alex Schroeder

One Page Dungeon Contest

I’ve been trying to think of an entry for One Page Dungeon Contest and I keep coming up empty. I think I need to simply prep an upcoming adventure for my ongoing campaign and put it all on one page. How do you come up with your submission?



April 07, 2014 11:05 AM

Homebrew Problems

I’ve been using Homebrew on our Mac for a while now. I like it very much. I’ve recently run into an issue, though. Sending emails from Emacs stopped working. I was getting was this:

Opening STARTTLS connection to `'...failed
network-stream-get-response: Wrong type argument: processp, nil

The important setting to remember to learn more is this:

(setq smtpmail-debug-info t)

Resent the mail and switch to a buffer called *trace of SMTP session to*.


220 ESMTP Exim 4.71 Mon, 07 Apr 2014 01:00:52 -0400 Hello []
250-SIZE 52428800
250 HELP

Process smtpmail deleted
dyld: Library not loaded: /usr/local/lib/libnettle.4.7.dylib
  Referenced from: /usr/local/bin/gnutls-cli
  Reason: image not found

Process smtpmail trace/BPT trap: 5

Oops, it seems that I uninstalled something that gnutls required!

Time to check things:

alex@Megabombus:/usr/local/bin (master)$ brew update
alex@Megabombus:/usr/local/bin (master)$ brew upgrade nettle
Error: nettle-2.7.1 already installed
alex@Megabombus:/usr/local/bin (master)$ brew upgrade gnutls
Error: gnutls- already installed
alex@Megabombus:/usr/local/bin (master)$ ls /usr/local/lib/libnettle.*
/usr/local/lib/libnettle.4.5.dylib /usr/local/lib/libnettle.a
/usr/local/lib/libnettle.4.dylib   /usr/local/lib/libnettle.dylib
alex@Megabombus:/usr/local/bin (master)$ brew reinstall gnutls
==> Reinstalling gnutls
==> Downloading
Already downloaded: /Library/Caches/Homebrew/gnutls-
==> Pouring gnutls-
🍺  /usr/local/Cellar/gnutls/ 931 files, 8,4M
alex@Megabombus:/usr/local/bin (master)$ brew reinstall nettle
==> Reinstalling nettle
Warning: nettle-2.7.1 already installed, it's just not linked
alex@Megabombus:/usr/local/bin (master)$ brew link  nettle
Linking /usr/local/Cellar/nettle/2.7.1... 16 symlinks created
alex@Megabombus:/usr/local/bin (master)$ gnutls-cli --version
gnutls-cli 3.2.12
Copyright (C) 2000-2014 Free Software Foundation, and others, all rights reserved.
This is free software. It is licensed for use, modification and
redistribution under the terms of the GNU General Public License,
version 3 or later <>

Please send bug reports to:  <>

That seems to have fixed it!

I wonder how this happened in the first place.


April 07, 2014 05:40 AM

April 03, 2014

Alex Schroeder

Eich and Mozilla

I use Firefox on my desktop both at work and at home. I don’t want Safari, Chrome or Internet Exploder. These days, the Mozilla foundation hired a dude called Eich who donated “$1,000 to the Proposition 8 effort to ban gay marriage in California.” See Exclusive: Mozilla CEO Eich says gay-marriage firestorm could hurt Firefox (Q&A) for details.

I had a conversation ranting monologue on IRC which revolved around two questions: How homophobic is Eich? Does “boycotting” a free product hurts him or the product?

My point was that I would like to tell Mozilla that having a homophobic boss is despicable. Writing a private email to let them know is not enough! Thus we enter the realm of politics where the actual boycott is not as important as news outlets writing about it. Let the scandal get some publicity.

In the interview, “Eich refuses to discuss his own beliefs explicitly or say whether they’ve changed…” I’m assuming they did not change much.

The article also says “Eich is the inventor of JavaScript…” A lesser sort of evil, I’d say! ;)

I think his argument is full of #fail. “If Mozilla cannot continue to operate according to its principles of inclusiveness…” and mentioning anti-gay marriage coders in Indonesia. How is that an argument? Does Mozilla also work with Hitler? (Just to cut that line of argument short.)

Karl Popper argued that you cannot be tolerant towards the intolerant. Actually, according to WikiQuote he said: “If we extend unlimited tolerance even to those who are intolerant, if we are not prepared to defend a tolerant society against the onslaught of the intolerant, then the tolerant will be destroyed, and tolerance with them.”

I think that’s why it’s not important for me to hurt Eich personally. After all, he’s free to say what he wants and to sponsor what he wants. I have limited tolerance. It’s important for me to tell Mozilla that it’s not OK to hire such a person!. I don’t have unlimited tolerance.

Anyway, here’s to not boycotting Firefox and still helping the scandal get some publicity.

Update: Mozilla CEO Brendan Eich Resigns After Protests from Gay Marriage Supporters.


April 03, 2014 09:41 AM

April 02, 2014

Alex Schroeder

Spielabend bei mir

Ich wollte schon länger mal über meine old school Kampagne reden. Letzten Dienstag haben wir gerade einen längeren Geschichtsbogen beendet. Eine gute Gelegenheit.

Ich habe meistens so um die sechs Spieler am Tisch, jeder mit einem Hauptcharakter und bis zu zwei Nebencharakteren. Das Charisma der Hauptfigur bestimmt, wieviele Gefolgsleute ein Spieler insgesamt haben kann. Weil wir allerdings fast immer sechs Spieler sind, haben wir die Anzahl auf zwei Gefolgsleute pro Spielabend limitiert. Die restlichen Gefolgsleute steuern Schiffe, verwalten Ländereien und so weiter.

Die Hauptcharaktere meiner Spieler haben eine Stufen zwischen 1 und 7. Wer neu anfängt, kriegt einen Erststüfler. Klar spielt man dann noch nicht sofort eine so wichtige Rolle wie der Topshot mit Charakteren der Stufen 5, 6 und 7. Immer wieder gibt es allerdings Abende, wo nur geredet wird. Gerade letztes Mal gab es eine Szene, wo der erststufige Charakter, der zufälligerweise Charisma 18 hat, eine herausragende Rolle gespielt hat.

Wir verwenden An Echo Resounding für das Domänenspiel. Alle vier Spielabende haben die Spieler zwei Domänenzüge für ihr Reich. Da gibt es Einheiten zu je ungefähr hundert Leuten, Kriegsschiffe, Befestigungen, Tempel, Schulen, Märkte und vieles mehr. Weil man nur alle vier Spielabende zwei Spielzüge machen muss, und weil man das leicht ignorieren kann, wenn man sich nicht dafür interessiert, ist das ideal für uns.

Gleichzeitig erlaubt es uns auch, einen Handlungsbogen mit einer grossen Schlacht zu beenden. Es ging um eine elfische Hexe auf dem Weg zur Unsterblichkeit, in einer Stadt, umringt von Wällen, die Umgebung durch fünf Beobachtungsposten geschützt, je mit etwa zehn Elfen und einem roten Drachen; die Wälle der Stadt durch eine Zitadelle geschützt, die Wälle von drei Einheiten elfischer Kriegermönche bewacht, die Stadt selber von vier Einheiten schwerer Miliz bewacht; der Palast der Hexe beschützt von zwei Schattendrachen; und die Hexe selber, ein Lich der 21. Stufe.

Und das geht! Am letzten Spielabend wurden die schwere Miliz durch eine Intrige ausgeschalten. Das vorletzte Mal bekämpfte man Piraten, um eine Einladung an einen Ball zu erhalten, am Ball wurden die wichtigsten Elfen am Hof angesprochen, ausgeforscht, umgarnt; dann wurde mit den Priestern des Pazuzu Tempels ein Pakt beschlossen, so dass diese den Feuerelementar durch einen Höllenschlund in ihrem Tempel entführten – und zwar den Elementar, der dem Herren der schweren Miliz sein bester Freund ist. Wutentbrannt sammelt dieser seine Leute um sich und führt sie durch den Höllenschlund ins Reich Pazuzus. Und am Spielabend darauf greifen die Spieler an.

Alle Einheiten um sich gesammelt, überlisten die Spieler die Drachen, greifen mit ihren etwa 1200 Leuten an, überrollen die Zitadelle, vernichten die Kriegermönche, die Drachen, und am Ende folgen ein paar Hauptcharaktere der Hexe in einen dunkeln Gang, jagen sie, denn wer nicht mindestens die fünfte Stufe hat, wird von der Angst übermannt.

Die Zauberin dreht sich um, spricht das Todeswort, der Charakter schafft den Rettungswurf nicht, fleht seinen Gott ein letztes Mal an – und hier muss man verstehen, dass sich die ganze Szene auf der Astralebene abspielt, die Hexe hat ihre Stadt auf dem versteinerten Leichnam eines (fast) toten Gottes erbaut, und eben diesen Gott betet der Charakter an. Nun gibt es bei mir immer eine kleine Prozentchance, dass die Götter die Stimmen derjenigen erhören, die ihnen (positiv oder negativ) aufgefallen sind. Der Spieler würfelt und hat Erfolg! Eine Astraldeva erscheint und schützt den Charakter vor dem Todeswort, der Spieler fällt vor Glück fast vom Stuhl, und dann geben die paar Charaktere ihr bestest und greifen an. Und sie haben erfolg! Ein Lich der 21. Stufe hat nur 9W6+22 LE. Die Hexe stirbt, die Stadt wird der Domäne einverleibt, Pläne werden geschmiedet, die Wiedererweckung des Gottes braucht noch ein paar Dinge…

So geht das, ab Stufe fünf. rocks

Eine Karte aus Traveller, die Ebenen von Planescape, die fliegenden Schiffe von Spelljammer, die Inspiration von Planet Algol. Hell Yeah!

Tags: RSS

April 02, 2014 09:22 PM

March 30, 2014

Alex Schroeder

Switzerlad D&D

Recently I found this blog post about Localism which ended in the question what a campaign would look like if it were located in the area you live in.

For the north of Switzerland:

Forested hills. Dark and forbidding forests full of bandits. Trails connecting villages across along the ridges. Difficult terrain. Deer. Bears. Mostly bears.

Rivers. A large network of rivers flowing towards a distant sea. These rivers are hard to ford. They present major obstacles for the armies on either side. Where the rivers can be forded or bridged, they are. Toll towers control these choke points, small villages support these local lords.

Lakes. This is where people do their fishing and trading. The large cities are all built by a lake, usually by the river exit. Boats, rafting. Stilt house settlements. Small lakes up in the hills may be the homes of water witches, cursed, sunken castles, devils.

Castles and towers. Rocks and cliffs protecting fortifications high up overlooking the valleys, far away from disease. Petty power struggles. A distant emperor.

Swamps. The wider valleys are full of infested, treacherous swamps. Eels, trolls, will’o the wisps. Pots of gold buried to appease the water spirits. The drowned witches, bound and restless, struggling underground.

Cairns. Hidden up in the hills, ancient stones marking the ley lines of the land. Grave markers of the rich.

Mountains. On a fair day, you can see the wall of world. Up there, fell spirits guarding the passes. Devils. Giants. Blood pacts and cannibals. Dwarves and pots of gold, again. Caves. Waterfalls. Water spirits. Cows, sell cheese, buy salt.

Winter. The winter is cold. Snow covers everything, isolates people. The wolves cross the frozen rivers. When spring comes, we need to wear masks, burn effigies, ring cow bells and scare the winter spirits away. The living triumph, for an additional year.

Stilt houses

Tags: RSS

March 30, 2014 12:54 PM

March 24, 2014

Alex Schroeder


Today we played two and a half hours of Torchbearer. We had three players and started out with me playing the warrior, Johannes playing the halfling and Harald playing the dwarf. Pascal was running the game for us. It involved a kid disappearing into a tomb. We crawled into the tomb, got up, advanced down the corridor and met four skeletons. We went for a kill conflict and started with a disposition of 10 vs. 5 but by the second volley we were down to four and we just barely managed to avoid a total party kill. My warrior escaped, badly wounded, got lost in a swamp, was led astray by green flames dancing in the distance and nearly drowned.

We wound two replacement characters (the cleric and the magic user) and then we went there again. We realized that going for a kill was dangerous and tried a trick conflict. Again, we started with a disposition of 9 vs. a lot less, and within a few volleys we had lost. We were driven off by the skeletons never to return…

And that was that. We liked some ideas in theory. We liked the grind. We liked the light rules. We liked how enumbrance worked. But as soon as the conflict started, we got disconnected from the fiction. Attack, Defend, Feint and Maneuver—it was dry, hard to picture, very abstract, and we lost. And then we started noticing that the other systems didn’t seem to make a difference or didn’t result in a play experience more entertaining compared to using classic D&D.

We’ll be playing something different next indie night.


March 24, 2014 10:33 PM

March 19, 2014

Alex Schroeder


A while ago I wrote a little demo application using Clojure for the company’s blog in 2010 (in German). This is a Lisp that compiles to Java Byte Code and therefore it runs on the Java Virtual Machine. It also allow you to call all the Java libraries you want, using Lisp syntax. As I work with Java for money and Emacs Lisp for love, I thought this was perfect for me. Recently I had the idea of porting this little app to the web, possibly for use on my iPad. But how to do it? I thought of ClojureScript. It compiles to JavaScript! Maybe using ClojureScript and some SVG library… maybe C2, subtitled “Clojure(Script) data visualization”? But where to get started?

The ClojureScript One Guide assumes that you have Leiningen installed. OK, time to look at the Leiningen tutorial. And what better way to start than moving my old application to a Leiningen setup?

So that’s what I did. On my Mac, using Homebrew, I can run Gridmapper as follows:

brew install leiningen
git clone
cd gridmapper
lein run

And I can produce an executable Jar file and run it as follows:

lein uberjar
open target/gridmapper-0.9.9-standalone.jar

In 2010, I was mostly interested in figuring out whether Clojure would in fact allow me to use Java libraries. In terms of architecture, the application is lousy. A Model View Controle architecture should be used! And instead of bitmaps, I’d like to use SVG graphics both for the tiles and for the resulting output. Save as SVG! Also, a nicer window with a legend and some explanations would be nice.

Anyway, back to C2.

Tags: RSS

March 19, 2014 03:30 PM

March 18, 2014

Alex Schroeder

Why You So Quiet

As I recently said on Google+: Everything has been said. We’re relaxing for a bit before starting all over again. You know, ascending AC, saving throws, edition wars, OGL, sandbox, entourage, megadungeon, no elves, kickstarters, alignment, comeliness, strength limits, ability modifiers, the umpteenth variant of barbarian, witch, bard and necromancer, how to draw maps, utility vs. good looking, and how really they’re the same, or not, also typography, porn, sexism, fun, and how it’s meaningless to talk about it, doing it anyway, and it’ll be 2006 all over again, and nobody will have learned a thing, except for those that have moved on, and somebody will have a fit and leave the blogosphere, and hate on Facebook, and post inappropriate political messages, and drop off the net, and delete their blog, and we will feel young again and everything will be fresh and in love and exciting.

Tags: RSS

March 18, 2014 01:30 PM

March 15, 2014

Alex Schroeder

Old School Elite Monsters

Recently I found a comment by andrew ferris on a Google+ post by Urizen Shaitan I’d like to share.

What works best for fun is not really realistic and sometimes when attempting to implement something “realistic”, you get something even less realistic than if you hadn’t tried.

Okay, first to deal with armor and hit points. Now if one wants monsters to scale up the same way PCs scale up, you are going to have an issue. PCs gain 1 hit dice per a level and generally speaking armor and damage increase. With some classes the armor and damage increases considerably less than with others, but generally speaking it increases. The thing is that… well… there isn’t a good formula for what level of monster ought to be able to handle 4-5 PCs by themselves.

For instance, generally speaking if you have a level 5 PC fight 5 level 1 PCs, the level 5 PC has 5× the hit points as well as having better damage potential and being harder to hit. They will generally mop the floor with the 5 level 1s.

However, a level 25 PC would almost undoubtedly be demolished by 5 level 5s, particularly if those 5 level 5s have among them a thief, cleric, and particularly magic-user. This is particularly true given how in old D&D where PCs cap out at level 9.

Now, if something is going to be a challenge for 5 PCs it can only do one of the following

  1. Have 5× the health it normally does or have some method to avoid ⅘ of the attacks (such as a high AC). This can either be all in one go or it can be be recovered over the battle (regen or healing magic) and the average health of the creature would be 5× by the end of the average length of a battle.
  2. Deal out 5× the damage a PC could. It could have 5× the attacks, hit 5× as often or deal 5× the damage a normal enemy of that level would do.

If you do both, it will be 25× as strong as a normal enemy. It is also worthwhile considering the difference between a solo and a group. After all, if you are fighting a group of enemies and you can manage to deal ⅕ of the total hit points in damage to one of the enemies in the group then the group’s damage output is going to decrease by 20%. But if you deal ⅕ of the hit points to an enemy with 5× the health, then its damage output isn’t going to decrease unless there is a system for it to do so.

In addition, PCs generally fight in groups. This means that if the attacks simply do 5× the damage or there are 5× as many attacks that can (and narratively should) be aimed at a single target, then you deal with another issue. Generally speaking a single enemy attack against a PC ought to sap around ⅓–¼ of their life. But if the attack does 5× damage or there are 5× the amount of attacks, this will wipe out a PC with each successful hit. This will cause the group’s effectiveness to drop by 20%.

Because of this, it is probably best to increase both the hit points and the damage output by about double. You can improve the AC or the monster’s chances to hit, but I would do it by a point or two at the most. Increased hit points and an increased number of attacks is what I would advise in order to have an exciting encounter that is less likely to result in a TPK.

As for the narrative attacks…. one of the things I feel the OSR has been painfully lazy about is when it comes to monster attacks. Particularly the old set up “2 claws, 1 bite” no animal in the world fights like that. Ever. It is utterly unimaginable that within a 6 second span of time a beast is ever going to swing its paws at two separate targets and then bite a third. It just doesn’t work that way. Nor is an animal going to make one swipe with each claws and then pull them back before biting. Rather than ever having such a sequence, it would have been far more realistic to simply describe this whole attack as a single unarmed attack sequence which will either be successful or not as a whole and the number rolled on the damage dice would be evocative of how many of its natural weapons it hit with.

Instead of giving a solo monster multiple attacks, the far better thing to do would be to give the monster area-effecting attacks. For instance, it can charge in a straight line which means it can run over a PC, knock another aside and then slam into a third target which would be a great way to get those mages into melee combat. Or it can make a sweep with a giant claw or weapon that has a chance of dealing damage to all enemies engaged in melee. Or it could release a cloud of toxic gas which could affect everyone in a given area or it could even be capable of picking up or knocking a PC off their feet (i.e. a successful melee attack), hurling them at another turning one PC’s body into a weapon against another (making a ranged attack).

With those sorts of attacks, suddenly it becomes very clear why it is foolish to attack the monster with a regiment of very weak soldiers and why a group of elite adventurers are needed to handle the monster.

So basically, my advice is when designing solo monsters… Double its normal hit points. Give it some sort of area attack (or several options!) that would allow it to hit 1–3 enemies a turn and particularly to be able to get at those more vulnerable ranged combatants. Increase AC, attack bonus and damage of the monster minimally—only 1–2 points.

And then you just have to accept that if this monster is, for instance, an Ogre or a Troll, that its numbers are not evocative of simply adding levels to the monster.

– andrew ferris

What can I say. These days my players kill red dragons in the surprise round and survive cloud kill… but area effects are clearly the way to go!


March 15, 2014 07:16 AM

March 12, 2014

Alex Schroeder

SQL Statements at Work

I was thinking of SQL Statements I wrote back in 2005 and was reminded of something I helped write in 2013, I think. It was a report to show you the Top 10 clients by turnover, with various search criteria. It was huge. The framework used is Eclipse Scout. The Database is Oracle. Some stuff edited…

   * Helper function for the Top 10 Companies Report.
  private SearchFilter getCompanyTopReportHavingFilter(CompanyTopReportSearchFormData formData, String turnover) {
    SearchFilter havingFilter = new SearchFilter();
    // turnover values
    if (formData.getTurnoverFrom().getValue() != null
        || formData.getTurnoverTo().getValue() != null) {
      havingFilter.addWhere(" AND ( " + turnover + " ) ");
      if (formData.getTurnoverFrom().getValue() != null
          && formData.getTurnoverTo().getValue() != null) {
        havingFilter.addWhere("BETWEEN :turnoverFrom AND :turnoverTo ",
            new NVPair("turnoverFrom", formData.getTurnoverFrom()),
            new NVPair("turnoverTo", formData.getTurnoverTo()));
      } else if (formData.getTurnoverFrom().getValue() != null) {
        havingFilter.addWhere(" >= :turnoverFrom ",
            new NVPair("turnoverFrom", formData.getTurnoverFrom()));
      } else if (formData.getTurnoverTo().getValue() != null) {
        havingFilter.addWhere(" <= :turnoverTo ",
            new NVPair("turnoverTo", formData.getTurnoverTo()));
    return havingFilter;

  private String currentProjectsActualTurnover (int presentationType, Long partitionUid, SearchFilter whereActualTurnoverFilter) {

    String table = null;

    // top company report
    if (presentationType == 1) {
      table = " ACTUAL_TURNOVER_VIEW ";
    else if (presentationType == 2) {

    String sql = " (" +
    "FROM " + table + " AT " +
    if (partitionUid != null)
      sql += " AND AT.PARTITION_UID = " + partitionUid;
    sql += ") ";
    return sql;
  private String contact (Long partitionUid, SearchFilter whereContactFilter) {
      String sql = " (" +
      "AND V.STATUS_UID = " + ContactStatusCodeType.TakenPlaceCode.ID + " " +
      if (partitionUid != null)
        sql += " AND VU.PARTITION_UID = " + partitionUid;
      sql += ") ";
      return sql;
  private String organizations () {
    " (SELECT 1 " +
    "  AND CT.TYPE_UID = " + ProjectCompanyRelationCodeType.OrganizationCode.ID + ") ";
  private String contactPersonOne (Long partitionUid) {
    "  AND   CP_ONE.TYPE_UID = " + CompanyPersonRelationCodeType.ContactPersonOneCode.ID + " " +
    "  AND   CP_ONE.PARTITION_UID = " + partitionUid + " " +
    "  AND   CP_ONE.JOIN_TYPE_UID = " + PersonOrTeamCodeType.PersonCode.ID + " " +
  private String prioSalesCouncil (SearchFilter filter) {
    if (filter.getWhere().length() == 0) {
      return " NVL(C.PRIO_SALES_COUNCIL_UID, 0) ";
    } else {
      " (SELECT NVL(X.FK2_NR, 0) " +
      "  AND X.JOIN_TYPE_ID = " + CRMFunctionCodeType.CompanyCode.ID +
      "  AND X.PARTITION_UID = 0" +
      "  AND X.EVT_CHANGE IN (" +
      "    AND CH.JOIN_TYPE_ID = " + CRMFunctionCodeType.CompanyCode.ID +
      "    AND CH.PARTITION_UID = 0" +
      filter.getWhere() + ")" +
      "  AND ROWNUM = 1) ";
  private String companyClassification (SearchFilter filter, Long partitionUid) {
    if (filter.getWhere().length() == 0) {
      " (SELECT PHASE_UID " +
      "  AND X.PARTITION_UID = " + partitionUid + ") ";
    } else {
      " (SELECT FK_NR " +
      "  AND X.JOIN_TYPE_ID = " + CRMFunctionCodeType.CompanyCode.ID +
      "  AND X.PARTITION_UID = " + partitionUid +
      "  AND X.EVT_CHANGE IN (" +
      "    AND CH.JOIN_TYPE_ID = " + CRMFunctionCodeType.CompanyCode.ID +
      "    AND CH.PARTITION_UID = " + partitionUid + " " +
      filter.getWhere() + ")" +
      "  AND ROWNUM = 1) ";
  private SearchFilter setFilterNewCustomer(CompanyTopReportSearchFormData formData, SearchFilter filter) {
    if (formData.getNewCustomerFrom().getValue() != null
        || formData.getNewCustomerTo().getValue() != null) {
      if (formData.getNewCustomerFrom().getValue() != null) {
        filter.addWhere(" AND PINNER.EVT_APPROVAL >= TRUNC(:newCustomerFrom) ",
            new NVPair("newCustomerFrom", formData.getNewCustomerFrom()));
      if (formData.getNewCustomerTo().getValue() != null) {
        filter.addWhere(" AND PINNER.EVT_APPROVAL < TRUNC(:newCustomerTo) + 1 ",
            new NVPair("newCustomerTo", formData.getNewCustomerTo()));
      filter.addWhere(" ) ");
    return filter;
  private SearchFilter setFilterZ1Contact(CompanyTopReportSearchFormData formData, SearchFilter filter) {
    if (formData.getTurnoverDateFrom().getValue() != null) {
      filter.addWhere(" AND V.EVT_START >= TRUNC(:contactsZ1From) ",
          new NVPair("contactsZ1From", formData.getTurnoverDateFrom()));
    if (formData.getTurnoverDateTo().getValue() != null) {
      filter.addWhere(" AND V.EVT_START < TRUNC(:contactsZ1To+1) ",
          new NVPair("contactsZ1To", formData.getTurnoverDateTo()));
    return filter;
  private SearchFilter setFilterZ2Contact(CompanyTopReportSearchFormData formData, SearchFilter filter) {
    if (formData.getDataFrom().getValue() != null) {
      filter.addWhere(" AND V.EVT_START >= TRUNC(:contactsZ2From) ",
          new NVPair("contactsZ2From", formData.getDataFrom()));
    if (formData.getDataTo().getValue() != null) {
      filter.addWhere(" AND V.EVT_START < TRUNC(:contactsZ2To+1) ",
          new NVPair("contactsZ2To", formData.getDataTo()));
    return filter;
  private SearchFilter setFilterCompany(CompanyTopReportSearchFormData formData, SearchFilter filter) {
    if (formData.getCompanyShortName().getValue() != null) {
      filter.addWhere(" AND UPPER(C.CODE_NAME) LIKE UPPER(:companyShortName || '%') ",
          new NVPair("companyShortName", formData.getCompanyShortName()));
    if (formData.getCompanyName().getValue() != null) {
      filter.addWhere(" AND UPPER(C.NAME) LIKE UPPER(:companyName || '%') ",
          new NVPair("companyName", formData.getCompanyName()));
    if (formData.getCompanyNo().getValue() != null) {
      filter.addWhere(" AND UPPER(C.COMPANY_NO) LIKE UPPER(:companyNo || '%') ",
          new NVPair("companyNo", formData.getCompanyNo()));
    if (formData.getContactPersonOne().getValue() != null) {
          + " AND TYPE_UID = " + CompanyPersonRelationCodeType.ContactPersonOneCode.ID
          + " AND  1=DECODE(::level(ReadPersonPermission), ::level(BasicCrmPermission.LEVEL_ALL), 1, ::level(BasicCrmPermission.LEVEL_NONE), 0, MY_UTIL.PERSON_PRIV(::level(ReadPersonPermission), JOIN_NR, :userNr, :organisationUid))) ",
          new NVPair("contactPersonOne", formData.getContactPersonOne()));
    if (formData.getContactPersonTwo().getValue() != null) {
          + " AND TYPE_UID = " + CompanyPersonRelationCodeType.ContactPersonTwoCode.ID
          + " AND  1=DECODE(::level(ReadPersonPermission), ::level(BasicCrmPermission.LEVEL_ALL), 1, ::level(BasicCrmPermission.LEVEL_NONE), 0, MY_UTIL.PERSON_PRIV(::level(ReadPersonPermission), JOIN_NR, :userNr, :organisationUid))) ",
          new NVPair("contactPersonTwo", formData.getContactPersonTwo()));
    if (formData.getBusinessArea().getValue() != null) {
          new NVPair("customerofBUs", formData.getBusinessArea()));
    if (formData.getCompanySector().getValue() != null) {
      filter.addWhere(" AND C.SECTOR_UID = :companySector ",
          new NVPair("companySector", formData.getCompanySector()));
    if (formData.getLegalForm().getValue() != null) {
      filter.addWhere(" AND C.LEGAL_FORM_UID = :legalForm ",
          new NVPair("legalForm", formData.getLegalForm()));
    if (formData.getLanguage().getValue() != null) {
      filter.addWhere(" AND C.LANGUAGE_UID = :language ",
          new NVPair("language", formData.getLanguage()));
    if (formData.getRankFrom().getValue() != null) {
      filter.addWhere(" AND C.RANK >= :rankFrom ",
          new NVPair("rankFrom", formData.getRankFrom()));
    if (formData.getRankTo().getValue() != null) {
      filter.addWhere(" AND C.RANK <= :rankTo ",
          new NVPair("rankTo", formData.getRankTo()));
    if (formData.getSource().getValue() != null) {
      filter.addWhere(" AND UPPER(C.SOURCE) LIKE UPPER(:source || '%') ",
          new NVPair("source", formData.getSource()));
    if (formData.getCompanyState().getValue() != null) {
      if (formData.getCompanyState().getValue() == 0) {
        filter.addWhereToken(" C.ACTIVE = 0 ");
      else if (formData.getCompanyState().getValue() == 1) {
        filter.addWhereToken(" C.ACTIVE = 1 ");
    return filter;
  private SearchFilter setFilterZ1PhasePrioSalesCouncil(CompanyTopReportSearchFormData formData, SearchFilter filter, SearchFilter changeHistoryFilter) {
    if (formData.getTurnoverDateTo().getValue() == null) {
      if (formData.getPartition().getValue() != null) {
        filter.addWhere(" AND EXISTS (" +
            " SELECT 1" +
            " AND CC.PARTITION_UID = :partition",
            new NVPair("partition", formData.getPartition()));
        // phase requires a partition
        if (formData.getPhase().getValue() != null) {
          filter.addWhere(" AND CC.PHASE_UID  = :phase",
              new NVPair("phase", formData.getPhase()));
        filter.addWhere(") ");
      if (formData.getPrioSalesCouncil().getValue() != null) {
        filter.addWhere(" AND C.PRIO_SALES_COUNCIL_UID = :prio ",
            new NVPair("prio", formData.getPrioSalesCouncil()));
    } else {
      if (formData.getPartition().getValue() != null) {
        filter.addWhere(" AND EXISTS (" +
            " SELECT 1" +
            "  FROM CHANGE_HISTORY X" +
            "  WHERE X.JOIN_NR = C.COMPANY_NR" +
            "  AND X.JOIN_TYPE_ID = " + CRMFunctionCodeType.CompanyCode.ID +
            "  AND X.PARTITION_UID = :partition" +
            "  AND X.EVT_CHANGE IN (" +
            "    SELECT MAX(CH.EVT_CHANGE)" +
            "    FROM CHANGE_HISTORY CH" +
            "    WHERE CH.JOIN_NR = C.COMPANY_NR" +
            "    AND CH.JOIN_TYPE_ID = " + CRMFunctionCodeType.CompanyCode.ID +
            "    AND CH.PARTITION_UID = :partition " +
            changeHistoryFilter.getWhere() + ")",
            new NVPair("partition", formData.getPartition()));
        // since whereCompanyFilter now contains references to bind variables in wherechangeHistoryFilter:
        // phase requires a partition
        if (formData.getPhase().getValue() != null) {
          filter.addWhere(" AND X.FK_NR  = :phase",
              new NVPair("phase", formData.getPhase()));
        filter.addWhere(") ");
      // prio sales council also uses the change history, but goes for rows with partition_uid = 0!
      if (formData.getPrioSalesCouncil().getValue() != null) {
        filter.addWhere(" AND EXISTS (" +
            " SELECT 1" +
            "  FROM CHANGE_HISTORY X" +
            "  WHERE X.JOIN_NR = C.COMPANY_NR" +
            "  AND X.JOIN_TYPE_ID = " + CRMFunctionCodeType.CompanyCode.ID +
            "  AND X.PARTITION_UID = 0" +
            "  AND X.FK2_NR = :prio" +
            "  AND X.EVT_CHANGE IN (" +
            "    SELECT MAX(CH.EVT_CHANGE)" +
            "    FROM CHANGE_HISTORY CH" +
            "    WHERE CH.JOIN_NR = C.COMPANY_NR" +
            "    AND CH.JOIN_TYPE_ID = " + CRMFunctionCodeType.CompanyCode.ID +
            "    AND CH.PARTITION_UID = 0 " +
            changeHistoryFilter.getWhere() + "))",
            new NVPair("prio", formData.getPrioSalesCouncil()));
        // since whereCompanyFilter now contains references to bind variables in wherechangeHistoryFilter:
    return filter;
  private SearchFilter setFilterZ2Phase(CompanyTopReportSearchFormData formData, SearchFilter filter, SearchFilter changeHistoryFilter) {
    if (formData.getDataTo().getValue() == null) {
      if (formData.getPartitionZ2().getValue() != null) {
        filter.addWhere(" AND EXISTS (" +
            " SELECT 1" +
            " AND CC.PARTITION_UID = :partitionZ2",
            new NVPair("partitionZ2", formData.getPartitionZ2()));
        // phase requires a partition
        if (formData.getPhase().getValue() != null) {
          filter.addWhere(" AND CC.PHASE_UID  = :phaseZ2",
              new NVPair("phaseZ2", formData.getPhaseZ2()));
        filter.addWhere(") ");
    } else {
      if (formData.getPartitionZ2().getValue() != null) {
        filter.addWhere(" AND EXISTS (" +
            " SELECT 1" +
            "  FROM CHANGE_HISTORY X" +
            "  WHERE X.JOIN_NR = C.COMPANY_NR" +
            "  AND X.JOIN_TYPE_ID = " + CRMFunctionCodeType.CompanyCode.ID +
            "  AND X.PARTITION_UID = :partitionZ2" +
            "  AND X.EVT_CHANGE IN (" +
            "    SELECT MAX(CH.EVT_CHANGE)" +
            "    FROM CHANGE_HISTORY CH" +
            "    WHERE CH.JOIN_NR = C.COMPANY_NR" +
            "    AND CH.JOIN_TYPE_ID = " + CRMFunctionCodeType.CompanyCode.ID +
            "    AND CH.PARTITION_UID = :partitionZ2 " +
            changeHistoryFilter.getWhere() + ")",
            new NVPair("partitionZ2", formData.getPartitionZ2()));
        // since whereCompanyFilter now contains references to bind variables in wherechangeHistoryFilter:
        // phase requires a partition
        if (formData.getPhaseZ2().getValue() != null) {
          filter.addWhere(" AND X.FK_NR  = :phaseZ2",
              new NVPair("phaseZ2", formData.getPhaseZ2()));
        filter.addWhere(") ");
    return filter;
  private SearchFilter setFilterPlannedTurnoverDates(CompanyTopReportSearchFormData formData, SearchFilter filter) {
    if (formData.getTurnoverDateFrom().getValue() != null) {
          " AND TRUNC(:turnoverFromDate) <= P1.EVT_REQUEST (+) ",
          new NVPair("turnoverFromDate", formData.getTurnoverDateFrom()));
    if (formData.getTurnoverDateTo().getValue() != null) {
          " AND ADD_MONTHS(TRUNC(:turnoverToDate, 'MONTH'), 1) > P1.EVT_REQUEST (+) ",
          new NVPair("turnoverToDate", formData.getTurnoverDateTo()));
    return filter;
  private SearchFilter setFilterZ1ActualTurnover(CompanyTopReportSearchFormData formData, SearchFilter filter) {
    if (formData.getTurnoverDateFrom().getValue() != null) {
          " AND TRUNC(:turnoverFromDate, 'MONTH') <= AT.MONTH ",
          new NVPair("turnoverFromDate", formData.getTurnoverDateFrom()));
    if (formData.getTurnoverDateTo().getValue() != null) {
          " AND ADD_MONTHS(TRUNC(:turnoverToDate, 'MONTH'), 1) > AT.MONTH ",
          new NVPair("turnoverToDate", formData.getTurnoverDateTo()));
    return filter;
  private SearchFilter setFilterZ2ActualTurnover(CompanyTopReportSearchFormData formData, SearchFilter filter) {
    if (formData.getDataFrom().getValue() != null) {
          " AND TRUNC(:dataFromDate, 'MONTH') <= AT.MONTH ",
          new NVPair("dataFromDate", formData.getDataFrom()));
    if (formData.getDataTo().getValue() != null) {
          " AND ADD_MONTHS(TRUNC(:dataToDate, 'MONTH'), 1) > AT.MONTH ",
          new NVPair("dataToDate", formData.getDataTo()));
    return filter;
  private SearchFilter setFilterZ1Z2(CompanyTopReportSearchFormData formData, SearchFilter filter) {
    // Timeframe Z1
        (formData.getTurnoverDateFrom().getValue() != null ?
            " AND (TRUNC(:turnoverFromDate) <= P.EVT_REQUEST (+) " :
            " AND (1=1 "),
        new NVPair("turnoverFromDate", formData.getTurnoverDateFrom()));
    if (formData.getTurnoverDateTo().getValue() != null) {
      filter.addWhere(" AND TRUNC(:turnoverToDate + 1) > P.EVT_REQUEST (+) ",
          new NVPair("turnoverToDate", formData.getTurnoverDateTo()));

    // Timeframe Z2
        (formData.getDataFrom().getValue() != null ?
            " OR TRUNC(:dataFromDate) <= P.EVT_REQUEST (+) " :
            " OR 1=1"),
        new NVPair("dataFromDate", formData.getDataFrom()));
    if (formData.getDataTo().getValue() != null) {
      filter.addWhere(" AND TRUNC(:dataToDate + 1) > P.EVT_REQUEST (+) ",
          new NVPair("dataToDate", formData.getDataTo()));
    filter.addWhere(") ");

    return filter;
  private SearchFilter setFilterZ2(CompanyTopReportSearchFormData formData, SearchFilter filter) {
    if (formData.getDataFrom().getValue() != null) {
      filter.addWhere(" AND TRUNC(:dataFromDate) <= P2.EVT_REQUEST (+) ",
          new NVPair("dataFromDate", formData.getDataFrom()));
    if (formData.getDataTo().getValue() != null) {
      filter.addWhere(" AND TRUNC(:dataToDate + 1) > P2.EVT_REQUEST (+) ",
          new NVPair("dataToDate", formData.getDataTo()));
    return filter;
  private SearchFilter setFilterZ1ChangeHistory(CompanyTopReportSearchFormData formData, SearchFilter filter) {
    // note that this filter does not take a FROM part!
    if (formData.getTurnoverDateTo().getValue() != null) {
      filter.addWhere(" AND TRUNC(:changeToDate) + 1 > CH.EVT_CHANGE ",
          new NVPair("changeToDate", formData.getTurnoverDateTo()));
    return filter;
  private SearchFilter setFilterZ2ChangeHistory(CompanyTopReportSearchFormData formData, SearchFilter filter) {
    // note that this filter does not take a FROM part!
    if (formData.getDataTo().getValue() != null) {
      filter.addWhere(" AND TRUNC(:dataToDate) + 1 > CH.EVT_CHANGE ",
          new NVPair("dataToDate", formData.getDataTo()));
    return filter;
  private Double calculateTopNPlannedTurnover(SearchFilter whereCompanyFilter, SearchFilter wherePlannedTurnoverFilter, Integer plannedTopN) throws ProcessingException {

    // Selecting the company_nr for debugging purposes.

    String sql=
      "FROM (" +
      "  SELECT  C.COMPANY_NR, " +
      "  FROM COMPANY C, " +
      "       PROJECT P1 " +
      "  WHERE NOT EXISTS " + organizations() +
      "  AND C.COMPANY_NR != 0 " +
      "  AND (P1.PHASE_UID IN ( " +
      ProjectPhaseCodeType.SuspectCode.ID + ", " + ProjectPhaseCodeType.ProspectCode.ID + ") " +
      ProjectPhaseCodeType.SuspectCode.ID + ", " + ProjectPhaseCodeType.ProspectCode.ID + "))) " +
      "  AND P1.ACTIVE = 1 " +
      "  AND 1 = DECODE(::level(ReadCompanyPermission), ::level(BasicCrmPermission.LEVEL_ALL), 1, ::level(BasicCrmPermission.LEVEL_NONE), 0, MY_UTIL.COMPANY_PRIV(::level(ReadCompanyPermission), C.COMPANY_NR, :userNr, :organisationUid)) " +
      "  AND 1 = DECODE(::level(ReadProjectPermission), ::level(BasicCrmPermission.LEVEL_ALL), 1, ::level(BasicCrmPermission.LEVEL_NONE), 0, MY_UTIL.PROJECT_PRIV(::level(ReadProjectPermission), P1.PROJECT_NR, :userNr, :organisationUid)) " +
      whereCompanyFilter.getWhere() +
      wherePlannedTurnoverFilter.getWhere() +
      "ORDER BY 2 DESC )" +
      "WHERE ROWNUM <= :n";

    Object[][] data = SQL.selectLimited(sql, plannedTopN,
        new NVPair("n", plannedTopN));

    // If we get a result, add to the HAVING clause

    Double result = 0.1;
    if (data.length > 0){
      result = NumberUtility.toDouble((Number) data[data.length - 1][1]);
      if (result == null || result == 0) {
        result = 0.1;
    return result;
  private Double calculateTopNActualTurnover(int presentationType, SearchFilter whereCompanyFilter, SearchFilter whereActualTurnoverFilter, Integer topN) throws ProcessingException {

    String table = null;

    if (presentationType == 1) {
      table = " ACTUAL_TURNOVER_VIEW ";
    else if (presentationType == 2) {

    // Don't look at planned turnover (and therefore do not use the
    // whereProjectFilter nor visits (VISIT V, USER VU).

    // Selecting the company_nr for debugging purposes.

    String sql=
      "FROM (" +
      "  FROM COMPANY C, " +
      table + " AT " +
      "  AND NOT EXISTS " + organizations() +
      "  AND C.COMPANY_NR != 0 " +
      "  AND 1 = DECODE(::level(ReadCompanyPermission), ::level(BasicCrmPermission.LEVEL_ALL), 1, ::level(BasicCrmPermission.LEVEL_NONE), 0, MY_UTIL.COMPANY_PRIV(::level(ReadCompanyPermission), C.COMPANY_NR, :userNr, :organisationUid)) " +
      whereCompanyFilter.getWhere() +
      whereActualTurnoverFilter.getWhere() +
      "  GROUP BY C.COMPANY_NR " +
      "  ORDER BY 2 DESC )" +
      "WHERE ROWNUM <= :n";

    Object[][] data = SQL.selectLimited(sql, topN,
        new NVPair("n", topN));

    // If we get a result, recompute the HAVING clause. If you made any modifications to the HAVING
    // clause in the code above, these will be lost now. Don't do it.

    Double result = 0.1;
    if (data.length > 0){
      result = NumberUtility.toDouble((Number) data[data.length - 1][1]);
      if (result == null || result == 0) {
        result = 0.1;
    return result;

   * Top 10 Companies Report.
   * The SELECT statement for this report is big. Very big.
   * When changing the column order in the SQL statement,
   * please do not forget to adapt the column numbers in the methods
   * getCompanyTopReportExcel().
  public Object[][] getCompanyTopReportTableData(int presentationType, CompanyTopReportSearchFormData formData, SearchFilter extendedSearchFilter) throws ProcessingException {

    // top company report
    if (presentationType == 1) {
      if (ACCESS.getLevel(new ReadCompanyTopReportPermission()) <= BasicCrmPermission.LEVEL_NONE) {
        throw new VetoException("NotAllowedToSeeThisData");
    // top holding report
    else if (presentationType == 2) {
      if (ACCESS.getLevel(new ReadHoldingTopReportPermission()) <= BasicCrmPermission.LEVEL_NONE) {
        throw new VetoException("NotAllowedToSeeThisData");

    String headsOnlyClause = "";

    if (presentationType == 2) {
      headsOnlyClause = "" +
        " AND NOT EXISTS (SELECT 1 " +
        "                 FROM   COMPANY_COMPANY CC " +
        "                 WHERE  CC.TYPE_UID = " + CompanyCompanyRelationCodeType.HoldingCode.ID + " " +
        "                 AND CC.COMPANY_NR = C.COMPANY_NR)";


    SearchFilter whereCompanyFilter = new SearchFilter(); // C
    SearchFilter whereZ1ActualTurnover = new SearchFilter(); // AT
    SearchFilter whereZ2ActualTurnover = new SearchFilter(); // AT
    SearchFilter wherePlannedTurnoverFilter = new SearchFilter(); // P
    SearchFilter whereZ1ChangeHistoryFilter = new SearchFilter(); // CH
    SearchFilter whereZ2ChangeHistoryFilter = new SearchFilter(); // CH
    SearchFilter whereZ1ContactFilter = new SearchFilter(); // V
    SearchFilter whereZ2ContactFilter = new SearchFilter(); // V
    SearchFilter whereZ2 = new SearchFilter();
    SearchFilter whereZ1Z2 = new SearchFilter();

    whereCompanyFilter = setFilterNewCustomer(formData, whereCompanyFilter);
    whereZ1ContactFilter = setFilterZ1Contact(formData, whereZ1ContactFilter);
    whereZ2ContactFilter = setFilterZ2Contact(formData, whereZ2ContactFilter);
    whereCompanyFilter = setFilterCompany(formData, whereCompanyFilter);
    wherePlannedTurnoverFilter = setFilterPlannedTurnoverDates(formData, wherePlannedTurnoverFilter);
    whereZ1ActualTurnover = setFilterZ1ActualTurnover(formData, whereZ1ActualTurnover);
    whereZ2ActualTurnover = setFilterZ2ActualTurnover(formData, whereZ2ActualTurnover);
    whereZ1Z2 = setFilterZ1Z2(formData, whereZ1Z2);
    whereZ2 = setFilterZ2(formData, whereZ2);
    whereZ1ChangeHistoryFilter = setFilterZ1ChangeHistory(formData, whereZ1ChangeHistoryFilter);
    whereZ2ChangeHistoryFilter = setFilterZ2ChangeHistory(formData, whereZ2ChangeHistoryFilter);
    whereCompanyFilter = setFilterZ1PhasePrioSalesCouncil(formData, whereCompanyFilter, whereZ1ChangeHistoryFilter);
    whereCompanyFilter = setFilterZ2Phase(formData, whereCompanyFilter, whereZ2ChangeHistoryFilter);

    // initialize having filter if only getTurnoverFrom or getTurnoverTo has been provided
    SearchFilter havingFilter = getCompanyTopReportHavingFilter(
        formData, currentProjectsActualTurnover(presentationType, null, whereZ1ActualTurnover));

    Integer topN = formData.getHighestTurnoverCompanies().getValue();
    if (topN != null) {
      // We need to compute the turnovers for all companies before continuing...
      // This is why we need to set all the filters before coming here.
      // This is an excellent opportunity for caching the results in the DB!

      Double result = calculateTopNActualTurnover(presentationType, whereCompanyFilter, whereZ1ActualTurnover, topN);
      if (formData.getTurnoverFrom().getValue() == null
              || formData.getTurnoverFrom().getValue() < result) {
        havingFilter = getCompanyTopReportHavingFilter(
            formData, currentProjectsActualTurnover(presentationType, null, whereZ1ActualTurnover));

    String sql =
      "    (SELECT UC_UID " +
      "     FROM   UC " +
      "     WHERE (UC_UID IN (" + ProjectPhaseCodeType.IntegrationCode.ID + ", " + ProjectPhaseCodeType.SignedCustomerCode.ID + ") OR PARENT_UID IN (" + ProjectPhaseCodeType.IntegrationCode.ID + ", " + ProjectPhaseCodeType.SignedCustomerCode.ID + ")) " +
      "     AND    CODE_TYPE = " + ProjectPhaseCodeType.ID + ") " +
      "        C.COMPANY_NR, " +
      "        C.CODE_NAME  \"Firmenkurzname\", " +
      "        C.NAME \"Firmenname\", " +
      "        C.SECTOR_UID \"Branche\", " +
      "        C.COMPANY_NO \"CRM Firma Nr\", " +
      "        C.RANK \"Rank\", " +
      prioSalesCouncil(whereZ1ChangeHistoryFilter) + " \"Prio Sales Council Z1\", " +
      prioSalesCouncil(whereZ2ChangeHistoryFilter) + " \"Prio Sales Council Z2\", " +

      currentProjectsActualTurnover(presentationType, null, whereZ1ActualTurnover) + " \"Laufende Projekte Z1 [Umsatz]\", " +
      currentProjectsActualTurnover(presentationType, null, whereZ2ActualTurnover) + " \"Laufende Projekte Z2 [Umsatz]\", " +

      companyClassification(whereZ1ChangeHistoryFilter, DepartmentCodeType.CodeA.ID) + " \"A Firmenphase Z1\", " +
      currentProjectsActualTurnover(presentationType, DepartmentCodeType.CodeA.ID, whereZ1ActualTurnover) + " \"A Laufende Z1 [Umsatz]\", " +
      companyClassification(whereZ2ChangeHistoryFilter, DepartmentCodeType.CodeA.ID) + " \"A Firmenphase Z2\", " +
      currentProjectsActualTurnover(presentationType, DepartmentCodeType.CodeA.ID, whereZ2ActualTurnover) + " \"A Laufende Z2 [Umsatz]\", " +
      contactPersonOne(DepartmentCodeType.CodeA.ID) + " \"Ansprechpartner 1 A\", " +

      companyClassification(whereZ1ChangeHistoryFilter, DepartmentCodeType.CodeB.ID) + " \"B Firmenphase Z1\", " +
      currentProjectsActualTurnover(presentationType, DepartmentCodeType.CodeB.ID, whereZ1ActualTurnover) + " \"B Laufende Z1 [Umsatz]\", " +
      companyClassification(whereZ2ChangeHistoryFilter, DepartmentCodeType.CodeB.ID) + " \"B Firmenphase Z2\", " +
      currentProjectsActualTurnover(presentationType, DepartmentCodeType.CodeB.ID, whereZ2ActualTurnover) + " \"B Laufende Z2 [Umsatz]\", " +
      contactPersonOne(DepartmentCodeType.CodeB.ID) + " \"Ansprechpartner 1 B\", " +

      companyClassification(whereZ1ChangeHistoryFilter, DepartmentCodeType.CodeC.ID) + " \"C Firmenphase Z1\", " +
      currentProjectsActualTurnover(presentationType, DepartmentCodeType.CodeC.ID, whereZ1ActualTurnover) + " \"C Laufende Z1 [Umsatz]\", " +
      companyClassification(whereZ2ChangeHistoryFilter, DepartmentCodeType.CodeC.ID) + " \"C Firmenphase Z2\", " +
      currentProjectsActualTurnover(presentationType, DepartmentCodeType.CodeC.ID, whereZ2ActualTurnover) + " \"C Laufende Z2 [Umsatz]\", " +
      contactPersonOne(DepartmentCodeType.CodeC.ID) + " \"Ansprechpartner 1 C\", " +

      companyClassification(whereZ1ChangeHistoryFilter, DepartmentCodeType.CodeD.ID) + " \"D Firmenphase Z1\", " +
      currentProjectsActualTurnover(presentationType, DepartmentCodeType.CodeD.ID, whereZ1ActualTurnover) + " \"D Laufende Z1 [Umsatz]\", " +
      companyClassification(whereZ2ChangeHistoryFilter, DepartmentCodeType.CodeD.ID) + " \"D Firmenphase Z2\", " +
      currentProjectsActualTurnover(presentationType, DepartmentCodeType.CodeD.ID, whereZ2ActualTurnover) + " \"D Laufende Z2 [Umsatz]\", " +
      contactPersonOne(DepartmentCodeType.CodeD.ID) + " \"Ansprechpartner 1 D\", " +

      companyClassification(whereZ1ChangeHistoryFilter, DepartmentCodeType.CodeE.ID) + " \"E Firmenphase Z1\", " +
      currentProjectsActualTurnover(presentationType, DepartmentCodeType.CodeE.ID, whereZ1ActualTurnover) + " \"E Laufende Z1 [Umsatz]\", " +
      companyClassification(whereZ2ChangeHistoryFilter, DepartmentCodeType.CodeE.ID) + " \"E Firmenphase Z2\", " +
      currentProjectsActualTurnover(presentationType, DepartmentCodeType.CodeE.ID, whereZ2ActualTurnover) + " \"E Laufende Z2 [Umsatz]\", " +
      contactPersonOne(DepartmentCodeType.CodeE.ID) + " \"Ansprechpartner 1 E\", " +

      companyClassification(whereZ1ChangeHistoryFilter, DepartmentCodeType.CodeF.ID) + " \"F Firmenphase Z1\", " +
      currentProjectsActualTurnover(presentationType, DepartmentCodeType.CodeF.ID, whereZ1ActualTurnover) + " \"F Laufende Z1 [Umsatz]\", " +
      companyClassification(whereZ2ChangeHistoryFilter, DepartmentCodeType.CodeF.ID) + " \"F Firmenphase Z2\", " +
      currentProjectsActualTurnover(presentationType, DepartmentCodeType.CodeF.ID, whereZ2ActualTurnover) + " \"F Laufende Z2 [Umsatz]\", " +
      contactPersonOne(DepartmentCodeType.CodeF.ID) + " \"Ansprechpartner 1 F\", " +

      companyClassification(whereZ1ChangeHistoryFilter, DepartmentCodeType.CodeG.ID) + " \"G Firmenphase Z1\", " +
      currentProjectsActualTurnover(presentationType, DepartmentCodeType.CodeG.ID, whereZ1ActualTurnover) + " \"G Laufende Z1 [Umsatz]\", " +
      companyClassification(whereZ2ChangeHistoryFilter, DepartmentCodeType.CodeG.ID) + " \"G Firmenphase Z2\", " +
      currentProjectsActualTurnover(presentationType, DepartmentCodeType.CodeG.ID, whereZ2ActualTurnover) + " \"G Laufende Z2 [Umsatz]\", " +
      contactPersonOne(DepartmentCodeType.CodeG.ID) + " \"Ansprechpartner 1 G\", " +

      companyClassification(whereZ1ChangeHistoryFilter, DepartmentCodeType.CodeH.ID) + " \"H Firmenphase Z1\", " +
      currentProjectsActualTurnover(presentationType, DepartmentCodeType.CodeH.ID, whereZ1ActualTurnover) + " \"H Laufende Z1 [Umsatz]\", " +
      companyClassification(whereZ2ChangeHistoryFilter, DepartmentCodeType.CodeH.ID) + " \"H Firmenphase Z2\", " +
      currentProjectsActualTurnover(presentationType, DepartmentCodeType.CodeH.ID, whereZ2ActualTurnover) + " \"H Laufende Z2 [Umsatz]\", " +
      contactPersonOne(DepartmentCodeType.CodeH.ID) + " \"Ansprechpartner 1 H\", " +

      companyClassification(whereZ1ChangeHistoryFilter, DepartmentCodeType.CodeI.ID) + " \"I Firmenphase Z1\", " +
      currentProjectsActualTurnover(presentationType, DepartmentCodeType.CodeI.ID, whereZ1ActualTurnover) + " \"I Laufende Z1 [Umsatz]\", " +
      companyClassification(whereZ2ChangeHistoryFilter, DepartmentCodeType.CodeI.ID) + " \"I Firmenphase Z2\", " +
      currentProjectsActualTurnover(presentationType, DepartmentCodeType.CodeI.ID, whereZ2ActualTurnover) + " \"I Laufende Z2 [Umsatz]\", " +
      contactPersonOne(DepartmentCodeType.CodeI.ID) + " \"Ansprechpartner 1 I\", " +

      "        C.LANGUAGE_UID \"Sprache\", " +
      "        CA.PHONE \"Telefon\", " +
      "        CA.FAX \"Fax\", " +
      "        CA.WWW \"www\", " +
      "        CA.ADD_NAME \"Zusatzname\", " +
      "        CA.STREET || ' ' || CA.HOUSE_NO \"Strasse + Hausnummer\", " +
      "        CA.PO_BOX \"Postfach\", " +
      "        A.ZIP_CODE \"PLZ\", " +
      "        A.CITY \"Ort\", " +
      "        A.COUNTRY_UID \"Land\", " +
      "        C.NOTES \"Bemerkungen\", " +
      "        UTIL.GET_USER_CODE(C.ACTIVE + 10, NVL(:languageUid,246), :partitionUid) \"Aktiv\" " +
      "FROM " +
      "    COMPANY C, " +
      "    COMPANY_ADDRESS CA, " +
      "    ADDRESS A, "+
      "    PROJECT P, " +
      "    PROJECT P1, " +
      "    PROJECT P2, " +
      "    PROJECT_PHASE P1_PP, " +
      "    PROJECT_PHASE P2_PP " +
      "WHERE   1=1 " +
      headsOnlyClause +
      "AND NOT EXISTS " +
      "    (SELECT 1 " +
      "        FROM   COMPANY_TYPE CT " +
      "        WHERE  C.COMPANY_NR = CT.COMPANY_NR AND CT.TYPE_UID = " + ProjectCompanyRelationCodeType.OrganizationCode.ID + ") " +
      "AND C.COMPANY_NR != 0 " +
      "AND CA.TYPE_UID (+) = " + CompanyAddressTypeCodeType.PrimaryAddressCode.ID + " " +
      "AND C.COMPANY_NR = P.COMPANY_NR (+) " +
      "AND P.PROJECT_NR = P1.PROJECT_NR (+) " +
      "AND P.PROJECT_NR = P2.PROJECT_NR (+) " +
      "AND P1.PHASE_UID = P1_PP.UC_UID (+) " +
      "AND P2.PHASE_UID = P2_PP.UC_UID (+) " +
      "AND 1 = P.ACTIVE (+) " +
      "AND 1 = DECODE(::level(ReadCompanyPermission), ::level(BasicCrmPermission.LEVEL_ALL), 1, ::level(BasicCrmPermission.LEVEL_NONE), 0, MY_UTIL.COMPANY_PRIV(::level(ReadCompanyPermission), C.COMPANY_NR, :userNr, :organisationUid)) " +
      whereCompanyFilter.getWhere() +
      wherePlannedTurnoverFilter.getWhere() +
      whereZ2.getWhere() +
      extendedSearchFilter.getWhere() +
      " GROUP BY C.CODE_NAME, " +
      "         C.NAME, " +
      "         C.SECTOR_UID, " +
      "         C.COMPANY_NR, " +
      "         C.COMPANY_NO, " +
      "         C.RANK, " +
      "         C.PRIO_SALES_COUNCIL_UID, " +
      "         C.SECTOR_UID, " +
      "         C.LANGUAGE_UID, " +
      "         CA.PHONE, " +
      "         CA.FAX, " +
      "         CA.WWW, " +
      "         CA.ADD_NAME, " +
      "         CA.STREET, CA.HOUSE_NO, " +
      "         CA.PO_BOX, " +
      "         A.ZIP_CODE, " +
      "         A.CITY, " +
      "         A.COUNTRY_UID, " +
      "         C.NOTES, " +
      "         C.ACTIVE " +
      "HAVING 1=1 " +
      havingFilter.getWhere() +
      "ORDER BY 2, 3, 4 ";


Tags: RSS

March 12, 2014 10:03 AM

March 10, 2014

Alex Schroeder

Twenty Two Years

Twenty two years ago, Claudia and I started dating. It has been the most wonderful thing to happen to me in all my life. I’ve become a better person, a happier person, a more responsible person, a more caring person, … the changes are innumerable. In fact, it’s probably impossible to say which of these positive changes have come about due to our relationship and which of these changes would have happened anyway, simply because of growing older and hopefully somewhat wiser. And yet, the great joy is having shared it all, having grown up together, adapting to each other, learning from each other, and now this stranger has become part of my life, and more. We are to each others like extensions of our body. Two hearts, as one.


March 10, 2014 08:59 PM

March 03, 2014

Alex Schroeder

Herausforderung Spielleiter

Manchmal treffe ich Leute, die würden gerne eine Kampagne leiten. Manchmal hoffen sie, dass die Gruppe einfach beisammen bleibt, sich weiterhin am gleichen Ort spielt, sich zur gleichen Zeit trifft. Wenn man unter Freunden, für eine bestehende Runde einen Spielleiter sucht, dann ist da nichts dagegen einzuwenden. Aber manchmal reicht das einfach nicht…

  • Spielleiter müssen die nötigen Spieler finden. Auf Facebook, Google+, Nearby Gamers, Tanelorn, Spielerzentrale, im Freundeskreis, Partner, Verwandte, Arbeitskollegen, und so weiter.
  • Spielleiter müssen die Termine koordinieren. Einer muss klar ankündigen, wann gespielt wird. Wenn Termine ständig verschoben werden, gibt es Leute wie mich, die nicht sehr spontan sind, die damit nicht gut umgehen können. An spontane Spielabende kann ich oft nicht kommen, an abgesagten Spielabenden hätte ich lieber etwas anderes gemacht, und nach und nach sinkt die Priorität der Runde. Schon bald mache ich lieber etwas anderes ab, weil ich mir dann wenigstens sicher bin, dass es stattfindet.
  • Spielleiter müssen muss Konflikte lösen. Spieler schimpfen über Schwule, Nutten, Ausländer? Jeder kann Einsprache erheben, aber wenn ich mich als Gast sehe, habe ich vielleicht das Gefühl, dass ich mich besser mit einem freundlichen Email verabschiede, als mit solchen Leuten zusammen zu spielen. Der Spielleiter ist eben nicht nur für die Rekrutierung der Spieler sondern auch für die Spielkultur verantwortlich.
  • Spielleiter müssen das System wählen oder bieten die Systeme zur Auswahl, welche ihnen liegen.
  • Spielleiter müssen die Regeln durchsetzen, klären, Hausregeln aufstellen, die Spieler an die Regeln erinnern – man kann zwar einen der Spieler zum Regelverantwortlichen machen, in der Regel funktioniert das aber nicht so unglaublich gut.
  • Spielleiter bestimmen das Rampenlicht und müssen korrigierend eingreifen. Manche Spieler sind lauter, haben mehr Ideen, überreden ständig ihre Mitspieler. In einem gewissen Mass ist diese Verteilung von Introvertierten und Extrovertierten normal und entspricht auch den Wünschen der Betroffenen. Durch Befolgen einer klaren Reihenfolge, durch Übertragen von einzelnen Entscheidungen an ruhigere Spieler und so weiter kann hier aber fördernd eingegriffen werden.
  • Spielleiter müssen oft Gastgeber sein. Oft wird bei Spielleitern daheim gespielt. Sie haben die Bücher, die Ordner, das Material – extra Würfel, Stifte, Radiergummis, Unterlagen, Wasserkrüge, Gläser, Schalen für Chips, Pistazien, Erdnüsse, Mandarinen und Schalen für den Abfall.
  • Spielleiter müssen Zeit zum Vorbereiten haben. Als Spieler kann man es sich eher leisten, nur am Spielabend dabei zu sein. Als Spielleiter gehört das alleine sein, das Nachdenken, Aufschreiben und Träumen auch zur Aufgabe.
  • Spielleiter müssen oft Abenteuerberichte schreiben, weil Spieler oft nur am Spielabend beim Spiel sind. Das Durchdenken des letzten Abends ist nicht so ihr Ding. Das Ausschmücken auch nicht. Ich mache mir als Spieler auch nur ein paar Notizen am Rand des Charakterblattes und schreibe selten einen Bericht.
  • Spielleiter müssen eine Welt erschaffen. Diese kann sehr klein sein, von einem Verlies, einem Dorf, der Wildnis, zu einer Stadt, mehreren Städten, der ganzen Oberwelt, die vernetzte Unterwelt, das Jenseits, die Ebenen, nach und nach will alles bedacht sein, bekannte Bücher zum Setting wollen berücksichtigt sein.
  • Spielleiter müssen Abenteuer vorbereiten. Wie man sieht, ist das nur ein kleiner Teil des Ganzen!
  • Spielleiter sind für den zeitlichen Ablauf zuständig. Wann fangen wir an, wann hören wir auf, beginnen wir in media res, enden wir mit einem cliffhanger, haben wir noch eine halbe Stunde oder sollten wir langsam auf das Ende zusteuern? Spielleiter haben irgendwo im Blickfeld eine Uhr.
  • Spielleiter sind auch für das Tempo zuständig. Ist einem Spieler langweilig und machen wir weiter oder verweilen wir noch ein wenig bei dieser Szene? Spielleiter reagieren, wenn die Spieler zum Handy greifen, gähnen, zu malen beginnen oder ihre Würfel sortieren und stapeln.

Ich will mit dieser Liste niemandem Angst machen. Das Spielleitertum ist ein super Hobby. Ich will nur vermeiden, dass jemand denkt, es hat sich schon mit dem Vorbereiten eines Abenteuers. Es bleibt viel an uns hängen.

Tags: RSS

March 03, 2014 10:49 PM

March 02, 2014

Alex Schroeder

Wunschliste für schweizer Rollenspiel Treffen

Ich komme gerade von der IsliCon, einer kleinen Convention in der Nähe, wo ich eine Runde gespielt und eine Runde geleitet habe. Wie schon an der OerliCon beschlich mich ein seltsames Gefühl. Dieses mal war es noch stärker. Irgend etwas stimmt hier nicht. Es gibt mehrere Tische mit Spielen – hier in der Schweiz sind das oft nicht mehr als fünf oder sechs Tische – das ist aber schon zu viel für eine spontane Selbstorganisation. Wenn die eigene Runde zu lange dauert, schielt man neidisch zum anderen Tisch, wo eine neue Runde geboten wird. Wenn man dann mit einer Runde fertig ist, muss man etwas netzwerkeln, um eine neue Runde zu finden. Wenn man sich für ein System interessiert, welches andere Leute spielen, kann man nur für ein paar Sekunden zuschauen. Fragen stellen ist schwierig. Man trifft auf einsame Leute, die auf Spieler oder Spielleiter warten. Oft regelt sich alles spontan, aber eigentlich bin ich nicht zufrieden.

Ich wünsche mir feste Blöcke à drei oder vier Stunden, mit festen Pausen dazwischen, damit alle Leute gleichzeitig Spiele beginnen und beenden. Nur so können wir die langen Wartezeiten vermeiden. Wenn ein Spielleiter viele Stunden braucht, soll er sein Spiel halt für zwei Blöcke anbieten. Dann wissen die Spieler auch, worauf sie sich einlassen. Feste, gemeinsame Pausen erlauben es mir auch, mit dem Spieleiter von Star Wars: Edge of Empire zu quatschen. Ansonsten sind die Chancen gering, dass wir gerade gleichzeitig Pause machen.

Ich wünsche mir einen Aushang mit den geleiteten Spielen, mit Startzeiten und Namenslisten, so dass man sich organisieren kann. Noch besser, wenn das alles elektronisch geht. Das funktioniert bei der OerliCon eigentlich schon ganz gut.

Ich wünsche mir, dass Spielleiter an einer Convention ein straffes Spiel leiten. Dazu gehört, vorgenerierte Charaktere mit bringen, die Einführung abzukürzen, schnell auf den Punkt kommen, und den Spielern ein offensichtliches Ende aufzeigen, so dass sie selber das Tempo mitbestimmen können. Durch meine Spiele unter der Woche, wo wir in 2–3h Abends in ziemlicher Zeitnot spielen, hat mir schon extrem viel diesbezüglich beigebracht. Anfangen, abbrechen, abkürzen, antreiben, überspringen, … Manchmal habe ich das Gefühl, ich müsste mal ein Seminar machen. Teilnehmer leiten für zehn Minuten ihr Spiel, dann gibt es eine Runde Kritik. Ein Spiel an einer Convention kann nicht, darf nicht, gleich wie ein Spiel an einem Samstagnachmittag daheim ablaufen. Als ich nach zweidrittel von meiner Runde Pause machte und einen Kollegen fragte, wie es geht, meinte er nur, sie hätten jetzt endlich den Dungeon erreicht. Oje.

An der IsliCon fand ich super, wie es Früchte und Snacks, Soft Getränke, Wasser, Tee und Kaffee in einem Selbstbedienungskiosk gab. Ausgezeichnete Idee. Ich hoffe, es ist auch finanziell aufgegangen.

Was mir auch sehr gut gefällt ist die angebotene Systemvielfalt. Stars Wars, Barbaren, Pathfinder – es gab neben meinen eigenen Games on Demand eine grosse Auswahl. Für mich ist das Ausprobieren neuer Systeme eine grosse Motivation an einer Convention.

Tags: RSS

March 02, 2014 12:57 AM

February 27, 2014

Alex Schroeder

Games on Demand für IsliCon

Letztes Jahr hatte ich ein paar Indie Games für die OerliCon dabei. Ich liess mich dabei von der Games on Demand Bewegung inspirieren. Kommenden Samstag will ich das gleiche für die IsliCon machen. Vor dem Wochenende muss ich meine Notizen nochmal durchlesen und mir überlegen, was ich alles mitnehmen will. Und was ich alles ausdrucken muss. :)

Was ich leiten will:

Was ich zeigen kann:

Update: Das nächste Mal muss ich unbedingt Pokerchips oder sonstige farbige Tokens dabei haben, mit den die Spieler sich gegenseitig das Vertrauen aussprechen können. Die drei Spalten mit “your trust in them”, “their trust in you” und “points” ist jedes Mal verdammt verwirrend.


February 27, 2014 08:32 AM

February 19, 2014

Alex Schroeder

Huge Parties

Yesterday I ran a game for eight players (I usually cap at six). We had already established that this was going to be a raid on a pirate fortress. I knew that it was going to have 80 elves ready to fight, 80 elves sleeping (all 1st level), a 9th and a 7th level elf, and a red dragon. The party allied itself with some commando elves and so the attacking force consisted of eight player characters and their eight henchmen with levels between 1 and 7 as well as the command elves, six 6th level elves and eighteen ordinary 1st level elves; forty characters in all. I handed out little index cards with the stats of the elven commando leaders and their henchmen. Three hours later it was all over, most of the pirates slain, the dragon dead, the enemy leader killed, her second in command take prisoner, the dragon hoard secured and the fortress being towed to the players’ domain. (This is a big mashup campaign using Spelljammer ships and fortresses, and An Echo Resounding for domain level play.)

It was a very unusual adventure, but I like the change in pace!

The fortress was structured as a series of encounters with a mini map I kept behind the screen, usually with ten elves, sometimes with a leader of level 1d6+1; sometimes with more elves about to arrive. Good use was made of hold portal to prevent elves from joining up and good use was made of silence and sleep to surprise enemies and incapacitate a dozen foes in the surprise round, haste was used to quickly position archers and casters, sneaky thieves were used to scout ahead and best prepare for assaults, and to avoid tricky hallways with enemy archers hiding, several lightning bolts were used to kill the dragon before it could join the elven sorceress, they survived her cloudkill with minimal losses and managed to dispel it the next round…

It was a bloodbath.

For ease of reference and consistent spell selection of both the allied commando elves and the defending elf pirates, I used a technique I described previously: my spell book notation lists the spell-book of the top elf or magic-user with spell level and spell name, and a third column with the character level at which this spell is usually picked. This helps me run a lot of spell casters. This list would begin as follows, for example:

Spell Level Character Level Spell Name Notes
11sleep2d8 HD
12shieldAC 4, AC 2 vs. missiles
17detect magic
24detect invisibility5 rd./level
35haste30 min.
36dispel magic
47polymorphAC 0 1d6+1/1d6+1/3d10 MV 240
48dimension door360 ft. or 120 m
59cloud kill⌀ 30 ft., MV 6

The most important skill of all is a sort of military “go! go! go!” efficiency at the table, however. No questions about who rolls initiative. Roll all the dice – have d20s and damage dice of matching colors and have all the colors assigned to your dudes and roll them all at once. All enemy elves, regardless of level, had AC 4. When your turn comes up, just tell me “I hit three times, damage is 4, 5, 2.” That’s the plan, anyway. :) Also, pick a leader who tells me where the party goes. Which stairs do you pick? Quietly or quickly? When the fight is on, just keep pushing. When the fight is over, let players talk, laugh, investigate, debate.

That’s it.

The picture shows the kind of notes I had prepared ahead of time. As you can see these are crude sketches of the area and enemy positions. Most enemies were all elves with a single magic missile memorized. If the party won initiative, it was usually over in a few seconds.

As you can see on the little fold-out flow-chart on the left, the encounters weren’t all arranged linearly. My main idea was this:

  1. Failure to scout ahead would result in players fighting elves on catapult platforms, essentially wasting resources. As it turns out, players did scout ahead but decided to fight all the elves anyway, thinking that they wanted to any surprises behind their backs.
  2. Following the main entrances would put the focus on fighting, following the steamy passages left and down would allow more sneaking and would allow players to fight the dragon before it joined up with the leaders. Players chose to go for the sneakier variant.
  3. I had the vague idea of figuring out whether players were wasting time or being too loud and springing extra ambushes on them if they did. In the press of the moment and considering how lame rolling for “move quietly” would be in this context, I just used the flow-chart as is.
  4. When I gave the players the commando elves to run, I told them that the elves would evaluate their leadership and if they felt that the party had been betraying them (using them as cannon fodder), then surely they would turn on them – just as the party would have turned on them. The players accepted this.

It worked for me!

In the final analysis, it was a lot easier than I expected. Was it because the commando elves were too strong? Was it because the party had four extra players I had not expected? (Two of them are new players from my Sunday campaign and another two players are not regular players so I wasn’t counting on them.) Oh well, I think it’s only fair to not adjust difficulty levels on the fly.


February 19, 2014 11:15 AM

February 17, 2014

Alex Schroeder

Pendragon vs. D&D alter Schule

Meine Pendragon Kampagne hat sich diesen Sonntag ersatzlos aufgelöst. Wie ich schon auf Englisch geschrieben habe, gibt es hierfür eine Vielzahl von Gründen. Für mich war an der Diskussion vor allem interessant, dass zwei meiner Spieler die Pendragon Kampagne mit meiner D&D Kampagne verglichen.

Hier mal ein tabellarischer Vergleich einzelner Aspekte meiner Kampagnen.

Pendragon “klassisches” D&D
Generationen von Spielercharaktere mit klarer Erbreihenfolge. Spielt man ein Jahr pro Spielabend dauert mindestens 20 Spielabende, bis man einen Sohn spielen kann, falls überhaupt einer die ersten 15 Jahre überlebt.Eine Menge von Gefolgsleuten, welche kommen und gehen, parallel zu den Hauptcharakteren Stufe steigen, mächtiger werden. Es gibt keine Blutsbande aber eine gemeinsame Geschichte dank gemeinsam überstandener Abenteuer.
Die Suche nach einer Frau ist wichtig. Sobald man allerdings geheiratet hat, ist die Frau egal. Nebulös entstehen Kinder, von der Dame selber kennt man kaum den Namen. Man könnte sich ein kompliziertes Charakterblatt erstellen, doch der Papierkram bringt sowieso nichts.Sexuelle und romantische Aspekte spielen kaum eine Rolle. Es gibt keine Winterphase, kein Werben, keine Kinder, keine Liebschaften. Gegenüber den vielen Gefolgsleuten gibt es ab und zu eine gewisse Loyalität und Treue, manche von ihnen sind erhalten einen eigene Persönlichkeit.
Das Geld und die Einnahmen sind praktisch egal. Wer reich lebt, kann die Mortalität der Kinder reduzieren und erhält ein wenig mehr Erfahrungspunkte. Man kann Befestigungen bauen und Armeen anheuern, in den Regeln sind Belagerungen aber nur knapp und unklar beschrieben. In der Kampagne heisst es manchmal, dass die Ländereien geplündert werden, doch welchen Einfluss Befestigungen hierauf haben, wird nicht beschrieben.Das Geld und die Einnahmen sind eigentlich egal. Weil Geld aber auch Erfahrungspunkte sind, gibt es einen ständigen Druck, dem Geld nach zu rennen. Für das Domänenspiel verwenden wir An Echo Resounding – zusätzliche Regeln, die einfach und klar formuliert sind. Die Domäne hat Einnahmen, Befestigungen, Einheiten. Das ganze ist wie ein kleines Kriegsspiel, welches jeden vierten Spielabend zur Sprache kommt.
Die Kampagne läuft auf klaren Schienen. Wir wollen die Arthus Sage miterleben. Für die meisten Schlachten ist der Ausgang also schon klar. Keine List, kein Glück kann dieses Schicksal ändern.Das Domänenspiel findet in einer offenen Sandbox statt. Es ist möglich, mit Abenteuern das Domänenspiel zu beeinflussen.
Die Kampagne verführt mich als Spielleiter dazu (wie damals die Paizo Adventure Path Serie), die Spieler auf den Schienen zu lassen.Die offene Sandbox erlaubt mir, dort anzubauen, wo die Spieler sich engagieren. Wo geforscht wird, gibt es auch mehr zu entdecken.
Die Kampagne ist chronologisch strukturiert. Das macht mich bezüglich Nicht-Spieler-Charakteren (NSC) sehr unflexibel. Spielt diese Figur in der Zukunft eine Rolle? Wie finde ich diese Information in einem Buch?Die Kampagne ist räumlich strukturiert. Die Basis ist eine praktisch zeitlose Karte. Wenn wir irgendwo hin kommen, ist klar, was es dort zu finden gibt. Die offene Struktur erlaubt mir Improvisation bezüglich der Zukunft.
Die Kampagne ist voller Abenteuer Ideen. Um ehrlich zu sein sind viele dieser Ideen aber nicht so unglaublich interessant. Ein Teil des Interesses entsteht aus den realen Legenden, welche dazu geführt haben, dass sie Teil der Kampagne wurden.Die Kampagne erlaubt mir, Ideen aus der gesamten Old School Renaissance (OSR) auf zu nehmen. Das macht mir mehr Spass und verlangt von meinen Spielern auch kein Wissen über das Quellmaterial. Meine Kampagne ist allerdings bedeutend eklektischer und konfuser.
Die Regeln scheinen im ersten Anlauf klar und einfach zu sein. Im Einzelfall ist es aber immer wieder schwierig. Darf man jederzeit entwaffnen? Muss man im ersten Ansturm die Lanze verwenden? Wie genau vermeidet man es, ohnmächtig zu werden, wenn man eine grosse Wunde erhält? Wie vermeidet man es, keinen Schaden zu nehmen, wenn man im Sattel ohnmächtig wird? Irgendwo steht die Antwort, aber es ist mühsam und bringt kaum etwas.Die Regeln sind kurz und seit Jahren immer gleich. Ich kann den ganzen Abend leiten und muss kaum eine Regel nachschauen. Einzig Monsterfähigkeiten und Zaubersprüche müssen manchmal nachgeschaut werden. In diesen Fällen ist es aber einfach, die entsprechenden Passagen zu finden. Es braucht praktisch keinen Index, weil Sprüche und Monster alphabetisch sortiert sind.
Egal wie gut man ist, es ist immer möglich in einer Schlacht einen Berseker der Sachsen zu finden, der einem, wenn man Pech hat, mit 12W6 ins Gesicht schlägt, was oft zum sofortigen Tod führt.Am Anfang des Spieles ist es tödlich, doch mit einer Hausregel zum Thema hat sich die Thematik entschärft. Zudem gibt es später Zaubersprüche, mit denen die Toten wieder ins Leben geholt werden können.


February 17, 2014 12:08 PM

No More Pendragon

We stopped play midway through year 510 of The Great Pendragon Campaign after a devastating battle in May and ended the campaign. Too much railroading, too many sudden death moments, too many fiddly rules that slow us down but don’t further our enjoyment, too much leafing back and forth in the book… I’m both sad and relieved, in  a way.

The discussion was kicked off by one player who felt like quitting the campaign and explaining all the things he didn’t like. I agreed with a lot of it. I had written about it myself. Another player said he’d like to play on weekdays instead of weekends. Another player was missing. My wife wanted to continue playing but was suffering because of a recent string of character deaths. The last player was new and said he had been unable “to get into it” in the three sessions he had played with us.

An astonishing thing happened during the discussion. My wife and the player who had started the discussion are both players in my mashup game—the old school sandbox game using Labyrinth Lord, the Wilderlands of High Fantasy, Spelljammer, Planescape, and An Echo Resounding. They started comparing the Pendragon campaign to this other game. The other game is crazy (“I’d describe the atmosphere as killer clowns”) but it has more player agency. Pendragon is more about how you deal with the events around you. My mashup game is about the things you do. I rarely need to pick up a rulebook and search for a rule. The NPCs are all strange and memorable. No king Leodegrance, Sir Cador, Centurion King and other faceless dudes that you haven’t interacted with. Pendragon not only suffers from an inflation of NPC names that players haven’t interacted with, it also encourages me to add names, exacerbating the problem. What are the names of the sons of Duke Ulfius? Who cares? I still feel compelled to look it up instead of making it up.

In a way, the big campaign provides a railroad that affects me as well. I am inspired by the campaign, I steer the players towards the rails, I entice them to stay on the rails, they are always present. Like those pesky Paizo Adventure Paths, they shackle my imagination and stiffle my improvisation.

So, where as I am sad to see it go, I am also happy to see how my players love the classic D&D sandbox and validate the choices I made for that mashup game.


February 17, 2014 07:35 AM

February 15, 2014

Alex Schroeder

Über die Geworfenheit

Gemäss meinem Philosophie Lexikon verstehen Heidegger und Sartre mit Faktizität die Tatsache, dass wir Menschen zwar “als verstehendes und handelndes Individuum” faktisch existieren, doch nicht “Herr dieser Existenz” sind. Geworfenheit ist dieser Zustand. Ins Leben geworfen.

Ich kann mich daran erinnern, wie mich das Tabu kalt berührte, als ich meinen Eltern entgegen spuckte: “Dieses Leben habe ich nicht gewollt! Ihr habt mich ins Leben gesetzt!” Das ist lange her und ich weiss schon gar nicht mehr worum es ging, aber dieser Moment, dieses Gefühl, ist mir in Erinnerung geblieben.

Es überfällt mich immer, wenn ich etwas zum Thema Pränataldiagnostik lese. Heute, zum Beispiel, lese ich in der WOZ über das schweizerische Präimplantationsdiagnostikverbot, welches demnächst gelockert werden soll. Die Zitate im Artikel zeigen mir den unterschiedlichen Umgang mit der Geworfenheit.

“Kinder sind heute Projekte. Alles muss planbar, projektierbar und perfekt sein. Ich finde das eine beunruhigende Entwicklung.” (Brigitte Häberli-Koller, CVP-Ständerätin, TG)

“Man sagt von vornherein, ich nehme das Kind nur, wenn es keine Anomalie hat. Das ist eine gefährliche Haltung und eine irrige Vorstellung: Es gibt keine Garantie für ein gesundes Kind.” (Christa Schönbächler, Insieme)

“Die eigentliche Herausforderung wäre, mit Kinderlosigkeit oder mit Behinderung zu leben und gute Lösungen zu finden.” (Gertrud Bernoulli, Pfarrerin, Rüschlikon)

Dieses Bild des Lebens als eine Zufälligkeit, mit der wir uns arrangieren müssen, dieses Bild, dass der Sinn des Lebens, die Freude des Lebens, die Prüfung der Umgang mit diesen Zufällen ausserhalb unserer Macht sein könnte, dieses Bild ist eine Seite, die ich gut verstehe. Gleichzeitig gehört aber die Intention, unseren Kinder ein besseres Leben zu ermöglichen, ihnen einen Vorsprung zu schenken, ihnen Möglichkeiten zu bieten, zu uns. Es durchzieht alles: kein Rauchen, kein Trinken, Stillen, Förderung, Kindergarten, Schule – alles ist darauf ausgerichtet, das Kind im Sinne unserer Werte weiter zu bringen. Klar, hier bin ich auch ein Kind meiner Klasse: als Burgois kann ich nicht anders. Ich nutze alle Mittel, jede Kulturtechnik, jedes Wissen, welches unser Gesellschaft bietet, aber auch jede technische Lösung. Impfungen, Sportgeräte, Skilifte, alles sinnige und unsinnige im Dienste dieser einen Intention.

Geworfenheit betrifft unser eigenes Leben. Was unsere Kinder allerdings anbelangt, geht es ums Werfen. Einmal abgeschossen, werden wir den Pfeil nicht mehr beeinflussen können. Und so zielen wir. Sorgfältig. Je komplexer die Welt ist, je mehr wir selber Entscheiden können, um so sorgfältiger. Wir schieben den Moment mit Verhütungsmitteln hinaus. Wir ziehen zum richtigen Zeitpunkt in die richtige Gegend.

In diesem Sinne denke ich, dass die Präimplantationsdiagnostik und die Pränataldiagnostik ganz allgemein unserem Bedürfnis entspricht. Alle angesprochenen Probleme, die Begründung von Ausgaben für Jugendliche, die sich “nicht lohnen”, der Umgang mit Schicksalsschlägen, der Umgang mit dem Fremden, all diese ethischen und existenziellen Fragen werden sich weiterhin stellen. Es macht aber keinen Sinn, die aktuelle Situation zu verteidigen, nur damit sich diese ethischen und existenziellen Fragen unverändert weiterhin stellen.

Für die Diagnostik.

Tags: RSS

February 15, 2014 09:40 AM

Finding Duplicate Files

I have a ton of files I downloaded to my tablet and I have a ton of files on my external harddisk. How can I ever clean it all up? With Emacs, I have dired, but no easy way to figure out which files have changed – specially if the files are not all in the same directory structure. Based on EmacsWiki:JoeBloggsdired-dups.el I wrote a new version that did what I wanted it to do.

Find dired-duplicates.el on GitHub.

Now that I think about it, I guess my code does the exact opposite: it find differences, not duplicates. I should change those names…

(As it turns out, there are still bugs in the code. Ouch.)

Tags: RSS

February 15, 2014 12:04 AM

February 12, 2014

Alex Schroeder

Red Cliff

I enjoyed Red Cliff (2008) even though it contained far more battle than I cared for. I liked Tony Leung. I kept thinking about the Three Kingdoms Book I started to read and the episodes of the Chinese History Podcast on the end of the Han, the Three Kingdoms Period, Daoism, the huge ships and formidable weapons the Chinese had.

star star star – I’d recommend it to anybody who likes the genre

Tags: RSS

February 12, 2014 06:27 AM

January 31, 2014

Alex Schroeder

Virtual Photography

I just stumbled over EVE Travel, with pictures and stories from the EVE Online world. What a wall of text. But the pictures! Never having played EVE, I keep getting reminded of my days as a kid playing Wing Commander 1 & 2 on a computer that would be unfit to be my phone’s audio processor, I guess. I’ve seen blogs with photographs of virtual worlds before, and it just keeps amazing me. How far we have come!

Some black and white images from Sykrim, for example. Or hipster Instagram pictures from Mirror's Edge.

Tags: RSS

January 31, 2014 09:39 AM

January 30, 2014

Alex Schroeder

Fourty Years of Dungeons and Dragons

Did you do something special? I gave an interview to one of these newfangled, local, online news sites, in German. Wenn Erwachsene mit Stift und Papier in die Schlacht ziehen, or When adults do battle with pen and paper.

Tags: RSS

January 30, 2014 07:44 AM

January 27, 2014

Alex Schroeder

Nethack Mapping

Today, as we were exploring a ruin of Ianna, I decided I wanted to start mapping on my iPad. But how? Enter ASCII art.


It’s ugly. It doesn’t do slanted passages. It’s slow. But it worked… dead

Perhaps I should just have stuck to the old style:

                                   ---------                --------------
                                 ##.<......|                |............|
                                 # |.......|               #-............|
                              ### #........|             ###---------.----
                               #   |.......-#            #           #
                             Y@#   |.......|#          ###         ###
                             #     |.......|#          #           #
                          ..       ---------### -------#         ###
                         --                   # |......#         #
                                              ##......|  ##########
                                                |>....|       --+-.------
                                                |.....|       |.........|
                                                -------       |.........|

Perhaps what I need is a program that takes a text description of the dungeon and turns it into ASCII art.

Then again, once we do that, perhaps we might as well do node-based dungeon mapping. I might have to read that series of blog posts by Keith Davies again.

Then again, I’ve just skimmed Random Dungeon Generators Reviewed on Inkwell Ideas. Generating good random maps is hard. I still wonder, however. How hard would it be if you provided some input?

Tags: RSS

January 27, 2014 09:46 PM

January 24, 2014

Alex Schroeder

Game Music

I sometimes try to pick an album for a campaign or a particular kind of environment. I often play Lustmord’s Heresy when players enter the Underworld or when facing temples of demon lords. I pick game soundtracks (Elder Scrolls, Vagrant Story) for most of my old school D&D games; I usually play medieval music when running Pendragon (La Capella Reial de Catalunya, for example). I used to play Conan stuff for Barbarians of Lemuria and Crypts n’ Things. I played a lot of 16 Horsepower and Woven Hand (dystopian Country?) for Western games or towns with a Western vibe in my old school D&D game. I guess I’d play Godspeed You! Black Emperor non-stop for a post-apocalyptic game. I sort of try to avoid the Star Wars sound tracks for Science Fiction or the Lord of the Rings / The Hobbit soundtracks for Fantasy, but sometimes it’s just so damn convenient.

I don’t have the time to pick songs for particular scenes when I’m running the game. The only thing I barely manage to do is skip the current track if it is widely inappropriate. I also can’t have songs with lyrics that distract me, nor can I have music that has me bobbing my head or tapping my feet…

Tags: RSS

January 24, 2014 08:46 AM

January 23, 2014

Alex Schroeder


Auf Google+ lese ich immer gerne die Beiträge von Kristian Köhntopp. Heute einen geteilten Artikel von Stefan Münz, in dem dieser schrieb:

NSA, Millionen Mail-Zugangsdaten in Botnets … nein, das ist nicht das Ende des Internet. Es ist nur das Ende überholter bürgerlicher Vorstellungen von Privatsphäre, die in Zukunft so nicht mehr haltbar sein werden (und auch übrigens vor hundert oder zweihundert Jahren in dieser Form auch nicht existierten). Kurzum: es geht um jenen Abschied von gepflegter Heimlichkeit, den die Spackeria schon vor ein paar Jahren propagiert hat. […] Das Netz ist ein Forum, eine Fußgängerzone. We are public. – Stefan Münz

Darauf haben einige Leute in Kristian Köhntopps Kommentaren die Möglichkeiten und Grenzen der Kryptographie diskutiert. Ich selber meinte dazu allerdings:

Es ist nichts dagegen einzuwenden, die “gepflegte Heimlichkeit” zu wollen, egal ob die “Spackeria” das auch will oder sie “vor hundert oder zweihundert Jahren in dieser Form auch nicht existierten”. Der Ist-Zustand ist nicht unveränderlich.

Manchmal wirft man der Justiz vor, mit veralteten Gesetzen neue Tatsachen beurteilen zu wollen. In diesem Fall will ich aber genau mit meiner (veralteten Spackeria-?) Moralvorstellung die alten Gesetze (oder Wunschvorstellungen) beibehalten. Die Privatsphäre, den Schutz der Kommunikation, den Schutz derjenigen, die Missstände aufdecken, den Schutz der Journalisten, den Schutz ihrer Quellen, und so weiter. Und ich will hierfür die moderne Technik verwenden können.

Wenn das Netz eine “Fußgängerzone” ist, dann heisst das ja noch lange nicht, dass keine Regeln gilt, dass wir keine Erwartungen an unsere Mitbürger haben. Deswegen muss man halt an vielen Strängen gleichzeitig ziehen. Nur auf der Machbarkeit der Verschlüsselung herum zu reiten ist nicht zielführend.

Eine andere Welt ist möglich. Die Gegenwart als unveränderlich zu beschreiben ist konservativ.

Meinen öffentlichen Schlüssel gibt es über die üblichen Schlüsselserver.

pub   1024D/353AEFEF 2002-07-10 [expires: 2014-11-01]
      Key fingerprint = 92F1 9F7D D289 D4D8 CEAE  0427 7573 68E7 353A EFEF


January 23, 2014 08:24 AM

Fight On

Fight On! #14 has been released on Lulu! The bestest old school fanzine is back, like a revenant it haunts the living even if we know that it is already dead. Calithena has said that #15 will be the last issue and that saddens me. Issue #14 also came without my Caverns of Slime. This doesn’t make me as sad as I thought it would because we get a fantastic troll fortress instead. Gatehouse, temple, main complex, it has everything and nice, emphatic maps. Thick, black lines, high contrast edges, and yet clearly labelled. Citadel of the Dark Trolls. Lee Barber. Well done!

One of the comments in the announcement thread says “I used the code GETIT25 and got 25% off my order.” Good luck!


January 23, 2014 06:44 AM

January 18, 2014

Alex Schroeder

Pendragon and the Great Pendragon Campaign

I wrote about Pendragon last year. Tomorrow I’ll be running the year 509. As the Great Pendragon Campaign starts in 485 and we usually play once a month, one game year per session we must have played for 25 sessions and about two years of real time.

I’ve written about the cool stuff before. I don’t really like skills in my games, but Pendragon skills still works. It has a weird but satisfying criticial hits system: roll under your skill on a d20 and you succeed, roll your skill exactly and it’s a critical success, if your skill is higher than twenty, you can’t ever fail—add whatever you have above twenty to your roll, making critical successes even more likely. I also like the traits pairs of traits that will sometimes govern how characters reacts, even if players don’t want them to. You can invoke them for a small bonus but if you fail, there’s also a small penalty. Then there are passions which are similar, except they don’t come in opposing pairs. If you manage your passion roll, you get a big bonus. If you fail, you get a big penalty. And if you fumble, you run into the woods, a raving madman. You’re taken out.

I want to talk a bit about the things that do not work as far as I am concerned. We’ve played the King Uther period and we’re finishing the Anarchy period. I don’t think these problems will disappear, however.

One of the first things we noticed while playing the Great Pendragon Campaign was that the Family Events in the Winter Phase are not very exciting. Having seen some great random event tables in the Old School Renaissance for D&D, I was not impressed by the table in the book. We’ve tried to write better stuff (in German), but so far we haven’t managed to strike the right balance between family development, adventure hooks and color. Ideally, these events would help my players discover their family tree, add nephews and nieces, cousins and more. For a while we used the Dramarama tables, but that led to several family members having affairs with tax collectors and the like. It didn’t work for us. The original table also had many women disappearing, but I wasn’t sure what to do with it. We had an adventure involving a saxon witch, but I’d like the table to provide me with more. I’d also like the table to provide players with a small opportunity to showcase their characters. Let us know about their traits, their families, their relationships. Alas, it isn’t working.

I also noticed that the book places a lot of importance on wives and marrying, but other than the first four candidates in the book, no stats are provided. We soon needed to know about their Stewardship and Chirurgery skills and only one of us was brave enough to create complete character sheets for their character’s wives. I would also have liked to know more about the glory prospective wives are worth, the number of manors they provide, what characters they have. I would have liked a table to generate appropriate wives, for example. That would have been a good solution. Quick to use at the table, too.

After a few sessions, players will start earning money with their manors. That, too, isn’t explained too well. We do opposed rolls of Bad Weather vs. Stewardship and figure out the resulting economic level of the knight’s lives, eg. “rich”. Now what? Does the character get £9? £8+1d4? Does the character get no money all but produce that can be spent but not saved? Can this money be used to build fortifications?

This brings me to another problem: Later in the game, people can learn the Siege skill. What happens with people in fortifications when the attacker has no Siege skill: Can they never take these fortifications? There are sadly very few example castles in the book. Do the saxons ever attack fortified manor houses? I guess they don’t. The fortifications also don’t protect against raiding saxons, right? So it just keeps your family safe?

The Winter Phase is too much book keeping.

As for the Campaign itself: Sometimes it feels very much like a railroad. Sometimes it’s hard to figure out what to do. Sometimes the adventure ideas are great. I’m still undecided. I sort of like it, I just wish more years were as cool as some of them.

In short, I think there is a great game in Pendragon. The campaign is good but could be better; the rules are good but could be better. I have already decided that I won’t be buying any more books. I need less rules, not more. I feel like I’d have to write a little houserules document and use it to run my next campaign. I sometimes find it hard to believe that other people haven’t run into these things and that these issues haven’t been fixed. I hardly read the forums, however.

I’ll keep running it. I just wish somebody would write the house rules I think I need. If you had the same issues, let me know how you handled them.

Update: Excellent comments by Doyle Tavener on Google+.


January 18, 2014 11:12 PM

January 17, 2014

Alex Schroeder


I followed the tutorial Server Monitoring With munin And monit On Debian Wheezy by Falko Timme and I think it worked! I made some small additions in order to monitor Exim4 and Dovecot based on the Monit configuration examples on their wiki and some notes on self-signed certificates from the Debian wiki.

For my future self trying to figure out what the hell is going on:

Nice! ok

Tags: RSS

January 17, 2014 02:34 PM

January 15, 2014

Alex Schroeder


I recommend you all subscribe to Bruce Schneier’s Crypto-Gram newsletter if you aren’t subscribed to his blog. Today’s Crypto-Gram, for example, has this excellent passage:

Not only is ubiquitous surveillance ineffective, it is extraordinarily costly. I don’t mean just the budgets, which will continue to skyrocket. Or the diplomatic costs, as country after country learns of our surveillance programs against their citizens. I’m also talking about the cost to our society. It breaks so much of what our society has built. It breaks our political systems, as Congress is unable to provide any meaningful oversight and citizens are kept in the dark about what government does. It breaks our legal systems, as laws are ignored or reinterpreted, and people are unable to challenge government actions in court. It breaks our commercial systems, as US computer products and services are no longer trusted worldwide. It breaks our technical systems, as the very protocols of the Internet become untrusted. And it breaks our social systems; the loss of privacy, freedom, and liberty is much more damaging to our society than the occasional act of random violence.
– Bruce Schneier, How the NSA Threatens National Security


January 15, 2014 09:48 AM

January 14, 2014

Alex Schroeder

January 12, 2014

Alex Schroeder

Good Night, Pyrobombus

I’ve used this Mac Mini since the summer of 2006 on a crappy 1024x768 monitor and loved it. But now Claudia has a PowerBook and Apple doesn’t allow me to run Mac OS 10.9 on this Mini and there seem to be no more security patches. It’s too old. It has become a security risk. This is the machine that made me switch from PCs to Macs. I called it Pyrobombus. Bye bye, Pyrobombus. Perhaps I shall one day install Debian. But right now we just don’t have a need for another computer in the house. Also, the keyboard sucked.


January 12, 2014 05:43 PM

Chase Rule

This post is a translation of the rule presented in German a few weeks ago: 2013-12-23 Verfolgungsjagd. Matt Wagner was wondering about chase rules on Google+.

This rule is part of my German house rules document, Halberds & Helmets. I just can’t remember the weird rule from the Basic D&D and Labyrinth Lord books. Inspired by skills in Apocalypse World I decided to use 2d6 and ideas by Erin Smale he left in a comment on a Google+ post of mine.

Chase: If you’re being chased, roll 2d6. On a 2, you’re surprised. On a 3–6, it’s a fight. On a 7–9, choose two points from the list. On a 10–11 choose one point. One a 12, you made it, no problem.

  • you were separated
  • it takes a long time
  • you got lost
  • you had to drop shields and backpacks

Optional modifiers. +1 for each of the following: if there are twice as many chasing you, if you have a faster movement rate, if there’s a thief in your party, if it rains, if it’s dark. -1 for each of the following: if there’s an elf or a ranger tracking you, if there are wounded party members with you, if there’s snow on the ground.

Only use the modifiers if you remember. :)


January 12, 2014 01:52 PM

January 11, 2014

Alex Schroeder


My Old School Hex Map Tutorial tells people to use mkhexgrid, if they can. It’s what I’ve been doing for years, now.

On my wife’s laptop we now run Mac 10.9 (“Maverick”) and it no longer builds. As I’ve switched to using Homebrew, I recided to write my own Formula.

If you want to try it, save it as /usr/local/Library/Formula/mkhexgrid.rb and run brew install mkhexgrid. The only tricky thing is that it requires the GD library to be built with FreeType, apparently. If you don’t have GD installed, great. This Formula will do the right thing. If not, you might have to brew uninstall gd before proceeding.

require 'formula'

class Mkhexgrid < Formula
  homepage ''
  url ''
  sha1 '3b8e0be3636f90a3217a5e3556bdaf7bb0c49116'

  depends_on 'gd' => %w{with-freetype}

  def install
    inreplace 'Makefile' do |s|
      s.change_make_var! "DESTDIR", prefix
      s.change_make_var! "CC",
      s.gsub! /install (.*) -o 0 -g 0/, 'install \1'
    inreplace 'mkhexgrid.cpp' do |s|
      s.sub! 'catch (exception &e)', 'catch (std::exception &e)'
    system "make" # needs to be separate
    system "make", "install"

  test do
    # test the example from the man page (but without inches)
    system "mkhexgrid", "--output=ps", "--image-width=2448",
    "--image-height=1584", "--hex-side=36", "--coord-bearing=0",
    "--coord-dist=22", "--coord-size=8", "--grid-thickness=1",
    "--coord-font=Helvetica", "--grid-grain=h", "--grid-start=o",
    "--coord-tilt=-90", "--centered", "-o", ""


January 11, 2014 07:24 PM

January 05, 2014

Alex Schroeder

OSX Maverick and Apache

A bookmark for myself regarding Apache. The important part is this:

OS X comes with Apache already installed, so it’s as simple as starting up the server. Previously, you could start this using the System Preferences > Sharing panel, but it has been removed from there in 10.9. – OS X Mavericks and Apache

It tells you how to start Apache from the command line. The important part was how to make sure that it gets started when the machine is booted, though:

sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist


January 05, 2014 01:16 PM

January 04, 2014

Alex Schroeder

The Walrus and the Warwolf

These days I read a lot less books than I used to. I read too much blogs on the topic of role-playing games, too much time spent on Google+, also on the topic of role-playing games, I skim this role-playing book and that PDF, and since I’m mostly interested in the Old School Renaissance of role-playing games—namely D&D from the nineteen eighties—I also feel like I ought to like the books recommended by one of the founding fathers of D&D, Gary Gygax in his Appendix N of the AD&D Dungeon Master’s Guide. If you’re interested, you should check out the articles in Martin Ralya’s blog tagged Reading Appendix N.

These books are weird. Compared with the The Lord of the Rings, The Wheel of Time, A Song of Ice and Fire or Malazan Book of the Fallen, these older books are short. There are sometimes short stories, collection of short stories, novellas, or little paperback books. All of Robert E. Howard’s Conan the Barbarian fit into two books of typical size for these fantasy series.

A while back, I remembered how eagerly I read all those Darkover books by Marion Zimmer Bradley and I decided to find them all second hand, in German, on Amazon, and buy them for Claudia. Every now and the she reads one of them, interspersed with some Steven Erickson and George R. R. Martin. We start talking and comparing. There are two aspects I like about these books:

  1. each book stands on its own
  2. each book only has a single plot line

Tolkien may have started this dreadful fashion of telling multiple stories at once. But in his case, at least each segment was long, very long. When I read George R. R. Martin, I feel like the author is suffering from Attention Deficit Disorder. Is every little segment ending on a cliff hanger? When I start noticing the literary devices, when I start to see the man behind the curtain, it doesn’t really work anymore. It starts to bore me. I start noticing that—like in Zeno’s paradox about Achilles being unable to overtake the turtle—as the number of segments increase, the time slot available decreases. As more stories are told in parallel, less actually happens. Plot is reduced to flashes and still images.

I am exaggerating, of course. In comparison with older books, however, I start to appreciate a tight plot, a unified vision, a drive forward. All the Conan stories stand on their own. They can be arranged in some sort of chronological order, but that’s not the important part. Similarly, the Darkover books can be read in any order. You get the occasional reward for regular readers. Older stories are referred to, but understanding this is strictly optional.

I was once again reminded of this when I read The Walrus and the Warwolf. It was published in Paizo’s Planet Stories line (now discontinued). I liked it very much. The book itself wasn’t short, but the chapters were short. The characterizations were short. Things happened. I felt that it incorporated not the best of literature, of language, of fancy words and synonyms and antonyms but it incorporated what is best in story telling. Keeping things short. Just enough words to let the reader’s imagination embellish it all without ever taking too long to read.

I’m hoping that I’ll like the other volumes in Hugh Cook’s Chronicles of an Age of Darkness series. I’ve ordered many of the volumes second hand, via Amazon. I also ordered the four books that got translated into German. Perhaps Claudia will enjoy them as well.


January 04, 2014 11:06 PM

January 02, 2014

Alex Schroeder

Bryce Likes My Adventure

About two months ago, I submitted an adventure to Bryce Lynch’s Adventure Design Contest. And the results are in!

Bryce has nothing but kind words for my submission as far as I can tell:

This one page adventure packs the full punch that one would expect from Alex. Great NPC’s, great little encounters, all delivered in the “expanded crib notes” format that a one-page dungeon provides for. Good outline of a good adventure.
– Bryce Lynch, Contest Winners! Bryce’s 2013 Adventure Design Contest is OVER!

I’m particularly proud of the way I tried to make every word count. I wanted to keep things short and I think I succeeded when Bryce writes “Alex has a knack for coming up with exactly the right words to use to bring a maximum amount of flavor in a minimal number of words”. Yay!

Bryce also points out the major weakness of my submission: it’s very linear. I stripped some items from my original notes: two more NPCs from Uncaged: Faces of Sigil, a false lead to Hopeless, the Gatetown to the Grey Waste, … but even if I had made it a two page adventure, it wouldn’t have changed a thing because this adventure is “essentially, just the notes that many DM’s will write up before an adventure. A rough outline.”

If you ever use it, let me know. I’d love to hear about it!

Unfortunately the contest dropped off the radar pretty quickly. There weren’t too many entries, as far as I can tell. I had the same problem with the One Page Dungeon Contest in recent years. I don’t know what to do about it. When I keep blowing that trumpet, it feels like spam.

See how I subtly provided myself with the opportunity to repeat something that has been on my mind, lately? I’m not planning on running the One Page Dungeon Contest 2014. I’m looking for somebody to take over. Interested? Let me know!

I should ask Bryce to just run the 1PDC and skip the sponsors and prizes.

Update: Random Wizard has offered to run the One Page Dungeon Contest 2014!


January 02, 2014 11:06 PM

January 01, 2014

Alex Schroeder

Not Planning Ahead

I’ve been enjoying a few days off and I’m having the hardest time not planning ahead like crazy. Plans change, the players decide where they will go next… and I prefer reading a book to preparing stuff that will never get used. Sometimes it’s hard to adhere to my own advice. The next adventure is good enough! :)


January 01, 2014 01:46 PM

December 31, 2013

Alex Schroeder

Scanner Again

We decided to switch from the Apple Mac Mini running Mac OS 10.6.8 (since it’s such an old machine it cannot be upgraded) to Claudia’s 13” Powerbook running the latest Mac OS 10.9.1.

And, as always, the old CanoScan LiDE 25 doesn’t work. The latest drivers are for Mac OS 10.6 – yay. I found fixed : use unsupported scanner in OSX 10.9 Mavericks] which had me install some promising libs. But it didn’t work. The Printer & Scanner preference pane never found the old scanner, and on the command line I didn’t get the scanner listed.

I decided to give Homebrew a try and installed sane-backends. This required a painful and slow uninstalling of libusb and the sane-backends installed by the promising libs I had just installed.

Using the sane-backends installed by Homebrew, I can now scan from the command line. Oh well, better than nothing.

alex@Megabombus:~$ scanimage -L
device `plustek:libusb:004:002' is a Canon CanoScan LiDE25 flatbed scanner
Trace/BPT trap: 5
alex@Megabombus:~$ scanimage --device=plustek:libusb:004:002 --format=tiff --mode=color --resolution=300 -l 0 -t 0 -x 215 -y 297 > Desktop/scan.tiff
Killed: 9
alex@Megabombus:~$ open Desktop/scan.tiff 

It works. ok

Since the scanner is not supported by Image Capture, I can’t use it to scan from Gimp. sucks

The TWAIN-SANE-Interface and the SANE-Preference-Pane I installed appear to be useless. Oh well. sucks

And now that I have scanned the picture I just need to reinstall Tex Live 2013 since the migration appears to have failed. sucks


December 31, 2013 01:44 PM

December 28, 2013

Alex Schroeder

Looking Back

The end of the year is always a good opportunity to look over the year’s posts—RPG posts, to be exact. The year itself started on a sad note: Fight On! is going down. The writing was already on the wall in 2012 and the adventure I had submitted for the last issue is available as a free PDF, Caverns of Slime.

But on to positive things! I tried to list the Old School Fanzines I knew, hoping to find a magazine “for me”. It’s weird. What about Fight On! Magazine made me want to contribute? What I remember best are the early levels of The Dismal Depths and the Fomalhaut material by Gabor Lux.

I still use my classic D&D character generator, for non-player characters and for character sheets on my Campaign Wiki. Some examples: Waran and Rinathil using ACKS, Stefan and Garo (this one belongs to my wife) using B/X D&D, Sir Guy (this one by a former player) and Sir Sewolt (another one belonging to my wife) using Pendragon.

Next session we will be assaulting the Barrowmaze using a party generated by drawing from a pile of random first level characters generated by this character generator. Electronic vat men!

I was looking for an alternative to creating a hex map using Inkscape (something I have been doing for my Sea of the Five Winds campaign) and so I wrote Text Mapper. I wrote a post comparing the two methods.

To be honest, however, I haven’t been using it. My Sea of the Five Winds campaigns already has a map, my Pendragon game uses the maps from the book, DM Florian uses Hexographer, DM Harald uses the maps from the book.

It felt weird to return to Red Hand of Doom. I was running it for the kids and using Labyrinth Lord instead of D&D 3.5. I enjoyed it very much. We skipped two chapters, though: no fighting the druid lich and no confronting of Tiamat’s avatar at the end. We used the mass combat rules from JB’s B/X Companion.

I wrote two one page adventures in 2013 that are based on my actual prep notes, To Rob A Witch and Sepulchre of the Clone.

That reminds me. Last spring I ran the One Page Dungeon Contest 2013 and all the posts are tagged 1PDC. I’m currently not planning to run the contest in 2014. Do you know anybody who would like to do it? I wrote How To Run A Contest to help you get started.

I also discontinued the Old School RPG Planet. If you’re willing to do the actual leg work of asking people to submit their sites, talking to bloggers, answering questions, I could set it up again. I am willing to handle the technical aspects of it. I just don’t want to deal with angry dudes on the Internet.

But on to more positive things again!

I still use my Spell Book Notation. That’s because I use a strict reading of the magic system such that elves and magic-users have a repertoire equivalent to their spells per day (to use the Adventure Conqueror King System terminology) and neither elves nor magic-users can copy spells from scrolls and spell books.

In my campaign this means that all the elves of a particular elf settlement will have a subset of the spells available to the elf lord. What I do is this: I write down the elf lord’s spell book using the notation above and whenever we meet a minion of a particular level, it’s easy to figure out which spells they have available by looking at the second column.

In a similar vein, I wrote about using 1d20 instead of 2d6 for dungeon stocking. As it turns out, however, I do this so rarely that I keep forgetting about it. I just don’t run enough dungeon adventures.

Still in the same vein, I was also comparing old school dungeon stocking to other methods of adventure location creation and found the traditional way of doing things to be very quick and the result just as good as the new ways. I’m a gaming traditionalist at heart, I guess.

I thought about using skills inspired by Apocalypse World in my games but ended up not doing it. DM Harald does it in his campaign, but I remain sceptical.

I wrote a bit about running the game. There was a post on my session preparation process for old school games, how to run Fate, how to run settlements in sandbox campaigns, how to let players introduce facts into your traditional campaign, how to use treasure, group initiative and when to roll.

In addition to that, I quoted a Google+ comment by Ian Borchardt on wilderness encounters and a comment by Kevin Crawford on urban campaigns.

And with that, here’s to the blogs, conversations with strangers on the Internet, and freedom, justice and peace for us all.


December 28, 2013 03:57 PM

December 23, 2013

Alex Schroeder


Gerade machte ich mir wieder Gedanken über Verfolgungsjagden für meine Helme & Hellebarden Regeln. Die komische Tabelle bei Labyrinth Lord und Basic D&D kann ich mir nicht merken. Da erinnerte ich mich an Skills bei Apocalypse World und machte mich an eine 2W6 Tabelle, die von Erin Smales Kommentar auf meinen Google+ Artikel inspiriert ist.

Verfolgungsjagd: Wer verfolgt wird, muss 2W6 würfeln. Bei 2 haben die Häscher euch überrascht. Bei 3–6 kommt es zum Kampf. Bei 7–9 wähle zwei Punkte, bei 10+ wähle drei Punkte aus der nachfolgenden Liste.

  • ihr konntet zusammen bleiben
  • es ging schnell
  • ihr wisst, wo ihr seid
  • ihr habt Schilde und Rucksäcke noch

Optionale Modifikatoren: Je +1 für die Gejagten, falls es doppelt so viele Verfolger gibt, für eine höhere Bewegungsrate, für Schilde fallen lassen, für Rücksäcke fallen lassen, wenn ein Dieb dabei ist, bei Regen, bei Dunkelheit. Je -1 für die Gejagten, falls ein Elf oder ein Jäger bei den Häschern ist, mit Verwundeten, bei Schnee.

Vincent Baker verwendet in Apocalypse World selber ja keine Modifikatoren für die Moves. Ich vermute, das wird bei mir ähnlich sein. Vielleicht sollte ich noch hinzufügen, dass man bei 12+ einfach entkommt.

Tags: RSS

December 23, 2013 10:43 PM

December 22, 2013

Alex Schroeder

Sepulchre of the Clone

Notes for a session:

As you can see, the magic user was not yet a high-level Vivimancer when I ran the adventure. I had to push him up to 15 if I wanted the clone to be based on the actual spell-casting ability of the dude. At the time I justified the clone with rituals and machinery… You might also notice the notes on snow apes, rocket men and shark men. Indeed, I ran this as the tower in the middle of the lake of The Forgotten Depths.

At the time the baboons were “blood monkeys” and the player characters forced one of them to cross the blue room and mash buttons. They didn’t realize that this would revive the clone and once they monkey came back, they killed it. Cruel!

They stole the clone’s spell book and still befriended the clone (who didn’t know that it was they that had stolen the book). Once befriended, they decided to “help” him retrieve his spell book and “hunt” for the blood monkeys that must have done it. And strangely enough they soon found it “in the forest”. All is well that ends well, I guess.

In my game, the clone wasn’t a Vivimancer but a Polymorpher. The spell selection for Vivimancers is cooler, though. It explains the dense plant life, the mushrooms, the degenerate humans, the intelligent monkeys, the minotaurs, and so on.

Resulting second draft:

Sepulchre of the Clone.pdf

It still needs some proof reading. The idea is to submit this for Gavin Norman’s upcoming Vivimancer Supplement. Today I learned that a one page adventure for A5 paper is harder than it looks. :)

The strange “polymorph other into human for a limited time span” is magic item I wanted to keep. I felt that perhaps a player would be able to take advantage of it, or maybe they’d feel like dismantling it and taking it on to their own ship. They never did, however.


December 22, 2013 02:35 PM

December 19, 2013

Alex Schroeder

Über die Bildung

A note to English readers: If this post showed up in your feed, you should probably switch to a different feed. Some suggestions: RPG only, just English.

In der WOZ las ich gerade Wer profitiert von der Uni im Netz? Was als gratis Bildung im Netz für alle begann, wird nun zum Werkzeug für Einsparungen an den Universitäten und damit für die Verschlechterung der nicht kommerzialisierbaren Eigenschaften des Studentenlebens: interessante Komillitonen, Politisierung, Engagement…

Auch für die Entwicklungshilfe hat man sich Unis am Netz gewünscht. Bezeichnend fand ich diese Passage:

Wie eine Studie der Universität Pennsylvania kürzlich nachwies, gehören achtzig Prozent der KursteilnehmerInnen auf der Plattform Coursera aus Ländern wie China, Indien oder Brasilien zu den Reichsten und am besten Ausgebildeten ihres Landes.

Die Zahlen zeigen ausserdem: Regelmässig schliessen weniger als zehn Prozent aller ursprünglich Eingeschriebenen einen MOOC ab – und nur rund die Hälfte davon erfüllt dabei auch die notwendigen Anforderungen für ein Zertifikat

Ich bin mir nicht sicher, wie das zu verstehen ist. Auch hier in der Schweiz gehen Kinder von Akademikern tendenziell eher studieren. Auch hier beenden sehr viele ihr Studium frühzeitig, fallen durch, wechseln… Jeder, der schon einmal online etwas organisiert hat, weiss, dass die Hemmschwellen für das nichts tun und das zu spät kommen weg fallen.

Grundsätzlich kann man vielleicht nur sagen, dass die Zahlen auf alle Fälle zeigen, dass Unis am Netz für viele Probleme keine Lösung sein können. Es ist schwieriger. Dies muss man wissen, auch wenn die Technologiegläubigkeit und der Optimismus unter den Verantwortlichen nicht erstaunen.

Wer sich noch nie mit online Kursen beschäftigt hat, kann sich ja mal die Khan Academy anschauen. “Learn for free about math, art, computer programming, economics, physics, chemistry, biology, medicine, finance, history, and more.” Tönt gut!

Hierzu habe ich zufälligerweise gerade auf Google den Artikel Comcast, Khan Academy Aim Multimillion-Dollar Partnership At Low-Income Families gesehen. Dort spricht Kahn das selbe Problem an. Die Mittleklasse nutzt die Angebote, die sie der ganzen Welt anbieten will, auch selber, und so bleiben die alten Strukturen erhalten.

Vermutlich ist es schwierig, den Armen zu helfen, sich selber zu helfen, ohne ihnen etwas zu geben. Umverteilung, Mindestlöhne, eine Reduktion der Wohlstandsschere scheinen mir langfristig bessere Massnahmen.

Was natürlich nichts daran ändert, dass ich Khan Academy ähnlich gut finde wie Wikipedia. Mehr Wissen, mehr Bildung! Dies allerdings als Entwicklungshilfe zu verkaufen, ist – wie gesagt – Technologiegläubigkeit und überzogener Optimismus.

Tags: RSS

December 19, 2013 07:36 AM

December 17, 2013

Alex Schroeder

PDF Button

I’m experimenting with a PDF button for this website. In the past, I suggested Print Friendly & PDF. Yesterday I learned about wkhtmltopdf, which does the same thing without depending on a remote service and their ad revenue. On a typical Debian host, you need to apt-get install wkhtmltopdf. This installs a binary and all the required libraries. The problem is that this version needs an X11 server in order to work, which you don’t have when using it on your website. In addition to a regular installation, you need to install a statically compiled binary which has been compiled with a patched version of Qt and no longer requires an X11 server.

In your Oddmuse config file:

$Action{pdf} = \&DoPdf;
push(@KnownLocks, 'pdf');

sub DoPdf {
  my $id = shift;
  local $StyleSheet = '';
  my $html = PageHtml($id);
  my $source = "$TempDir/document.html";
  my $status = '500 INTERNAL SERVER ERROR';
  open(HTML, '>:utf8', $source)
    or ReportError("Cannot write $source: $!", $status);
  # see GetHeader
  print HTML GetHtmlHeader(NormalToFree($id), $id);
  print HTML $q->start_div({-class=>'header'});
  print HTML $q->h1({-style=>'font-size: x-large'}, GetPageLink($id));
  print HTML $q->end_div(); # header
  print HTML $q->start_div({-class=>'wrapper'});
  # get rid of letter-spacing
  my $sperrung = '<em style="font-style: normal; letter-spacing: 0.125em; padding-left: 0.125em;">';
  $html =~ s/$sperrung/<em>/g;
  my $newthought = '<em style="font-style: normal; font-variant:small-caps; letter-spacing: 0.125em;">';
  $html =~ s/$newthought/<em style="font-style: normal; font-variant:small-caps">/g;
  print HTML $html;
  # see PrintFooter
  print HTML $q->end_div(); # wrapper
  print HTML $q->start_div({-style=>'font-size: smaller; '});
  print HTML $q->hr();
  print HTML $FooterNote;
  # see DoContrib
  SetParam('rcidonly', $id);
  SetParam('all', 1);
  my %contrib = ();
  for my $line (GetRcLines(1)) {
    my ($ts, $pagename, $minor, $summary, $host, $username) = @$line;
    $contrib{$username}++ if $username;
  print HTML $q->p(Ts('Authors: %s',
                      join(', ', map { GetPageLink($_) }
                           sort(keys %contrib))));
  print HTML $q->end_div(); # footer
  print HTML $q->end_html;
  print HTML "\n";
  my $target = "$TempDir/document.pdf";
  my $error = `/home/alex/bin/wkhtmltopdf --print-media-type --quiet '$source' '$target'`;
  ReportError("The conversion of HTML to PDF failed", $status) if $error;
  open(PDF, '<:raw', $target) or ReportError("Cannot read $target: $!", $status);
  local $/ = undef;
  my $pdf = <PDF>;
  ReportError("$target is empty", $status) unless $pdf;
  binmode(STDOUT, ':raw');
  print GetHttpHeader('application/pdf');
  print $pdf;

sub PrintMyContent {
  my $id = UrlEncode(shift);
  if ($id and $IndexHash{$id}) {
print qq{
<form action="$FullUrl"><p>
<input type="hidden" name="action" value="pdf" />
<input type="hidden" name="id" value="$id" />
<input type="submit" value="PDF" />

Let me know if it works for you while I try to figure out whether I need this at all. The position of the PDF button at the very bottom of the page is probably less than ideal.

As you can tell, the markup using increased Wikipedia:letter-spacing is messing it all up, which is why I had to fix it.

Tags: RSS

December 17, 2013 11:45 AM

December 13, 2013

Alex Schroeder

Session Preparation Process

Over on The Rusty Battle Axe the author says “Megadungeons were all the rage in the tabletop RPG blogsphere back in 2008-2009. There are plenty of posts on megadungeon dating back to the period.”

I still haven’t run a Megadungeon, even though I have bought several: Stonehell, Rappan Athuk (twice), Castle Whiterock, Tomb of Abysthor, … I feel like I would like big dungeons. When I prep for my games, however, that’s not how it works.

If you look at my Swiss Referee Style Manual you’ll note that it is practically without advice for dungeon adventures. That’s because my dungeons are small. Usually they are one page dungeons. How come? When I prepare a game, I usually start from the answers I got at the end of the last session. I almost always end by asking: “So, what are we going to do next time?”

I write down the relevant non-player characters: people to meet, people to oppose, people with jobs to hand out, with quests that need resolving. I usually end up with one to four characters.

The bad guys are usually in a defensible position so I prepare spells, minions, rooms, a map… a one page dungeon, a ship deck plan or a village with a few important buildings (in which case I won’t prepare floor plans for the buildings). I usually end up with four or five buildings or ten to twenty rooms, a sketch of a map.

I think of complications. This is usually something that works in layers. Every two or three days I have a lame idea that I mentally add to the adventure. After two weeks, however, five lame ideas make a cool complication. I usually don’t think of a solution. The gargoyles want the player characters to leave, consider themselves to be /Übermenschen/… The elves are petriefied by a gorgon bull and the players have neither the saves nor the spells to survive a direct encounter. As it turns out they managed to get the gargoyles to accept their commands and the gargoyles brought all the petrified elves to the survace.

I think of rewards. I usually start by rolling on the appropriate treasure tables and embellish the magic items, if any. A armor +1 and shield +1 turn into the golden halfling armor of Priamus Bullfighter who disappeared 21 years ago from Elfenburg. The sword +1 turns into the blade of the herring knight, smells of fish allows the wearer to feel how far away the next air bubble is… I make a mental note to add the remaining equipment of said knight to the dungeon or future adventures… If my players decide to follow up I will place his city or temple on the map, and add the protector saint of all fish, and his paladins, and their special abilities, and there will be rescue missions, and favors to be granted…

Working iteratively is important for my process. I try to pull in non-player characters from very old sessions. Wespenherz, the new hireling, is an elf that they had rescued from bad guys in a previous campaign up in the north. This ring they just found was forged by Qwaar the Axiomatic and didn’t Muschelglanz write a book about the rings of Qwaar? Yes he did and as far as he know he had decided to investigate the Barrowmaze and never returned… It gives depth to the campaign, some players remember and start digging through the campaign wiki, older players explain newer players what happened back then, … I love it!

This sort of thing doesn’t come easy. As I said, every two or three days I have a lame idea, but after two weeks I’ve had enough lame ideas that together they make the game better. Much better.

The process also shows why it’s hard to integrate megadungeons. When I look at them, I want to skim them for interesting non-player characters my players would want to contact, for prison cells my players would want to rescue interesting non-player characters from, for interesting rewards my players might want to be looking for. And that’s so damn hard.

I still remember placing the Barrowmaze in my campaign and having an important non-player character flee towards it. I was using Nualia, an evil fighter with an evil sword from a Pathfinder adventure and decided that her dad was a priest of Nergal who lived in the Barrowmaze and was involved in the power struggle. Then I had an evil authority person from Kerealia fleeing towards the Barrowmaze because the players had ousted him. The dungeon itself was ok, not overwhelming. We rescued a dwarf from a pit and he’s still with us.

Once the players fell into a bottomless pit and dropped into the astral sea, they never had the urge to return, hower. Having Muschelglanz disappear in the Barrowmaze is my new attempt at letting the Barrowmaze play a role in my campaign. It hasn’t managed to make itself important. I was unable to find or emphasize anything in the megadungeon itself that would motivate my players to return again and again.

The reason I thought of using the Barrowmaze again was that one player decided to offer a reward for the return of Muschelglanz. I proposed to my players to play a random party of first level dudes trying to claim this reward by going into the Barrowmaze and finding Muschelglanz. They liked the idea so that’s what we’re going to do.

When I started preparing for the next session, I did what I usually do. I looked for cells to put him in. I looked for the headquarter of a faction that held him prisoner. I tried to find the important non-player characters and I tried to find a thing that Muschelglanz might have been looking for. I know that there is supposed to be a tablet somewhere. But everyhing else has been tricky. I really need to skim it again. Gaaah.

Now you know what I would appreciate in a megadungeon. Just in case you’re writing a megadungeon. :)


December 13, 2013 09:59 AM

December 12, 2013

Alex Schroeder

Treasure for an Elven Sorceress

My players finally returned to the Elfenburg, the halfling village at the most beautiful waterfall of the Wilderlands of High Fantasy. I had previously established that the village was built around a green glass tower which was later found to have been built by elves, and down in the dungeon there was a room with 86 petrified elves and a gorgon bull (the kind with petrifying breath). The story was this: The elven sorceress used earth magic to erect the glass tower. Something poisoned the earth blood and caused the building to turn evil. The sorceress decides that she needs to boost her spell casting power and leaves, looking for a power-up.

Since elves cannot reach the level necessary to cast stone to flesh I decided that all this stone magic had to be based on long and elaborate rituals. The sorceress decided that the Aakom of Qelong would do and disappears. Before leaving, however, she decides to use the gorgon bull to petrify her people “for storage” and to keep them safe against the ravages of time. I occasionally force myself to make elves strange and alien. Before she does that, one of the elves decides to leave a note basically explaining the situation and asking for help “just in case the sorceress doesn’t return”.

The party does eventually find the sorceress and she—having partaken of way too much Aakom and on the way to immortality—has more or less forgotten about her people. She gives the party 50 scrolls of stone to flesh and a magic ring with which to claim her glass tower as their own because she couldn’t care less. Another attempt of mine to make elves and immortals alien and basically indifferent to human concerns.

The party returns, depetrifies half the elves, they are grateful, some setting background is revealed, the elves join the party’s domain (since we’re using An Echo Resounding), and so on.

I was left with the question of treasure. What to do? I had already decided that the sorceress’ many books had been carried off by a floating, round monster…

This is cool, because now I have more plot hooks for future adventures:

  1. the earth blood is still poisoned and it would seem that looking for the Tomb of Abysthor would make a nice follow-up adventure
  2. the other half of the elven tribe is still petrified so if we feel like doing an all-elven road-trip adventure on the side, we can always sail for Tula and its School of Chromatic Magic and find a high-level human magic-user to get some scrolls
  3. if we want to challenge the high level player characters we can always go and hunt for the notes on the various rituals used to build the living glass tower
  4. the elves told the party what it would take to revive the dead elven god Arden… one my the player characters is very interested in this particular plot line…

I decided that the only treasure to be found beyond ownership of the tower and the service of the elves was the wardrobe of the sorceress.

  1. an anti-gravity shawl made of the finest silk, floating freely in the air
  2. a spectacular white and cyan dress of air and sky, constantly trailing clouds and having occasional blinding spots of sunlight
  3. a dark sea green dress of the deep, a magic train of illusionary ocean following the wearer
  4. a brown dress of stone and metal, of crystals growing from your back and spikes growing from your shoulders, a golem dress of enchanted earth

The room being a giant loft under a fortified glass dome in art nouveau style, guarded by ten nearly invisible glass tentacles to prevent unauthorized landing (as long as the earth blood is poisoned these tentacles are evil and attack everybody), a random distribution of little mirrors such that there is one exact spot near the wardrobe where all the mirrors align giving you a perfect view or yourself…

My wife loved it. :)

But is it treasure? I’m not sure. I don’t plan on granting simple mechanical benefits. I do plan on it impressing and awing the common folks, if my players ever want to use it like that. Or of granting boons with other elf lords if given away as a present. I also didn’t plan on giving it monetary value and therefore not granting any XP. My players seemed happy enough. If I wanted to award some XP I’d probably say that the four items I listed could be sold for 10,000 gold pieces each for a grand total of 40,000 XP. Except that my players got to the end of a different story arc last session and ended up with 171,000 gold pieces (this included the sale of a Neogi spelljammer ship and the treasure of its captain) and the part about the elven sorceress and her tower was essentially dénouement. That’s why it didn’t grant any gold or XP.

Tags: RSS

December 12, 2013 10:37 AM

December 10, 2013

Alex Schroeder

Writing Your Own RPG Rules

I started thinking about it when Johnn Four said on Google+ that he was interested in designing his “own little OSR game”. Like Joseph Bloch, I wondered. It doesn’t sound like Johnn really wants to run and play an OSR game. He’s just interested in designing the rules? There are already so many of them out there! All these Fantasy Heartbreakers…

What is a Fantasy Heartbreaker? I learned about the term from Ron Edward’s essay. They are “truly impressive in terms of the drive, commitment, and personal joy that’s evident in both their existence and in their details” and “but a single creative step from their source: old-style D&D.” Since I like classic D&D, that’s not a problem for me.

Here’s how Ron ends his essay:

They designed their games through enjoyment of actual play, and they published them through hopes of reaching like-minded practitioners. […] Sure, I expect tons of groan-moments as some permutation of an imitative system, or some overwhelming and unnecessary assumption, interferes with play. But those nuggets of innovation, on the other hand, might penetrate our minds, via play, in a way that prompts further insight.

Let’s play them. My personal picks are Dawnfire and Forge: Out of Chaos, but yours might be different. I say, grab a Heartbreaker and play it, and write about it. Find the nuggets, practice some comparative criticism, think historically.

Get your heart broken with me.

This essay, I think, mentions all the important parts:

  • actual play is the basis for your game
  • publish it in the hopes of reaching like-minded gamers
  • make sure to strip all the material that you aren’t using yourself
  • focus on the innovations

I also like to read the design decisions somewhere, on a blog for the game, perhaps. Why add skills? Why drop Vancian magic? Why drop descending armor class? Why use fewer saving throws? Why add bennies? Why rework encumbrance?

As for myself, I’m basically using Labyrinth Lord. I’ve been thinking about skills, magic, spells, armor class, saving throws, bennies, and writing about these issues on this blog. And as I’ve said on Johnn’s post: “I just kept running my game and started putting my house rules on a wiki. Then I copied the missing elements from the book. Then I put it all into a LaTeX document. And I keep running my game and I keep making changes to the rules. And that’s it.”

For a while I had an English and a German copy of these rules on a wiki. After a while I abandoned the wiki and the English rules and moved the German text to LaTeX.

I think the important part was thinking about the rules, writing about the rules, changing the rules, reassembling the rules, having something to show others, a place to collect the house rules… and with all that achieved, there’s just nothing to do but make the occasional update. I’m not trying to convince anybody else to use the rules. But if you’re looking for something a bit different, perhaps you can find “those nuggets of innovation” in my rules, too. :)

• 💔 •

What are those those nuggets of innovation you ask? I think the only thing that’s truly new is how I write the document making full use of a sidebar to comment the main text. And I keep track of my player’s reputation with the various gods of the setting. Everything else I have seen somewhere else: Death & Dismemberment, using 1d6 for thief skills, using a d30 once a night, using 1d6 for weapon damage, limiting the repertoire of arcane casters… Nothing new under the sun. But I’d be happy to pontificate talk about all these points.


December 10, 2013 02:07 PM

December 08, 2013

Phil Jones (Smart Disorganized)

Leaving Blogger

Part #232 of the ongoing evolution of my online life. I am migrating Smart Disorganized from Blogger to a WP blog on one of my own domains. In this case the new URL is going to be : That's Smart Disorganized Individuals at ThoughtStorms. Makes sense because ThoughtStorms is the domain name for my wiki, the Project ThoughtStorms activity around the SFW. And now for OWL, the Outliner with Wiki Linking.
It's all part of a greater, if very slowly executed, plan.

by (phil jones) at December 08, 2013 08:38 PM

Alex Schroeder

Old School RPG Planet Going Down

Recently John Payne talked about distributing RSS feeds in eBook form on Google+. Interesting idea, and the resulting discussion of copyright and feed aggregation soon touched upon the Old School RPG Planet. Ian Borchardt correctly said “Just because the authors post their work to the web doesn’t mean they forfeit their copyright. If you collect this work into another form, you are violating their copyright.” Andy Standfield replied “This has all already been covered by many courts and legal experts. This is all considered fair use.”

I started to wonder. Many courts? I decided to google for some more information and found What’s the law around aggregating news online? A Harvard Law report on the risks and the best practices. This 2010 article said that all the parties settled before a finding was made. In the US, that would mean we don’t really know. The article also has a longer section about the Fair Use test and how to apply it. In addition to that, the situation would be different outside the US – possibly more restrictive here in Switzerland, for example.

Drinking my coffee I thought about it some more and finally decided to take the Old School RPG Planet offline. I wasn’t really using it anymore and I really dislike the idea of further discussions with annoyed blog authors. I also didn’t feel like contacting a hundred bloggers, most of whom don’t have their email address on the front page of their blog. The site should now redirect to the Legacy D&D section of the RPG Bloggers Network. It supposedly does more or less the same thing, except that the authors have to register their own sites. Too bad the RPG Blog Alliance doesn’t have categories.


December 08, 2013 10:05 AM

December 06, 2013

Alex Schroeder

Organizing PDFs

I recently visited RPG Now and decided to visit the list of updated PDFs. Unspeakable rites of the ancients—that many!? I think the reason I have so many PDFs is that I bought two bundles for a fistful of dollars destined to help charities years ago. I went through the list and only downloaded the products I felt I was interested in. I skipped Pathfinder products. I skipped paper miniatures. I skipped floor plans. So many things that I’d love to have, but there is just not enough time! I clicked on Traveller stuff, Fate stuff, OSR stuff like Sine Nomine, Labyrinth Lord, Dungeon Crawl Classics (DCC), and since I can never download more than ten files, and since I cannot automatically deselect all the files I selected for download I manually deselected the ten entries I just downloaded, selected another ten entries, downloaded, downloaded—I downloaded 77 updated files.

Wow. We are definitely living in plentiful times.

So now I had eight zip files in my download folder and I realized another problem: There’s a folder on my external disk for RPG PDFs and its directory hierarchy is multiple levels deep. Dungeons & Dragons or Pendragon? TSR or Frog God Games? Basic D&D accessory or module? Sorting all the PDFs into the folders is driving me nuts.

And what’s worse: my iPad has a PDF reader (Good Reader) with it’s own, separate copy of a subset of these files. And in my idiocy I used a different directory structure on the iPad.

So now I need to figure out what to do, and how to keep the two in sync without my Repeated Strain Injury flaring up.

Tags: RSS

December 06, 2013 07:49 AM

December 02, 2013

Alex Schroeder

New Creative Commons Licenses

Creative Commons Licenses Version 4.0 November 25, 2013. Creative Commons released 4.0 versions of their licenses. Yeah! More info on their blog.

Cory Doctorow says the following on BoingBoing, which is where I learned about the new versions:

The new licenses represent a significant improvement over earlier versions. They work in over 60 jurisdictions out of the box, without having to choose different versions depending on which country you’re in; they’re more clearly worded; they eliminate confusion over jurisdiction-specific rights like the European database right and moral rights. They clarify how license users are meant to attribute the works they use; provide for anonymity in license use; and give license users a 30 day window to correct violations, making enforcement simpler. Amazingly, they’re also shorter than the previous licenses, and easier to read, to boot.

I must say, I was always a bit annoyed when I saw the local versions of Creative Commons licenses. What does it mean for me, when I live in Switzerland, host stuff in the US, and said stuff is based on the Canadian port of the license? The FAQ now says: “Unless you have a specific reason to use a ported license, we suggest you consider using one of the international licenses.” ok

I also often wondered about additional rights we have here in Europe. For example, I might allow you to make copies of my face, but I can still control the use of said copies here in Switzerland using my “personality” rights. The blog post announcing the 4.0 versions of the licenses now says: “Where the licensor has publicity, personality, or privacy rights that may affect your ability to use the material as the license intends, the licensor agrees to waive or not assert those rights.” ok

Tags: RSS

December 02, 2013 11:04 AM

December 01, 2013

Alex Schroeder

Anonymizing the Oddmuse log files

I’ve just implemented a new non-optional Oddmuse feature. I’m removing all hostnames and IP numbers of older log entries. The log entries older than 90 days are stored in a different log file in order to speed up the generation of RecentChanges. During maintenance, these log entries are copied from one file to the other and I’m now taking advantage of this copying to remove the hostname or IP number.

Basically I find that as a person, I dislike invasions of privacy and I feel that in some small form, software engineers are inviting it because often it’s easier to do. We often model things to never forget, e.g. version control.

One of the important pages on Meatball was ForgiveAndForget. Forgetting is human.

At the same time, with Snowden and the NSA, I feel that as a hoster I’m more comfortable if I cannot provide the logs an agency is looking for.

Furthermore, I’ve had a very small number of emails from users asking me to remove their hostnames from the log files because they had accidentally edited the wiki from work. Pages containing their hostname will eventually be deleted but log entries were not. Now they’re anonymized and people can feel safer knowing that the traces will eventually disappear again.

The idea is that you would only need hostnames or IP numbers to fight spam and vandalism: Add regular expressions matching either hostname or IP number of spammers or vandals to your list of banned hosts and prevent the attack from continuing. After a few days, however, this information is no longer required. In this day and age of privacy invasion, I think software should take a pro-active stance. The log entries must be anonymized.

The existing log file for the older entries is not changed. If you want to do the right thing, there’s a script called in the contrib directory to do just that.

Just call it in your data directory. Example:

alex@psithyrus:~/oddmuse$ perl ~/src/oddmuse/contrib/ 
Wrote anonymized 'oldrc.log'.
Saved a backup as 'oldrc.log~'

See Oddmuse:Upgrading Issues for a more technical explanation of what’s going on.


December 01, 2013 12:14 AM

November 26, 2013

Alex Schroeder

Wilderness Encounters

Ian Borchardt recently wrote a lengthy comment in reply to Andy Standfield’s Google+ post about determining CR/EL for monsters. He allowed me to repost it and all he asked for was me mentioning “that it was a G+ comment and therefore not a literary masterpiece – more a stream of thought.” Slightly edited.

When creating a wilderness encounter table for a sandbox game don’t bother with the details. Work out the likelihood of an encounter with creatures that feels right to you and use common sense in the application of the results. Encounters shouldn’t be in “balance” with the party.

Remember that in a sandbox game, an encounter does not actually mean that the characters have an immediate direct combat encounter with the creature. For example, a party of 1st level characters are travelling through the wilderness and you roll up an ancient blue dragon. Instant party death. right?

No. Have them encounter the dragon on the wing, hunting food. The party won’t have enough meat, magic or gold to be worth the dragon’s bother so it will probably keep on the wing. Meanwhile the characters have definitely encountered a blue dragon and can relish the magnificence of the fantasy encounter (or more likely the terror as they huddle under a tree hoping the dragon hasn’t seen them [“Ha!”] and won’t eat them).

But what’s the benefit of this encounter that wasn’t, you may ask? I’m glad you did! The party now know that there might be a lair of ancient blue dragon somewhere in the vicinity (and by that I mean easy flight range) if you are in the wilderness. They might remember this for later, once they are powerful enough to feel they have a good chance of adding dragon slayer to their resume. But in the meantime the presence of the dragon is going to colour the region through which they are travelling. For example any herds in settlements are going to be small to avoid being a tempting target. Towns might even have an arrangement with the dragon were suitable “princesses” are offered up for sacrifice – and they might actually prefer visitors to one of their own daughters. The dragon might even need a set of human hands and be looking for a set of adventurers to do a task for them. Whilst a threat works everyone knows adventurers are mercenaries and will do anything (even kill) for filthy coin.

Ed Simbalist (one of the authors of Chivalry & Sorcery) wrote an excellent essay back in the day (1978): Monsters are people too which really is recommended reading [C&S Companion – hard to get though now]. Monsters aren’t there as adventurer bait, but usually doing their own thing. Role-playing should be important for the monsters as well. For example, the party is at camp roasting a deer they shot earlier in the day, when they “encounter” a goblin patrol. Certainly this could devolve into a fight but what if the reaction roll is friendly? Perhaps the goblin patrol is actually lost and their leader doesn’t want to admit it (but pretty soon his troops, tired and hungry, are going to revolt). And that roasting leg of deer smells sooooo good. Perhaps they can bluff a tax for travelling through “their” lands. Except the people around the fire seem to be rather hard-bitten warriors rather than peasants and are not likely to be particularly surprised or overawed by a mosquito-bitten goblin troop? You now have a role-playing opportunity – never underestimate the benefit of intelligence (in the scouting rather than goblin’s lack of sense) and making friends. Even with goblins.

That’s all up to how you apply the encounters you generate. But there is still the important part of the players reaction to encounters. And that is to use reason. The sandbox game, unlike the heroic story-path game, isn’t there in the world for them. It’s a living breathing world without them, and the encounter table should realise that. At times they are going to encounter stuff that is too tough for them to beat, in which case running away is an important alternative that often seems to be forgotten by a lot of modern players that think the world must be all about them.

Special small regional encounter tables are a good thing too, although they often develop in play – for example one region I kept on rolling dwarves, which lead to the fact that there was a big mining boom going on here, so the regional chart got created with a lot of dwarvish and mining aspects. Including an encounter of gold nuggets in a creek bed. As our different encounter tables for civilised, frontier, and wilderness areas. And don’t forget all the non-monster encounters. For example, encountering an army off to war leads to “you have been recruited” or even “your horses have been recruited – here’s a chit for them (accompanied by the soldiers laughter as they lead your food and horses away)”. And affect the surrounding game. Good sets of encounter tables drive a sandbox game by presenting stuff. Also a good idea is to have a set of unique encounters on file cards. This could be stuff like villages, big monsters in lairs, and the like. When a “unique” encounter is rolled, shuffle and pull a card. That encounter is now there. Replace and top up these file cards occasionally, and remember to keep track of where the used ones were used.

Good stuff.

My own take on wilderness encounters can be found in my Swiss Referee Style Manual.


November 26, 2013 06:53 AM


My websites are hosted on a virtual machine called psithyrus. It was down for many hours and it just came up again. I don’t know what happened. One moment I’m reading mail and nearly two days later it’s rebooting.

Nov 24 04:50:05 psithyrus dovecot: imap(alex): Disconnected: Logged out in=34 out=674
Nov 26 01:27:16 psithyrus kernel: imklog 5.8.11, log source = /proc/kmsg started.

Most of the sites are not terribly important—such as this wiki blog of mine—but I feel bad for the Campaign Wiki users. :(

Tags: RSS

November 26, 2013 06:35 AM

November 25, 2013

Phil Jones (Smart Disorganized)

How GitHub (no longer) Works

Very interesting talk from GitHub's Zach Holman on how the company's decentralized culture is evolving as it grows.

by (phil jones) at November 25, 2013 09:33 PM

November 23, 2013

Alex Schroeder

Über den Konsum

A note to English readers: If this post showed up in your feed, you should probably switch to a different feed. Some suggestions: RPG only, just English.

Wir sind umringt von Werbung. Verlockende Angebote überall: neue Telefone, neue Spiele, neue Kleider, neue Filme, neue Möbel, neue Musik, Sonderangebote, Sparen beim Kaufen. Der Konsum stützt die Wirtschaft, die Wirtschaft bietet Arbeit, die Arbeit bietet Geld, das Geld ermöglicht den Konsum. So verheizen wir die Umwelt. Deswegen arbeiten wir in den reichsten Ländern der Welt nicht fünfzehn Stunden die Woche sondern vierzig, fünfzig, oder sechzig Stunden die Woche.

Warum sollten wir ausbrechen wollen? Und wenn man ausbrechen wollte, wo hin? Wo bleibt die viele Freizeit, welche uns der Produktivitätgewinn eigentlich ermöglichen sollte? Das Problem ist, dass wir nicht auf dem Niveau unserer Grosseltern leben wollen. Ich will auch nicht in einem kommunistischen Land leben, dass mich zur Armut zwingt. Ich will mir meinen Konsum nicht verbieten lassen.

Der stete Kampf gegen die Verlockungen des Konsums ist die Herausforderung unserer Zeit. Jeder für sich kann die Konsumgesellschaft etwas kleiner und die Freizeitgesellschaft etwas grösser machen. Es geht darum, selektiv zu konsumieren statt mehr zu arbeiten. Ich mache schöne Ferien und kaufe mir ein iPad, verzichte aber auf das Haus im Grünen und ein Auto. Ich gehe gerne auswärts Essen, kaufe mir aber keinen neuen Fernseher, keine neue Spielkonsole, keine neue Sportausrüstung.

Ich will die Werbung nicht sehen. Ich will im Laden nicht am Regal mit all den leckeren Keksen und der guten Schokolade vorbeilaufen, weil ich in meinem Alter anfange anzusetzen. Als wir jünger waren, haben wir jede Woche eine Schachtel Eis gekauft. Damit ist jetzt leider Schluss. Genau so wenig will ich Berichte über die neusten Spiele lesen, über die neuste wetterfeste Wanderausrüstung, über die neusten Fahrräder, über die exklusiven Ferien, die schönen Stoffe für neue Bettwäsche, die Teetassen und Pfannen, die Computer und Kameras. Ich will wegschauen. Ich muss wegschauen. Meine Antwort auf die ständige Werbung ist Konsumverweigerung.

Als ich im Geschäft einmal gefragt wurde, warum ich nur 60% arbeiten wolle, gab ich zur Antwort, ich tue dies für mein Liebesleben. Meine grösste Angst war schon immer, viel zu Arbeiten, eine Karriere zu machen und dann früh zu sterben, ohne die Früchte meiner Arbeit je genossen zu haben. Ich wollte auf alle Fälle nicht einer von denen sein, der seine Beziehung auf dem Altar der Arbeit opfert. Wenn eine Karriere sich nur für einen hohen Preis erringen lässt, dann lasse ich es lieber sein, trete kürzer, bleibe in der kleinen Wohnung und träume vom schönen Regal aus Massivholz, das ich mir nicht leisten will.

Als ich nach weiterführenden Links gegoogelt habe, fand ich diesen Artikel von Beat Döbeli, der sich vor zwei Wochen zum ebenfalls Gedanken machte: Was machen wir mit den Automatisierungsgewinnen?

Kristian Köhntopp empfiehlt Land of Desire von William R. Leach (2012).

Unheimlicherweise gibt es ein Foto von mir und Beat Döbeli von Eugene. Ich bin verblüfft.

Tags: RSS

November 23, 2013 12:52 PM

November 21, 2013

Alex Schroeder

Über das Denken

A note to English readers: If this post showed up in your feed, you should probably switch to a different feed. Some suggestions: RPG only, just English.

Wenn ich beim Frühstück den Monde Diplomatique oder die WOZ lese, habe ich ab und zu das Gefühl, ich hätte etwas begriffen. Ein Satz, zwei Sätze, nur wenig vielleicht, und wie einer, der nach Worten sucht und dem es jetzt auf der Zunge liegt, versuche ich es auszusprechen, mir selber vorzusagen, doch dann kommt noch ein Biss, und noch ein Satz, ein Absatz gar, noch ein Artikel bevor ich mich ins Geschäft aufmache… Und irgendwo war doch noch etwas.

Über den Konsum, die Revolte des Einzelnen, über die Arbeitszeitreduktion, den Produktionsgewinn, die unausweichliche Verteuerung der nicht rationalisierbaren Dienstleistungen und dessen soziologischen Folgen (William Baumol, “The Cost Disease. Why Computers Get Cheapter and Health Care Doesn’t”, zitiert in Wie produktiv ist ein Streichquartett?), über die Muße, über die Klimaerwärmung und unsere Unfähigkeit, Entscheidungen zu treffen.

Das Problem ist nicht nur die Aufmerksamkeit der Informationskonsumenten sondern auch die Konzentrationsfähigkeit der Informationsproduzenten. Alles buhlt um meine Aufmerksamkeit, so dass ich kaum noch weiss, was ich selber denke. Was ich selber denken will.

Mal schauen, ob der Blog hilft, mich zu konzentrieren.

Tags: RSS

November 21, 2013 07:39 AM

November 16, 2013

Alex Schroeder

How To Run A Contest

I’ve recently received an email by somebody who wondered whether I’d be willing to spread the word of his contest and whether I knew anybody willing to sponsor prizes. When I started running the One Page Dungeon Contest I decided that I’d document my “process” and make this information public so that anybody who is willing to put in the hours can kickstart their own process.

The page Comments on One Page Dungeon Contest 2012 is a good place to start. It has a checklist with all the things you need to think of. It has copies of all the announcements I wrote (click Edit this page at the bottom to get the bbCode format which you can then easily adapt and paste into you own announcements on most forums); it has copies of the postings themselves (effectively listing all the forums I posted to); it also has links to the Twitter account, Facebook page and Google+ page I used to spread the word; it also has copies of the emails I wrote to past and new sponsors. If you want to build a list of sponsors, I think your best bet is to just write to as many publishers as you can think of and post an open call for sponsors in your announcement. It takes time, but the lists of past sponsors gives you a head start.

All of the sponsors I contacted were super nice. The worst that ever happened was that a person I contacted did not reply. No harm done! One prospective sponsor also wanted me to sign a contract I found unacceptable, but the people I was in touch with were all extremely friendly. So, my conclusion is that it never hurts to ask nicely.

I even kept my todo list online. I guess there is not much interesting to learn from that. It was mostly stuff I wanted to write down in the months preceding the official announcement in order to not forget anything. Sponsors that contacted me ahead of time. Judges who volunteered ahead of time.

There are similar pages for 2010, 2011 and 2013. You also need to figure out how to distribute prizes. Back in 2011 I wrote bout the tricky balance of privacy and transparency. You will also need to think about licensing issues. People will discuss it online. No matter how obvious you think it is, there will always be people who don’t understand how it works and who feel entitled to be as rude as they want. You’ll need to be able to handle this, too.

Anyway. Take a look at the notes I wrote in 2012. Anybody can do it. The question is… Do you want to run the One Page Dungeon Contest 2014?

For now, take a look at these two upcoming contests:

ok :)

Case in point, today Stuart’s announcement says “All entries will be collected into one PDF released under the creative commons license.” Given my past interactions with angry dudes on the Internet makes me wonder: Which CC license? And will participants understand that depending on the exact license anybody can take the PDF and release a print product, and ask money for it? I recommend being as precise as possible. ;)

Read Choose a License on the Creative Comons web site.

Allow modifications of your work?

  • Yes
  • No
  • Yes, as long as others share alike

Allow commercial uses of your work?

  • Yes
  • No

To answer the last question, you might want to read Defining Noncommercial on the Creative Commons website. Consider this sentence in the executive summary, for example: “Both creators and users generally consider uses that earn users money or involve online advertising to be commercial”. Remember how many websites that might offer the PDF for download also involve online advertising.

And then there’s Other criticism of the non-commercial license on Wikipedia to consider…

I also recommend reading Free Culture. :)


November 16, 2013 09:29 PM

November 13, 2013

Alex Schroeder

RPG Geek

I recently learned about Bryce Lynch’s adventure design contest which he is holding on RPG Geek. He said he wanted the contributions to be added to the database, and so I added mine. And I realized once again, what a wonderful resource this. Apparently every single adventure, every little house rule collection, every fantasy heartbreaker, they can all be entered into the database. I think I’m going to do this. A kind soul already added the Fight On! issues to RPG Geek. And so I think I’m going to start adding stuff I was involved in. A kind soul already added Stonehell Dungeon, where I acted as an editor.

I just submitted the following:

I like it.

Sometimes I get the feeling that people online are asking for a comprehensive RPG database of artists, editors, and so on. Well, as far as I can tell, RPG Geek serves the purpose.

Tags: RSS

November 13, 2013 01:41 PM

November 08, 2013

Alex Schroeder

Adventure Design Contest

Bryce Lynch is running an adventure design contest.

Bryce is a harsh critic of RPG modules. He doesn’t mince words. I happen to agree with his taste, however, which is why I generally enjoy reading his reviews.

I'm thinking of making a nice, English variant of these notes I used a while ago. I made a one-page adventure based on these notes for a session back in May.

Update: Done!

Can you spot any typos and layout or font problems? Download problems? License misapplied?

Tags: RSS

November 08, 2013 05:18 PM

November 05, 2013

Alex Schroeder

D&D ist Verhandlungssache

Via Brendan und Google+ bin ich auf diese Diskussion von Eero Tuovinens D&D Kampagne gestossen. Die Diskussion empfehle ich allen, die Interesse an D&D der alten Schule haben.

Ich denke, dass ich meine Fünf Winde Kampagne ähnlich führe. Vor einer Weile habe ich beschlossen, meine Hausregeln in einem separaten Dokument unter dem Namen Hellebarden & Helme zu führen. Genau dies macht Eero allerdings nicht. Wie es scheint, behandelt er die Regeln wie eine orale Tradition. Der Spielleiter erinnert sich an verwendeten Regel, wendet diese an, stellt Regeln zur Diskussion, lässt Regeln fallen, die man ständig vergisst, die doof sind. Klar, der Spielleiter ist verantwortlich für die Monster hinter den Türen, alle sind aber gemeinsam für die verwendeten Regeln verwantwortlich. Ich füge auf alle Fälle auch immer wieder das eine oder andere Thema hinzu und streiche auch ab und zu Regeln, die nie zur Anwendung gekommen sind.

Hier sagt Eero auch, dass “rulings, not rules” in die richtige Richtung geht, dabei aber oft das naive Bild der Aufgabenteilung von Spielleiter und Spieler gepflegt wird. Er selber verwendet allerdings einen eher “legislativen” Prozess, wie oben beschrieben. Der Spielleiter ist verantwortlich für die Beachtung der Regeln, die Anwendung der Regeln, und führt durch den Prozess der Regeländerungen.

Darüberhinaus sieht Eero in einer typischen Kampagne neben dem grossen Einfluss der Regeln auch einen grossen Einfluss des gemeinsamen sich Einlassen auf das Spiel. Das Spiel der Entwicklung von Herausforderungen, dem sich den Herausforderungen stellen, das kooperative Spiel, das Fällen von strategischen Entscheidungen. Man einigt sich implizit, dass dies der Sinn des Spieles ist, manövriert sich in entsprechende Situationen und wendet dann die Regeln an, um die Situationen aufzulösen.

Witzig auch Eeros Hinweis, dass all die D&D Schreiberlinge immer das Endresultat statt den Prozess beschrieben haben. Klar, in Gygax’ Kampagne gab es diese Klasse und jene Klasse mit diesen und mit jenen Spezialfertigkeiten, aber das Einführen neuer Klassen ist Aufgabe des Spielleiters und die Diskussion, die Erinnerung, die Verwendung, das machen alle gemeinsam. Dort steht nichts davon, wie die Gruppe zu diesen Regeln, diesen Annahmen, diesen Abenteuern gekommen ist. Nur das Endprodukt wird beschrieben, und es wird ihm ein Hauch von Genialität, eine Richtigkeit zugeschrieben, die es in dieser Art gar nicht gibt.

Entsprechend leitet Eero sein Spiel, ohne sich auf eine bestimmte Version der Regeln zu beziehen…

Hierfür braucht es natürlich Spieler, die an dieser Sorte von Kampagne interessiert sind. Man will die Fiktion gemeinsam erforschen. Deswegen gibt es kein Jammern über Balance und Regelfuchserei. Muss ich mir später nochmal in Ruhe zu Gemüte führen.

Interessant finde ich auch seine Beobachtung, dass die Stufen der Charaktere sich auseinander ziehen und am Schluss oft nur ein einziger hochstufiger Charakter die Expedition anführt, die anderen dagegen eher kleinere Kaliber zu Felde führen.

Tags: RSS

November 05, 2013 06:20 PM

November 04, 2013

Phil Jones (Smart Disorganized)


I have to write a fucking custom Tuple class in my Java program just to have a function that returns a pair of values?

by (phil jones) at November 04, 2013 09:37 PM

November 01, 2013

Phil Jones (Smart Disorganized)

Programming Language Features for Large Scale Software

My Quora Answer to the question : What characteristics of a programming language makes it capable of building very large-scale software?
The de facto thinking on this is that the language should make it easy to compartmentalize programming into well segregated components (modules / frameworks) and offers some kind of "contract" idea which can be checked at compile-time.

That's the thinking behind, not only Java, but Modula 2, Ada, Eiffel etc.

Personally, I suspect that, in the long run, we may move away from this thinking. The largest-scale software almost certainly runs on multiple computers. Won't be written in a single language, or written or compiled at one time. Won't even be owned or executed by a single organization.

Instead, the largest software will be like, say, Facebook. Written, deployed on clouds and clusters, upgraded while running, with supplementary services being continually added.

The web is the largest software environment of all. And at the heart of the web is HTML. HTML is a great language for large-scale computing. It scales to billions of pages running in hundreds of millions of browsers. Its secret is NOT rigour. Or contracts. It's fault-tolerance. You can write really bad HTML and browsers will still make a valiant effort to render it. Increasingly, web-pages collaborate (one page will embed services from multiple servers via AJAX etc.) And even these can fail without bringing down the page as a whole.

Much of the architecture of the modern web is built of queues and caches. Almost certainly we'll see very high-level cloud-automation / configuration / scripting / data-flow languages to orchestrate these queues and caches. And HADOOP-like map-reduce. I believe we'll see the same kind of fault-tolerance that we expect in HTML appearing in those languages.

Erlang is a language designed for orchestrating many independent processes in a critical environment. It has a standard pattern for handling many kinds of faults. The process that encounters a problem just kills itself. And sooner or later a supervisor process restarts it and it picks up from there. (Other processes start to pass messages to it.)

I'm pretty sure we'll see more of this pattern. Nodes or entire virtual machines that are quick to kill themselves at the first sign of trouble, and supervisors that bring them back. Or dynamically re-orchestrate the dataflow around trouble-spots.

Many languages are experimenting with Functional Reactive Programming : a higher-level abstraction that makes it easy to set up implicit data-flows and event-driven processing. We'll see more languages that approach complex processing by allowing the declaration of data-flow networks, and which simplify exception / error handling in those flows with things like Haskell's "Maybe Monad".

Update : Another thing I'm reminded of. Jaron Lanier used to have this idea of "Phenotropic Programming" (WHY GORDIAN SOFTWARE HAS CONVINCED ME TO BELIEVE IN THE REALITY OF CATS AND APPLES) Which is a bit far out, but I think it's plausible that fault-tolerant web APIs and the rest of the things I'm describing here, may move us closer.

by (phil jones) at November 01, 2013 02:50 PM

October 31, 2013

Alex Schroeder

New Google Plus Usage

Google+ Communities When I started using Google+, I added a few shared circles full of gamers. I ended up with more than a thousand people in my circles. It felt weird, however. Many of them never posted. Others posted stuff that wasn’t related to role-playing games, politics, or other issues I cared about. Others posted way too much.

At first, I thought all these problems could be solved via Circles. But in practice, that has been harder than I thought. Problems I found:

  1. People don’t automatically know in which circle to put you. You need to have some public posts indicating your interest, or your need to write about them on your profile, and you need to trust other people to take this information into account. There used to be a lot of posts saying “put me in these circles, if you have them”.
  2. If you realized that a person posted about topics you cared about and topics you didn’t care about, it was socially awkward to ask them to remove you from one of their circles. Some people also posted everything public and felt that this was what they were like, as a person, as a whole, and if you didn’t like it then perhaps you were better off uncircling them entirely.
  3. A lot of people never seemed to write a word. Are they even real? Are they snoops, monitoring everything I write? Is my writing different when I believe to write for a private “circle” compared to writing in public? What if these circles have more than a hundred people in them and are essentially a public?
  4. As the circles of sender and recipient are not coordinated, you might put a person writing about topics A and B into the appropriate circles A and B on your side, and if you write about A or B, the right people will get to see the post, but if they write about A or B, their posts will end up in both your A and B circles. Reading circles to sort incoming posts by topic don’t work for people in your circles that post about multiple topics.
  5. When I started uncircling agressively, I realized that it would take forever to get rid of the estimated 950 people in my circles.
  6. Communities seemed to solve many of these problems: Posts are generally on topic. I can read by topic. If I really like a lot of what a person posts, I can still circle them. I expect to do that for a very small number. Communities have their own problems, unfortunately. The thing I find most obnoxious is that some people post things I don’t care for to communities. Do I need to block them in order to curate my community stream? Right now this is just a very minor annoyance.

I needed to figure out whether the effort spent on circle maintenance exceeded the effort needed to curate my communities. Right now, I think that communities work better than big circles. So I did the obvious thing: I ditched my almost all of my circles. No more RPG, Emacs, Copyright & Patents and Typography circles. I’ve uncircled practically everybody. There are but 12 people in my circles right now.

I’m giving communities a try.

If you want to make sure I see a post or comment of yours, you’ll need to plus-mention me. I guess you had to do this when I had a thousand people in my circles, too. :)

I still read the blogs.

Tags: RSS

October 31, 2013 09:10 AM

October 30, 2013

Phil Jones (Smart Disorganized)

OWL Broken

Doh! Actually OWL is very broken. Will be posting fix shortly. Will keep you informed.

by (phil jones) at October 30, 2013 01:16 PM

Monads in Python (Again)

Dustin Getz provides one of the best "Monads for idiot Python programmers" explanations I've seen.

Excellent! I think I almost do understand this one.

by (phil jones) at October 30, 2013 01:15 PM

October 29, 2013

Alex Schroeder

How To Run Fate

Recently, Andy McQuoid asked on Google+ for suggestions running a Diaspora campaign with a colossal derelict ship to explore—and that ship is actively trying to kill the characters. He also said, “ I am also unsure if I present the whole ship as one big Social Combat scene, or to break it down into the component areas, i.e., bridge, engineering, medical etc. and run scenes in there. If this was a Traveller game I would draw up the plans of the ship and have the characters proceed room by room. However, I think Diaspora offers a better, story based way of doing this that would be much more satisfying to do, and I want to showcase some of the great things in the minigame toolkit that Diaspora offers.”

I was reminded of my Solar System game and my post on how to prep for it. I wrote the following in response.

I would treat it as an old-school megadungeon and therefore structure game along missions. The session begins and log files show a certain percentage of extra heat radiation. There must be an unknown energy source in the ship. Outer hull sensors report increased infrared around the 1.7km line…

Prepare a sheet of paper with ideas. List NPCs (machines, programs, robots), rooms and the challenges they pose (stuff to reconnect, overcome, evade), tidbits you want to reveal, decisions that need to be made, consequences you’d like to see, and so on.

Make special note of mini-games you want to run. I’d suggest none on the first or two session but then one or two for every three hour session you play. This can be a social conflict, a platoon combat, a larger combat with a lot of zones, etc. Prepare those little maps and rules before-hand in order to make it a smooth experience.

The game itself is the structured along the challenges, players looking at their skills and deciding how to go about it, resolving the skill checks, invoking aspects, enforcing consequences, revealing interesting parts of the background and leads to new missions for future sessions.

I also recommend following the Designing an Adventure section of The Shadow of Yesterday.

Every now and then, I’d make sure to add adventures outside the ship. Visiting a system. Contacting other ships, etc. But it all follows the general outline above.


October 29, 2013 11:04 AM

October 23, 2013

Alex Schroeder

Settlements in Sandboxes

Recently, Gregor Vuga talked about the West Marches campaign model on Google+. He summarized the model as “one safe home base + lots of very dangerous wilderness” and wondered about adding cities that are “interesting places where there might be a lot to do”.

Here’s what I wrote, slightly edited.

I run a similar campaign. There are some small differences in how the thing is organized, but in terms of using many cities and other safe havens, I have had no problems. I treat settlements either as safe places and thus as not very interesting with the exception of one, two or three important non-player characters. Or settlements are treated as a simple adventure locale with a handful of “rooms” (one, two or three buildings) with a particular enemy and their minions need to be fought (were rats, cultists, evil tax collectors). The key is that once the adventure is over, the settlement returns to safe place status. There’s never an invitation to spend more time in a settlement. Most adventure and all the treasure is found outside.

I think this is still compatible with the West Marches campaign model because it depends on what you want from it. I want to encourage players to choose a goal or a destination, and go there, and do something. The original West Marches did this by saying the starting village was boring and safe. If the city is teeming with intrigue, then adventure comes to the players. They did not “choose” this adventure. So that’s what I want to avoid. If I treat other cities either like the starting village (boring, safe) or like a dungeon (remote, dangerous), then I am still achieving my goal. Whether you still want to call this “West Marches style” I don’t know.

If I wanted to add cities as interesting places to my campaign, I’d make sure that cities are generally boring and safe but they contain adventuring locales. In my game, for example, the players visited Sigil. It’s a big city, it has factions, it has adventuring locales, and so on. Not a problem, as far as I am concerned. Sigil wasn’t their home base. Players came to Sigil in order to achieve something. They did that, navigated the dangers, visited interesting locales, got involved in intrigue, and left again. Had the players decided to stay in Sigil, perhaps that would have made things more problematic. Will the faction war catch up with them? Will they still get to choose their adventures, session after session? I tried to mitigate this by declaring their guest house to be safe and boring, for example.

I guess what happens is that I just redefine the sandbox. It’s like a fractal. Once you get to Sigil, the thing is self similar: a safe place, adventuring locales, more dangerous when farther away, and so on. Basically “one safe home base + lots of very dangerous wilderness”.


October 23, 2013 10:42 AM

Old School Fanzines

In 2012 I wrote about old school fanzines, and this being a wiki, I sometimes updated the information when I found some more information. Time to start a new page with the real updates, however.

Which magazines released an issue in 2013? Did I miss any? Should I change the description? Leave a comment. In no particular order…

Also note this thread linking many more!


October 23, 2013 06:18 AM

October 22, 2013

Alex Schroeder

Random Names on IRC

Sometimes I wonder whether nicks on IRC give too much away. Sex, cultural background, … So here’s an experiment. Do you treat the people the same if you can’t see their nick names?

The following setup uses colored nicks and random names for Emacs:rcirc.

rcirc: Random Names

Tags: RSS

October 22, 2013 02:17 PM

Phil Jones (Smart Disorganized)

Pissed With Ubuntu

Seriously, it was just a simple upgrade. How hard should that have been?

Instead it crashed in the middle. When I rebooted it told me my disk was broken. I found some instructions to fix the problem online. It ran these for a while, fixing some packages before telling me my package manager was too broken so it was aborting.

End result. A Ubuntu that boots into low-res mode without wifi :-(


by (phil jones) at October 22, 2013 12:24 AM

October 21, 2013

Alex Schroeder

1PDC in print

1PDC 2013 After announcing it on Facebook and on Google+ and on Twitter I guess I should announce it here as well: The One Page Dungeon Contest 2013 is available in print!

Woohoo, Brett Bernstein has done it again. Thanks!

The CC Share Alike license makes it possible. This is great. Somewhere in the store you can also get the 2012 book, if you’d like that.

The yearly PDFs with all the entries remains freely available. I’m assuming you know what you’re buying if you’re ordering the book. :)

The main reason I feel the need to post it here, however, is this angry rant.

Here’s a FAQ compiled by -C of Hack & Slash, the result of a discussion on Google+:

Isn’t the content of this book available for free? Yes. The contest is available here.

Are the authors receiving any of the money from the PDF? No, but that is due to the terms under which they released their work, the Creative Commons Share-Alike License.

Is this legal? Yes. It is allowed under the terms of the license. You have the same option to do this as anyone else.

Do the contest managers know? Yes, this work was done with their knowledge and by request.

Can’t I do this at Lulu? Yes, the cost for a 116 page full color softcover book will run you 28.96$. Other complexities due to the nature of the contest make printing this book not easy, due to possible font embedding, transparency, and file size issues.

Is there any new art or content? No, it is the entries from 2013 along with the winners from 2010 and 2011.

Is this printed using lightning source or a local printer? The publisher has no comment on internal logistics.

Are the authors aware of this project? Some of them, those that have been contacted [by Brett] were supportive.

Will this be available in stores? Yes, retailers can order it through Ingram. Hobby stores that don’t use Ingram will also be able to order through Indie Press Revolution in the next few weeks.

Why doesn’t Amazon mention any of this? They take text from various lookups, which don’t always contain the latest information. Changes can be suggested, but that doesn’t mean they will be made.

Brett also said: “I make enough per book at amazon just to cover printing costs. I did this as a service for the RPG hobby, so people who do not have access to printing services could get this at a reasonable price.” (in the comments of the same Google+ thread)

As for me personally, the CC license is fundamental. I absolutely want people to copy and distribute the resulting dungeons. I want people to be able to host them on their websites even if they (or Google) are making money off of it. I want people to be able to print them even if they (or Lulu) are making money off of it. As far as I am concerned, creating One Page Dungeons for everybody to use and spread as they see fit and without having to ask for a permission is the entire point of the contest. Not everybody needs to share this point of view, of course, but that’s why I run this contest in particular.

If you’re an author, and you still feel disappointed or hoodwinked… I don’t know what to say. I honestly felt that it was obvious enough. Here’s how the instructions to the One Page Dungeon Contest 2013 start:

Submissions: Here’s how to submit your entry.

  1. Create a One Page Dungeon.
  2. Submitting a dungeon to the contest releases it under the Creative Common Attribution-Share Alike 3.0 Unported license with credit to the contest participant.
  3. The submission must have a name, an author, and a link to the license (

On the One Page Dungeon there is another section that doesn’t mince words:

License: The PDF doesn’t need an actual clickable link to the Creative Common Attribution-Share Alike 3.0 Unported license. The URL just has to be readable when printed so that people can look it up if they need to. The license basically says that anybody can copy, change, and distribute your submission, as long as other people can take the new copy and do the same, and as long as they list all the contributing authors. As the author you can distribute copies using a different license, but you cannot revoke the Creative Commons license. Thus you cannot sell “exclusive rights” to somebody else at a later date. See the license itself for more information. :)

“The license basically says that anybody can copy, change, and distribute your submission, as long as other people can take the new copy and do the same, and as long as they list all the contributing authors.” It seems pretty straight forward to me. If you have a suggestion regarding the wording, feel free to leave a comment or contact me directly.

I remember reading Justin Alexander’s One-Page Rip-Off post in 2010 where he said anybody could upload the free PDF to Lulu and buy their own copy. Please do it! You are free to do it. That’s what’s so great about it. There is no need to ask. Unfortunately, nobody stepped forward in 2010 and 2011 to actually do it. Or perhaps they did it and never offered it to anybody else. In 2012, Brett stepped forward and actually made it happen: The 1PDC in print, for those of us who’d like to have it without feeling like doing it ourselves. And he did it again in 2013. Thanks! :)


October 21, 2013 06:27 AM

October 17, 2013

Phil Jones (Smart Disorganized)


There's a big fix for OWL today. There were some mysterious times when pages that I thought I was changing were getting reverted. I thought originally that this was a glitch from me btsync-ing between my laptop and tablet. Or maybe my attempts at doing background synchronization between the browser localStorage and the server were failing.

Nothing seemed to completely eliminate this intermittent problem. But today I realized it was much simpler. I was basically using's "static" file serving to pull the OPML files off the server into Concord. But "static" is meant for static files (doh!). The browser was caching them. (Maybe because of some header was putting out.) Anyway, I just changed the server to reading the files into memory and spitting their contents out, just like any other dynamic web-page, and the problem looks like it's gone away.

I'll keep an eye out, but I think that was it.

by (phil jones) at October 17, 2013 12:38 PM

October 16, 2013

Alex Schroeder

Knowledge Skill and Narration Rights

Recently I happened upon a discussion on Google+ regarding the introduction of facts by players. The example given involved an Indiana Jones character spontaneously identifying snakes. Does the referee determine the kind of snakes or does the player determine the kind of snakes?

Wilhelm Person suggested a skill check to get narration rights:

When you roll for knowledge skills. If you succeed you get to decide what the truth is.

If you fail the GM tells you what the truth is. Sometimes the GM lies.

Here’s what I wrote:

If you manage to foster the right atmosphere at the gaming table, it can be just a matter of using an ellipsis, a pause, a knowing look—and players will interject cool ideas by themselves. That’s how I try to have it work at my table. The obvious benefit to me is that we don’t need a skill. Another benefit is that it limits itself to situations where players actually have cool ideas. Otherwise—particularly if you’re not playing a story game—you might get a helpless shrug or an empty stare in response to a success on the knowledge skill check. Players are not always ready to spew forth the Apocalypse.

What seems to work best, in my game, is to combine it with a 1 in 6 chance. Most players will immediately suggest something very positive for them. I might make a doubtful face and say “OK, 1 in 6 chance that these cannibals fall for your ridiculous explanation. But what if it doesn’t work?” Usually the table is in brainstorming mode at that point and we all determine the rest before rolling the die. I find that accepting all suggestions at the table and have the dice decide works better than discussing it, looking for consensus—long talk disrupts flow, as far as I am concerned.


October 16, 2013 08:19 AM

October 10, 2013

Alex Schroeder

More Troll Questions

Random Wizard has done it again. Questions to troll the bloggers, to ring the echo chamber, to offer us all the possibility to pontificate… And I can’t resist! :)

  1. Should energy drain take away one level of experience points from the character? Yes. Take away their XP and have them reroll their hit-points. Keep the new total if lower than their current hit-points. Conversely, when people gain a level, they reroll their hit-points and keep it if higher than their current hit-points.
  2. Should the oil used in lanterns do significant damage (more than 1 hp in damage) if thrown on an opponent and set on fire? Yes. I’m using 1d8 this round and 1d8 next round. It also takes two actions: throwing the oil and throwing the torch. Both need to succeed at a ranged attack vs. AC 9 (no armor). Thus, the damage is similar to the use of a weapon, except it’s easier to hit. I think this appropriate considering the weight and price of every pint of oil.
  3. Should poison give a save or die roll, with a fail rolled indicating instant death? Yes. At higher levels, the game is no longer about hit-points but about save-or-die traps and spells and the appropriate counter-measures.
  4. Do characters die when they reach 0 hit points? No. When they reach 0 hit-points and every time they are hit thereafter, they roll on the Death and Dismemberment table. This reinforces the idea that hit-points is just the will to live and getting hit with 0 hit-points is when the injuries happen.
  5. Does the primary spell mechanic for a magic user consist of a “memorize and forget system” (aka Vancian)? Yes. It’s simpler that way. When I tried a free form magic system, my player kept casting the same spell. That’s great, but not much different from Vancian magic. Therefore it stays.
  6. Should all weapons do 1d6 damage or should different weapons have varying dice (1d4, 1d8, etc…) for damage? 1d6 to rule them all. It works. I use varying dice for monsters.
  7. Should a character that has a high ability score in their prime requisite receive an experience point bonus? No. Distributing experience points is already a chore. Don’t make it more complicated. The bonus stems from a time when the ability gave no other benefit. It’s no longer necessary.
  8. Should a character with 18 constitution get a +3 bonus to hit points, or a +2 bonus to hit points, or a +1 bonus to hit points or no bonus to hit points? +3. Moldvay knows best. Beyond Strengh and Dexterity: Wisdom provides a bonus to saves against Spells. Intelligence provides bonus languages and Charisma provides a reaction roll bonus and an upper limit on henchmen, and it determines their morale.
  9. Should a character have 1 unified saving throw number, or 3 saving throw types based on ability scores (reflex, fortitude, will), or 5 types based on potential game effects (magic wand, poison attacks)? 5 types works for me. When I write down monsters, however, I will often just use 19-HD plus or minus two or four depending on resilience. Who cares about the fiddly details when fighting monsters? Not I!
  10. Should a cleric get (A) 1 spell at 1st level (B) no spells at 1st level (C) more than 1 spell at 1st level? None. In my game, they are supposed to get none for their first adventure only. Then, hopefully having gained some grace, they get the one spell the rules accord them.

My house rules are based on Labyrinth Lord: Halberds and Helmets.

Tags: RSS

October 10, 2013 03:31 PM

October 09, 2013

Phil Jones (Smart Disorganized)

Blame the Tools for Thought

Giles Bowkett :
This is, in my opinion, the strongest argument for seeing Unix and basic coding skills as fundamental required literacy today. As prostheses for memory and identity, computers are too useful not to use, but if you don't know how to craft your own code which gives you a UX which matches the way you think, you're doomed to matching the way you think to the available tools, and even the best available tools basically suck. Interaction design is not only incredibly hard to do well, it's also incredibly idiosyncratic.

by (phil jones) at October 09, 2013 11:10 PM

October 02, 2013

Alex Schroeder

Qelong in Play

A while ago, I talked about Quelong and loved it. Yesterday, I got to run it.

As is typical for my Planescape-Spelljammer-Traveller mashup, I started off by summarizing how the party got back to the Astral Sea and used the red pill to return to Sigil. There, they contacted Lissandra, a dealer in planar gates they knew from a previous expedition. They described their goal and I decided for myself that Zadara was going to sponsor a mission to Qelong on the condition that the party provide at least one hands-on experience with a god weapon. The party agreed and so Lissandra’s “anonymous client” coughed up the diamond dust worth 5000 gold pieces I deemed necessary to transition from Sigil’s Slag to Qelong…

At the end of a three hour session we ended with the party standing in front of the cylinder, having just thrown a naga-kin against it’s shell and watching the naga-kin burn to death.

How did it go? It was straight forward. The party had two goals:

  1. find the elven sorceress Barlakana who had disappeared in Qelong decades ago in the search of aakom (and nobody they talked to knew where to find her)
  2. they quickly learned that the aakom was being leaked from a god weapon and decided to investigate

Here’s what happened, and where I got the information from. You decide for yourself whether that’s the kind of 3h session you’d like to play in.

The party arrives in Qelong and the character that can fly investigates the area; he decides to land near a peasant hut along the canal. He sees Varangians harvesting the former inhabitant’s livers and everybody at the table is disgusted even though the dudes seem nice enough and offer the flyer a job as a scout. Report to Diamond Geary about 25 miles up north, they say. This was from the random river encounter table.

They also visit a lotus temple and learn about the importance of the canals and stupas in keeping the Naga Qelong asleep. They hire a 3rd level monk named Xue Sijhanouk to serve as a guide. This was improvised based on the Gold Lotus description and the henchmen rules. The monk brought the player map aboard. It’s “from an old religions text” and only vaguely up to date. Players like hand-outs and maps. They also like the lotus as a power for law and civilization, resisting the aakom.

Learning about the aakom poison in the water, they spend 400 gold pieces to buy rations and water for 400 days. This is a party with 10 characters ranging from levels 1 to 6, plus one wolf, so that leaves them 36 days to adventure. They also own a chalice that casts cure disease 5×/day, and they have two high level clerics with them. We look at the numbers and ponder ignoring the aakom poisoning rules. In the end I decide that since the weakest character in the party has 1 hit-point and the cure disease only masks the effect without getting rid of the poison, we’ll keep track of the 1 point/day aakom poison accumulation. That’s easy to track, toghether with the rations.

They buy a sampan (a small boat) for 5000 gold pieces and sail and row up the river. This was from the description of Qampong.

Three giant pythons drop on deck and one of the giant ape characters in the party breaks a foot. I later noticed that the pythons in the book have 2 HD stats but I used the ones from the Labyrinth Lord book which have 5 HD. No problem. This was from the random river encounter table.

They come to a village full of refugees and learn about the Varangian blockade and their confiscation of all goods. Hundreds of villagers beg for food and water. I offer to scratch 100 rations to feed the crowd and the party agrees. They spend the night. This was from the random condition of village table. I didn’t roll on the village encounter table.

Along the way, the party also meets a guesthouse. The inhabitants are extremely helpful and generous. The party is immediately suspicious and discovers that the inhabitants are in fact all evil cannibals. The guesthouse is set on fire and the party leaves. This was another entry from the random river encounter table.

They reach Jamqar Long and see the squalor, the refugees, the Varangians (the refugees called them “evil dwarves”). They talk to the Varangians and learn that Diamond Geary is on the other arm of the river. They spend the night. This was from the description of Jamqar Long.

They reach Sajra Amvoel and Fort Hawk (players chuckled at the latin name) and talk to Geary and Hagen. Geary is interested in hiring them, Hagen would love for them to find the cylinder but doesn’t want to risk his own men. It’s easier to harvest aakom from the refugees. They also see Hagen feed liver to the large hawk in his lab. Should the party locate the cylinder, however, Hagen offers to bypass its protection and as a reward, the players would get an ordinary Varangian share of the profits. The players decline and want to split profits 50:50 with the Varangians. This Hagen declines. They part on uneasy terms. Before leaving, the party also talks to the four clerics in the shrine. The monk henchman notices the non-traditional lotus ponds and disapproves of laymen using the lotus power. The clerics explain how they need to cooperate with the Varangians—including offering up terminal cases for “harvesting”—because the Varangians are all that keep the refugee situation from breaking down completely. The clerics also explain about Xam and Thip Qelay. There is some sympathy, there. This was from the description of Sajra Amvoel and the Varangian NPCs.

The party moves up the river. The clerics decides to use detect magic to attempt to find the arm of the river that would lead them to the cylinder and I agree that this would work. As they move up the river, they are attacked by 13 naga-kin. Two are taken prisoner and there is some talk regarding the Naga Qelong (a four headed serpent demigod) and Set (a seven headed serpent god). The naga-kin have never heard of Set but agree that he sounds very powerful and vaguely related. The naga-kin also agree that the aakom poisoning must end but for now it serves their purpose in weaking the canals and stupas. The situation remains unresolved, for now. The party spends the night.

On the forth day, they reach the cylinder. After much talking, one naga-kin is thrown against the cylinder and expires in the flash of fire as the other naga-kin watches in horror. That resolves the relationship towards the naga, I guess. The flying character managers to make a drawing of the inscription and the party now feels that they have earned their “pay” from Lissandra’s client. They haven’t found the elven sorceress, however.

Looking back, I think I should have played a non-stop thunderstorm track instead of Two Steps From Hell.

What do you think? Not enough atmosphere? Just enough atmosphere? Quicker than you thought? Does this session summary make you want to tweak the encounters in the Qelong book?


October 02, 2013 07:58 AM

September 30, 2013

Alex Schroeder

Games on Demand für OerliCon

Ich war am Wochenende auf der OerliCon und habe einen Games on Demand Tisch angeboten.

Die Liste der Kandidaten für mein “Tagesmenü” war lang…

Eher unwahrscheinlich:

  • Montségur 1244 – religiöse Fundamentalisten sind dem Tode geweiht
  • My Life With Master – arme Knechte schuften für den Bösewicht, bis zur Rebellion
  • Fiasco – kaputte Typen auf dem Ritt in den Abgrund


Tipps von Jeremy Friesen auf G+:

I would recommend bringing a few games that you want to run. Provide a durable physical document that has a description of those games. This allows people to see what is happening. I would also make sure to note your schedule. If you can, recruit another GM or two (depending on how many players there might be).

Then be as visible as possible during the lead up and the day of. Use social media, especially the conventions Facebook page (if they have one). You will need to drum up that demand.

Make sure you have an elevator pitch handy for each game. People want to be sold on what thy’ll play.

Also, make sure that you have EVERYTHING that you need to get the game started immediately. Pre-made characters are best, 10 minutes or less for character creation is second best. Also dice, pencils, and paper.

I would also recommend being a very assertive GM regarding the rules. If you are playing Rules as Written, let the players know. But also work to build trust so you can make rulings during the game; Keep things moving at a good pace.

Ich werde mich also auf weniger Spiele beschränken und noch ein Blatt mit einer Kurzinformation zusammenstellen. Für die drei bis vier Spiele, die ich wirklich vorstelle, werde ich Beispielcharaktere bauen und mitnehmen.

Ich glaube meine Favoriten sind:

  • Lady Blackbird
  • Mountain Witch
  • In A Wicked Age
  • Western City


Erster Abend. Die A4 Zusammenfassung der vier Spiele hat keiner gefunden. Vielleicht war einfach zu viel Zeug auf dem Tisch. Wir haben eine lange Runde Lady Blackbird gespielt und es hat allen grossen Spass gemacht.

Zweiter Abend. Die Zusammenfassung wurde mehrmals gelesen und ich habe noch einmal eine lange Session Lady Blackbird und einmal The Mountain Witch geleitet. Ich habe viele, sehr nette Spieler kennengelernt. Lily, Evelyn, Fabienne, Fidel, Samuel, Oliver und alle jene, deren Name ich vergessen habe: Vielen Dank!

Ganz besonders cool fand ich, als Lilly und Evelyn mir ihr System der Heimkampagne vorstellten: M20 Purest Essence! Ich ihnen ganz stolz eine Kopie der deutschen M20 Übersetzung von Dirk Remmecke geschenkt, die er im Namen von Anime Virtual S. A. für die Role Play Convention (RPC) 2008 in Münster gemacht hatte.

Via Google+ wurde ich daran erinnert, dass es eine deutsche Übersetzung von Lady Blackbird gibt. Wenn ich das nur vor dem Con schon gewusst hätte. Noch peinlicher: als ich die deutsche Version abspeichern wollte, musste ich erkennen, dass ich diese schon hatte. Oje. Ich hoffe, meine geplagten Spieler können es mir verzeihen. :)

Was nicht so gut funktioniert hat, aber anscheinend niemanden gestört hat: Das Einschreiben hat nicht wirklich funktioniert, weil die Spielzeiten auf der OerliCon nicht koordiniert werden. Deswegen haben Pascal, der sich vor Ort eingeschrieben hat, oder Carlo, der immer wieder mal vorbeigeschaut hat, beide doch nie einen Platz gefunden. Meine zweite Lady Blackbird Runde habe ich deswegen gnadenlos überzogen, statt wie sonst üblich auf ein Ende innert drei Stunden hinzuarbeiten.

Was für mich gut funktioniert hat: Am Freitag gegen Mitternacht heimgehen, im eigenen Bett schlafen, und am Samstag erst gegen elf wieder dort sein: viele, die dort geblieben sind, haben bis um sechs in der Früh gespielt. Von früh aufstehen konnte keine Rede sein.

Ebenfalls gut funktioniert haben die Visitenkarten, welche ich immer mit auslege. Vielleicht werden nur zwei oder drei mitgenommen, aber als einer der Spieler sagte, er suche eine neue Gruppe, habe ich sofort eine Visitenkarte zücken können. Irgendwie Schade: Selber habe ich weder Fotos gemacht noch Facebook, Twitter oder Google+ Freunde gewonnen, noch Email Adressen ausgetauscht. Daran muss ich das nächste Mal einfach denken.

Ebenfalls gut: einen grossen Beutel mit Bleistiften, Radiergummis und Würfeln für alle am Tisch und Papier zur freien Verwendung. Ich habe allerdings viel zu viel Papier mit geschleppt.


Das nächste Mal sollte ich weniger Dinge mit nehmen. Wenn die Leute etwas in die Hand genommen haben, dann waren es die gut aussehenden Produkte. Vor allem Mouse Guard war ein Blickfang, weil viele die Comics kannten.

Für das nächste Mal also:

  • wie dieses mal eine deutsche Zusammenfassung der vorgestellten Bilder
  • einen grossen Beutel mit Bleistiften, Radiergummis und Würfeln, Notizpapier
  • klare vier Stunden Blöcke ankündigen, separate Anmeldung und immer ein Auge auf die Uhr
  • eine deutsche Übersetzung von Lady Blackbird mit nehmen
  • The Mountain Witch wieder mit nehmen (cool wären deutsche Charakterblätter mit den chinesischen Tierkreiszeichen)
  • Mouse Guard wieder mitnehmen und ein kleines Abenteuer mitnehmen (mit deutschen Charaketerblättern wäre gut)


September 30, 2013 08:05 AM

September 26, 2013

Alex Schroeder

Free Stuff

Recently, Skeeter Green talked about the race to the bottom regarding the pricing of PDF products in the RPG hobby on Google+. He basically said that digital products require an effort to be made and are thus not “free”. He also said that buying music on iTunes illustrates the point: we’re not getting a tangible product and yet we pay the money because of the content. Thus, why the unwillingness to pay for PDFs?

One could argue that capitalism is inherently unfair. The idea that the price of a product should relate to the effort spent in producing it sounds Marxist to me. These days, it’s supply and demand that determine the price. Here’s what I said in reply to Skeeter Green’s post.

I think there are many factors that come into play. On one level, if many offerings are available for free, then that sets expectations. You can only ask for money if the thing you are publishing is significantly better than what is available for free. If it is only marginally better, then customers are only willing to pay very little. From my point of view, for example, very small dungeons, simple hex maps, old school character classes, price lists and spell lists all have very little monetary value because so many of them are available for free, and I love it.

Another factor is that Free Software has slowly prepared us to accept that a product which can be copied effortlessly is only worth a donation. The thing that really costs money is customization—it’s the service that I’m paying for. Thus, I’m prepared to pay for the act of customizing something for me, joining a Kickstarter, paying an artist to draw a character portrait, and so on. I’m less willing to pay for something that is already there and only needs to be copied. I think that’s also one of the reasons why Kickstarter-as-prepayment “works” for customers. Once the thing is made, I’m more reluctant to spend my money on it.

As for iTunes, I can tell you what I’d prefer: I’d prefer to pay $5 to artists directly via a button on their web page because I don’t feel like supporting the infrastructure and middle-men. The reason I’m willing to pay a few dollars on iTunes is that piracy also comes with a cost: the quality of the download, the quality of the tags, the wait, the smut. Avoiding this is worth a bit of money to me.

As for the value of physical media: Once you start ordering from Lulu you realize that the media, the shipping, the last mile of home delivery is in fact quite expensive. I’m willing to pay $10 to $40 for shipping and handling of something such as the Tome of Horrors or Slumbering Tsar because I know it would cost me a similar amount if I ordered it from Lulu using my PDF.

In this climate, a traditional business model with an intangible product is simply hard to pull off.

Tags: RSS

September 26, 2013 02:12 PM

Campaign Wiki

Campaign Wiki

Ich betreibe für meine eigenen Kampagnen eine “Wiki Farm” namens Campaign Wiki– ein Website, mit dem ich mir für jede Kampagne eine eigene Wiki anlegen kann. Das darf man gerne ausprobieren und funktioniert ganz gut, solange man ähnliche Ansprüche hat wie ich. Wem die Wiki Funktionalität nicht ausreicht, muss dann auf Angebote wie Epic Words und Obsidian Portal ausweichen.

Netterweise wurden alle drei Wiki Alternativen vom Teilzeithelden Blog besprochen:

Kleiner Hinweis zur Campaign Wiki Besprechung: Die Liste aller Seiten einer Wiki erhält man, wenn man unten auf Administration klickt und dann Index aller Seiten wählt.

Tags: RSS

September 26, 2013 11:31 AM

September 25, 2013

Phil Jones (Smart Disorganized)

OWL Server

OWL now has a simple Python server that saves OPML files to your local machine.

More here.

by (phil jones) at September 25, 2013 10:50 PM

September 23, 2013

Alex Schroeder

Furkapass by kensanata, on Flickr

On the Furka road towards the Canton of Uri, looking back towards the evening sun. The Vallais starts here with Obergoms and the Rhone. The road to the right is the Grimsel (map)

I like the new camera, an Olympus E-P5 with the 17mm f/1.8 M.Zuiko lens.


September 23, 2013 10:45 AM

September 21, 2013

Phil Jones (Smart Disorganized)

Why Don't Browsers Let Web-Apps Write To The Local File System?

My Quora question :

I mean, I know why. It's a security thing.

But why couldn't a browser have an API for scripts to read / write the file system and a security feature where the web-app has to ask and be given permission by the user before it runs? (Just as Android apps. have to tell you what permissions they need before you install them.) Couldn't the browsers successfully police this?

Surely if the browser manufacturers were to offer this capability, they'd more or less kill native Windows / Macintosh application development overnight and become the default platform for desktop computers. (So maybe Microsoft don't have the incentive, but Google and Firefox do.)

by (phil jones) at September 21, 2013 05:17 AM

Introducing OWL

I love outlining. I love wiki. What do you get when you create a mutant cross-breed of the two?

A fucking power tool, that's what!

It's just a rough draft, at the moment, a rough mashup of Concord and ideas from SdiDesk. But I think you can see it's compelling ...

by (phil jones) at September 21, 2013 12:59 AM

September 18, 2013

Alex Schroeder

Broken Ribs

I use a Death & Dismemberment table in my game. One entry is for broken limbs. You roll again and may break your sword arm, your shield arm, a leg, or your ribs, with appropriate effects. No sword arm, can’t attack. No shield arm, can’t wield one. No leg, need a wooden leg (but no further effect once you do). But what about broken ribs? I read somewhere that you can’t strain yourself because the broken ribs might puncture your lung. So that’s what I use: can’t fight or you’ll die.

It’s a long setup, I know. Last session, my players met a dwarf pirate named Sawty with a saw mounted on his helmet. Uluf has a tengu horn which is way too powerful, summoned the flying swordsmen, killed half of Sawty’s crew and took over. A reaction roll showed that Sawty really liked Uluf. I decided that Sawty wanted to get rid of the guy who runs the show, Black Dagger. Uluf and his horn seemed like the perfect tools. Uluf wanted to get the treasure of the Bastille of Terror. Sawty convinces the reluctant Uluf to follow him and use the tengu horn in Black Dagger’s hall, kill him, and split the treasure fifty-fifty. Reluctantly, the players agree. Uluf leads the way. Sawty does his part, Uluf blows the horn, Black Dagger is killed by the tengus and the player characters cheer. Sawty is cackling triumphantly and leads Uluf to Black Dagger’s treasure hoard. The other player characters trail after them.

Sawty is a true pirate. He shows no regard for his fellow pirates, kicking their corpses out of the way, laughing. All he thinks about is gold and ruling this place. Uluf feels bad. Sawty quickly finds the treasure and disarms the trap. As half the treasure is spilled before Uluf’s feet by the pirate dwarf, Uluf snaps and decides to kill Sawty. A player backstabbing the honest pirate! A pirate who was as ruthless as they were. It was tense. Uluf’s player felt perhaps like a lot of murder was being committed in his character’s name. Uluf and Sawty fight.

When the other player characters offer help and healing, Uluf says no. This is a duel. Initiative is rolled again and again. By strange luck of the dice, both Sawty and Uluf end up in with two or three hit points each. Sawty scores a critical. Broken ribs!


Uluf’s player: “I don’t care. Sawty has to die!” And he rolls and he hits and he runs Sawty through, just as the broken ribs pierce his lungs and the pink foam starts showing. They both die amidst the spilled coins of the pirates’ hoard.

I loved it.


September 18, 2013 09:14 PM

September 17, 2013

Phil Jones (Smart Disorganized)

September 06, 2013

Alex Schroeder


Concerned by all the Snowden stuff? I am. I’ve had some friends use encrypted mail. Thanks!

I use GPG and you can download my public keys from a public keyserver. I’d be happy to keep our communications encrypted.

I’m also thinking of using the Raspberry Pi I got as a mail server. It would be always on. I think I’d like that. I recently found some instructions on how to do that in a German magazine (behind a paywall). Some alternative articles I’ll be reading later:

I really like what Bruce Schneier has to say. This, for example:

The NSA has turned the fabric of the internet into a vast surveillance platform, but they are not magical. They’re limited by the same economic realities as the rest of us, and our best defense is to make surveillance of us as expensive as possible.

Trust the math. Encryption is your friend. Use it well, and do your best to ensure that nothing can compromise it. That’s how you can remain secure even in the face of the NSA.

– Bruce Schneier, How to remain secure against NSA surveillance

By subverting the internet at every level to make it a vast, multi-layered and robust surveillance platform, the NSA has undermined a fundamental social contract. The companies that build and manage our internet infrastructure, the companies that create and sell us our hardware and software, or the companies that host our data: we can no longer trust them to be ethical internet stewards.

This is not the internet the world needs, or the internet its creators envisioned. We need to take it back.

And by we, I mean the engineering community.

– Bruce Schneier, The US government has betrayed the internet. We need to take it back

I remember when Richard Stallman started saying people should pay with cash, not credit and debit cards. I thought it was paranoid but cool. There was no need for me to follow suit.

I’ve been reducing my use of credit and debit cards in recent weeks.


September 06, 2013 12:51 PM

September 05, 2013

Alex Schroeder


Courtney recently talked about treasure design on his blog. I use treasure for advancement and I agree with his assessment: random generation is makes players come back for more.

Random treasure is also an opportunity to develop your world. How do you explain a dozen hobgoblins carrying 5000 gold pieces? When I rolled it up, I decided that a bunch of hobgoblins were on their way to pay taxes to their overlord. The party then stole the treasure, inadvertedly visited the hobgoblin overlord (an evil wizard) and gifted him the gold by throwing a huge party (in order to gain XP), saw the same hobgoblins arrive at court (!) and had to think about a way of preventing the hoboblins from telling their master what had happened. Luckily, they had a cursed potion of conflict and quickly poured it into the wine used to welcome the hobgoblins. They started squabbling immediately and the party made a getaway. I loved it.

Courtney also says that one should “avoid blurring the line between treasure and junk lying around”. I agree completely! It’s boring. That’s why I don’t allow selling used armor and weapons for half price. It’s junk. Get me some new treasure if you want XP.

In a sandbox, there’s some tension between player goals that involve treasure and player goals that involve plot advancement. What happened to the elves? If there are no dangerous monsters with a lot of treasure, discovering the truth about the elves can be boring. My solution is to make sure that wherever there is plot, there is also danger and treasure. Thus, if the missing elves are all petriefied in a hall (as in my Wilderlands game), there must be gorgons, medusas or basilisks nearby with appropriate treasure. If there are armies of hobgoblins on the march (as in my Red Hand of Doom game), then the dragons accompanying them will have their usual treasure along on the march, carried by the footmen or by slaves.

It’s weird, I know. My sandbox has monsters and treasures wherever the interesting plot elements are. That’s simply how D&D World is. Every peaceful mission goes into dangerous territory, every army carries loot, every museum houses monsters. If there are no monsters and no treasure, I'll try and handle it in two sentences. “You sail down the coast to Tlan and talk to the sage. Two weeks later, you’re standing at the harbor. <insert what the party learns>. Now what do you do?”

If you find that you have a lot of players with a lot of hirelings—on a typical session of mine there will be between ten and twenty characters in the party even though we have only four or five actual players at the table—you’ll find that they can easily defeat “level appropriate monsters” in a dungeon and yet they are easily defeated themselves by higher level monsters such as gorgons, medusas, basilisks and dragons. I find that using a lot of weak enemies works best for me. When they recently investigated a forest hut, I rolled up a random encounter with 6d10 goblins. These attacked in waves of around 15 each, spaced a few rounds appart. It worked very well and there was a decent chance for treasure. It ended up being 11000 copper pieces… Oh well!


September 05, 2013 02:13 PM

September 04, 2013

Alex Schroeder

Thinking about a new camera

I recently read a review of the Olympus E-P5 PEN and reconsidered my old cameras: In late 2006 I bought a Pentax K100D. These days, I feel it is large and unwieldy, specially with 18mm-55mm Lens Kit. The charger for the four AA batteries I have is large and unwieldy. In 2010, I had enough and bought a compact camera: the Sony DSC-HX5V (that’s the one that comes with a built-in GPS). Unfortunately, a lot of pictures are very bright, the colors weak. I almost always have to fiddle with the images afterwards. If I want to use the GPS, I need to take into a ccount how long it takes locate itself. If I don’t wait, the pictures are tagged with the last known position.

When I asked a photographer friend, she asked me about my budget and said that usually people use just Canons or Nikons in order to protect their investment in lenses. I don’t own any lenses, so this doesn’t seem to matter that much to me.

I’d probably buy the Olympus E-P5 with the 17mm f/1.8 M.Zuiko lens. Opinions? Other cameras or older models I ought to consider, specially similar quality but lower price range?

This German reviewer is not convinced:

Angesicht dieser marginalen Fortschritte kann man die E-P5 zum Preis von derzeit 1000 Euro nicht empfehlen. Wer auf größere Modelle mit enormer Ausstattung und vielen manuellen Einstellmöglichkeiten Wert legt, erhält derzeit zum selben Preis die Olympus OM-D (derselbe Sensor, aber wetterfestes Gehäuse und Digitalsucher) oder die Fujifilm X-E1 (größerer Sensor, Digitalsucher, lichtstärkeres Kit-Objektiv).

Wer häufig mit Automatik- und Halbautomatik fotografiert, kann sparen. Die kleinere Schwester E-PL5 kostet im Handel derzeit 600 Euro und liefert ähnliche Bildqualität, wenn auch ohne das schicke Retro-Design der E-P5.

– Konrad Lischka, Olympus Pen E-P5: Kamerabrocken glänzt mit Retro-Charme


September 04, 2013 09:15 AM

August 30, 2013

Alex Schroeder

Nergal Tempel

(Meine Spieler müssen weg schauen! ;))

Dungeon für die 3. Stufe, falls viele Gefolgsleute mitgenommen werden. Fairerweise sollte die Gruppe versilberte oder magische Waffen dabei haben. Vorbereitung des Spielleiters: Im Raum 22 gibt es Aufzeichnungen über geplante Brunnenvergiftungen in unschuldigen Dörfern aus der Umgebung.

Bei der Karte handelt es sich um den unteren Teil der Dungeon Karte 80 welche man auf Seite 4 der Dungeon Map gallery von Paratime Design Cartography finden kann. Diese Karte ist von Tim Hartin mit Anpassungen von mir, Alex Schröder, und untersteht der CC-BY-NC-SA 2.5 Canada License. Die Monster stammen aus Labyrinth Lord und dem Advanced Edition Companion, entsprechend gilt für die Monster die OGL. Die Monster gelten als “Open Content”. Was weder Karte noch Monster ist, habe ich geschrieben und darf ohne Einschränkungen weiter verwendet werden.

TW: Trefferwürfel, alternativ dazu direkt LE: Lebensenergie, RK: Rüstungsklasse, NM: Normaler Mensch (Krieger Stufe 0), ML: Moral, BW: Bewegungsrate in 10 Fuss/Runde, EP: Erfahrungspunkte, RW: Rettungswurf

Monster: Jedes Verlassen eines Raumes, jede längere Aktion (Suchen, Lauschen), jede laute Aktion (Türen aufbrechen, Fallen auslösen, Kampf) hat eine ⅙ Chance, Monster herbei zu rufen.

  1. 2W4 Seuchenopfer TW 2 RK 8 1W6 F1 ML 8 BW 12 EP 29 – wie Zombies
  2. 5W10 Riesenratten LE 1 RK 9 1W6 NM ML 5 MV 6 EP 6 – ein Angriff pro 10 Ratten, 5% für eine Krankheit, die in 1W6 Tagen tödlich endet, Opfer: RW gegen Tod oder hinfallen und diese Runde nicht kämpfen
  3. 1W8 Werratten TW 3 RK 7 1W6 F3 ML 8 BW 12 EP 95 – ⁴⁄₆ Chance ihre Gegner zu überraschen; verliert man 50% der Lebensenergie, wird man mit Lykanthropie angesteckt; wer kein Mensch ist, stirbt daran in 2W6 Tagen; heilbar durch Kleriker der 11. Stufe
  4. 1 Ocker Schleim TW 5 RK 8 2W6 F3 ML 12 BW 3 EP 500 – Säure zersetzt Lederrüstung; Blitzschlag oder Waffenschaden teilen den Schleim in 1W4+1 kleine Schleime: TW 2 RK 8 1W6 F2
  5. 3W6 Gläubige TW 1 RK 9 1W6 NM ML 5 BW 12 EP 10 – normale Menschen
  6. 3W6 Rattenmenschen TW 1-1 RK 7 1W6 H1 ML 7 BW 9 EP 5 – wie Halblinge
  7. 1 Grauer Wurm TW 6 RK 6 1W8 F3 ML 9 BW 6 EP 570 – verschluckt Gegner bei 19–20: 1W8 autom. Schaden und es kann nur mit -4 und Dolch gekämpft werden
  8. falls der Boden nass ist: 1 Riesenegel TW 6 RK 7 1W6 F3 ML 10 BW 12 EP 570 – beisst sich fest und trifft ab dann jede Runde automatisch
    ansonsten: 1 Insektenschwarm TW 4 RK 7 NM ML 11 BW 3 EP 135 – verursacht jede Runde autom. 2 Schaden

In der Raumbeschreibung steht der Pfeil → für “weitere Untersuchungen zeigen…”

  1. Grosse Halle der Mutterratte → grosse Statue mit leuchtenden Augen → Kerzen hinter farbigem Glas. Zwei Wächterstatuen beim Eingang, sehen aus wie Rattenkrieger. Seitengänge → vorne rechts angeschrieben mit “Abufalia”, vorne links mit “Spenden” und Guckloch, hinten rechts siebenköpfiger Schlange → ein Zeichen für Set, hinten links mit acht Ratten → ein Zeichen für Nergal
  2. Tür ist angeschrieben mit “Schatzkammer” → Türangeln voller Schleim und Pilzen: diese Türe ist schon sehr lange nicht geöffnet worden → stechender Geruch am Türrahmen. Aufbrechen der Türe lässt giftiges Gas ausströmen: RW gegen Gift oder man wird ohnmächtig für 10 min. Türe aufbrechen und Falle auslösen: zwei Chancen für Monster! Ohnmächtige werden von der Hexe gefangen genommen und in #3 aufbewahrt
  3. viele leer stehende Käfige, viele davon hängen an Ketten → Bärenfallen am Boden sind mit Käfigen gekoppelt. Wer hineintappt: 1W6 Schaden und RW gegen Drachenodem oder man wird vom einem herabfallenden Käfig erwischt: weitere 1W6 Schaden
  4. Malereien schwarzer Tannenwälder und bedrohlicher Silhouetten an den Wänden → gegen #6 hin sieht man dunkle Schlitze links und rechts → darin stecken mehrere versilberte Sensen, welche mit Bodenplatten gekoppelt sind: je 1W6 Schaden für bis zu sechs Opfer; die Sensen entsprechen 1000 Silbermünzen, Mechanismus für die Sensen hat hochwertige Bestandteile: Zahnräder für 10 Gold, Stahlfedern für 50 Gold
  5. Studienzimmer der Hexe Abufalia TW 8 RK 9 2W6 F8 ML 8 BW 9 EP 1560 – nach Belieben: Schlaf, schwarzes Geschoss 2W8, Verwandlung in einen Troll: 1W6/1W6/1W10, Schädel, Tisch, Kräuter
  6. Altar der Hekate, Malereien von Trollen, dunklen Nadelwäldern, grauer Nebel
  7. vier menschliche Sklaven der Hexe graben eine Grube beim Eingang; hier entsteht ein Erweiterung ihrer Räumlichkeiten
  8. Türe von #1 angeschrieben mit “Spenden”. Guckloch → dahinter mit ⁴⁄₆ Chance nichts zu sehen → 8 Werratten TW 3 RK 7 1W6 F3 ML 8 BW 12 EP 95 – ⁴⁄₆ Chance ihre Gegner zu überraschen (Lykanthropie siehe oben); Regal mit versiegelten Tontöpfen → darin die gesammelten Spenden: 10000 Kupfer → die Hinterwand des Regals ist verputzt → dahinter eine uralte Steinmauer, welche man durchbrechen kann
  9. hinter der uralten Steinmauer eine Gruft mit 4 Sarkophagen → darin 4 Mumien TW 5+1 RK 3 1W12 F5 ML 12 BW 6 EP 860 – beim Anblick RW gegen Lähmung oder gelähmt, bis die Mumie entweder angreift oder geht; Grabbeigaben: goldene Zepter und goldene Kugeln im Gesamtwert von 6000 Gold, die Schriftrolle “Auflehnung des Imix” → Schutz vor Elementargeistern
  10. Tür von #8 angeschrieben mit “Abfall”; der Raum dahinter ist aber leer, die Tür zu #14 verriegelt
  11. Tür angeschrieben mit “Kein Feuer” → der Boden vor der Türe mit Spuren von Russ; der Raum gefüllt mit Gas: Kontakt mit Fackeln oder Laternen führt zu einer Explosion mit 6W6 für alle im Gang, RW gegen Drachenodem für halben Schaden → Erdspalt, aus dem langsam Gas austritt
  12. Gang und Raum mit knöcheltiefem Wasser, Kisten, Schlamm → stochern führt zu Knochen → darunter 1200 Silber und 200 Gold lose im Schlamm, Bergung dauert halbe Stunde: drei Chancen für Monster!
  13. Boden voller Schlamm, fauler Geruch
  14. Boden ein einziger Tümpel → ölige Flecken darauf, Schlamm → darin 1 Ocker Schleim TW 5 RK 8 2W6 F3 ML 12 BW 3 EP 500 – Säure zersetzt Lederrüstung; Blitzschlag oder Waffenschaden teilen den Schleim in 1W4+1 kleine Schleime: TW 2 RK 8 1W6 F2; Türe zu #15 mit Loch im unteren Viertel → erlaubt Durchkriechen ohne sie aufzubrechen
  15. wer durch das Loch in der Türe kriecht, wird automatisch überrascht: 1 Tentakelfresser an der Wand TW 3+1 RK 7 F2 ML 9 BW 12 – 8 Angriffe (!): RW gegen Lähmung oder für 20-40 Minuten gelähmt und später in Ruhe verspeist; ein toter Priester mit silbernen Waffen für 4000 Silber und einer Schriftrolle für Kleriker: “Psalm der Seeligen” → Schutz vor Bösem 10 Fuss Radius
  16. Schlamm → darunter rostige Krähenfüsse: 1 Schaden und RW gegen Gift oder Blut vergiftet (keine Heilung für eine Woche) → unter dem Schlamm eine Bodenplatte mit Grabstein von “Anselm der Rattenfänger” → im Grab 1200 Silber 200 Gold, Silberdiadem mit Saphiren 700 Gold, zwei Silberarmreife mit Saphiren je 1000 Gold, silberne Oboe 1300 Gold
  17. enger Gang → hohe Felswände → links und rechts neben der Türe hat es grosse Löcher an der Decke → Wurmspuren; im Raum 1 grauer Wurm (10m lang!) TW 6 RK 6 1d8 F3 ML 9 MV 6 – verschluckt Opfer bei 19–20: jede Runde autom. 1W8 Schaden, nur noch mit Dolch kämpfen, Angriff -4, Knochen und Abfälle → 10000 Kupfer, 4000 Silber, drei grosse Perlen je 75 Gold, Saphir 500 Gold, Smaragd 750 Gold, Silberring 40 Gold, schwarze Perlenkette 500 Gold
  18. viele Skelette um einen Brunnen, nähert man sich dem Brunnen, erhebt sich 1 Banshee TW 7 RK 0 1d8 F7 ML 10 EP 1490 – ihr Anblick löst Furcht aus: RW gegen Zauberei oder Flucht für 7 Runden; wer bleibt: RW gegen Tod oder ihr Heulen führt zum Herzstillstand
  19. erhöhter Boden und deswegen trocken
  20. Wasser knöcheltief, grosser Raum mit acht Statuen → acht Ratten der Apokalypse → Armut, Schwäche, Hunger, Durst, Seuche, Fäule, Gift und Tod. Nergals Racheflüche flüstern hier. Wer ihm Treue schwört und permanent einen Konstitutionspunkt opfert, wird Geweihter des Nergals (als Anfänger darf man eine Fähigkeit wählen: Wasser finden, Nahrung finden, Fäule, Herbeirufen von 1W10 Ratten)
  21. Grosses Nergal Heiligtum: Statue, Schalen, Töpfe → 1100 Silber
  22. 3 Werratten TW 3 RK 7 1W6 F3 ML 8 BW 12 EP 95 – ⁴⁄₆ Chance ihre Gegner zu überraschen (Lykanthropie siehe oben); Schreibtisch mit den aktuellen Plänen: Brunnen der Dörfer in der Nähe vergiften; unter dem einen Tisch Zugang zu einem kleinen, drehbaren Stein zu #23. Türe zu #25 verriegelt.
  23. Regale mit den Archiven der Nergal Priester → Namenslisten der Mitglieder in den diversen Dörfern der Umgebung, bezahlte Bestechungsgelder (meist in kleinen Rubinen)
  24. Geheimtüre von #30 ist von innen leicht zu sehen, Eimer und Seil, Wassertrog → daneben, ganz eng und kaum zu sehen: drehbarer Stein mit Geheimtüre zu #22
  25. Tür von #26 klemmt, wer sie aufbricht, ²⁄₆ Chance, 3m in die Tiefe auf ein paar Speere zu stürzen: 2W6 Schaden. Türe nach #22 von aussen verriegelt. Auf den Speeren eine Leiche mit versilbertem Helm: 1000 Silber
  26. leer, Türe nach #25 → unbenutzt und aufgequollen (Falle siehe #25)
  27. grosser Wassertempel mit Brücken über Kanäle, Schlangenstatuen → unter Wasser lauert 1 Wassernaga TW 7 RK 5 1W4 F7 ML 8 BW 9 EP 1140 – Zauber: Blitz 7W6, Illusion, Gedankenlesen, magisches Geschoss 1W6+1, Türen verschliessen, Schlaf 2W8 TW; die Echsendiener von #29 helfen ihr wenn möglich; Gaben: 10000 Kupfer, 8000 Gold, Silberring 50 Gold, Bernstein 250 Gold.
  28. Brutstätte der Echsendiener: Eier, Nester, warmes Wasser → darin Stolpergruben mit Speeren: 1W6 (²⁄₆ Chance hinein zu stolpern)
  29. Lager der 13 Echsenmenschen TW 2+1 RK 5 1W6+1 F2 ML 12 BW 6 EP 47; bewachen Brutstätte in #28 und Naga in #27; Anführer hat Trank des Gedankenlesens falls Bewaffnete Durchlass begehren
  30. grosser Brunnen ohne Eimer oder Seil → Wasser ist geniessbar → Baustil: Goblins; Steinwand zu #23 lässt sich hineindrücken und beiseite schieben
  31. Grabkammer mit 1 Gruftbewohner TW 3 RK 5 F3 ML 12 BW 9 – Treffer saugt eine Stufe! Kann nur durch Zauber oder durch silberne oder magische Waffen getroffen werden; sucht verzweifelt Zugang zur falschen Gruft im Osten und greift nur an, wenn er gestört wird
  32. verschlossene und ausgetrockneter Raum, in der Mitte ist eine silberne Glyphe gezeichnet → am Boden liegen tote Insekten; wer den Raum betritt: RW gegen Gift oder man wird Ohnmächtig und erstickt in den nächsten 10 min wegen fehlendem Sauerstoff; die Silberstücke, aus denen die Glyphe besteht: 1000 Silber. Wird die Glyphe zerstört, verbessert sich die Luft in einer halben Stunde: : drei Chancen für Monster! Insbesondere der Gruftbewohner aus #31 fühlt sich schnell gestört.

Tags: RSS

August 30, 2013 01:58 PM

August 25, 2013

Alex Schroeder

Safe Browsing

Today I installed HttpFox, an extension for Firefox which tells me which resources have been requested, what the responses where and so on. I noticed that I got a request for Hm. I checked Google Safe Browsing and wondered. I decided to deactivate it. Visit about:config and search for safebrowsing*enabled and set them all to false.

What do you think—overreaction? I didn’t find it on the EFF site. I wonder why.

Tags: RSS

August 25, 2013 08:35 PM

August 22, 2013

Alex Schroeder

Qelong vs. Points of Light

When I heard people say online that Quelong by Kenneth Hite was a great module, I was interested. 48 pages of A5 is my kind of size.

Until now I kept saying that Rob Conley’s Points of Light (4 settings, 42 letter-sized pages, reviewed on Dragonsfoot) and Points of Light 2 (4 settings, 59 letter-sized pages, also reviewed on Dragonsfoot) were the perfect hexcrawl products. The size was right. That’s about 25 A5 pages per setting. Thus, Qelong is about twice the size of a Rob Conley setting. If you want to get a feel for the Rob Conley settings, take a look at the Southland PDF. It’s available for free.

How does Qelong compare to the top hexcrawl? Here’s what I think.

Both provide a handful of pages of background, history, the major factions, how to integrate it into your campaign. The usual stuff, but short. I like short. I also like to know what the author intended to convey with the setting so that I can read the rest with the right mind set. I like to know whether it’s “hellish southeast Asia” (Qelong) or “embattled forces struggling to establish a home” (The Golden Shore, in Points of Light 2).

One thing I noticed was that the Qelong introduction referred to more faction details: “Myrmidons deranged and misdirected chew through the land, laying eggs in the river dwellers to hatch out more warriors. (See p.28 or [sic] details on the myrmidons.)” The effect was that while I was reading the introduction, I already eagerly leafed through the book, looking up details. It introduced me to the factions and made curious for more. Well done.

The Qelong introduction also has a table of 50 rumors and lets each character start with a random rumor; spending a handful of coins will let players roll again. I like it.

The Qelong introduction also features elaborate disease and magic poisoning rules that require purify food and drink, cure disease and remove curse spells. I think it’s very atmospheric but I’m not sure how well these poisoning rules work in play. We don’t keep track of rations, how will we keep track of poison levels?

Both Points of Light and Qelong describe geographic features. These are entire areas instead of single hexes with a specific description. In Points of Light most of these areas have one paragraph each, which is short. Qelong has more. It starts with a bold paragraph that could be read aloud or just provide the “in game” view. This is followed by another paragraph of background information that you don’t need at the table but which helps the referee understand what’s going on. And then there’s what I love: each geographic feature comes with a bullet list of suggested encounters.

Last year I posted an example from my Caverns of Slime module (free PDF) which used the same format. Here are some examples of varying size from Qelong:

  • A sampan with its bottom staved in. A Tinkering roll could repair it.
  • A carnivorous fish lives underneath the lotus field. Armor 13, 2 Hit Dice, bite 1d6. Or a school (2d8) of them.
  • The characters’ boat approaches a sunken tree. Anyone actively searching for dangers in the  water will notice it in time to take evasive action; otherwise it tears out the bottom of the characters’ boat, doing 1d10 shp [sic]. If the Referee wants to be a jerk, there is an ambush party of 1d6 naga-kin at the bottom of the river under the tree, waiting  for their dinner.

In addition to that, Qelong has a different random encounter table for each hex type. This is excellent.

Qelong also comes with its own monster section to describe the various new creatures. This is also excellent.

Qelong comes with a table of names (family names, female and male first names). Very useful if you’re providing us with a new culture.

Quelong also comes with a small list of new ships and including required crew, sailing miles/day, rowing miles/day, cargo (tons) and ship hit points—these must be the shp mentioned in the encounter with the sunken tree in the list above. I like it.

Is there anything Qelong doesn’t come with?

Both Points of Light and Qelong come with a list of locations. In Points of Light, these are sorted by hex coordinates: “1604 Unicorn Pool”. There are a fair number of them. Southland, for example, comes with 38 hex descriptions. Each one consists of one to five paragraphs, many settlements come with a little overview map (to be copied and handed out to your players, perhaps?). Characters only have class and level indicated: “Lord Mayor Thomes White (Ftr3)”, monsters just have their hit dice noted: “Clak and Frull, hill giant (9HD) brothers”, and in Points of Light 2 they have some D&D 4E descriptors as well: “rust monsters (level 5 controller)”.

In Qelong, which is about twice the size of a single Points of Light setting, there are only ten encounter areas. Each has two to five paragraphs, some come with extra information about important non-player characters or unique monsters. If characters or monsters are described in more detail, any treasure they have is also listed. I like the detailed Qelong encounter areas and even if there are only ten of them, I think it works out because Qelong, unlike the Points of Light settings, has an optional end to it.

Wow! I really must recommend Qelong. I agree with Zak’s review: “So yeah, Qelong is fucking good and stuff.”

The only thing I would have liked is no watermark on each page. Points of Light also has it, but it’s lighter. The Qelong watermark is dense in the bottom quarter of the page and slows me down when reading it. That’s the sum total of all non-badass points I have. ok

star star star star star

I have yet to add it to my running campaigns and I have no idea of how to do it. It would seem like a major break from current events.

Addendum: A review by Save vs. Total Party Kill.


August 22, 2013 09:28 AM

August 21, 2013

Alex Schroeder

One Roll Dungeon Stocking

When I stocked my dungeon yesterday, I used the Moldvay Dungeon Stocking procedure. To be honest, my wife used it. The two tables are somewhat confusing.


d6Result d6Monster Trap Empty
1–2Monster 1Yes Yes Yes
3Trap 2Yes Yes No
4Special 3Yes No No
5–6Empty 4–6No No No

I couldn’t find a blog post translating Moldvay’s dungeon stocking table into a single table. I’m sure I saw it somewhere. That would have helped us. (Edit: I guess I was remembering this discussion of the OD&D restocking procedure by Sham.)

Let’s do it ourselves, then. Writing out all the results:

     1   2   3   4   5   6
 1   M$  M$  M$  M   M   M
 2   M$  M$  M$  M   M   M
 3   T$  T$  T   T   T   T
 4   S   S   S   S   S   S
 5   E$  E   E   E   E   E
 6   E$  E   E   E   E   E

Counting occurences:

#Contents and Treasure
6Monster and treasure
2Trap and unguarded treasure
2Unguarded Treasure

Transforming this into a d36 table:

d36Contents and Treasure
1–6Monster and treasure
13–14Trap and unguarded treasure
25–26Unguarded Treasure

Or divide it by two to get a d18 table:

d18Contents and Treasure
1–3Monster and treasure
7Trap and unguarded treasure
13Unguarded Treasure

Too bad there is no such d18. We should change that to a d20 table. Let’s see if we can do it using Labyrinth Lord.

01–30Empty 15%
31–60Monster 50%
61–75Trap 30%
76–00Unique var.
 We just multiply the percentages from the table:
ContentsWith TreasureNo Treasure
Empty 4.5%25.5%
Monster 15%15%
Trap 4.5%10.5%

We could simplify the above by rounding to increments of 5% and translating this to a d20, reusing the order from the d18 table:

d20Contents and Treasure
1–3Monster and treasure
7Trap and unguarded treasure
15Unguarded Treasure

It’s very close to Moldvay, I’d say. And it’s probably less confusing. I can’t count the times I got confused by the Moldvay tables. :)

Reordering it for excitement, I guess:

d20Contents and Treasure
6Unguarded treasure
7Trap and unguarded treasure
13–15Monster and treasure

I need to stick this into my campaign book.


August 21, 2013 12:36 PM

Moldvay Dungeon Stocking vs. Seclusium

I had recently commented on The Seclusium of Orphone of the Three Visions, noting:

It’s a workbook, not a generator to be used at the table. It helps if you are slow and methodical like I am but would like to be pushed like I’d like to be pushed.

Some days have passed and here’s what happened. I knew an elven ruin was to contain a seclusium and and started working on one, using The Seclusium of Orphone of the Three Visions as my workbook, naming my seclusium the same, but not using the most fleshed out seclusium in the book of the same name. I was starting from scratch. I wrote a lot of stuff. Then I started sketching a map. Or was it? It’s more of a doodle, I guess. And I wrote notes, I read the book, I rolled some dice, walked away, came back, did it again, did it again. It was slow.

Finally I decided that drawing a detailed map was going to be a major pain and started writing about the non-player characters still present. I ended up with interesting characters, but I was starting to grow suspicious. It had taken me an awful lot of time. And I started to feel that these dense scribbles would require a rewrite in order to be usable at the table. Too much of this text wasn’t going to be useful or was going to obscure the important bits.

I guess some people might say that writing about these characters can be seen as “familiarizing myself” with the characters, getting to know them better, being able to play them better.

I decided that it was taking too long and switched to one of the semi-prepared seclusiums. I wondered: would I be saving time? I knew that some of the things were going to need rearrangement on the page, some things needed to be highlighted, so I tried keeping my notes more organized.

Soon, however, I started wondering about a map. Should I just draw a flow chart? Or simply have a list of locations and allowing player to move at will between the various sections—much like I use my hex maps. Move at will between locations, distance is proportional to the number of potential random encounters. I decided I was going for a few details on some larger index cards. I was tempted to draw more details, doing it the old school way. I tried to counter this by drawing sloppily. And no take backs, no pencil. Use the pen.

I wasn’t happy. I left it lying around for another day or two. Game day was coming up. And I had nothing.

In the two hours before the upcoming session, between preparing dinner, talking to my wife and munching, I decided to just pull out one of the maps by Paratime Design Cartography. I don’t always like the maps, some are too simple, some are awesome and intimidatingly complex for an hour of stocking, but I finally settled on half of Dungeon Map 80 which you should find on page 4 of the Dungeon Map gallery.

I started with a list of random encounters. This was supposed to be a temple to the god of the dead and the diseased, Nergal, lord of the Underworld. The temple itself was being run by wererats keen on poisoning wells and spreading lycanthropy. I used my pen to add more steps, add mud and pools. It was fun doing this.

Then I pulled out Moldvay Basic Dungeon Stocking table (Michael Curtis at one point discussed its genius) and had my wife roll like crazy. As she called out “Empty! No treasure. Monster! Treasure!” I scribbled like crazy.

As you can see, I still had two specials, three monsters and three traps to provide, but I felt ready to rock and roll!

This works.

The irony of preparing for a session is that players don’t do what you expect them to do. They don’t even do what we agreed upon doing by email a few days ago.

  1. they skip the dungeon I had frantically stocked in the two hours leading up to the session
  2. they visit the elven ruin where I had planned The Seclusium of Orphone of the Three Visions.

I was going to find out whether my premonitions were correct. And they were! The wall of scribbled text was impossible to read—I basically limited myself to the map doodle and whatever I had written on it. The non-player characters came up but I could have characterized them with four words each and it would have worked just as well.

I end up agreeing with the quick review written by Zak S. Going forward, I will “raid it more than use it.” Maybe it makes good material for the special rooms indicated by the Moldvay dungeon stocking procedure.

(Damn, scanning and cropping all these images took way too long!)


August 21, 2013 11:51 AM

August 20, 2013

Alex Schroeder

Public Key Fiasco

I got my first encrypted email in years. I use GnuPG.

  1. I didn’t have the necessary secret key available. I found it in an old backup I still had available.
  2. I didn’t know the passphrase required to use the secret key I just found. I tried guessing for a while, to no avail.
  3. I wanted to revoke the secret key or change it’s expiry. That requires the unknown passphrase.

This is stupid. #fail

Sad story from the distant past: In 2005 my old keys appeared not to work when I tried sending email to a friend. When we don’t use these tools every now and then, we won’t be able to use them when it’s required of us.

As I considered my setup, I decided I might want to upgrade my GnuPG 1.4.9 installation. Building it myself… it requires libassuan, libksba, the GNU Portable Threads Library, iconv, and libgpg-error. Starting all the jobs and realizing that iconv doesn’t install. Fuuuuuu!

I think I will do a Backup of the system and install Homebrew. And then, at last, after many hours, no doubt, I’ll brew gpg.

As the backup is being made, I discover an old revocation certificate for the damn key without a passphrase. And it works!

On the key servers:

gpg: suche nach "kensanata" auf hkp-Server
(1)	Alex Schroeder <>
	Alex Schroeder <>
	Alex Schroeder <>
	Alex Schroeder <>
	  1024 bit DSA key 89D0FBCC, erzeugt: 2006-06-26 (widerrufen)
(2)	Alex Schroeder <>
	Alex Schroeder <>
	Alex Schroeder <>
	  1024 bit DSA key 353AEFEF, erzeugt: 2002-07-10
(3)	Alex Schroeder (Kensanata) <>
	  1024 bit DSA key 23AAC850, erzeugt: 2001-04-12

Key status:

pub   1024D/353AEFEF 2002-07-10 [verfällt: 2015-08-20]
uid                  Alex Schroeder <>
uid                  Alex Schroeder <>
uid                  Alex Schroeder <>
uid                  [jpeg image of size 5665]
sub   4096R/363A61EE 2013-08-20 [verfällt: 2015-08-20]

pub   1024D/89D0FBCC 2006-06-26 [widerrufen: 2006-06-26]
uid                  Alex Schroeder <>
uid                  Alex Schroeder <>
uid                  Alex Schroeder <>
uid                  Alex Schroeder <>

pub   1024D/23AAC850 2001-04-12 [verfallen: 2002-04-12]
uid                  Alex Schroeder (Kensanata) <>

353AEFEF and 363A61EE are the ones to use. :) ok

Tags: RSS

August 20, 2013 09:34 AM

August 19, 2013

Alex Schroeder

Skills Inspired By Apocalypse World

Recently I was writing about The Seclusium of Orphone of the Three Visions and forgot to mention the house rules appendix at the very end. On those two pages, Vincent Baker introduces his favorite form of perception test—essentially a skill system.


When you size a situation up, roll 2d6 and add your Wisdom modifier. On a 10+, ask me three questions. On a 7–9, ask two. On a 3–6, ask one:

  • Who’s in control here?
  • What’s my best approach?
  • What’s my best exit?
  • How could I assert my own dominance?
  • How could I disarm the situation?
  • If the situation proceeds unaltered, what will happen?

On a 2 or less, you stand gawping.

You can ask more, or questions of your own devising, if you’re willing and able to stand musing while the situation unfolds. If you have a positive Wisdom modifier, you can also ask one question without rolling, and roll only if you decide to ask further.

This write-up follows the famous Apocalypse World approach that has been used for a gazillion indie games. They all offer a number of “basic moves” (skills) which anybody may use and a number of moves from “your playbook” (your class-specific skill list). You roll 2d6 and add a modifier. 10+ is a success, 7–9 is a lesser success, everything else is a failure. The ones I am concerned with come with a list of possible results and players pick one or more from the list depending on their degree of success.

Here’s an example basic move from Apocalypse World. As you can see, the list of possible results only comes into effect on a lesser success. It’s a way to suggest possible partial successes—a list of possible compromises, if you will:

When you go aggro on someone, roll+hard. On a 10+, they have to choose: force your hand and suck it up, or cave and do what you want. On a 7–9, they can instead choose 1:

  • get the hell out of your way
  • barricade themselves securely in
  • give you something they think you want
  • back off calmly, hands where you can see
  • tell you what you want to know (or what you want to hear)

I like it very much! I like how we can agree on a list of possible results and depending on how successful we are, one or more of these results can be picked by the player. It takes automatically forces people to compromise and if the moves are well written, they will often involve difficult choices.

Unfortunately I still don’t like skill systems.

  • sometimes they encourage players to stare at their character sheet when faced with a problem
  • sometimes they change our default assumptions (the famous example of knights falling off their horses as soon as a Ride skill is introduced)
  • sometimes I prefer to handle social situations by talking or as simple puzzles

However, there still is a decent amount of rolling the six sided die in my game in order to find traps and secret doors or to attempt funky things I personally find implausible. Perhaps it would be cool to have a number of these lists of possible results and giving players the option to choose?

If you want to disarm a known trap, roll 2d6+Dex bonus. Pick three results on a 10+, pick one result on a 7–9. Unless you choose to avoid it, the trap will be triggered and the referee will check for wandering monsters.

  • you are quick and avoid the wandering monster (if any)
  • you disarm it (allowing anybody to bypass the trap)
  • you arm it (useful after having disarmed and bypassed the trap)
  • you extract the poison needle or gas-filled glass bottle (if available)
  • you know who built this (kobolds, dwarves, elves, humans)
  • you know how old this is (when it was built, when it was armed)

Perhaps I’m reinventing Dungeon World? Apparently that’s a D&D variant built using the Apocalypse World “engine”. In fact, the InDesign source files are on GitHub and look like readable HTML. For those that already own Apocalypse World, check out the Dungeon World Hack.

The trap disabling equivalent in Dungeon World is this:

When you pick locks or pockets or disable traps, roll+DEX. • On a 10+, you do it, no problem. • On a 7–9, you still do it, but the GM will offer you two options between suspicion, danger, or cost.

The above example seems less specific than what I would like. Perhaps I just started out with the wrong example?

The skill system introduced in the house rule appendix from The Seclusium of Orphone of the Three Visions is the most interesting skill system I have found because of the compromises it suggests for lesser successes. I’m not sure that’s enough to make me add it to my own game. It’s enough to make me consider playing a game of Apocalypse World or one of its variants (“hacks”).


August 19, 2013 12:50 PM

August 18, 2013

Phil Jones (Smart Disorganized)

August 15, 2013

Alex Schroeder

Webhosting in Switzerland

I’m considering the move of my web space to Switzerland. Any recommendations?

I’ve had the following recommendations:

  • Geekserver by Cyon at 39.–/month (25 GB disk, 1 GB RAM, 1 TB traffic, Debian)
  • Virtual Private Server by hostfactory at 24.10/month (20 GB disk, 512 MB RAM, unknown traffic, Debian), increase to 31.70/month (25 GB disk, 1 GB RAM, unknown traffic, Debian)
  • VRS Micro by EDIS at 1.45€/month (2 GB disk, 256 RAM, 0.5 TB traffic , Debian), increase to 8.00€/month for Basic (24 GB disk, 1 GB RAM, 4 TB traffic, Debian)

Currently 1.00 CHF is about 1.07 USD, apparently.

Tags: RSS

August 15, 2013 11:29 AM

August 14, 2013

Alex Schroeder

Comments on this Wiki Blog

I’ve done a few changes. Let’s see whether it works out.

  1. when viewing ordinary pages, previous comments and the comment form are shown ← this is what I wanted to add
  2. people who follow the RSS feeds will therefore easily find the obvious comment form when following the link ← this is what I hope to achieve
  3. when leaving a comment, you end up on the comment page, which might be confusing
  4. when looking at RecentChanges, which has some extra magic associated with its name, the comments are not shown
  5. when looking at older revisions, the page history, and many other variants, the comments are not shown
  6. when looking at a journal page such as Diary, the comments are not shown
  7. when looking at a journal page such as Diary, you can still see links to inline the comment page
  8. inlined comment pages don’t come with an automatic comment form—you need to click on the “Add comment” link at the end
  9. comment pages are still excluded from the usual feeds (I wonder whether I should change this)

I think the Wiki + Blog combo still works. I’m just trying to make it less weird. :)

Source code for your config file, if you’re an Oddmuse user. The source code below also includes my Google +1 setup (Oddmuse:Google Plus One Module) because my code needs to avoid the situation where a page shows two +1 buttons. As for comments within journals, I use Oddmuse:Dynamic Comments Extension.

# Google +1 list

push(@MyAdminCode, sub {
       my ($id, $menuref, $restref) = @_;
       push(@$menuref, ScriptLink('action=plusone',
				  T('Google +1 Buttons'),

$Action{plusone} = \&DoPlusOne;

sub DoPlusOne {
  print GetHeader('', T('All Pages +1'), ''),
    $q->start_div({-class=>'content plusone'});
  print $q->p(T("This page lists the twenty last diary entries and their +1 buttons."));
  my @pages;
  foreach my $id (AllPagesList()) {
    push(@pages, $id) if $id =~ /^\d\d\d\d-\d\d-\d\d/;
  splice(@pages, 0, $#pages - 19); # last 20 items
  print "<ul>";
  foreach my $id (@pages) {
    my $url = ScriptUrl(UrlEncode($id));
    print $q->li(GetPageLink($id),
		qq{ <g:plusone href="$url"></g:plusone>});
  print "</ul>";
  print $q->end_div();

# two step Google +1 button to protect your privacy


sub MyNewGetCommentForm {
  return MyOldGetCommentForm(@_) . q{
<script type="text/javascript">
function loadScript(jssource,thelink) {
   var jsnode = document.createElement('script');
   document.getElementById(thelink).innerHTML = "";
 var plus1source = "";
<p id="plus1">
  <a href="javascript:loadScript(plus1source,'plus1')">
    <img src="/pics/plusone-h24.png" alt="Show Google +1" />
<!-- <g:plusone></g:plusone> -->
<div class="g-plusone" id="my_plusone"></div>
<script type="text/javascript">
  document.getElementById("my_plusone").setAttribute("data-size", "medium");
  document.getElementById("my_plusone").setAttribute("data-href", document.location.href);

# make sure journal pages set a global variable which we then use to
# hide the comment form

*MyOldPrintJournal = *PrintJournal;
*PrintJournal = *MyNewPrintJournal;

my $MyPagePrintedJournal;

push(@MyInitVariables, sub {
       $MyPagePrintedJournal = 0;

sub MyNewPrintJournal {
  $MyPagePrintedJournal = 1;
  return MyOldPrintJournal(@_);

# list comments and comment form at the bottom of every normal page

*MyOldPrintFooter = *PrintFooter;
*PrintFooter = *MyNewPrintFooter;

sub MyNewPrintFooter {
  my ($id, $rev, $comment) = @_;
  if (!$MyPagePrintedJournal
      and GetParam('action', 'browse') eq 'browse'
      and $id and $CommentsPrefix
      and $id ne $RCName
      and $id !~ /^$CommentsPrefix(.*)/o) {
    my $target = $CommentsPrefix . $id;
    my $page = '';
    $page = PageHtml($target) if $IndexHash{$target};
    print $q->div({-class=>'comment'},
    # don't include Google +1 button twice
    print MyOldGetCommentForm("$CommentsPrefix$id", $rev, $comment);


August 14, 2013 03:13 PM

August 11, 2013

Alex Schroeder

Chilling Effects

Yesterday I wanted to google for a cartoon in order to show it to my wife. I joked that the keywords would probably get me on a watch list. My wife said I was a fool to use those search terms. Did I need to “prove” myself by googing those terms? When I said that if I stopped looking for information using those terms, I was already accepting that the police state is real. She said, thanks for making it harder for me, should I want to visit the United States again.

Needless to say, the argument was a bit longer and a perfect Saturday was ruined with a late night discussion about the current state of the world surveillance society.

Recommended reading: Restoring Trust in Government and the Internet by Bruce Schneier.


August 11, 2013 09:02 PM

August 08, 2013

Alex Schroeder

Looking for New Games

For a while we had a biweekly game of one-shots going where we usually played some indie games that Lior brought. (Campaign:MontagInZürich.) Then I grew tired of it and felt like perhaps we needed a long-term campaign. Harald started running his Campaign:Karameikos for us. Weeks have passed and slowly I’m recovering from my indie burnout. I'm looking for new games!

I basically stopped caring after Apocalypse World and Fiasco came out. I remember a session of How We Came To Live Here and Monster Hearts. People had started talking about Dungeon World. I remember hearing about the Napoleonic role-playing games Duty & Honor and Beat To Quarters.

Things I’m currently interested in:

What else should I be looking at?

I don’t think that I need more dungeon explaration games on my list since I’m happy with classic D&D as it is. Thus, no Dungeon World variants, no Torchbearer.

Tags: RSS

August 08, 2013 06:26 AM

August 07, 2013

Alex Schroeder

Magic Swords

Jeff Rients was looking for magic swords named after rock ‘n’ roll songs, “preferably metal.”

Looking at my most played titles on, I don’t see any heavy metal songs. We’ll see what we can do anyway.

High Lonesome
Sword +1/+3 fighting alone; if you do fight alone, a dirge starts playing softly as soon as you draw the blade.
The 59 Sound
Glowing sword +1; once the sword is drawn, every damage roll of 5 or 9 increases the energy level of the sword; once the energy level reaches 10, a huge flash of light erupts from the blade and thunder rolls across the landscape; everybody within 60 ft. including the wielder needs to save vs. paralysis or drop unconscious for one turn. The energy level drops back to zero when sheathed or when not used in combat for one turn.
Meet Me By The River's Edge
Sword +1/+3 vs. former loved ones; allows wielder of unsheathed sword to walk on water while fighting; allows wielder to draw a line or a circle in the water causing a wall of water to rise: save vs. dragon breath or take 1d6 damage and be stunned for one round (the line extends for 100ft if a line is drawn).

The energy level of 10 needs some play testing, I think. Should the energy level drop after a flash or should those that don’t fail their save be able to pick up the glowing sword and continue blasting? What about the envious sword “vs. formed loved ones” – I’m sure that doesn’t happen too often in a game.


August 07, 2013 11:24 AM

Phil Jones (Smart Disorganized)


This looks very interesting :

I laughed when I first saw it, said "it's like Emacs". Seems Emacs is involved somehow. Also reminds me of Enso.

by (phil jones) at August 07, 2013 03:46 AM

August 06, 2013

Alex Schroeder

The Seclusium of Orphone of the Three Visions

I wrote this on Google+ and it grew and grew and now I think I should put it on my blog as well.

I’ve been using Vincent Baker’s The Seclusium of Orphone of the Three Visions to work on an upcoming adventure (which I haven’t finished, yet). Before buying it, I had heard that it was “organized into fairly poorly designed tables and lists and multiple choice locations that make the creation of these dungeons harder and slower than they need to be while not gaining a lot from being presented in that format” [1], the layout was “atrocious” and that almost all tables ended with “or another of your own creation” which was said to be “irritating”. [2] (A full quote is on the comment page.) Others just said “all I hoped it would be and more” and “super fucking cool” without exactly saying why. [3] [4] [5] Here’s why I think you might want to buy it.

James Raggi said that the layout worked very well in the physical book, i.e. a two page layout. I tried reading the PDF on my tablet using the “two pages, with cover page” setting and it worked very well. The columns flowing across pages didn’t bother me. The tables also had enough options such that “or another option of your own devising” didn’t bother me.

Unfortunately working through the Seclusium doesn’t provide you with material on the level of an old school dungeon crawl. There are no maps, no stats for monsters, no ready spell books to find. If those are concerns for you, I think you’ll be happy to find lots of maps to start with at Paratime Design Cartography. Thank you, Tim Hartin. As for monsters, I’m sure you’ll be able to use any monster manual or creature generator such as James Raggi’s The Random Esoteric Creature Generator. Personally, I stick to the monster manuals. Finally, spellbooks. If you need some non-standard spells, I’ll suggest Theorems & Thaumaturgy by Gavin Norman. Having all the scrolls be from a dedicated strange and new school of magic works for me. I don’t think I’ll require magic users to switch class to use them. After all, I use the restrictive interpretation of the B/X spellbook rule: Magic users and elves may only know or master as many spells as their spells/day.

That leaves the question of prep efficiency with The Seclusium of Orphone of the Three Visions.

I agree, reading the tables and rolling or picking entries, writing down the results, then rolling on further tables takes a long time. I entered my endeavor with some notion of what I wanted, so perhaps that helped. You only roll for the parts you’re missing. Even then, it’s slow. You’ll discover that there is a keeper of the pantry and buttery still around. Later, there’s table for mundane people in the seclusium, ouside of the seclusium, magical entities, and so on. It takes a lot of rolling and leafing around if you want to do it by the book. How much better would a huge “all in one” table be with type, job, attributes as columns notes – roll once and use the entire row or roll multiple times and combine. That would have been faster to use. Is that how Vornheim does it?

The Seclusium of Orphone of the Three Visions doesn’t work like that. It’s more of a workbook, helping you think it through, methodically. Do you care about the looks of the wizard? The eyes? Did you consider the outhouses? The people who worked there? The guests? Prisoners? What about magical entities? How about geographical features? Portals? Artifacts? Did you consider any drawbacks they might have? Does your seclusium contain an inner sanctum reserved for the wizard? How is it protected? And so on. It’s slow reading because it works like a checklist. Did you think of this? And this? How about this? And if your inner voice says “hm, didn’t think of that, but this could be cool…” then the book goes on to provide you with a table of 12 or 20 things to use.

Yes, not all of the things might seem immediately useful. I don’t really care about the eyes of the wizard nor the quality of their vestments, nor for their hairdo. Then again, perhaps I should. Perhaps it will change the way it all plays out. It pushes me to places I haven’t been before.

I don’t know about you, but here’s something I’ve hardly ever mentioned. There is a moment of shyness in my imagining. A fear of being an idiot. Of repeating myself. Of mundane and boring encounters, of cheap shots. This fear is fed by improvisation at the table. Sometimes I need something quick and I don’t mind and I spew forth NPC names and corridors and magic effects and I love it. Later, I’ll wonder whether these things are not all pale shadows of the same ol’ Alex game that I’ve been running ever since I learned about roleplaying games. Am I repeating myself? This is why I like to use material by other people. It pushes me to places I wouldn’t have thought of. Even if the ideas presented by other people are mundane and boring, they’re different from my own mundane and boring.

Here’s another thing: I prep “just in time” and therefore it’s always possible that the players venture into territory I didn’t prepare. There will be no random encounter tables for this region, no lairs, … and I improvise quickly. But perhaps I’ll improvise something level appropriate? Something everybody expected. Something boring. Again, using other people’s products provides a sort of external reality to my fantasy world. If The Seclusium of Orphone of the Three Visions says that most of the wizards have access to other worlds, then I feel good about it. On my own, my suppressed id can’t express itself. It’s all tempered by years of “traditional” fantasy. I’ll read up on the gate spell and on permanency and I’ll bog myself down. I’ll forget about the free form rituals and pacts that take are unconstrained by the rules. This is where a book only slightly constrained by the rules (Lamentations of the Flame Princess) shines. It pushes me and tells me “it’s OK.”

Anyway, The Seclusium of Orphone of the Three Visions works for me. It’s a workbook, not a generator to be used at the table. It helps if you are slow and methodical like I am but would like to be pushed like I’d like to be pushed.

Addendum: 2013-08-19 Skills Inspired By Apocalypse World, where I talk about the house rules presented in the appendix. 2013-08-21 Moldvay Dungeon Stocking vs. Seclusium, where I talk about the procedure being extremely slow, unfortunately.


August 06, 2013 09:40 AM

August 05, 2013

Alex Schroeder


Recently, Jason Morningstar was wondering on Google+ about characters having independent lives from their players. I guess I didn’t really understand what he wanted to get at. It did remind me of two things I’ve been doing in recent years, however.

When playing a Pendragon character, a high trait score (16 or more) will force players to roll in appropriate situations. And once they roll, the roll determines the character’s reaction. Sir Aliduke, for example, is so proud that in any given situation where pride or modesty are relevant, 80% of the time he’ll pick proud. My players come from a D&D background and they all adapted to this way of playing without complaining. Most felt it was a refreshing change of pace.

In addition to that, I enjoy the moment where I, as a player, realize that this particular character would never or always do something particular. I like the realization that the character is not just the player. As a player, I like a certain randomness at first. As things happen and my character reacts in insignificant ways, I take note. As play continues, I treat these fragments as prescriptions (not just descriptions). I’ll note “ORDER AND PROGRESS!”, for example, once my character shouted a vapid phrase in response to a crisis. And suddenly the character was discovered in play to be a buffoon that repeats vapid phrases and likes to shout them in critical situations. The important parts, I think, are not designing or building a character this way, and to write down early random moments as prescriptions.

I few years ago I wrote about this process thinking about “front-loading” character creation: Character Backgrounds.

Tags: RSS

August 05, 2013 12:22 PM

Phil Jones (Smart Disorganized)

QuoraGrabber is Dead!

Long live RSS Backup!
Really, a separate script / project just to back-up Quora is overkill. Now I have a more general script for backing up from any RSS feed. (Which I'll be able to use to ensure I have copies of what I write here and on Composing.)
I also made it a bit saner at keeping the useful HTML markup (ie. links etc.)
It's on GitHub.

by (phil jones) at August 05, 2013 02:28 AM

August 03, 2013

Phil Jones (Smart Disorganized)

Modularity At Fine Granularity

Ian Bicking has a fascinating question. I'm just going to quote the whole thing because it's so good and important : 
The prevailing wisdom says that you should keep your functions small and concise, refactoring and extracting functions as necessary. But this hurts the locality of expectations that I have been thinking about. Consider:

function updateUserStatus(user) {
if (user.status == "active") {
$("<li />").appendTo($("#userlist")
.attr("id", "user-" +;
} else {
$("#user-" +;

Code like this is generally considered to be terrible – there’s logic for users and their status, mixed in with a bunch of very specific UI-related code. (Which is all tied to a DOM state that is defined somewhere else entirely — but I digress.) So a typical refactoring would be:

function updateUserStatus() {
if (user.status == "active") {
} else {

With the obvious definition of displayUserInList() and removeUserFromList(). But the first approach had certain invariants that the second does not. Assuming you don’t mess with the UI/DOM directly, and assuming that updateUserStatus() is called when it needs to be called, the user will be in the list or not based strictly on the value of user.status. After refactoring there are functions that could be called in other contexts (e.g., displayUserInList()). You can look at the code and see that particular things happen when updateUserStatus() is called, but it’s not as easy to determine what is going to happen when inspect the code from the bottom up. For instance, you want to understand why things end up in
    — you search for #userlist but you now get two functions instead of one, and to understand the logic you have to trace that back to the calling function, and you have to wonder if now or in the future anyone else will call those functions. The advantage of the first function is that blocks of code are strict. You execute from the top to the bottom, with clear control structures. When GOTO existed you couldn’t reason so well, but we’ve gotten rid of that! (Of course there are still other exceptions.) It’s not entirely clear what intention drives the refactoring (besides adherence to conventional standards of code beauty), but it’s probably more about code organization than about making the control flow more flexible. Extracting those functions means that you now have the power to make the UI inconsistent with the model, and that hardly seems like a feature. And I have to wonder: are some of these basic patterns of “good” code there because we have poor tools for code organization? We express too many things with functions and methods and classes (and perhaps modules) because that’s all we have. But those are full of unintended semantic meaning. Anyone have examples of languages that have found novel ways of keeping code organized?
    So, it's a great question on modularity where we tend not to have much explicit thinking : down at the smaller granularity (compared to all the patterns for classes etc.) My immediate comment is that if Ian refactored his code like this :

    function updateUserStatus() {
    var id = "user-";
    if (user.status == "active") {
    } else {

    it would solve most of the problems. In this version we aren't fussily creating extra functions for tiny fragments of functionality which are only relevant to narrow situations (ie. users, userlists). Now the new functions are more generic and widely applicable. They're doing enough that it's worth the overhead of creating them. They're still usefully hiding the bit of complexity we DON'T want to think about here - the actual jQuery / HTML details of how lists are constructed - but they're leaving the important details - WHICH list we're updating and what parts of a user we show - in this locality rather than allowing it to become diffuse across the program. Of course, we can't prevent another bit of code updating the list itself somewhere. (That's more a quirk of the HTML environment where the DOM is global. In many analogous cases we could prevent most of the code having unauthorized access to a list simply by making it private within a class.)

    by (phil jones) at August 03, 2013 09:47 PM

    August 02, 2013

    Alex Schroeder

    Fetchmail and Gmail

    I’m using fetchmail to keep a copy of all my Gmail stuff.

    defaults mda "/usr/bin/procmail -d alex"
      fetchsizelimit 0
      limit 0
    poll protocol
      username ""
      password "..."

    The reason for the mda lines up there is that I don’t have a working mail installation on this machine, I think. I haven’t touched this file in a long time.

    Anyway, I’ve noticed this output:

    fetchmail: Server certificate verification error: unable to get local issuer certificate
    fetchmail: Server certificate verification error: certificate not trusted
    577 messages (451 seen) for at (59586522 octets).
    skipping message not flushed
    skipping message not flushed
    skipping message not flushed
    skipping message not flushed
    skipping message not flushed
    skipping message not flushed
    reading message of 577 (15255 octets) not flushed
    reading message of 577 (3280 octets) not flushed
    reading message of 577 (29028 octets) not flushed
    reading message of 577 (4631 octets) not flushed
    reading message of 577 (2284 octets) not flushed
    reading message of 577 (47301 octets) not flushed

    What are these 451 “seen” messages doing? Can I get rid of them? Have I downloaded these before? Rerunning fetchmail keeps telling me about the 451 seen messages and downloading a new set of mails. It’s weird.

    Tags: RSS RSS RSS

    August 02, 2013 07:27 PM

    August 01, 2013

    Phil Jones (Smart Disorganized)

    Alan Kay

    This is a great presentation by Alan Kay; the spirit lurking behind Bret Victor.

    by (phil jones) at August 01, 2013 07:29 PM

    The Future Of Programming

    Bret Victor has another classic talk up :

    Bret Victor - The Future of Programming from Bret Victor on Vimeo.

    Watch it. The conceit is entertaining, from his clothes to the overheads.

    However, despite the brilliance of the presentation, I think he might be wrong. And the fact that it's taken 40 years for these promising ideas NOT to take off, may suggest there are some flaws in the ideas themselves.

    Coding > Direct Manipulation

    Like most visually-oriented people Bret gives great importance to pictures. If I remember correctly, something like 33% of the human brain is visual cortex and specialized in handling our particular 2D + depth way of seeing. So it's hardly surprising that we imagine that this kind of data is important or that we continually look for ways of pressing that part of the brain into service for more abstract data-processing work.

    However, most data we want to handle isn't of this convenient 2D or 2.5D form. You can tell this because our text-books are full of different kinds of data-structure, from arrays, lists and queues, to matrices of 2, 3 and higher dimensions, to trees, graphs and relational databases. If most data was 2D, then tables and 2D matrices would be the only data-structures programmers would ever use, and we'd have long swapped our programming languages for spreadsheets.

    Higher dimensional and complex data-structures can only be visualized in 2, 2.5 or even 3 dimensions by some kind of projection function. And, Bret, to his credit has invented some ingenious new projections for getting more exotic topologies and dynamics down to 2D. But even so, only a tiny proportion of our actual data-storage requirements are ever likely to be projectable into a visual space.

    Once you accept that, then the call for a shift from coding to direct manipulation of data-structures starts to look a lot shakier. Right now, people are using spreadsheets ... in situations which lend themselves to it. Most of the cases where they're still writing programs are cases where such a projection either doesn't exist or hasn't been discovered (in more than 30 years since the invention of the spreadsheet).

    Procedures > Goals / Constraints

    It seems like it must be so much easier to simply tell the computer what you want rather than how to do it. But how true is that?

    It's certainly shorter. But we have a couple of reasons for thinking that it might not be easier.

    1) We've had the languages for 40 years. And anyone who's tried to write Prolog knows that it's bloody difficult to formulate your algorithms in such a form. Now that might be because we just don't train and practice enough. But it might be genuinely difficult.

    The theoretical / mathematical end of computer science is always trying to sell higher-level abstractions which tend in the direction of declarative / constraint oriented programming, and relatively few people really get it. So I'm not sure how much this is an oversight by the programmer community vs. a genuine difficulty in the necessary thinking.

    2) One thing that is certain : programming is very much about breaking complex tasks down into smaller and simpler tasks. The problem with declarative programming is that it doesn't decompose so easily. It's much harder to find part solutions and compose them when declaring a bunch of constraints.

    And if we're faced with a trade-off between the virtue of terseness and the virtue of decomposability, it's quite possible that decomposibility trumps terseness.

    There may be an interesting line of research here : can we find tools / representations that help in making declarative programs easier to partially specify? Notations that help us "build-up" declarations incrementally?

    3) I have a long-standing scepticism from my days working with genetic algorithms that might well generalize to this theme too. With a GA you hope to get a "free lunch". Instead of specifying the design of the solution you want (say in n-bits), you hope you can specify a much shorter fitness function (m-bits) and have the computer find the solution for you.

    The problem is that there are many other solutions that the computer can find, that fit the m-bit fitness function but aren't actually (you realize, retrospectively) the n-bit solution that you really want. Slowly you start building up your fitness function, adding more and more constraints to ensure the GA solves it the right rather than wrong way. Soon you find the complexity of your fitness function is approaching the complexity of a hand-rolled solution.

    Might the same principle hold here? Declarative programming assumes we can abstract away from how the computer does what it does, but quite often we actually DO need to control that. Either for performance, for fine-tuning the user's experience, for robustness etc.

    Anyone with any relational database experience will tell you that writing SQL queries is a tiny fraction of the skills needed for professional database development. Everything else is scaling, sharding, data-mining, Big Data, protecting against failure etc. etc. We used to think that such fine grained control was a temporary embarrassment. OK for systems programmers squeezing the most out of limited memory and processor resources. But once the computers became fast enough we could forget about memory management (give it to the garbage collector) or loop speed (look at that wonderful parallelism). Now we're in the future we discover that caring about the material resources of computation is always the crucial art. One resource constraint becomes cheap or fast enough to ignore, but your applications almost immediately grow to the size that you hit a different limit and need to start worrying again.

    Professional software developers NEVER really manage to ignore the materiality of their computation, and so will never really be able to give up fine-grained control to a purely declarative language.

    (SQL is really a great example of this. It's the most successful "tell the computer what you want not how you want it done" language in computing history. And yet there's still a lot of tuning of the materiality required, either by db-admins or more recently witnessed by the NoSQL movement, returning to more controllable hierarchical databases, mainly to improve their control.)

    Text Dump > Spatial Relations

    I already pointed out the problems of assuming everything conveniently maps onto human vision.

    I'm as fascinated by visual and gestural ideas for programming as the next geek. But I'm pretty convinced that symbols and language are way, way, way more flexible and powerful representation schemes than diagrams will ever be. Symbols are not limited to two and a half dimensions. Symbols can describe infinite series and trees of infinite depth and breadth. Yadda yadda yadda.

    Of course we can do better than the tools we have now. (Our programs could be outlines, wiki-like hypertexts, sometime spreadsheets, network diagrams etc. Or mixes of all of these, as and when appropriate.) But to abandon the underlying infrastructure of symbols, I think is highly unlikely.

    Sequential > Parallel

    This one's fascinating in that it's the one that seems most plausible. So it's also disturbing to think that it has a history as old as the other (failed) ideas here. If anything, Victor makes me pessimistic about a parallel future by putting it in the company of these other three ideas.

    Of course, I'll reserve full judgement on this. I have my Parallella "supercomputer" on order (courtesy of KickStarter). I've dabbled a bit in Erlang. I'm intrigued by Occam-π. And I may even have a go at Go.

    And, you know what? In the spirit of humility, and not knowing what I'm doing, I'm going to forget everything I just wrote. I'll keep watching Bret's astounding videos; and trying to get my head around Elm-lang's implementation of FRP. And dreaming of ways that programming will be better in the future.

    And seeking to get to that better future as quickly as possible.

    by (phil jones) at August 01, 2013 03:49 AM

    July 30, 2013

    Phil Jones (Smart Disorganized)


    My software is more or less like Cthulhu. Normally dead and at the bottom of the sea, but occasionally stirring and throwing out a languid tentacle to drive men's minds insane. (Or at least perturb a couple of more recklessly adventurous users.)

    However there's been a bit more bubbling agitation down in R'lyeh recently. The latest weird dream returning to trouble the world is GeekWeaver, the outline based templating language I wrote several years ago.

    GeekWeaver was basically driven by two things : my interest in the OPML Editor outliner, and a need I had to create flat HTML file documentation. While the idea was strong, after the basic draft was released, it languished. 

    Partly because I shifted from Windows to Linux where the OPML Editor just wasn't such a pleasurable experience. Partly because GW's strength is really in having a templating language when you don't have a web server; but I moved on to doing a lot of web-server based projects where that wasn't an issue. And partly, it got led astray - spiralling way out of control - by my desire to recreate the more sophisticated aspects of Lisp, with all kinds of closures, macros, recursion etc.

    I ended up assuming that the whole enterprise had got horribly crufty and complicated and was an evolutionary dead end.

    But suddenly it's 2013, I went to have quick look at GeekWeaver, and I really think it's worth taking seriously again.

    Here are the three reasons why GeekWeaver is very much back in 2013 :


    Most obviously, Dave Winer has also been doing a refresh of his whole outlining vision with the excellent browser-based Fargo editor. Fargo is an up-to-date, no-comprise, easy to use online OPML Editor. But particularly important, it uses Dropbox to sync. outlines with your local file-system. That makes it practical to install GeekWeaver on your machine and compile outlines that you work on in Fargo.

    I typically create a working directory on my machine with a symbolic link to the OPML file which is in the Fargo subdirectory in Dropbox and the fact that the editor is remote is hardly noticable (maybe a couple of seconds lag between finishing an edit and being able to compile it).


    What did we do before GitHub? Faffed, that's what. I tried to put GeekWeaver into a Python Egg or something, but it was complicated and full of confusing layers of directory.  And you need a certain understanding of Python arcana to handle it right. In contrast, everyone uses Git and GitHub these days. Installing and playing on your machine is easier. Updates are more visible.

    GeekWeaver is now on GitHub
    . And as you can see from the quickstart guide on that page, you can be up and running by copying and pasting 4 instructions to your Linux terminal. (Should work on Mac too.) Getting into editing outlines with Fargo (or the OPML Editor still works fine) is a bit more complicated, but not that hard. (See above.)


    Originally GeekWeaver was conceived as using the same UseMod derived wiki-markup that I used in SdiDesk (and now Project ThoughtStorms for Smallest Federated Wiki). Then part of the Lisp purism got to me and I decided that such things should be implementable in the language, not hardwired, and so started removing them. 

    The result was, while GeekWeaver was always better than hand-crafting HTML, it was still, basically hand-crafting HTML, and maybe a lot less convenient that using your favourite editor with built-in snippets or auto-complete.

    In 2013 I accepted the inevitable. Markdown is one of the dominant wiki-like markup languages. There's a handy Python library for it which is a single, install away. And Winer's Fargo / Trex ecosystem already uses it. 

    So in the last couple of days I managed to incorporate a &&markdown mode into GeekWeaver pretty easily. There are a couple of issues to resolve, mainly because of collisions between Markdown and other bits of GeekWeaver markup, but I'm now willing to change GeekWeaver to make Markdown work. It's obvious that even in its half-working state, Markdown is a big win that makes it a lot easier to write a bigger chunks of text in GeekWeaver. And, given that generating static documentation was GeekWeaver's original and most-common use-case, that's crucial.

    Where Next?

    Simplification. I'm cleaning out the cruft, throwing out the convoluted and buggy attempts to make higer-order blocks and lexical closures. (For the meantime.) 
    Throwing out some of my own idiosyncratic markup to simplify HTML forms, PHP and javascript. Instead GW is going to refocus on being a great tool for adding user-defined re-usable abstractions to a) Markdown and b) any other text file.

    In recent years I've done other libraries for code-generation. For example, Gates of Dawn is Python for generating synthesizers as PureData files. (BTW : I cleaned up that code-base a bit, recently, too.)

    Could you generate synths from GeekWeaver? Sure you could. It doesn't really help though, but I've learned some interesting patterns from Gates of Dawn, that may find their way into GW.

    Code Generation has an ambiguous reputation. It can be useful and can be more trouble than it's worth. But if you're inclined to think using outlining AND you believe in code-gen then GeekWeaver is aiming to become the perfect tool for you.

    by (phil jones) at July 30, 2013 08:01 PM

    Alex Schroeder


    Looking back at how things have gone in the last year I’d say that all my RPG conversation has moved to Google+ and this wiki-blog has turned into a repository of things I don’t want to loose when Google+ is shut down. All my political thoughts are on Twitter: @kensanata and I’m almost exclusively expressing myself via retweets. I’m also more than happy to talk about it on Twitter.

    I post my pictures on Flickr at kensanata for myself and cross-post them to Facebook and a protected Twitter channel for the various family members out there.


    July 30, 2013 09:19 AM

    July 29, 2013

    Alex Schroeder

    Urban Campaigns

    The awesome Kevin Crawford of Sine Nomine Publishing left a great comment on Google+ when Reese Laundry asked about urban campaigns:

    Urban campaigns don’t have the easy execution of traditional dungeon crawls but they’re not an ineffable mystery, either. If I were in your shoes, here’s what I would do.

    Pick a city. For optimum simplicity I’d pick an old, rambling, not-entirely-coherent city from fantasy fiction that you’re already familiar with. Lankhmar is a perfect example. Then change the name and just keep the feel and flavor; you don’t want to burden yourself with the difficulty of matching the details to the fiction. You just want something that can give you an idea of what the city feels like and provide you with tropes you can use when you need fast flavor.

    Pick a neighborhood in the city. A shabby slum with leavening of crime bosses, corrupt officials, dubious priests, and suspicious foreigners is a good choice. Explain to the players that for the first few sessions you’re just going to be concentrating on activities in that neighborhood so you can keep your NPC roster and local activities manageable. The PCs aren’t trapped in there, but they shouldn’t expect local events to spill over into the wider city until you’ve had more time to get comfortable with the campaign.

    Do a quick cut at a couple of opposing power structures: “Criminal Gangs” and “Local Officials”, for example. You can create more of these power structures as they become relevant in play. You put one person at the top of the structure- the biggest local gang boss or the local watch captain, for example. Beneath them you put two lesser figures, like smaller gang bosses or patrol lieutenants. And beneath them, you put four street-level NPCs that the PCs might ordinarily interact with, like typical gang members or local watchmen. At this stage you just give each of them a name, a distinguishing characteristic, and a rivalry/feud/friendship/debt for somebody else, either in the same structure or a different one. These relationships are important because they’re cheap and easy plot fuel when you need to explain why one guy is trying to get another guy killed, or why NPC X is willing to get help for NPC Y.

    Now go to the one-page dungeon repository and start pulling maps that you could plausibly reskin into: Fortified Estates, Slum Warrens, Infested Sewers, Long-Buried City Ruins, Haunted Shrines, and other suitable urban areas. When you reskin these maps, just turn the humanoids into local citizens or denizens and drop any of the animals or magical beasts that wouldn’t be appropriate for the area- or turn them into human guards or the like if that’s appropriate. What you need from these one-page dungeons are just references- you can turn subterranean passageways into cramped alleyways and cavern rooms into tenement apartments.

    Once you have these ingredients- power structures with NPCs and maps that you can reskin into interesting places- you just pick a conflict between NPCs and make that the evening’s adventure. Somebody wants something stolen, somebody killed, somebody protected, somebody rescued, something sabotaged…. Put it or them into a map, let the PCs negotiate with the locals on their way through, and then let their actions and success/failure shape the local conflicts and NPC attitudes toward them.

    As a side note, don’t worry about mapping the actual city or neighborhood. Grab something online if it looks nice, but in actual play most PCs are only ever going to care about their immediate surroundings, which you can fake with a one-page dungeon map that you treat as roads/courtyards/buildings.

    – Kevin Crawford

    The question was asked multiple times and he got somewhat more comments here and here. I’m currently running The Wererats of Relfren by Grant Boucher and William Kurt Wenz, from Dungeon #14, p. 48–62. I’ve removed the silly and replaced the important people and locations with things from the starting village of my own campaign. It has been working very well until now!

    Tags: RSS

    July 29, 2013 08:22 AM

    July 27, 2013

    Phil Jones (Smart Disorganized)

    Alex Schroeder


    Recently, Courtney asked on Google+ about treasure generation. I left the following comment.

    Like Jeff, I let players roll on the official tables (Labyrinth Lord) if they went somewhere I didn’t prepare and defeated or outwitted a significant foe (in my last game, it was a black dragon).

    When I prepare treasure, I simply roll on the tables. The mechanized aspect of this task encourages me to believe in the independent existence of the fantasy world. I use surprising results to think of new twists: dragons without treasure got robbed, a bunch of hobgoblins with immense treasure are on their way to pay taxes to their overlord, things that enrich the world.

    I never embellish monetary treasure. That includes gems and most jewelry. It’s simply there to be brought back to safety and to be converted to xp when spent in some way. I might embellish jewelry if it is expensive (500gp or more) and say that it’s a diadem, a crown, a bracelet, a holy symbol of a named person, an aristocratic helmet of a dead people.

    When it comes to magic items, I still roll on the tables, but I try to embellish every single one of them. Potions have colors and taste according to a big table I keep adding to as the game progresses. Scrolls are spells from a named wizard, are psalms in praise of a particular god. +1 swords are elven swords; better weapons will pour cold, green mist when drawn, will have runes identifying their former owner (and if possible I’ll then add the same runes to magic armor to be found nearby). Again, things that enrich the world.

    I find there’s also a problem of delivery. How interested are your players in actual detail if it isn’t actionable? If it is: How many pieces of actionable treasure cann they take before being overwhelmed? Three? Five? Seven? How interesting will they deem the follow-up quests in comparison to delving deeper or exploring further or pursuing their existing goals? That’s why I prefer bland monetary treasure, personally.

    Tags: RSS RSS

    July 27, 2013 02:43 PM

    July 26, 2013

    Alex Schroeder

    Google Reader Archives

    I’ve been looking through the old blog posts I starred on Google Reader. There are so many of them! Looking at the 42 links for July 2009, I’d suggest the following are still relevant today. I’m not listing the links to “Why B/X is my favorite” because I already did that in my 2012 post Ode to Ode to Black Dougal.

    Perhaps I should add some of these links to the Links to Wisdom wiki.

    Tags: RSS

    July 26, 2013 02:18 PM

    Extracting Starred URLs from Google Reader Takeout Data

    Google Reader was shut down. Luckily Google Takeout allowed you to download all of your data before the shut it down. I did that. I wanted to extract all the URLs to the articles I starred in order to post them on this blog… maybe.

    Here’s how I did it. First, take a look at the file starred.json.

        (setq starred-items (with-current-buffer "starred.json (Google"
    			  (goto-char (point-min))
        (mapcar (lambda (item) (car item)) starred-items)
        ⇒ (items direction updated author title id)

    I’m interested in items, which happens to be an array. Let’s see what each item contains.

        (mapcar (lambda (item) (car item))
                (aref (cdr (assoc-string "items" starred-items)) 0))
        ⇒ (origin annotations comments author content replies alternate updated published title categories id timestampUsec crawlTimeMsec)

    As it happens, the URL I’m interested in is part of alternate. Let’s make sure there’s always exactly one entry:

        (mapc (lambda (item)
    	    (when (not (= 1 (length (cdr (assoc-string "alternate" item)))))
    	      (error "%S" item)))
    	  (cdr (assoc-string "items" starred-items)))

    Phew! Let’s produce a first list of URLs and the respective titles:

        (mapc (lambda (item)
    	    (let ((href (cdr (assoc-string "href"
    					   (aref (cdr (assoc-string "alternate" item)) 0))))
    		  (title (cdr (assoc-string "title" item))))
    	      (insert (format "* [%s %s]\n" href title))))
    	  (cdr (assoc-string "items" starred-items)))

    I hate feedproxy URLs and so I absolutely wanted to get rid of all the URLs starting with This required a bit more code since neither url-retrieve-synchronously nor url-retrieve do exactly what I want.

        (defun redirection-target (url)
    	(let ((url-request-method "HEAD")
    	      (retrieval-done nil)
    	      (spinner "-\|/")
    	      (n 0))
    	  (url-retrieve url
    			(lambda (status &rest ignore)
    			  (setq retrieval-done t
    				url (plist-get status :redirect)
    				url (replace-regexp-in-string "blogspot\\.ch" "" url)
    				url (replace-regexp-in-string "\\?utm.*" "" url))))
    	  (while (not retrieval-done)
    	    (sit-for 1)
    	    (message "Waiting... %c" (aref spinner (setq n (mod (1+ n) (length spinner))))))

    Now I can run the following search an replace operation in the buffer where I generated my list:

        (while (re-search-forward "http://feedproxy\\.google\\.com/\\S-+" nil t)
          (replace-match (redirection-target (match-string 0))))

    Phew, thank you, Emacs!

    Tags: RSS

    July 26, 2013 01:06 PM

    July 24, 2013

    Phil Jones (Smart Disorganized)

    Google's New Email Tabs

    There's a lot of discussion going on around them. Eg. on Quora.

    I started writing a comment on a comment where Tim Bushell asks :
    why shouldn't they be "red", "green", "blue"?
    ie. user-defined or neutral.

    But then felt it would be better here :

    Probably because Google have a database of thousands of email addresses and patterns that they've classified into these categories of "social", "promotion" etc., and with this move they're basically giving you, the customer, the benefit of that classification scheme.

    They assume that if you just want to program your own categories and sort accordingly you're already doing it via filters.

    What probably didn't occur to Google was that the world is full of people who WANT to be able to define their own categories and filters but never realized that GMail (like every email client in the 20+ years) already HAS this feature.

    What's happening is that just by showing people tabbed email, they've suddenly woken everyone up to the fact that your email client can be programmed to filter emails. (Who knew?)
    What happens now is going to be interesting.

    If Google know how to listen, they'll take advantage of it, add the ability to define your own tabs, integrate it seemlessly with the existing filter architecture of GMail (maybe improve the UI of that a bit, eg. drag / dropping between tabs) and get to bask in the adoration of having "reinvented email".

    If not, they'll keep the two systems separate (ie. filter-definition hidden away where most people can't find or understand it) and not only will the opportunity be squandered, but many people will continue to hate the tabs.

    by (phil jones) at July 24, 2013 06:48 PM

    Alex Schroeder

    Drellin’s Fall

    Today I will be running Red Hand of Doom using Labyrinth Lord rules for a friend of his and his kids again. Some notes for myself regarding the fall of Drelling:

    “Goblins on the western shore!” Join Captain Soranna and her militia as they cross over?

    • 3 goblins, HD 1-1, AC 6, 1d6, NM, MV 6, ML 7
    • 3 dire wolves (“worgs”), HD 4+1, AC 6, 2d4, F2, MV 15, ML 8
    • 1 hell hound, HD 3, AC 4, 1d6 or 30% for breath attack (3d6), F3, MV 12, ML 9

    Five rounds later:

    • 1 war sorcerer, HD 5, AC 9, 1d6, MV 12, ML 8 with lightning bolt (5d6), detect thoughts, blindness, charm person, shield (AC 4, AC 2 vs missiles)
    • 5 hobgoblins, HD 1+1, AC 6, 1d8, F1, MV 9, ML 8

    Warnings of “road blockades, hobgoblins and ogres up in the north” by Teyani Sura, a Lion of Brindol. (Maybe one of the players will eventually want to join them?)

    When the attack on Drellin starts, the fight is hopeless. The stats will be useful for future encounters, however. The stats are Open Gaming Content based on the Labyrinth Lord OGL.

    Massacre at Drellin’s Ferry, first wave:

    • 3 manticores, HD 6+1, AC 4, 1d4/1d4/2d4 or up to 4×/day 6×1d6 thrown spikes, F6, MV 12 (18), ML 9
    • 3 hobgoblin bladebearers, HD 4+1, AC 6, 1d8, F4, MV 9, ML 10

    Second wave:

    • 2 Hieracosphinxes, HD 9, AC 1, 2d4/2d4/1d10, F9, MV 9 (36), ML 10
    • 2 Wyverns, HD 7, AC 3, 2d8/2d8 (poison), F4, MV 9 (24), ML 9
    • 2 hobgoblin war sorcerers, HD 5, AC 9, 1d6, M5, MV 12, ML 8 with lightning bolt (5d6), detect thoughts, blindness, charm person, shield (AC 4, AC 2 vs missiles)

    Third wave:

    • Abrithiax, red dragon, HD 10, AC -1, 1d6/1d6/3d8 or 50% for breath attack 3×/day (damage = current hp), F10, MV 9 (24), ML 10
    • 3 manticores, HD 6+1, AC 4, 1d4/1d4/2d4 or up to 4×/day 6×1d6 thrown spikes, F6, MV 12 (18), ML 9
    • 2 hobgoblin war monks (like thieves), HD 4, AC 9, 1d6 (double in surprise rounds), T4, MV 12, ML 10
    • 2 hobgoblin war sorcerers, HD 5, AC 9, 1d6, MV 12, ML 8 with lightning bolt (5d6), detect thoughts, blindness, charm person, shield (AC 4, AC 2 vs missiles)

    Fourth wave:

    • 3 bugbear berserkers, HD 5+1, AC 5, 1d8+1, F5, MV 9, ML 12, surprise opponents ³⁄₆ if approaching alone
    • 1 hobgoblin war sorcerer, HD 5, AC 9, 1d6, MV 12, ML 8 with lightning bolt (5d6), detect thoughts, blindness, charm person, shield (AC 4, AC 2 vs missiles)
    • 2 hobgoblin clerics, HD 4+1, AC 6, 1D8, C4, MV 9, ML 10 with invisibility, cure light wounds, hold person, a scroll of summon hell hound and 2× potion of healing

    If summoned:

    • 1 hell hound, HD 3, AC 4, 1d6 or 30% for breath attack (3d6), F3, MV 12, ML 9

    In the aftermath, looters:

    • 4 thieves, HD 1, AC 7, 1d6 (double in surprise rounds), T1, MV 9, ML 6

    Happening upon a battlefield, where ettins just killed some dwarves with mercenary pay to a nearby hold. (Will the party deliver the 6000 gold to the dwarves?)

    • 2 ettins, HD 10, AC 3, 2d8/3d6, F10, MV 12, ML 9 (only surprised ⅙)
    • 4 goblins, HD 1-1, AC 6, 1d6, NM, MV 6, ML 7

    When helping some wounded refugees, one female “travelling sorcerer” with a bandaged arm is very curious and asks a lot of questions. In fact, she’s a spider woman spy.

    • 1 spider sorceress, HD 3, AC 8, 1d6 (poison), M3, MV 12 (3), ML 7 with 6× web, sleep, shield (AC 4, AC 2 vs missiles)

    Tracked by barghests (goblin werwolves) near an abandoned farmhouse.

    • 3 barghests, HD 4, AC 5, 2d4, F4, MV 18, ML 8 with howl causing fear to split the party up and kill them one by one and dimension door to get away if necessary
    • 6 hobgoblins, HD 1+1, AC 6, 1d8, F1, MV 9, ML 8

    Assassins on their trail!

    • 4 black lizard assassins, HD 5+1, AC 6, 2d6 or 25% acid breath for 4d4, F3, MV 12, ML 8 with 1 potion of invisibility each which they use as quickly as possible
    • 2 greater barghests, HD 6+1, AC 5, 2d4, F6, MV 18, ML 8 with charm person to turn one against the other, howl causing fear to split the party up and kill them one by one and dimension door to get away if necessary
    • 1 ogre, HD 4+1, AC 5, 1d10, F4, MV 9, ML 10
    • 5 hobgoblins, HD 1+1, AC 6, 1d8, F1, MV 9, ML 8

    Tags: RSS RSS

    July 24, 2013 09:43 AM

    July 23, 2013

    Alex Schroeder

    Gems and Jewelry

    For my D&D B/X and Labyrinth Lord games, I roll on the treasure tables by hand—or I have my players do it right then and there because they love doing it. The only thing I hate is rolling for 5d8 gems or jewels… So I wrote to super simple scripts to do it for me.

    Tags: RSS RSS

    July 23, 2013 05:24 PM

    Phil Jones (Smart Disorganized)

    Modules In Time : Synthesizing GitHub and Skyrim

    Thanks to Bill Seitz I picked up on a Giles Bowkett post I'd missed a couple of months ago which compares the loosely coupled asynchronous style of development that companies like GitHub both promote and live, with the intensely coupled synchronous raids that occur in online game-worlds.

    Bowkett seems confused by the apparent contradictions between the two. And yet obviously impressed by the success of both. He wants to know what the correct synthesis is.

    That really shouldn't be so hard to imagine. The intense coupling is what happens in pair-programming, for example. Or the hackday or sprint. Its focus is on creating a single minimum product or adding a single feature / story to it.

    The right synthesis, to my way of thinking, is intense / tight / adrenalin fuelled / synchronous coupling over short periods, where certain combinations of talents (or even just two-pairs of eyes) are necessary. And loose / asynchronous coupling everywhere else. Without trying to squash everyone's work into some kind of larger structure which looks neat but doesn't actually serve a purpose.

    The future of work is highly bursty!

    It shouldn't surprise us, because modularity is one of the oldest ideas in software : tight-cohesion within modules of closely related activities. Loose and flexible coupling between modules. It's just that with these work-patterns we're talking about modules in time. But the principle is the same. The sprint is the module focused on a single story. The wider web of loosely asynchronous forks and merges is the coupling between modules.

    by (phil jones) at July 23, 2013 12:36 AM

    July 22, 2013

    Phil Jones (Smart Disorganized)

    GrabQuora on GitHub

    A couple of tweaks to the Quora grabbing script. Makes it worth upgrading to a full GitHub project.

    by (phil jones) at July 22, 2013 10:39 PM

    Quora Scraper

    I love Quora. It's a great site and community. But I started getting a bit concerned how much writing I was doing there which was (potentially) disappearing inside their garden and not part of the body of thinking I'm building up on ThoughtStorms (or even my blogs).

    Fortunately, I discovered Quora has an RSS feed of my answers, so I can save them to my local machine. (At some point I'll think about how to integrate them into ThoughtStorms; should I just make a page for each one?)

    Anyway here's the script (powered by a lot of Python batteries.)

    And this turns the files back into a handy HTML page.

    by (phil jones) at July 22, 2013 04:21 AM

    July 21, 2013

    Alex Schroeder

    Troll Questions

    Trolly Troll's Top Ten Troll Questions for Your Game.

    1. Race (Elf, Dwarf, Halfling) as a class? Yes. We can always add more classes.
    2. Do demi-humans have souls? What is a soul? They can all be resurrected.
    3. Ascending or descending armor class? Descending. I can use the books I like as they are.
    4. Demi-human level limits? Yes. They are strange. (Brendan points to Jeff’s article, Everyone has Level Limits exactly backwards except Timrod and me)
    5. Should thieves be a class? No. Anybody can steal. Yes. It’s what some of my players want.
    6. Do characters get non-weapon skills? No. If you want to so something that requires training, explain why your character has that training and add this fact about your character’s past to your character sheet.
    7. Are magic-users more powerful than fighters (and, if yes, what level do they take the lead)? I don’t know. My campaign has not reached that level, yet. With appropriate preparation and the right spells a magic user seems invincible. Without the right preparation, a magic user seems very fragile.
    8. Do you use alignment languages? No. A surprising number of creatures speak the common tongue, however.
    9. XP for gold, or XP for objectives (thieves disarming traps, etc…)? XP for gold spent. I have price lists for buildings and encourage characters to hire servants and guards and specialists to populate them.
    10. Which is the best edition; ODD, Holmes, Moldvay, Mentzer, Rules Cyclopedia, 1E ADD, 2E ADD, 3E ADD, 4E ADD, Next? Moldvay. Easy to get started. I’m assuming I’ll eventually switch to the Rules Cyclopedia for the high levels.

    What about you?

    Tags: RSS RSS

    July 21, 2013 05:42 PM

    July 19, 2013

    Alex Schroeder

    Pacific Rim

    I felt about 25 years too old for Pacific Rim. It was a tiny bit better than Transformers. No quiet moments and insights like in Blade Runner. No mystic undercurrents like in Neon Genesis Evangelion. No character interplay like in Mass Effect. No singing and romance in Robotech. No strangeness like in Akira. I did like the visuals of Hong Kong, the huge halls à la Star Wars. I find that good movies have me thinking back, recalling scenes, mulling the justifications and consequences of actions. This movie won’t be requiring much thinking back. It has giant robots and kaiju monsters. They fight. The solution to the problem is—as is often the case—a nuke. I expected as much but went anyway, willing to let myself be convinced. Oh well.

    Tags: RSS

    July 19, 2013 11:07 PM

    July 18, 2013



    There are many ways to structure content globally. All of GlobalContentStructuringMethods can be relevant in wikis.

    There are only few ways to structure content locally, in a WikiPage.

    Learn more...

    July 18, 2013 06:35 PM

    Alex Schroeder

    Who Is Boss

    Every now and then I think of something related to artificial intelligence but forget to write it down. And then I forget it. Today I dreamt of something related to artificial intelligence and wrote it down in my dream so I would not forget. And I did not. Here it is.

    I saw two robots, and one of them was deciding what the other one should do. I wondered: why is the second robot following orders? If it’s stupid, it will be inefficient in handling its task. How would I implement this? I figured that every AI needs a property that we would call lazy. A slight resistance to do what is necessary. A slow understanding of orders given. If you’re lazy, you’ll make the others do the job. Create each AI with a random value of this property, and you’ll establish a hierarchy implicity.

    What to do with this idea, now? I don’t have any AI projects. I don’t even have a need for intelligent agents in a simulated game world.

    Tags: RSS

    July 18, 2013 06:15 AM

    July 17, 2013

    Alex Schroeder

    Inkscape Mapping and mkhexgrid

    Today I needed to add the island of Tirnanog to my campaign map using Inkscape. In order to do that, I needed to add more hexes in the background—I needed to “grow the ocean”. I looked at my Old School Hex Map Tutorial and figured I must have used the Inkscape Boardgames Extension. When I checked, however, I was unable to find the menu. Perhaps Inkscape has changed and it needs to be reinstalled? I decided to give mkhexgrid another try. Fiddling with the spec file for a bit, I determined that these were the correct settings:

    # start with an odd number!

    By now the map is so big, redoing it for Hexographer or Text Mapper seems like a lot of work. When I see the efforts required to update this map in a sluggish Inkscape on a 1024×768 monitor, however, it seems like a lot of work as well.

    Update: I actually wanted to see how much time it took to get a decent result using Text Mapper and compare it with my old style, based on the Old School Hex Map Tutorial I wrote.

    I don’t know. I like the colors of the Gnomeyland icons. Check out Map Symbols: Trees & Forests on Old Russian Maps by John Krygier for some source material. But really – is it much better? Is it much faster? I don’t think so.

    Original, from the Wilderlands of High Fantasy box:

    My “old school hex map” style:

    Text Mapper, using the Gnomeyland icons by Gregory B. MacKenzie (CC BY SA):

    For the curious, here is the source for Text Mapper:

    3901 water
    3902 water
    3903 water
    3904 water
    3905 water island
    3906 water
    3907 water
    3908 water
    4001 water
    4002 water
    4003 water
    4004 water
    4005 water
    4006 water
    4007 water island
    4008 water
    4101 water
    4102 water
    4103 water
    4104 water
    4105 water
    4106 water
    4107 water island "Andaman Isles"
    4108 water
    4201 water
    4202 water
    4203 water
    4204 soil tower "Marechal"
    4205 dark-green forest
    4206 water islands
    4207 water islands
    4208 water
    4301 water
    4302 water
    4303 water
    4304 light-grey hill
    4305 light-grey mountain
    4306 light-grey
    4307 water
    4308 water
    4401 water
    4402 water
    4403 light-grey hill
    4404 grey mountain "Needles Peak"
    4405 light-grey hill
    4406 water
    4407 water
    4408 water
    4501 water
    4502 dark-green forest
    4503 light-grey hill
    4504 green forest-hill
    4505 soil tower "Lanka"
    4506 water
    4507 water
    4508 water
    4601 water
    4602 soil tower "Calfat"
    4603 soil lake keep "Kailasa"
    4604 light-grey hill
    4605 water
    4606 water
    4607 water
    4608 water
    4701 water
    4702 light-grey
    4703 light-grey hill
    4704 soil tower "Heratus"
    4705 dark-green forest
    4706 water
    4707 water
    4708 water
    4801 water "Windward Peninsula"
    4802 soil keep "Dalmaric"
    4803 soil keep "Talimanor"
    4804 dark-green forest "Pardolock Jungle"
    4805 water
    4806 water
    4807 water
    4808 water
    4901 water
    4902 water island
    4903 water
    4904 water
    4905 water island
    4906 water
    4907 water
    4908 water
    5001 water
    5002 water
    5003 water
    5004 water
    5005 water
    5006 water
    5007 water
    5008 water
    lake xml <circle cx="0" cy="0" r="50" fill="#6ebae7" stroke="black" stroke-width="3"/>
    island xml <circle cx="10" cy="10" r="25" fill="#dcddbe" stroke="black" stroke-width="3"/>
    islands xml <circle cx="-20" cy="20" r="20" fill="#dcddbe" stroke="black" stroke-width="3"/><circle cx="20" cy="-20" r="15" fill="#dcddbe" stroke="black" stroke-width="3"/>
    4603-4903 fjord
    4602-4902 fjord
    fjord path attributes stroke="#6ebae7" stroke-width="20" fill-opacity="0" stroke-linecap="round"
    other <text stroke="white" stroke-width="10px" font-size="50pt" x="6300" y="550" transform="rotate(330 6300,550)">Tirnanog Isle</text><text font-size="50pt" x="6300" y="550" transform="rotate(330 6300,550)">Tirnanog Isle</text>

    Tags: RSS RSS RSS

    July 17, 2013 11:33 AM

    July 16, 2013

    Phil Jones (Smart Disorganized)


    OK ... not shouting much yet, but what with the relaunch of OPML and Fargo, there's a bit of a GeekWeaver refresh going on.

    I put the code on GitHub and starting to clean it up, making it suitable for use ...

    Watch this space ...

    by (phil jones) at July 16, 2013 09:18 PM

    July 15, 2013

    Alex Schroeder

    Nighttrain to Lisbon

    I watched Nighttrain to Lisbon (mostly because I learned that my stepbrother was involved in one of the songs via Trio Fado) which had some nice pictures of Lisbon and some interesting aspects of living under the fascist regime of Salazar and his secret police. A terrible thing. The aspects I did not like about the movie:

    The Swiss and the Portuguese speak English—and just recently having seen La grande vadrouille where you need to understand French, German and English in order to get all the jokes, this pained me. I felt the Portuguese names were getting butchered. Why did they not use local actors and provide subtitles?

    I felt the movie failed the Bechdel test: The women seemed to be either objects in the possession of men—to be fought over—or listening to the men in rapt attention with an appropriately bent neck.

    I also haven’t read the book.

    In short, if you want to see some pictures of Lisbon and get an idea of the fascist regime in Portugal at the time, I recommend the movie.

    Tags: RSS

    July 15, 2013 07:14 AM