Everything is better! My Face Generator is progressing nicely. I think the galleries for men and women are already pretty good. The entire app is running on Hypnotoad behind Apache/mod_proxy. It’s fast! And I’m going to support multiple artists. Please help me if you can! I’m not great with faces. I have barely drawn any until this project started. I had to read How to Draw a Face on WikiHow, that’s how bad I was!
Here’s how I’m doing it right now. The basic instructions are on GitHub.
If you printed the default file, this is what it would look like:
Download the PDF!
Make sure you don’t scale the image to fit the page. Try to use 100% of the image.
Then you draw 25 images of a particular element: hair, eyes, nose, ears, mouth, chin. 10% of all faces also get an extra element. Good for scars. My experience is that you need around 50 components for every element to provide enough variety – two sheets for each element is what I suggest.
Then you scan it. You should get something like the following:
There are more examples on Flickr.
If you have something like the above your work is done. Send the images to me and I will do the rest!
What does the rest involve? You crop it and resize it to 2250×3000 pixels. My scanner is notoriously bad about these proportions.
I have scripts to extract whatever you draw from the helping lines of your scan. I have three variants ready to go:
convert -blur 0x1 +dither -remap tintenblau.png scan1.jpg source1.png
convert -blur 0x1 +dither -level 30%,80% scan1.jpg source1.png
convert -blur 0x1 +dither -level 50%,80% -grayscale rec709luma scan1.jpg source1.png
I think you need to think about speed. Two sheet per element with six elements means 12 sheets. Save yourself the time of inking! Fiddle with the
-level argument instead. The first percentage means that every pixels darker than this much is going to end up black. The second percentage means that every pixel lighter than this much is going to end up white. Raise the first number until you’re happy with the darkness of your image. Lower the second number until the helping lines disappear.
You should end up with something like the following:
Now’s the time to use my
cutter script. It splits the image into 25 images of 450 x 600 pixels each. You must tell it the artist (alex), the element (hair, eyes, nose, ears, mouth, chin, extra) and the type (man, woman, elf, dwarf) you want to save it under:
perl helpers/cutter.pl source1.png alex eyes_all.
Eventually, you’ll end up with a large number of files.
And that’s it! I commit it to my repository on GitHub and deploy it on my server.
If you’re running the web application, there’s even the possibility to debug faces.
I’m going to link to the debug interface so that you can take a look – but in the end, you won’t be able to save any changes unless you’re the artist of one the collections.
I’d like to generate random faces, quickly. I’d draw them myself if I had any talent and a wider range of faces I knew how to draw. Sadly, I’m not that good. So here’s the idea: draw a bunch of eyes, noses, mouths, hairs (or hats?), ears, whatever it takes. Assemble at random. If we want to get fancy, we can tag those elements (male, female, elf, dwarf, halfling) to get better faces but perhaps we can do without.
In order for this to look good, I fear that we’d want a single artist to do all of these elements. That’s how we’d get a cohesive style, I think. I’d propose to work using a regular grid, like this:
But then again, if you’re going to volunteer, then you set the rules. I’ll do the cleaning up, extracting, coding, hosting, whatever it takes to makes this real. I’d want to use an open license so that other people can build on it in case we drop off the Internet one day.
I have a prototype up and running:
Once we have the artwork, I’ll add more features to the web app. Most importantly, we’d want to redirect random faces to an URL that encodes the elements used such that each face gets its unique URL. Then we can use them elsewhere on the Internet. We can also generate a gallery of many faces. It’ll be easy.
If we really want to, we could also move the entire library of elements to SVG and have SVG output. This would allow us to print the faces without pixelating it all. We’ll work it out.
We’ll work it all out. Dimensions, number of colors, number of elements, and so on. All you need to do is get in touch.
Gavin Norman has been writing about rogues on his blog. There, he introduces such maneuvers as Garrote and Black Jack:
Garrote: Make an attack roll. If the attack succeeds, you have the garrote in place, causing 1d4 damage. Each subsequent round, the victim suffers 1d4 damage and must save versus paralysis or fall unconscious […]
Black Jack: Make an attack roll. If it succeeds, the victim suffers 1d4 damage and must save versus paralysis. Failure indicates that they’re knocked unconscious.
In a subsequent discussion on Google+ I said that I had a different way of thinking about combat maneuvers.
I always wonder: What would Conan do? In my game, if Conan is a level 10 fighter, then I have a hard time understanding how lowly thieves can put him down without bringing down his hit-points. Similarly, nobody gets to push Conan around, trip him or disarm him, unless he’s out of hit-points.
You could of course claim that this isn’t much different from a hold person spell. If Conan fails his save against hold person, he’s helpless and can be killed in a round. In which case the garrote is a bit like a wand of hold person with unlimited charges, right? It’s very powerful. Specially compared to the lousy backstabbing thieves usually get: double damage in old school games.
I think I mostly settled on my interpretation of hit-points because I decided that hit-points was about luck, endurance, will to live, experience, toughness and when you’re at zero then you’re giving up. You have no more will to live. The next hit will kill you, or make you roll on the Death and Dismemberment table. That is when you force your enemies to submit.
Thus, in my game, I tell people that they need to reduce people to zero hit-points and then they can do with them what they want. That is, unless their enemies are suicidal in which case they’ll rather take the hit than submit. Submission is therefore being disarmed and giving up, or tripping and falling on your back and giving up, or being pushed over the edge and falling to your death. A maneuver is not an alternative to a hit for the attacker – submission to the maneuver is the alternative to death for the victim.
Brett Simpson used my SVG Mapper for Traveller to generate a little booklet for the subsector he’s been working on.
Highgate by Brett Simpson
Brett says: “There is no need to add a link to a page, as the only pages I have are unrelated to role-playing.”
My house rules don’t mention attacks of opportunity and they don’t limit firing into melee, nor does your movement end if you come too close to somebody armed with a melee weapon. Halberds and Helmets does have a simple protecting allies rule:
Protection: When you are attacked, nearby friends can protect you by placing themselves in the line of attack. The attacker will roll to hit your friend instead of you. You can place yourself in the line of at most one extra attack per round.
This means that most combat ends up having two sides and each side having two rows: a front row, and a back row. Those in front have better armor and melee weapons and they’ll deal more damage because of their strength bonus. Those in the back have no armor and ranged weapons or are casting spells. To protect party members in the back row, you’ll need as many people in the front row as the other side: their front row fighters will all be trying to attack a party member in your back row, and for every one of their attacks, one of your front row fighters will say: “I’m going to take the blow!” If you have a reserve in the back row—well armed or with a lot of hit points—then these can also jump in to protect the weakest party members.
Polearms are easy: you can attack from the back row. If you use a polearm in the front row, that doesn’t mean that you can reach the other side’s back row, though!
Ranged weapons are tricky. For a while, I used to say you could only use ranged weapons when nobody was in melee. You basically had to win initiative in the first round and shoot before the others could close the gap. If you’re lucky, you got to shoot twice if you both surprised your opponents and got initiative. Then I said you could shoot into melee but there’s a chance of hitting your own people, based on the ratio of combatants. This resulted in no change since nobody was ever willing to risk their own. Finally I have begun to say that it didn’t matter. Just fire away and I’ll assume decent positioning and all that. Can you shoot into the back row? Yes you can. Can you shoot through your own front row? Yes you can. It’s like stabbing through your own front row with a polearm.
How do other games do it, though? This is what Ryuutama says:
Enemy Back Area: A character must be equipped with a bow or use long ranged magic in order to attack a Monster in the Enemy Back Area.
Front Area: In the Front Area, enemies and allies alike join in close combat. Using spears, blades and axes, you can attack monsters in the Front Area. Spells or effects that target an area will affect both enemies and allies in this area. Characters in the Front Area can be attacked by ranged or magic attacks from a Back area.
Back Areas (Enemy/Ally): The Back Areas are separated from the Front Area, safe from close combat. If the Front Area is totally clear of enemies, all combatants in the Enemy Back Area will automatically be moved into the Front Area. Likewise, if no allies remain in the Front Area, all allies in the Ally Back Area are moved into the Front Area.
Take a look at the Battlefield Sheet in order to visualize the setup. The net result is that where as you’re “safe from close combat” in the back area, ranged attacks can target people anywhere. And that’s how my D&D works, too: ranged combat can hit anybody on the battlefield.
Ryuutama’s protection rule is very different, however:
Defend: A character may choose to focus completely on defense. Until the character’s next turn, whenever they take damage, the damage they receive is reduced by one. In addition, this character may decide to become the target of any attack aimed at an ally in the same area. If they decide to do so, the attack automatically hits.
The benefit seems to be that you can become the target of more than one attack. But they all hit. In D&D, they would all do full damage. In Ryuutama, armor acts as damage reduction, so perhaps that’s not so bad, after all.
Now watching: Ryuutama: Character Creation (14½ min)
My Character Sheet Generator is also a very general tool to parametrize SVG sheets. I use it as part of my Campaign Wiki. For my Greyheim campaign I generated a bunch of characters and most of the time, my players just pick one of them. No rolling of dice and purchasing of equipment before you can get started. If you click on any of the characters listed, it will take you to a page that integrates an SVG graphic.
name: Aurora str: 9 dex: 16 con: 13 int: 9 wis: 11 cha: 7 level: 1 ...
This gets translated into an URL for the image: https://campaignwiki.org/halberdsnhelmets/en?name=Aurora;str=9;dex=16;con=13;int=9;wis=11;cha=7;level=1;... You can bookmark this URL and that’s your character sheet.
This is what it will look like:
If you want to edit the parameters, that’s easy to do. The SVG contains a link at the bottom. Or you can simply add
/link to the URL: https://campaignwiki.org/halberdsnhelmets/link/en?name=Aurora;str=9;dex=16;con=13;int=9;wis=11;cha=7;level=1;... Edit the parameters, submit, and update your bookmark.
You can provide your own character sheet. One of the parameters you provide is the URL to the character sheet. Here are some examples:
Let’s start with the basics.
If you want to create an SVG character sheet by hand, you can read the W3C Recommendation and the Jenkov Tutorials. Documents created using Inkscape are usually quite bloated. I still prefer using Inkscape.
Let’s look at this id business. Consider the default character sheet. We’ll be using the “name” parameter. Look at the source code of the document (
cmd u on my laptop using Firefox) and search for
id="name". You’ll find the following:
<text sodipodi:linespacing="100%" id="name" y="-11.724363" x="178.12579" style="font-size:24px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-align:start;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Light" xml:space="preserve" inkscape:label="#text3505"><tspan id="tspan3507" y="-11.724363" x="178.12579" sodipodi:role="line">_________</tspan></text>
This is a lot of bloat. This would be enough, I guess:
<text id="name" y="-11.724363" x="178.12579" style="font-size:24px;font-family:Purisa"/>
When our URL now contains
name=Aurora, the text element with the id “name” will contain the value “Aurora”.
You can actually use the Character Sheet Generator to show you what the ids are:
Multi-line fields such as “abilities” or “property” are simply text elements with at least two lines of text, two tspan elements.
My guess is that what you’d actually prefer is to convert an existing character sheet PDF. Let’s take the One Seven Design character sheet for Stars Without Number. John Harper did these character sheets. He says: “Yes, you have my permission.” You can find his other character sheets on his blog. He also runs a patreon which I currently support because of the many cool game he has created (Lady Blackbird, The Regiment: Colonial Marines 2.5, World of Dungeons 1979 – note the b/w variant – and many more).
alex@Megabombus:~$ brew info inkscape homebrew/x11/inkscape: stable 0.91 (bottled), HEAD A professional vector graphics editor https://inkscape.org/ /usr/local/Cellar/inkscape/HEAD (983 files, 120M) * Built from source with: --with-poppler From: https://github.com/homebrew/homebrew-x11/blob/master/inkscape.rb ==> Dependencies Build: boost-build ✔, intltool ✔, pkg-config ✔ Required: bdw-gc ✔, boost ✔, cairomm ✔, gettext ✔, glibmm ✔, gsl ✔, gtkmm ✔, hicolor-icon-theme ✔, little-cms ✔, pango ✔, popt ✔ Optional: poppler ✔ ==> Options --with-poppler Build with poppler support --HEAD Install HEAD version
So, now we’re set. We have Inkscape. It has Poppler support. This will allow you to open PDF files using Inkscape. You’ll have to pick one page:
Let’s say you picked the Warrior page. Load it into Inkscape. This is what it looks like:
Click or double-click on an element such as the letter “E” in “NAME” in order to select it.
Switch to the text tool using F8 and create a text field where you want the name to appear. Put some text into the text field – I like to use a bunch of underscores: “___”. You can remove these at the end by editing the SVG file in a text editor. If you remove them now, Inkscape will delete the empty text field. Also, once you have removed the text content, you shouldn’t edit these files using Inkscape. That’s why I like those underscores.
In this example, I’m going to write “Alex” into the text field. Basically, that’ll be the default value if you don’t provide a name parameter.
Use F1 to switch back to selecting objects. This allows you to move the text around. I like to use the arrow keys at this point.
Use Ctrl-Shift-O for object properties and set the id to the parameter name you want (i.e. “name”) and delete the label (we have no use for it).
If you want, you can take a look at the XML of the text element you just created using Ctrl-Shift-X.
Repeat as necessary. This is tedious job.
I’ve done it for three fields. This is the SWN Warrior SVG using three default values:
And here’s the same file with three parameters set:
If you want to edit it, use
/link in the URL to edit the parameters.
You can debug it using
/show in the URL:
Now all we need to do is add the remaining fields and do it for all the character sheets…
New settlement icons: thorp, village, town, large-town, city. And some religious buildings: shrine, law, chaos.
Text Mapper also includes a random wilderness generator using Erin D. Smale’s algorithm (Part 1 for the terrain, Part 2 for the encounters). Currently I’m only supporting major encounters 1 to 3: settlements, fortresses and religious orders. Please note that these will be rare. Not every random map will contain one of these.
I also added agriculture. If a settlement is built on a plains hex, that hex is colored like soil or light soil. If the settlement is not built on a plains hex, or if it is a large town or a city, then a neighboring plains hex will be changed to soil or light soil colored fields.
Also note the black & white random map option…
À propos random maps: A few days ago I added this random maps feature. It allows you to keep reloading the page until you like what you see. You can always save the result as a
.svg file and keep editing it using Inkscape. If you want to tweak it online, however, you need the actual map data. It’s available from the page source. At the end of the SVG, you will find the map data in a comment like this one:
<!-- Source 0101 light-grey grass 0102 light-grey grass 0103 green forest ... 2318 green forest include https://alexschroeder.ch/contrib/gnomeyland.txt -->
You can copy and paste the map data (without the
-->) into the Text Mapper text area, submit, go back and make change to it until you’re happy with the result.
Oh my god the rabbit hole of old Russian maps… I was looking at the Gnomeyland icons by Gregory B. MacKenzie – as one does! – thinking of adding a few icons. So then I start looking for old Russian map symbols. I’m looking at an old article on trees and forests. But how to find more examples? I’m not interested in just trees and forests! So, next stop is Old Maps Online and searching for Leningrad. After all, wouldn’t the rich old Russians be mostly interested in maps of the areas they already knew? That’s the 1% for you… OK, found something! So, who’s this Matthäus Seutter dude? Sounds German. And he has a Wikipedia page. I love the Internet. Look at all those extra links! I love the sound of “Digitalisierte Ausgabe”. So now I’m clicking on one: Transylvaniae, Moldaviae, Walachiae, Bulgariae nova et accurata Delineatio, Magnam Partem Hodierni Theatri Bellici ob oculos ponens / opera et fumtibus Matthaei Seutteri, ... Who doesn’t want old maps of Transylvania!? Too bad the resolution isn’t too good. But wait! I also love the sound of View item at National Library of France! This is awesome because you can really zoom in!
OK. Now I just have to create those damn icons. Or fix myself some lunch.
What I want to do is implement Erin D. Smale’s Hex-based Campaign Design (Part 2): encounters. The first step will be to add more settlements to my Gnomeyland library for Text Mapper. Click that Random map link to get a random terrain using his process described in Part 1.
The map Historia Imperii Romano-Germanici has little pictures galore, including little camps instead of towns.
Ryuutama is one of the unplayed games on my disk which I really need to take a longer look at. The first thing I like about it is the positive background. The art, the colors, the premise (traveling and exploring) – I want to know more.
Zak S. wrote an excellent post on his blog regarding the role of violence in role-playing games. Violence in games is important because violence is important outside of games. It’s all around us. There’s systemic violence, there’s physical violence, there’s psychological violence, there’s fear of violence. Role-playing games give us agency in the face of violence, and that’s important.
Natalie also wrote an excellent post about death. Not many things have value if you die, even if some people would like to tell you that there are in fact values worth laying down your life for. I’m not so sure and I sure as hell am happy that I’ve never been asked to do it.
Anyway, Zak Smith. Violence. Natalie. Death. Important things.
At the same time, the Burning Wheel family of games or the Apocalypse World family of games have us roll dice for things other than combat. A duel of wits, a play book with other moves, all of these things make me wonder whether we can make non-violent things interesting and tense moments at the table. So, Ryuutama: can travel and exploration be tense and interesting without dungeons and dragons?
And what prompted all of this:
For a while now I’ve noticed a strange fact: