• Register

A roguelike game inspired by the literature of Jorge Borges, Umberto Eco & Neal Stephenson, and the games Europa Universalis and Dark Souls. URR aims to explore several philosophical and sociological issues that both arose during the sixteenth and seventeenth century (when the game is approximately set), and in the present day, whilst almost being a deep, complex and highly challenging roguelike. It explores questions of philosophical idealism, cryptography, linguistics and the writing and formation of the historical record, and will challenge players to hopefully think in ways and about themes that are rarely touched upon by games.

Post news Report RSS Procedural Puzzle/Riddle Generation (Part II)

A long and detailed retrospective about how the game generates its own puzzles (Part 2 of 2).

Posted by on

Where we left off last time we had a series of clue planned. For a 2×2 puzzle, for example, the first clue might need to be "Top-Left is west of Top-Right and north of Bottom-Left", and the second is "Bottom Right is next to Bottom-Left". To do this, the game then finds a synonym for each clue component, all of which have a variety of synonyms. For example, a lizard can be referred to as a "reptile", "sticky footed one", "cold blooded one", "scaly one", "one who regrows tails" or "tree climbing reptile", whilst a skull may be a "dead one", "cranium", "one of bone", "memento mori", "reminder of mortality" or "deathly visage". One is chosen at random each time a particular block is in a puzzle, with plurals added appropriately.

An earlier release had a number of different ambiguous clues. One was "the reptile" - this could be a snake or a lizard. If only one of the blocks had generated that would be fine, but there was always the risk that both would generate and therefore the solution would be ambiguous until you'd tested both, at which point the player would know from that point on which was correct and which was false. A few people actually suggested to me that ambiguity of this sort was acceptable - the player needs to figure out the identities of vague clues - but this is a very bad idea. It fails to meet the three design goals I mentioned in the first part of this series, and given that some puzzles will be associated with traps in the coming version 0.4, I cannot allow any trial-and-error where's something to stake.

It reminds me of the idea of "Guess what the teacher's thinking". Imagine a teacher says "Name a classical composer". You say "Beethoven", and the teacher says "Wrong! The answer was Mozart". You did answer the question, but the question wasn't worded well enough to make clear to you the range (or narrowness) of the expected responses. It question implied there were many possible answers, but since there was actually only one, a less stupid question would have been "Name a classical composer born in 1756″. This would be the same issue - the "lizard" clue could mean either, but only one will be accepted by the game. Another example of this was the "shadowed moon". This was meant to be the eclipse, but it could be interpreted as being eclipse, crescent, half or even gibbous moon. Much too unclear. Another clue that I never realized was vague came to my attention in a very unusual way which I think says something interesting about the different ways people "read" games.


This is a young boar (this is also the only update which will have such endearing pictures). It has stripes. One of the clues for a boar was something like "the one with the young stripes". I realized most people might not instantly know this, but with a little bit of research, or a process of elimination, should have made this clear. However, consider the three variations of the boar block - two of them have things akin to "stripes".


One player suggested they found the clue confusing because one of the boar designs didn't have stripes, and this made them wonder if the variations of image on blocks had some impact on the clues. Nothing like this even remotely occurred to me before release, but it made me realize (not for the first time) that others will "read" a game differently to you, especially if you're the designer and have been staring at the game for a long time. I therefore removed this clue because it raised a little confusion about the relationship between the clue and the particular variation of the block.

Similarly, for those who follow the blog you may know of the endless confusion and debate over how to work one particular clue. "West of" is fairly self-explanatory, but there are a large number of clues that state one block is "opposite" another. This is meant to refer to a block that is orthogonal and as-close-as-possible to another block. For example, if you have a 2×2 clue, then the bottom-right could be "opposite" the bottom-left or top-right, but not the top-left. The lower-level clues were designed to build up an understanding of what exactly this term means that could then be applied to the higher-level challenges. This went through a number of different iterations. I tried "next to", but that meant that if there was a gap between two pressure pads - even if orthogonally adjacent - some players were confused about whether this classed as "next to". I also tried "adjacent to" but some players thought this meant only left-right, not up-down. "Touching" was equally unclear, whilst "proximate to" was vague and could include diagonals, conceivably. I don't know if "opposite" is ideal, but it's certainly less ambiguous than a bunch of the other options - it implies there are no other blocks in between A and B, and that it can be vertical as well as horizontal. This was another example where both my "reading" of the game differed from that of others (I thought "next to" was fine, at first), and that clues need to remain cryptic, "in character", without being unclear. Of course, every clue could say "A is either left, right, up or down from B, without a block in the middle, and potentially with a blank tile in the middle"... but somehow that just doesn't have the same ring to it...

In the mean time, version 0.1.3c is out with a few small bug fixes, and one big one which nobody spotted but I realized was there, which I'm afraid breaks save compatibility. ENJOY, INTERNET! Until next week you can keep up to date on my devblog, Facebook page, or Twitter feed. The devblog is updated weekly or fortnightly generally on Mondays, Facebook a few times a week, and the Twitter roughly daily. Any thoughts, please leave them in the comments! Stay tuned...

Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: