Attribute Generation - Rolled Pool Method

To Roll Or Not To Roll?

Standard array is boring, but predictable.  Point-buy is almost the same.  Rolling for stats is really fun while you are doing it, but you can end playing a character for months (or years) that has decidedly worse stats than everyone else in the party, or you can feel some resentment if you were that one really unlucky person during those rolls.  From the GM's point of view, it can be harder to balance encounters when the PCs have a wider range in their relative power levels.  Is there a better way?

Group Character Stat Generation

If these things weigh heavy on your mind (and to be fair, some people are fine with the above "issues" -- if that's you, then you should certainly do whatever is fun for you), here's a possible solution:  A group draft form a rolled pool.  Here's how you do it.
  1. Each player rolls a set of stats, using whatever method is appropriate.  We'll get into some variations, but for now we'll start with doing 4d6, drop the lowest, six times for a set of regular D&D 5e stats.  For our base example, the rolls are not tied to an attribute yet, it's just 6 values in the 3-18 range.
  2. All the stats rolled go into a single communal pool.
  3. Determine a drafting order.  Use the rolls that each player provided to the pool, the highest-rolling player going first.  Start with each player's highest stat roll, using their next highest (and so on) to break ties.
  4. Following the drafting order, each player picks (and removes) a single roll from the pool.
  5. Repeat until each player has a full set of stats, but reverse the drafting order when picking the second stat and every even-number round after.  So, with five players labelled A-E, the order would be ABCDE, EDCBA, ABCDE, EDCBA, ABCDE, and EDCBA for 6 attributes.
What does this get you?  Assuming players pick the highest stat available in the pool, you get a very even distribution.  The "best" and "worst" characters are likely to only to be a few total points off of each other.  If everyone in a five-player group just rolled and kept their own stats, the difference between the player with the highest total and the lowest is usually 10+ points.  With the shared pool, it is usually 3 or less.

Using this system really evens things out.  With few players there is likely to be more variation, but still way less variation than players just keeping their own rolls.  Players are still rewarded for rolling well at character creation time, but the GM doesn't have to worry about balancing one character having three 17s and another having four 10s -- and the players won't have to deal with resentment or jealousy.  This is what I like best about this system, you still get the fun of rolling, but the resultant characters are much more likely to be closer to each other and the default array.  With best three of 4d6, you'll almost certainly have some 16s and 17s (and maybe one or two 18s) that are above what 5e's point-buy allows, but the characters won't be ridiculous unless everyone rolls ridiculous.


A couple ways to modify this method:
  • Tie values to specific stats when they are rolled.  Much like "rolling down the line", each player rolls a value for each attribute, and it is the attribute-value pair that is added to the pool.  Now players can only draft values for attributes they have not already drafted.  Players will have less options to pick from, so the effective difference between best and worst my increase a bit.  This might also lead to some more interesting discussion/negotiating during the draft as players make the case for the character they might play and a stat they really want.
  • Roll extra values.  If characters need 6 attributes, each player might roll 7 or 8 stats.   This will remove the need to take a lot of the lowest values, so will push up all the character's arrays.  This could be combined with the first variant to add extra sets of attribute-value pairs, or even provide some "wild" values that could be assigned to any attribute.
  • Rolling extra values can also be used to offset a "weaker" roll system, like straight 3d6 or 2d6+3 or whatever you want to use.  You might also put caps or minimums on the final roll totals, if you want to keep the available stats in a certain range.
  • Allow stat trading after the draft.  Maybe someone really wants two 14s and someone else thanks a 15 and 12 is a good trade.  Even more interesting with attribute-value pairs.
  • If you are using a character system with an odd number of total attributes, you might want to use the third-round-reversal draft order method -- first round in regular order, second and third round in reverse order, then continuing with regular and reversed, alternating.  This makes sure that the person who picks first also picks last.
  • As a different option for draft ordering, after the first round, use a "lowest goes first" ordering - so whomever has the lowest current total sum of stats selected so far always gets to pick, and use the initial ordering to break ties.  This adds a bit of drafting strategy for players willing to pick the less-than-highest available value.
  • Use a different first-round order, starting with the worst-rolling player, or roll a d%, or go in order of the next closest birthday, or whatever.

One weakness of this system is that if circumstances require a new character being rolled up, you'll have to consider how you want to deal with it.  Roll a whole new pool for all new characters to come from?  Reuse stats from a dead/removed character?  Use one of the usual solo generation methods?  You'll have to decide what is good for your group.


Swords and Sorcerery (but all about the Sorcerery)

One of the trickiest things (in my opinion, at least) that D&D tries to balance is the relative power of magic vs. martial classes.  Magic is meant to be impressive, powerful, and swing the tides of battle.  But if the wizards and sorcerers can cast their biggest spells all day long, all the time, then what glory is left for the fighters and rogues and their other martial friends?

(the following is a bit of a train-of-thought working through some mechanics and balance, feel free to skip down to the class table

To preserve balance, there have been different approaches:  Magic users "forgetting" their spells after casting them, slower leveling progression, etc.  Warlocks can use many of their spells without limitation, though they are of lower power than wizard or sorcerer of equal level could cast.

But most magic users of fiction, be they like Gandalf, or Harry Potter, or from somewhere else, rarely work that way.  They can use magic (within their knowledge) almost without limit.  Some fictions might have magic that has a fleeting drain or exhaustion that becomes apparent as the caster reaches their limit, but usually that's about it.  Can we do the same thing in D&D?

Psionic classes in the current and past few versions of D&D (and some sorcerer variants) have used power points as a replacement for spell slots, which gives some additional versatility, but generally has relied on a once-per-day or long rest reset.  If power points refreshed more quickly, can we get some semblance of balance?

Let's start with the spell's cost.  If we make cantrips cost 1 power point (pp), then we can let everything else costs 2pp for each level of the spell (so a 3rd-level fireball would be 6pp).  Now, just looking at cantrips, then, if the caster regenerates 1pp per turn, we've got our status quo -- the caster can cast cantrips every turn, all day long.

If we stick with the 1pp/turn regeneration rate, let's look at how big the caster's power point pool should be.  It needs to be large enough that they can caster their highest level spell, but we want it smaller than, say, what a psion gets since it will regenerate much faster.  It probably needs to be a bit bigger than the cost of the highest spell, but only by a little bit.  Caster level plus one or two or three or ability bonus might be good.  Let's say it's caster level plus three, which is probably the same as caster level plus ability bonus for most low-level characters.

A first level caster would have 4pp.  And that the 1pp regen happens at the start of the turn, and only if the caster is below their full pool amount,  They could cast a three first level spells (assuming 1 per turn), and then be stuck with cantrips unless they went a round without casting.  Over an "adventuring day" of 6 to 8 encounters, that's a fair bit more powerful than a normal 1st level wizard or sorcerer, who could only cast 2 first level spells total.

At level 5, the caster would have 8pp.  A 3rd-level fireball would cost 6pp, and then the caster would have 2 rounds of 1st-level spells, and then be down to cantrips.  But the caster could have some more interesting choices to make: Maybe they plan on using 2nd level spells for the first two rounds of the battle, instead, or just use a cantrip the first round or two before deciding to use a 3rd or 2nd level spell.  This is getting closer to being in line with a regular caster's 9 1st-or-higher spells per day, but still likely above the average.

From the GM's point of view, this is quick-regen style caster class actually makes magic users little less of a wild card.  Regular casters can choose to blow through all their highest available spells at once, making the current encounter trivial but making a possible later encounter that much harder.  While that can be an interesting decision, it is often one that is made without meaningful information, as rarely do the characters have knowledge of exactly how many encounters they might face before having a chance to rest.  With a quick-regen power point pool, the caster will have their top spells available every encounter, but with a limit on casting too many of their high level spells in succession.

If your game contains both sections of single encounters separated by days of rest, as well as dungeon-crawls filled with many back-to-back battles, then I think you would see casters being on a much more even keel compared to martial types.

That said, what we've got now means that a 5th-level caster could still cast a fireball a minimum of once every encounter.  If 6 to 8 is the expected number of encounters in a day, that's way above the 2 times a regular wizard could do it.

Let's lower the pool threshold.  If we make the pool cap the caster level then the caster can't ever cast their highest level spells.  The could, then, have a once-per short rest ability that gives them a few extra power points and raises their pool cap temporarily (alternatively, it could reduce the cost of casting a spell, same difference).  With an average 2 short rests per day (plus the initial rest going into that day), the caster could now hit their max-level spell just 3 times a day.  This is getting closer to what we want.  Our level 6 caster, though, can still cast fireball every encounter, so let's tweak a few more numbers.

We want the highest level available spells to be only available with a 'boost" ability.  If we stick with the double-the-spell's level for the power point cost, then we want a 1pp limit at levels 1, and it being 1 less than caster level beyond first level.  The boost ability can give 2 or more power points (and is allowed to exceed the regular power point cap), so only when the boost is triggered will the caster get their highest level spells.

So, we've got a caster class that can use their highest available level of spell once each rest.  They'd be able to use spells below their highest level more often, but unless a fight runs long and the caster take rounds out to not cast anything, they caster will still be limited to a few of those bigger spells.

One drawback is that by giving cantrips a cost, a caster needs to not use them to rebuild their power point pool.  One of the design goals of 5e's cantrips was that caster could use them for reliable, stylistically-appropriate damage (instead of the situation where the magic user spends a lot of their time shooting a crossbow).  We could drop cantrips to having 0 cost.  A caster, once low on power points, would be able to then effectively alternate between casting cantrips and 1st-level spells, or stick to cantrips for a few rounds if they wanted to rebuild their pool.

One last consideration is out-of-combat spells.  If you feel that they need to be limited, you could assign certain spells a drain that reduces the power point pool cap by a point or two until a long rest is completed.  This would stop them from being able to be cast too many times a day.

Here's our final (for now) version:

Class levelPower pointsMaximum spell level

Spell levelPower points

Spell casting: You can cast a spell up to the maximum level listed, by paying the power points for it out of your pool.  If your start your turn below your pool's maximum, you regenerate 1 point.
Boost: You can cast a spell spending 2 power points less than you normally would.  This ability resests on a short or long rest.

Some other fun features might include stuff like reducing the cost of spells of a certain school by a point, or the caster being able to increase their regen rate occasionally.

I'll think about some more features, and hopefully try to playtest this a bit, it should be a class that better captures the feel of fictional magic users, but doesn't overshadow other classes (at least in theory).


Rest break

I'm not a huge fan of D&D 5e's rest mechanics.  Let's look at the why it's there, what it does, and some possible tweaks.

Why Rest?

Rests are part of the game balance.  Some characters have features that recharge on short rests, others on long rests.  Features that reset on rests are generally pretty powerful, so giving them more limited uses keeps the overall power of a class in more in line with those classes that that don't rely on those powers.  Long rest features are usually more powerful than short rest features.  These limited use features are "burst" abilities -- extra damage or healing or actions above what could be done normally.

In addition to the class (and some racial) features, rests also have universal effects like spending or regaining hit dice and health , removing exhaustion, etc.

On the player side, it helps stop certain characters from constantly overshadowing others -- a wizard that can cast their highest-level spells, every round, all day, would be pretty over-powered.  The choice of when to use these limited resources should be a fun and interesting decision-point for the player as well -- do they burn a big ability now, or save it for a more dire situation?

On the GM's side, the limited-use abilities are built into encounter creature and encounter balancing.  The DMG assumes an "adventuring day" is roughly 2-3 encounters, a short rest, 2-3 encounters, a short rest, 2-3 encounters, and finally a long rest.  More or less rests are going to decrease or increase the relative encounter difficulty, so you'll need to tweak the target encounter difficulty or adjust the effective creature CR.

Breaking Bad

Players are going to want to rest as often as possible.  Unless there is a reason that the characters shouldn't rest, it makes sense for them to short rest after every encounter, and do as few encounters between long rests as they can.  The GM can add limitations so that rests are limited, for example:
  • time-sensitive goal
  • rest interruptions, such as random encounters
  • escalating threat
  • limit on number or frequency of short rests (long rests are by default limited to once per 24 hours)
While some of these fit well into certain scenarios, they can easily not apply very well, and coming up with limitations on rests becomes a meta-game for the sole purpose of limiting what is often a mechanically-driven choice.

That's not to say that rests can't be a good part of role-playing or be story-driven (indeed, the party's conversation around the campfire can lead to awesome interactions and exposition), but the players' desire to trigger a rest is usually based on the idea mechanically regaining resources, and rarely for other reasons.

If there is a risk or cost (like random encounters, or the foes' power escalating), then it might seem like an interesting decision point, but are they?  Random encounters are usually just filler, extra work for the GM, and not usually advancing the progression of the party through whatever story they are exploring).  Escalating opponents fails to be fulfilling since it is a delayed (and hard to be viewed as causal), as it is not that rewarding to turn a tough fight into a TPK just because the party took a short rest several earlier in the session.

Once the party has access to rope trick or tiny hut or the like, it can be harder to control how often the party can rest.

If the party is resting too often, combats become too easy.  Sure, as the GM you can up the difficulty but that often means just making battles run longer, not to mention that you are effectively overriding the choices the characters make.

The DMG offers a few variant rules, namely increasing or decreasing the time needed for a short or long rest.  Increasing the duration of a short rest to 8 hours (and only once every 24 hours) puts a pretty hard cap on how often they can do it, but that also has a pretty significant impact on the feel of the game to be more gritty and less high-fantasy.  On the flip side you can shorten rests, but that makes them almost too easy to take.

You can use wave-based battles (essentially fighting two or three encounters back-to-back), but then you can have an "adventuring day" that is essentially:  Fight for a minute or two, rest an hour, fight for a minute or two, rest an hour, fight for a minute or two, wait 15-16 hours doing nothing, sleep.  Hardly heroic.


How can we fix rests, then, or at least, what are some alternatives?

Can we just get rid of them? If we get rid of short rests, and just let short-rest abilities recharge when, say, you've been out of combat for x minutes, it's probably not too balance-breaking.  If the interval is too long, it can lead to more meta-game behaviour (like long waits between leaving a room just to hit the interval), so I'd be inclined to make it just a like 1 minute or 5 minutes of not running and nobody trying to kill you.  It does give a bit of a boon to classes that get short-rest recharges, though, as they will likely get them way more often.

If we wanted to keep everything in line with the suggested 6-8 encounters per day and 2 short rests, then we could just add a 2-rest limit:  So characters can take a short rest after they've been out of combat for 1 or 5 minutes, but they can only do at most twice a day.  It adds another thing to track, but other wise preserves the intended balance.  It still doesn't stop the players for pushing for a long rest, though.

Another method might be to just to tie rest effects to XP gains.  If you divide the XP required to level by 12, and trigger a short rest every 2 increments and a long rest every 6.  It's a fair bit more work to track, though, and will get crazy if you have characters at different levels.

What if we combine the ideas and go just by level and not XP?  So when a character levels, they get two long rests tokens (or points or whatever you want to call them), and 4 short rest tokens.  They can cash them in any time they are out of combat for 1 or 5 minutes or whatever.  This gives players the interesting choice of when they can use them, but still puts hard cap on how often they get used.  Optionally, the GM could then reward extra for certain in game events, or force them to be spent (like force a long rest to be spent when a series of encounters is over at what is clearly the end of a day).  I'm not sure if taking the choice out of the players hands that would would be too frustrating for the players or not.  Another alternative would be to give to tokens to the party as a whole, and they'd have to come to some consensus as when to use them.

I haven't tried this idea yet, but will run it by my players to see if they want to give it a go.


Tuning Your Role-Playing Game's Parameters

You may not realize it, but your RPG has a number of parameters, and the difference between expected and actual experience of those parameters is likely the biggest factor the players and/or GM not having a good time.  By managing expectations and getting feedback on these parameters, you can makes sure you and your group has a better game.

The D&D 5e Dungeon Master's Guide's "Know Your Players" section gives GMs a starting point for tuning they game experience for their players, but I think the approach detailed here supplements that guidance, and will lead to a better gaming experience.  Thinking about these options as tune-able parameters will help that -- instead of trying to pigeonhole players into an archetype, figure out what are the parameters that matter most to the individuals and the group, and tune the game towards them.

What are "game parameters"?

Your game has a number of dials or controls.  They are the theme or tone of the game, what rules are firmly adhered to and which can be bent, the amount of humor, the gritty realism, the level of fantasy, and the ceiling for impossible actions.  They can include binary options like whether there is PvP combat, or they can exist as some point in a range between two extremes, like serious vs. silly.  They can cover how the group divides its time between combat or RP-based encounters.  Some are controlled by the players and only loosely defined or steered by the GM, and others the GM exclusively controls.

The game system itself might define some of the parameters, or at least set baselines for them.  Others are set by the players and/or GM.  Some emerge dynamically as a campaigns plays out, and will fluidly change from session to session.  Others will be constant, perhaps for the system, the campaign, or the group.

It would be impossible to list them all, but let's look at some common and/or important ones for a game like D&D 5e (with some other games mentioned for comparison):

Combat vs. role-play

The division between combat encounters and role-playing is probably one of the easier things to tailor to your group, and one that players can feel diversely about.

Combat style

Tactical grid-based combat or theater-of-the-mind?  Or maybe something in-between, like zone-based combat.  Not every encounter needs to be the same, sometimes the encounter can lend itself to one style over another, but it's good to know your players' preferences.


Whether PvP is allowed (and if so, under what circumstances), or even things like allowing intentional friendly-fire for area-of-effect spells.

Inclusion of sensitive topics (rape, torture, gore, etc.)

Especially important when playing with people who don't know each other well, make sure everyone knows where the line is for sensitive topics, and what is allowed and what is not.


A D&D game might hardly be a D&D game without a Monty Python or Adventure Time reference somewhere, but sometimes you need to disallow a familiar being named Dickbutt or a character named Tronald Dump when you know it will only break immersion after the initial chuckle is gone.
My Gamma World games are inherently more silly than my D&D games, and that's part of the appeal for when we run it.  For some parameters, like this, the system can set the baseline in very different spots.

Single character spotlight vs. the group

This might come under splitting the party, or even just players talking about how their characters spend their downtime.  Know what the threshold is for you and the players is for focusing on activities that aren't including the whole group.  Some activities like this can be dealt with between regular sessions with just the individuals in question.


Whether you the GM rolls their dice in the open or not, and how hard you play the monsters to take down the characters. I feel, that when I GM, if I'm not rolling dice in the open, there's no point in rolling -- but I'll tweak less visible aspects (like monster HP or tactics) if I've misjudged an encounter's intended difficulty.  My goal is to make the players have fun, but rolling the dice in the open is a way to keep risk in the minds of the players.
Some players are more attached to their characters than others, and will be more upset by character death.  It's a good idea to know how the players feel, as well as to set their expectations of the game you intend to run.

Intra-party conflict

Along the lines of PvP, but you might want to include discussion about non-combat actions, like stealing from the party (I'm looking at you, stereotypical rogue player) or conflicting alignments/goals.


Is the basis in reality in your game more akin to Crouching Tiger, Hidden Dragon or Heat? The system will often have its own anchor on the reality scale, but you can always push that up or down.  Some character concepts may hinge on a being able to operate on the envelope of what is allowed, so it is important for players and the GM alike to be in accord.

How (or who) makes decisions for the group

This is one dynamic that the GM doesn't really control, but would be wise to pay attention to.  Does the group vote on decisions, to work until they have consensus?  Does a single player (or character) dominate the decision making, or is there anyone that routinely is excluded from getting what they want?  Some players may not care so much, but make sure the ones that do are getting what they want.

Creative contributions

Can the players freely contribute their additions to the world's history, events, places, and people?  Or, as the GM, do your prefer to keep narrative control to yourself?  You'll have to weigh your comfort with being able to assimilate new ideas with the players' desire to collaborate in world-building.  Games like Dungeon World rely on player contribution, but not all players want that responsibility.

Rule flexibility

Are you playing strict rules-as-written?  Following guidelines like Adventure League when it comes to supplements?  What homebrew and houserules do you have?  Are you including Unearthed Arcana or DM's Guild material?  Extra rules options can tax the GM, but give the players more options. How flexible are you with "the rule of cool" and letting the characters pull off stunts beyond what the rules allow?

Rewards and pacing

How much treasure and how many magical items do you reward the party with?  Do you follow by-the-book XP rewards, or use milestones, or something in-between?  The feeling of character progression in terms of gear and level is important.  Does the system have a "sweet-spot" where you want to slow progression a bit to spend more time there?  Does the player have a specific item in mind that is part of their character concept and goal?

Puzzles and problem solving

Some players thrive on solving puzzles or coming up with creative solutions, while others will be easily frustrated and quickly become disinterested when they feel "stuck" for any length of time.


Will characters get away with breaking laws or violating customs?  Sometime the players just want to play murder-hobos, but sometimes they want a world that reacts to their transgressions.

Remember, this is by no means an exhaustive list.  Not all of these parameters will matter to your group or game, and you will certainly find ones that aren't on this list that matter to your group.  But you should figure out what the important ones are.  And here is why:

Expectation, importance, and experience

Most of the time that there is unhappiness or dissatisfaction at the table, it likely stems from someone's expectation of one of these parameters not meeting what they are experiencing.  Certainly, people can be pleasantly surprised when the is a disconnect between expectation and experience, but it can also lead to disappointment. If the person has attached importance to that expectation, that disappointment will mean a greater level of dissatisfaction.

Ideally, for each parameter you, you should ask each player what their desired level is and how important that parameter is to them.  In an ongoing game (or in retrospective), you should also ask what they perceive the value to be or ask if it needs to be dialled up or down, relatively.

Not everyone in the group will have identical desires for every parameter, but hopefully your group's range of desires falls within a close range of values.  Depending on what it is, though, it can be okay for there to be wildly different values.

Group vs. individual parameters

Even if your players have some wildly inconsistent expectations, that is not always a problem.  Some parameters are easy to fine-tune or have different settings for that player.  For example, if only one player gets a lot of enjoyment out of creative contributions, then don't force prompts for that on the other players.  If one player wants extra solo spotlight time or to be able to do stuff on their own, then see if you can handle that between regular sessions.

Values change

It is important to remember that any of these parameter can change.  Players may evolve different tastes, and the focus of a campaign my drift over many months.  Game systems that lend themselves to one play-style in the beginning may be more rewarding played differently at higher levels.

After each session, evaluate where the game hit the mark and where it missed, and make yourself a note of what to adjust for the next session.  It's not hard to fine-tune towards your marks this way.

Periodic re-calibration is a good idea.  Give your game a tune-up by checking in with the players every now and again to see where things stand.

For game masters

The first step is to find out what is important to your players, and to yourself. Explore and set expectations at the beginning of a campaign for yourself, and find out what the players are expecting and wanting.

Set the dials for the game, and tailor to individual players where possible.  Think ahead if any parameters are expected to adjust during certain portions of the campaign.

Recheck periodically, and make sure you are checking the right things.  You can do it more formally with something like a survey, or just check-in with players pre/post or between sessions.

For players

Make sure you are clear about your expectations, as your GM can't fix/adjust what they don't know. If there is a gap between your expectations and experience, bring it up sooner rather than later.  Keep in mind that other players have their own expectations, and GM may be trying to find a happy medium.  Contribute to that effort.

For audience

These days, with Critical Role and Acquisitions Incorporated, Twitch and YouTube, simply watching RPGs is a lot more common than it used to be.  It is important to remember, that as audience or viewer, you may have different expectations and desires than the players and the GMs of the games you watch.  Moreover, viewers are less likely to be privy to discussion about the parameters.  Before you get upset about how someone else is playing their game differently, remember that even in the most rigid of rule sets, there will be variation in how different groups play.


By thinking of the game system and sessions as something that has qualities you can tweak and adjust, it's easier to identify what the GM and the players want out of the game, and whether the sessions are hitting or missing those targets.

The targets can (and will) change over time, so it is important to continually adjust with them.  The good news is that all of this is easy, and doing so will make for a more fun game for everyone.


Fettler - the path to random map generation

While the blog has been a bit quiet, I've been working on some new features for Fettler.

The first part was a Python script that will go through the masks directory, load each image, and figure out what parts of each edge are floor and which are wall.  It's actually a little smarter, it looks at the whole image and figures out which openings are connected to the rest of the openings on each tile.  While that last bit of info isn't being used yet, it might come in handy down the road.

The connected-ness is determined by converting the images into a grid of nodes (basically a low-res black & white bitmap) and then doing a flood-fill from each of the edge openings to figure what you can reach from that edge.  The "fingerprint" just a list of each of the edge squares and what it connects is saved as a json file for use by the second part.

The second part attempts to generate random map of tiles, using the fingerprints to make sure the edges of adjacent tiles match up.  First stab at this uses a backtracking algorithm, so it tries all of the tiles in a given spot, and if it can't place any it goes back tot he previous tile placed, switches it for the next one that fits there, then tries move forward again.

The issue is that with nearly a thousand possible tiles in each spot, the backtracking algorithm is really limited to backtracking at most two or three tiles.  Any more than that and the number of iterations is too big -- three steps of backtracking is a billion tile combinations.  So the question then becomes what order to place the tiles.  If we do any sort of scan-line placement (rows across left to right, working top to bottom, for example), then it might become necessary to unwind a whole row, which is too much if the row is more than 2 or 3 tiles.

With a horizontal or diagonal scanline placement, then, the random generation can sometimes get stuck.  There are a few pairs of edge combinations that don't exist in the tileset, which leads to too much unwinding being needed.  I've currently got a timeout set so if it goes a few seconds without completing it just bails out and starts over.  Not elegant, but it works.

This can be mitigated a bit with a snake or spiral placement patter, so at every tile is always next the previous tile that was placed.  I'm going to add this next.

Here's one random map:

Here's a bigger 12x20 tile map (each tile being 6x6 squares):

And here is a 30x30:

Since overall connected-ness isn't factored in, there are a fair number of isolated segments, though if you consider putting "secret doors" in a few walls, it works pretty well.  Its output is a list of tiles, so you can always go tweak the tiles to add/remove/edit individual tiles before making the map.

The other limitation is that some not-quite-aligned-to-corners edges will end up matched to ones that are aligned.
A lot of the time this can be fixed manually by putting in a tile that does align.  Removing this type of tile for the available set would work, too.

My other plan is to make it so that instead of generating the map from textured tiles, the map can be assembled into one large mask, then the mask given the texture and edges as the tiles are.  This will leave the generated shape, but clean up the missing edge lines.

I'm also going to explore something that attempts a bit more random placement but allows for removing of other already-placed tiles when it can't fit stuff next to them.  It wouldn't be guaranteed to find a solution, but it might actually end up more likely to complete the map when the pure backtracking algorithm ends up getting stuck.


Fettler v1.0

A free dungeon tile set generator

Magic is impressive, but now Minsc leads. Free tiles for everyone!


Fettler is a series of Bash scripts. It can apply a grid to a floor and wall texture using a tile "mask" to easily create useful tiles for Roll20, other VTT systems, or where-ever you can make use of modular tile geomorphs. It has the ability to generate a large number of pre-defined masks for you, as well as some grids.

Once you have masks, textures, and a grid, you just need to run the script to generate a full set of tiles.

My hope is that these scripts make building and re-skinning a tile library much easier tasks.  If you make cool tile sets (and the textures allow it), share them with others!  If you make new masks, share them too!  If you add to the mask script, share it and let me know so I can include more masks in future updates!


-Windows with Cygwin (tested), or anything with Bash (other platforms untested)


Download (with some textures, 11.8 MB) or get from GitHub (does not include any textures).
Unzip and untar.
Check that you have ImageMagick set up correctly. From Bash, the command:
 magick convert logo: logo.png
should produce the logo.png file. If it does not, Fettler scripts will not work.
Personally, I found it easier to get the Windows Binary Release build (currently ImageMagick-7.0.4-10-Q16-x64-dll.exe) of ImageMagick working correctly with Cygwin.


From a Bash prompt, you should cd into the directory Fettler is installed in. Here's how to use them:


This is optional, but included for convenience if you need something to set your PATH to include ImageMagick if it's not there already. Edit to point to your ImageMagick path, and source with:
 . ./setenv.sh


Creates a set of overlay grids. When used, the overlay will appear on the floor, but not the wall. You can just run it:
and it will generate a bunch of grid files and put them in the "grids" sub-directory.


Creates a set of tile masks, white for walls, black for floor. Edit the script if you want to change whether it outputs rotated versions - many seamless tiles won't still tile when rotated, so having rotated masks will generate extra, already rotated versions of tiles that need it. Run with:
and it will generate a bunch of masks files and put them in the "masks" sub-directory.


Applies a grid to a set of masks, using a wall and floor texture. You will want to edit this to set the textures you want, as well as a few other options. Once you've set what you want, run:
and it will create a tile file for every mask file and put them in  the "output" sub-directory.


Converts a directory of pngs to jpgs. This is optional, but if you want more compressed version of the tiles, this will mass convert them. Run:
and it will convert all the pngs in "output" and put all of them them into the "output_jpg" sub-directory.

Known issues

-Sometime ImageMagick (at least the Win64 build I have) hangs trying to process jpgs when loading textures. Converting the jpgs to pngs solves the issue.

Possible future plans

-Move some of the options to env. variables and/or command-line options, so scripts don't need to be edited directly.
-Add a "liquid" layer, another layer mask that applies a texture between the floor and wall layers, for making sewers, lava channels, etc.
-Add option for using single larger map-sized mask for making a single map file.
-Expand built-in support to options other than 6x6
-Windows batch file support, and/or some other more cross-platform support, like Python.
-Some sort of "decoration" support for doors, etc.
-... other suggestions?


Check Twitter and this blog for updates!

Some sources for seamless tileable textures:
and doctorfree's mkseamless.sh:


Tilemaker Preview

If you use virtual table-tops, like Roll20, you've probably used map tiles.  Sometimes you can find whole maps that work for your needs, but when you want to build a map yourself, having tiles will help you quickly assemble a custom map.  For structures like dungeons, tiles can save a ton of time over building the whole structure.

I've built a script that automates a lot of the work of building a tile set.  In short, you give it two texture images (one for the walls, one for the floor), and it generates a set of tiles using those images. The tiles are generated from a set of template images.  You can use whatever template images you want, but this includes a script that will generate a few hundred useful ones for you.

The script lets you (optionally) apply a grid just to the floor and not over the walls - this makes for less visual clutter and makes it easier to tell the floor from the wall.  In Roll20 you can drop the opacity of the map's grid so you'll just see the tiles' grid.

The included templates are for 6x6 unit tiles.  Since not all textures are tileable when rotated/flipped, it can optionally generate those versions.  Templates and tiles can be generated at any size.

There are still a few more features I want to implement before releasing it, but here's a sample set of about 960 tiles created at 70 pixels per square.

Tileset sample: tilemaker_test_set.zip (55.7MB)

Enjoy!  Let me know if you have any comments on the shapes.