Diary

Welcome! :-)

This is both a wiki (a website editable by all) and a blog (an online diary about the stuff Alex Schroeder reads and does). If you’re a friend or relative, you might be interested in reading Life instead of this page. If you’ve come here from an RPG blog, you might want to head over to RPG. There are other similar categories to be found on the SiteMap.

Für Rollenspieler gibt es ebenfalls eine eigene RSP Kategorie.

2016-08-28 Pictures

We spent a few days in Saint-Ursanne, in the Doubs region, for some light hiking. → Pictures

And we spent a few days near Crans-Montana, in the Valais. → Pictures

Tags:

Add Comment

2016-08-19 The Brinewall Legacy

In 2013 I ran Red Hand of Doom for Zeno and the kids using Labyrinth Lord. As we’re going to play through Paizo’s Jade Regent adventure path using the same rules (rather, my Halberds and Helmets house rules), I’ll do what I did last time: provide a kind of old school write-up because there are just too many words in these books. If you want more words, or the full names of non-player characters, or if you want to look at the beautiful maps, you’ll need to get the PDFs.

I’d be interested in hearing about other people running Paizo material using different rules. Do you even bother taking notes? I find that I need to take notes just in order to understand what’s important and what’s not. Jotting down stats is then just me preparing for things to go smoother at the table.

Anyway, this is the first book and it has three parts. The first part is goblins and is spread over the first 23 pages, not including some longer monster descriptions in the back. My summary is 3 pages, if you use the PDF button at the bottom. :)

Fires over Brinestump

Sheriff Belor promises 10 gp for every goblin ear and 300 gp for the leader of the Licktoad tribe, Chief Gutwad. They live somewhere in the Brinestump Marsh.

Rumors:

  1. take the New Fish Trail and find the old halfling Walthus who calls himself the “warden” of the swamp
  2. there is also an Old Fish Trail but nobody uses it anymore
  3. avoid the Witch’s Walk because it’ll lead to the home an old swamp witch called Old Megus
  4. avoid the Soggy River Monster
  5. also, snakes.

Following a trail results in a random encounter roll on the way in and on the way out. An encounter happens on a 1 in 6. Don’t forget 2d6 reaction rolls using the reaction bonus of the character doing the scouting or talking. The monsters like to watch and will probably only attack stragglers, the wounded, or the sleeping.

  1. 1d6 goblins, HD 1-1 AC 6 1d6 NH (save as normal human) ML 7 MV 6 XP 5
  2. giant python, HD 5 AC 6 2d4 F3 ML 8 MV 9 XP 350, once a victim is hit, no more attack rolls are required: just keep constricting
  3. soggy river monster, HD 3 AC 8 1d4/1d4/1d6 F3 L 8 MV 12 XP 50

Poor Walthus has been attacked by a doppelgänger. The halfling is hiding in his secret room while the doppelgänger is walking around the house looking like Walthus. He wants the party gone and is super unfriendly but doesn’t attack first. Apparently Walthus had a little snake farm and the doppelgänger really doesn’t like snakes, so that’s another hint that all is not well. Should people raise their voices, Walthus will hear it in his secret room and claim to be the real Walthus.

Doppelgänger, HD 4 AC 5 1d12 F10 ML 10 MV 9 XP 190.

If saved, Walthus can tell them that Old Megus is dead and that the Licktoad goblins have been getting their act together in the last two weeks. Their village is at the end of the Old Fish Trail.

Old Megus died a few years ago but her ratling familiar Skitterfoot is still around and up to no good. He commands some giant rats.

Giant rats (3), HD 1d4 AC 7 1d3 F1 ML 8 MV 12 XP 6. They’re afraid of fire but their bite causes a fatal disease. Save vs. poison or die in 1d6 days; if you save, you’re still bedridden for 30 days.

Skitterfoot, HD 3 AC 8 1d4 F1 ML 8 MV 9 XP 65. It can speak all languages by some dark sorcery and it can contact a plague spirit once a week. It survives because magic allows it to turn invisible 3×/day.

The goblin village is a bunch of huts on stilts connected by walkways behind a palisade but the gate is wide open. There’s a smoldering heap of dead goblins. It appears to be a ghost town until you enter one of the huts. At this point, all hell breaks loose.

The goblins will attack in waves of three goblins each until 7 are defeated. They’ll try and slide between your legs and stab you from below (1 in 6 chance of succeeding), climb up a hut and make a jumping attack (1 in 6 chance of succeeding). If they succeed, they’ll deal double damage. If they fail, they’re prone (+4 to attack them until they can get up).

Goblins (15, in waves of 3), HD 1-1 AC 6 1d6 NH (save as normal human) ML 7 MV 6 XP 5.

The remaining 8 run to the chief’s hut and knock frantically but he has locked himself in, waiting it out. If pursued, the goblins outside will flee into the swamp and disappear.

If the chief is forced out of his hut (fire, finding the secret door in the back), he and his 3 bodyguards will come out and fight. The bodyguards are regular goblins with 7 hp each.

Chief Gutwad, HD 3 AC 6 1d6+1 F3 ML 7 MV 6 XP 50. The chief also has a very nice bow and will use it to attack magic-users in the back.

Treasure: A few gold coins stolen from merchants (32 gp) and a very nice lacquered chest (150 gp), and inside it are 329 sp, 112 gp, a long hairpin with pearl (150 gp) and a gold-and-ivory fan (80 gp), and a crude map showing two shipwrecks and a cave.

Any surviving goblin questioned will tell the party that they had found a lot more treasure in the boats but skeletons came later that very day and smashed through the village until they had retrieved most of it. The map was drawn by Scribbleface, a stupid and dangerous goblin that had taught himself how to read and write. When they kicked him out of their village, he had discovered these shipwrecks and the nearby cave.

The first ship is the burnt-out Kaijitsu Star, empty and looted. The second ship is the Kaijitsu’s Blossom. Skeletons will rise from the swampy murk if the ship is touched.

Skeletons (3), HD 1 AC 7 1d6 F1 ML 12 MV 6 XP 13.

The cave marked on the map is where the skeleton crew is hiding and guarding its treasure. The main passage is wet and slippery. There is a dry alternative leading to the lair of a giant crab spider. When listening for noise, it can be heard scuttling about as it is currently eating a giant gecko.

Giant crab spider: HD 7 AC 2 1d8 + poison F1 ML 7 MV 12 XP 38. Surprise party: 4 in 6! When bitten, save vs. poison +2 or die in half an hour.

A side corridor leads to a pool with a small island and some glittery crystals visible. A transparent, gelatinous cube is waiting beneath the water surface. It can be discovered by poking the water with a pole, for example. The crystals are not worth much: 20 gp.

Gelationous cube: HD 4 AC 8 2d4 + paralysis F2 ML 12 MV 6 XP 245. Surprise party: 4 in 6! When hit, save vs. paralysis or be paralyzed for half an hour.

You reach a large cave where the skeleton crew will rise and defend their skeleton captain sitting on his treasure chest.

Skeletons (6), HD 1 AC 7 1d6 F1 ML 12 MV 6 XP 13.

The captain only attacks if anybody approaches or when attacked first. If he is slain, all other skeletons will also collapse.

Skeleton captain, HD 3+1 AC 4/2 1d6+1 F1 ML 12 MV 6 XP 65. The captain is protected by a shield spell: AC 4 vs. melee attacks, AC 2 vs. ranged attacks.

Treasure: The short sword the captain is carrying is a +1 weapon and when it is drawn, a shield spell is automatically cast, as noted above; 20 min duration. The captain has a key to a treasure chest (250 gp) containing 3820 sp, 421 gp, some rings and necklaces worth 560 gp, a ring of climbing, five potions of cure light wounds, and a letter.

The letter says that the Kaijitsu family treasure is lies within a “warding box” hidden in “the secret third vault” under Brinewall Castle, which now lies in ruins. Going there is going to be part two of this this three part adventure.

The Legacy’s Lure

There are four NPCs that will remain important:

  • Ameiko, former tavern keeper of the Rusty Dragon
  • Koya, seer and priest of Desna
  • Sandru, caravan owner and swashbuckler
  • Shalelu, scout, elf

There are *16 days* on the caravan trip north to Brinewall Castle. Roll 1d6 for random encounters once a day: 1 – encounter! 2 – tracks leading to an encounter, victims of an assault, or peasants warning travelers.

  1. Brigands (1d4×10), HD 1 AC 7 1d6 F1 ML 8 MV 12 XP 10, leather, swords, bows; if at least 20, with a leader: HD 2 AC 3 1d6 ML 8 MV 12, plate, sword, lance (2d6 when charging), horse; if at least 40 there are two bands, each with a leader, and one HD 4 boss to coordinate the attack.
    They belong to a camp with 5d6×10 brigands, possibly with a level 8 magic-user and a level 8 robber knight leading them. Spells: arcane eye (to spy on approaching caravans), massmorph (always in effect at their preferred ambush site), protection from normal missiles (cast on the boss and the magic-user), lightning bolt (to eliminate leaders of the opposition, 8d6, save for half), invisibility (to escape), continual light (to create a glorious hideout), phantasmal force (to make sure victims surrender), charm person (to ensure cooperation), sleep (against simple guards), ventriloquism (to use while invisible).
    Treasure: 4000 sp, 8000 gp, 19 gems for 1990 gp, 22 pieces of jewelry for 15350 gp
  2. Goblins (6d10), HD 1-1 AC 6 1d6 NH ML 7 MV 6 XP 5, at -1 in sunlight, with about 10% of them mounted on dire wolves: HD 4+1 AC 6 2d4 F2 ML 8 MV 15 XP 140, spears, slings. They fear horses.
    When their morale fails, they flee for their fort, and rally behind the palisade. There, you’ll also find their HD 3 king with his 2d6 bodyguards, each with 2d6 hit-points.
    Treasure: none (fresh arrivals)
  3. Ogres (2d6), HD 4+1 AC 5 1d10 F4 ML 10 MV 9 XP 215. They are looking for humanoid meat! Searching the are will lead to a cave where they are hiding their treasure.
    Treasure: 1000 gp
  4. Merchants and their guards (1d100), HD 1 AC 5 1d6 F1 ML 7 MV 9 XP 10, accompanied by a guard captain, a level 5 fighter. All are armed with swords, crossbows, daggers, chain.
    Treasure: 3000 sp

Labyrinth Lord OGL

Tags: RPG Old School Jade Regent

Add Comment

2016-08-19 Romantic Fantasy

I recently read a blog post by +Brian Murphy explaining the difficulty inherent in the romantic fantasy genre for roleplaying games, Romantic Fantasy and the Heroine's Journey.

I feel this is very similar in Science Fiction. There, if you don’t want “D&D in space” (what I might call Space Opera) then I find that Science Fiction is about extrapolating a trend we can all relate to in the present. Essentially, it turns into social commentary of the present and it would seem to me that the players at the table would have to pick such issues and develop them. Actual political issues to develop and personal stories that intersect incidentally, it’s tricky to pull of. I heard Shock might do it; I never played it.

But reading Brian’s blog post game me an explanation for why pulling off Pern or Darkover stories using D&D and its descendants might be harder than it looks. Perhaps it’s not even a problem in the rules themselves but in D&D game culture. We expect settings, classes, levels, treasure and so on to have certain effects. If anybody pulled it off, I’d like to hear more about your campaign!

Thinking about it some more as I was sitting in the train, I wondered about the rules such a system would have. Combat would be deadly. The number of friends you had would be important. Love would be important. My first scribbles are now in a PDF called Best Friends (also on GitHub).

If you want to discuss this, see this post of mine on Google+.

Tags:

Add Comment

2016-08-18 Uncharted Atlas

If you’re more traditionally minded, you might want to take a look at @unchartedatlas by @mewo2. The processes is explained in his blog post Generating fantasy maps and his internally consistent placename scheme is explained in his blog post Generating naming languages, both of them highly recommended reads.

I was reminded of my old efforts which were also based on Amit Patel’s 2010 blog post Polygonal Map Generation for Games using Voronoi diagrams, the Monones Island Generator. It didn’t go very far because I was stumped by the “draining lakes” problem – which I have now solved for Text Mapper! Should I revisit it? Are Voronoi diagrams something we even want for our role-playing games?

Some discussions on G+ here and here.

I think it should be possible to automatically label Voronoi diagrams. I started to manually label them, trying to see how far I’d get. Then again, assuming I wanted to manually edit the maps once the game gets going, I’d need a text representation of the polygon centers. I guess that means I could also just stick to some sort of latitude and longitude. Coarse enough to enable editing and still work to recreate the map might just mean three digits instead of two, ie. 001.0001 instead of 01.01 might be enough.

Tags:

Add Comment

2016-08-16 Alpine Map Generator

I’ve been working on the Alpine map generator some more. It uses Text Mapper to render the output into an SVG image and it uses the Gnomeyland icons by Greg MacKenzie so it looks nice. Sadly, I’ve developed a pathetic obsession about getting it “right”. To illustrate my obsession and to help me fight it, let me document what I’m talking about. This is a “bug” I just fixed.

Here’s the old map:

The old map

What’s wrong you ask? I was confused by the canyon carved into the mountains from lake 17.04. I expected it to flow into 18.05. Let’s check the height map before lakes start flooding, looking for an outlet:

The initial setup with arrows pointing where the water wants to flow

Why would the river flow from 16.03 (height 7) to 15.04 (height 9)? This makes no sense.

So I studied my debug logs:

Lake started with 1704
Candidates: 1704
Looking at candidate 1704
River now: 1704
A neighbor of 1704 is 1804 with target 1704
Adding 1804 to our lake because it empties into our lake; the river leading here: 1704 1804
A neighbor of 1704 is 1603 with target 1704
Adding 1603 to our lake because it empties into our lake; the river leading here: 1704 1603
A neighbor of 1704 is 1803 with target 1704
Adding 1803 to our lake because it empties into our lake; the river leading here: 1704 1803
A neighbor of 1704 is 1703 with target 1704
Adding 1703 to our lake because it empties into our lake; the river leading here: 1704 1703
A neighbor of 1704 is 1705 with target 1704
Adding 1705 to our lake because it empties into our lake; the river leading here: 1704 1705
A neighbor of 1704 is 1604 with target 1704
Adding 1604 to our lake because it empties into our lake; the river leading here: 1704 1604
Candidates: 1804 1603 1803 1703 1705 1604
Looking at candidate 1804
River now: 1704 1804
Adding lake 1805 to our candidates: 1603 1803 1703 1705 1604 1805
A neighbor of 1804 is 1905 with target 1805
Adding 1905 to our lake because it empties into our lake; the river leading here: 1704 1804 1905
A neighbor of 1804 is 1904 with target 1803
Adding 1904 to our lake because it empties into our lake; the river leading here: 1704 1804 1904
Candidates: 1805 1603 1803 1703 1705 1905 1604 1904
Looking at candidate 1603
River now: 1704 1603
A neighbor of 1603 is 1602 with target 1702
Adding 1602 and 1702 to our lake, but need to explore
We flowed back into the lake via 1704 1603 1602 1702 1703
... 1702 is a new candidate with river: 1704 1603 1602 1702
... 1602 is a new candidate with river: 1704 1603 1602
Back at 1603 with river 1704 1603
A neighbor of 1603 is 1504 with target 1505
Adding 1504 and 1505 to our lake, but need to explore
Adding 1506 to our lake and keep exploring
Adding 1606 to our lake and keep exploring
Adding 1707 to our lake and keep exploring
Adding 1807 to our lake and keep exploring
Adding 1808 to our lake and keep exploring
Adding 1909 to our lake and keep exploring
Adding 2009 to our lake and keep exploring
Adding 2010 to our lake and keep exploring
Adding 2110 to our lake and keep exploring
Adding 2210 to our lake and keep exploring
Adding 2211 to our lake and keep exploring
Adding 2212 to our lake and keep exploring
Adding 2313 to our lake and keep exploring
Adding 2413 to our lake and keep exploring
Adding 2514 to our lake and keep exploring
Adding 2614 to our lake and keep exploring
Adding 2715 to our lake and keep exploring
Adding 2716 to our lake and keep exploring
Adding 2816 to our lake and keep exploring
Adding 2817 to our lake and keep exploring
Adding 2918 to our lake and keep exploring
Adding 2919 to our lake and keep exploring
Adding 3019 to our lake and keep exploring
Adding 3120 to our lake and keep exploring
Adding 3220 to our lake and keep exploring
We left the map via 1704 1603 1504 1505 1506 1606 1707 1807 1808 1909 2009 2010 2110 2210 2211 2212 2313 2413 2514 2614 2715 2716 2816 2817 2918 2919 3019 3120 3220
Arrows for 1704 should now point to 1603
Arrows for 1603 should now point to 1504

The key is the list of candidates after looking at the first round of neighbors: 1804 1603 1803 1703 1705 1604. These are sorted by height, 16.04 is last, which is great. But it also means that 16.03 (wrong direction: east into the mountains) is the equivalent of 17.05 and 18.04 (south east, towards lake 18.05).

Clearly, I needed a better sorting algorithm for the next candidates to look for: the candidates at the same level needed to be sorted by their lowest neighbor which had not already been looked at.

A bit later:

Lake started with 1704
Candidates: 1704
Looking at candidate 1704
River now: 1704
A neighbor of 1704 is 1803 with target 1704
Adding 1803 to our lake because it empties into our lake; the river leading here: 1704 1803
A neighbor of 1704 is 1804 with target 1704
Adding 1804 to our lake because it empties into our lake; the river leading here: 1704 1804
A neighbor of 1704 is 1705 with target 1704
Adding 1705 to our lake because it empties into our lake; the river leading here: 1704 1705
A neighbor of 1704 is 1703 with target 1704
Adding 1703 to our lake because it empties into our lake; the river leading here: 1704 1703
A neighbor of 1704 is 1603 with target 1704
Adding 1603 to our lake because it empties into our lake; the river leading here: 1704 1603
A neighbor of 1704 is 1604 with target 1704
Adding 1604 to our lake because it empties into our lake; the river leading here: 1704 1604
lowest neighbor of 1703 is 1702
lowest neighbor of 1703 is 1702
lowest neighbor of 1703 is 1702
Candidates: 1804 1705 1703 1803 1603 1604
Looking at candidate 1804
River now: 1704 1804
Adding lake 1805 to our candidates: 1705 1703 1803 1603 1604 1805
A neighbor of 1804 is 1905 with target 1805
Adding 1905 to our lake because it empties into our lake; the river leading here: 1704 1804 1905
A neighbor of 1804 is 1904 with target 1803
Adding 1904 to our lake because it empties into our lake; the river leading here: 1704 1804 1904
lowest neighbor of 1703 is 1702
lowest neighbor of 1703 is 1702
lowest neighbor of 1703 is 1702
Candidates: 1805 1705 1703 1905 1803 1603 1604 1904
Looking at candidate 1705
River now: 1704 1705
A neighbor of 1705 is 1706 with target 1707
Adding 1706 and 1707 to our lake, but need to explore
Adding 1807 to our lake and keep exploring
Adding 1808 to our lake and keep exploring
Adding 1909 to our lake and keep exploring
Adding 2009 to our lake and keep exploring
Adding 2010 to our lake and keep exploring
Adding 2110 to our lake and keep exploring
Adding 2210 to our lake and keep exploring
Adding 2211 to our lake and keep exploring
Adding 2212 to our lake and keep exploring
Adding 2313 to our lake and keep exploring
Adding 2413 to our lake and keep exploring
Adding 2514 to our lake and keep exploring
Adding 2614 to our lake and keep exploring
Adding 2715 to our lake and keep exploring
Adding 2815 to our lake and keep exploring
Adding 2816 to our lake and keep exploring
Adding 2917 to our lake and keep exploring
Adding 2918 to our lake and keep exploring
Adding 2919 to our lake and keep exploring
Adding 3019 to our lake and keep exploring
Adding 3120 to our lake and keep exploring
Adding 3220 to our lake and keep exploring
We left the map via 1704 1705 1706 1707 1807 1808 1909 2009 2010 2110 2210 2211 2212 2313 2413 2514 2614 2715 2815 2816 2917 2918 2919 3019 3120 3220
Arrows for 1704 should now point to 1705
Arrows for 1705 should now point to 1706

1804 1705 1703 1803 1603 1604 is the correct sorting order. 18.04 and 17.05 are at the front and the southern passage is discovered.

Notice my additional debug message I needed to check that for hex 17.03 the neighbor 17.04 is not checked. It would be the lowest neighbor indeed but we have already looked at it, so we need to ignore it. By the time we’re looking at 17.03, only the three northern hexes are options and 17.02 is indeed the lowest neighbor.

So now, since 18.04 and 17.05 are equally likely, the algorithm picked 17.05 and lake 17.04 doesn’t flow into lake 18.05 but their rivers meet in 17.06 and I think the map is much better, now. Here’s the corrected water flow map:

Correcting the flow of water

And with this correction, the final map also looks different. No more canyon into the mountains!

The new map

Now I get the urge to draw lines indicating the water divides. Noooo! :)

And just in case I make further changes to the algorithm, here’s what the application would generate right now for this width, height, and seed.

Time passes and I’ve spotted another problem in the map above. Take a look at lake 34.05 which drains through one of the highest peaks in the area, 35.07. How on earth did that happen?

We need to look at the earlier maps again. Before the flood processor kicks in we can already see that any water on the peak 35.07 will immediately drain into lake 37.09.

So, the algorithm goes:

  1. look at all the neighbors of 34.05. None look very exciting, they all drain back into 34.05.
  2. look at our neighbors’ neighbors; ignore the two white fields, focus on the light gray ones, e.g. 34.06.
  3. all its neighbors drain back into the lake with the exception of our peak, 35.07; and with that, we found our lake 37.09
  4. looking at all our candidates, lake 37.09 looks like the most promising, since it lies lower than any of the candidates

And that explains it. The problem seems to be that once we are looking at a candidate like 34.06, we’ll evaluate all its neighbors, even the very high ones like 37.09, even if a candidate of similar height like 35.05 has a much better neighbor like 36.05 which would drain off to the north west.

My algorithm is not enough breadth first like water would be.

More tinkering ahead, I can feel it!

Tags:

Comments on 2016-08-16 Alpine Map Generator

Algorithm changed to be totally breadth first. I’m not sure it is better. :)

– Alex Schroeder 2016-08-17 13:24 UTC

Add Comment

2016-08-11 Perlbrew Mess

So, for a bit almost all my sites were down. Why is that? I use Mojolicious, a web framework written in Perl, for most of my stuff. The wikis are old school CGI scripts running within a plugin that allows them to run from within Mojolicious, for example.

Why was it offline? There was a bug in a version of Text Mapper which I had just installed, resulting in an infinite loop. I didn’t understand this at first and wasn’t awake enough. All I could see is that some parts of the app were crashing. I compared Perl versions and noticed that I was 5.22 at home and 5.25.1 on the host, and perlbrew was telling me that 5.24.0 was the latest stable version. OK, I thought. Let’s move both of them to 5.24 and I’ll be sure. I feared installing all the modules but saw the instructions online and figured it won’t be that bad. But then my Toadfarm wouldn’t start, saying that GD had been compiled for a different version. And then another module. And another. So finally my Toadfarm started without errors but the websites were now down. W00t? Switch back to the old Perl! But aha, I had reinstalled and thus recompiled a few modules. Soooo… reinstall again, right? Still didn’t work. Finally I noticed an error in a log file indicating that there were more modules that were silently failing in the background, because of being compiled for the wrong version of Perl. Panic slowly started setting in… And now I’ve done a perlbrew list-modules|cpanm --reinstall of all the modules for 5.25. This makes me sad because I want to sleep. A while later, I find that they were all recompiled for 5.24. OK, I must have confused perlbrew switch and perlbrew use at one point.

My takeaway? Perlbrew and local::lib are not as awesome as I was led to believe. They might still be better than nothing, but this experience was frustrating.

Also weird: The requirements to install hypnotoad in a particular directory based on $^X.

alex@sibirocobombus:~/farm$ ./farm reload
Cannot find 'hypnotoad' in $PATH. at /home/alex/perl5/lib/perl5/Toadfarm/Command/start.pm line 45, <DATA> line 135.
alex@sibirocobombus:~/farm$ which hypnotoad
/home/alex/perl5/bin/hypnotoad
alex@sibirocobombus:~/farm$ ln -s ~/perl5/bin/hypnotoad /home/alex/perl5/perlbrew/perls/perl-5.24.0/bin
alex@sibirocobombus:~/farm$ ./farm reload
Starting hot deployment for Hypnotoad server 1407.

Tags:

Comments on 2016-08-11 Perlbrew Mess

I usually refuse to install anything that is not in debian repos.

What about some new shiny stuff? Well, as an exception, I can sometimes pull a package or two from testing or unstable, if it does not have many dependencies. Only if I really need this package, and if I have good reasons to assume that it is not going to screw my system.

Most CPAN packages are in debian, so there is no problem. Today it does not make much sense to install something from somewhere else. Just think about all the security updates you won’t get and it all becomes very clear.

– AlexDaniel 2016-08-14 11:48 UTC


That’s true. But then again, remember that at home I’m using OSX… :'(

– Alex Schroeder 2016-08-14 12:55 UTC

Add Comment

2016-08-10 Swiss Referee Style Guide Integrated into Halberds and Helmets

I integrated my referee tips from the Swiss Referee Style Guide into my campaign rules document.

On Google+, Aaron McLin commented on my opening paragraph:

“This is not a Monty Haul campaign and not a stupid dungeon crawl.”

I always find statements critical of other games and play styles to be an immediate turn-off. Who has ever described their rewards as overly generous or a dungeon crawl they have created as “stupid?” While they don’t work for me, personally, a lot of people enjoy dungeon crawling, and sometimes, being all about the new cool gear is fun for people.

The statement strikes me as a cheap shot (and something of a straw man) designed to establish some “I’m smarter than some other gamers, so my game is better,” cred. But (and I feel that I’ve said this a million times) I’ve never met a salesperson who has sought to undermine their customer’s feelings of thoughtfulness and intelligence by attacking choices they may have made earlier - in other words, when you go to a Ford dealership, they don’t open by going on about how crappy Volkswagens are - after all, they might not know what you drove to the lot.

My reply at the time:

It seems to me that the statement made it really easy for you to know that you don’t want to play at my table. Works for me.

On a more self-critical note, I guess that in general, I’d agree with you. Putting other play style downs is lame. But here’s why I started out with those statements and links: when I tell some gamers that I’m using a version of D&D from the eighties, I have to also tell them that I’m not running the kind of game they are thinking of when they hear it. So I need a short hand for “no, not that kind of game”. After all, this is not a generic rule set, this is the document we use at my table, so I want to use the first page to tell potential players: this is what I like, this is what it is going to be about. It will not be about prestige classes, cool new gear or killing gods. Some people might enjoy that, but that’s not what they’ll find in my game. That’s why I feel justified in starting out with a value judgment. It also tells the reader: if you don’t share these values, you should read something else.

I’m still wondering about the choice of words. I have played and run sessions where the game is about moving from room to room, opening doors, finding traps and fighting monsters, but all activities happen on the simplest level where practically no thought is required.

Moving from room to room has a clear procedure:

  1. write down walking order on a piece of paper
  2. thief is checking for traps (rolls dice)

Opening doors has a clear procedure:

  1. thief listens carefully (rolls dice)
  2. thief checks whether it is locked
  3. thief opens the lock if necessary (rolls dice)
  4. alternatively, the fighter kicks in the door (rolls dice)

Finding traps is also a thoughtless process:

  1. thief checks chest for traps (rolls dice)

Fighting monsters is also thoughtless:

  1. roll for initiative (roll dice)
  2. roll attack (roll dice)
  3. roll damage (roll dice)
  4. say your armor class when targeted
  5. reduce hit-points when hit

The thoughtlessness is there because at one point we determined this to be our optimal procedure and we didn’t want to keep restating it, and there was no reason to change it. There were no trade-offs to make, no decisions to make, only the motions to go through. Thus, while I wouldn’t have called it “stupid” at the time, that’s how I see it now.

I hope that I managed to turn the game around whenever I realized that we were descending into this routine. What I’m trying to tell new players at my table is that this is not how I want to play, except I want to use a few words as possible.

Is “stupid” the right word?

Update: After some discussion on Google+ changed the intro page. Aaron McLin is right! :)

Tags:

Add Comment

2016-08-06 Alpine Map Generator

I’ve been playing around with Text Mapper again. The nice thing about it is that it’s easier to generate the text input for Text Mapper than it is to write a whole new program.

What I wanted was to generate maps that remind of old drawings of the alps, like the one of the Wallis: Vallesia superior, ac inferior, Wallis, le Valais, by Gabriel Walser from 1768. There, you can download a 6208×5151 pixel image.

Anyway, I’ve worked on this for two days and here we are!

If you follow the link, you’ll get a random 20x10 hexmap using the new map generator, with the old SVG framework, and using the same old map icons by +Greg MacKenzie.

The source of your map is in the SVG file, as a comment. Alternatively, use the following link to generate a map description and hit the submit button to render it. If you like it, go back and save the map description:

There are still some things I think are annoying which is why I’ve left the “height” labels in as I need to think about this some more.

  • The river being painted over settlements looks bad, it should perhaps go between the hex background color (such as green) and the icons (i.e. below the forest and below the thorp). I’m not sure how good this looks if I’m using a road instead of a river but there you go. (Fixed!)
  • There are a few more icons I think of using. What about large towns, cities, shrines? No bushes, I think. Where do single trees come in? Where to place a keep? What about using more colors, ocre and sienna maybe? The complete list of icons and colors can be seen in the Gnomeyland example.
  • Also, anybody spotting stuff that defies explanation? Sometimes a river will drain to one side of a ridge – sometimes even appear to flow along side a lowland before turning away – and that is annoying. Perhaps these are opportunities to generate gorges?
  • I think there needs to be a more deliberate spacing of the settlements. “Random” results in random clustering which makes no sense, I think. (Fixed!)

Anybody interested in talking about the algorithm I used? I didn’t put it into words but I might if you want to talk about it and prefer not to see any Perl code… And I definitely need to add a link to this somewhere in the web app. :)

Updates

  1. trails now connect settlements, if within two hexes, three at most
  2. cliffs now separate higher altitudes from lower altitudes if the altitude difference is 2 or more

I’m hoping that cliffs make waterfalls obvious.

I still keep thinking about a way to add shadows and lighting like Swiss Topographical maps have it. Take a look at this nearby hill. Note how subtle shadows indicate altitude changes without you having to read the altitude lines.

Now compare it with this prototype:

Text Mapper with Shadows

I don’t think I like it. Light is basically assumed to come from the east, and if the neighboring hexes are higher up or further down, a little shadow is cast. And yet, something is off. The entire thing is too busy. Are the shadows too deep? Is the problem that these are polygons instead of fuzzy shadows? I tried using two different shades of light and dark so that it would look more organic but it didn’t help. Is it because we can skim over multiple hexes with out eyes and thus if A < B < C then it is not enough that C cast a shadow on B and B casts a shadow on A, do we expect that all of B lies in shadows?

I guess I like the look of the lakes.

Tags:

Comments on 2016-08-06 Alpine Map Generator

I’ve been working for many hours every day, working on better river flows, or basically better flooding of lakes and rivers cutting through higher surrounding areas searching for a passage, creating canyons as they cut through the land.

– Alex Schroeder 2016-08-15 21:29 UTC

Add Comment

2016-08-04 Text Mapper Update

Today I rewrote Text Mapper to be a Mojolicious application. I hope the important URLs still work exactly as they used to, so if you’re using Text Mapper as part of an application of yours, you should be fine. If not, let me know and I’ll see what I can do about it.

Another big step forward are the examples on the Text Mapper Help page. You can click on the links to see the examples, live. This makes me very happy.

These days, I use Text Mapper to maintain the player’s map for my Greyheim campaign. You can see it on the Greyheim Region page.

The reason I rewrote the application was that I actually wanted to write a new algorithm to generate maps – maps that would look like Swiss maps: rivers, ranges of hills and mountains, passes, all of that.

Tags:

Add Comment

2016-07-29 Phone Number Spam

The new phenomenon of “phone number spam” which has hit Emacs Wiki at the beginning of July has spread like a cancer and now these jokers have arrived at this site. The containment procedure is as follows:

  1. lock the site
  2. rollback all the changes
  3. ban the networks where these IP numbers come from
  4. unlock the site

It’s a bit boring and leads to quite a number of innocent people getting banned from editing (but not from reading) and that makes me sad. For now, it seems to be the fastest solution.

Tags:

Add Comment

More...

Comments


Please make sure you contribute only your own work, or work licensed under the GNU Free Documentation License. See Info for text formatting rules. You can edit this page if you need to fix typos. You can subscribe to updates by email without leaving a comment.

To save this page you must answer this question:

Please say HELLO.

Referrers: The City of Iron The Ruins of Murkhill - (OD&D) (think) rsp-blogs.de Planet Emacsen Gothridge Manor Dreams of Mythic Fantasy