Hello everyone, welcome back! This fortnight I’ve really been back at it with finishing off a whole bunch of things, adding a bunch of new features into several areas, and beginning the process of transitioning all the new content from the testing files into the game itself. This is super exciting, of course, because it actually won’t be too long from now that I’ll be able to follow and complete a full quest in game, and then we are really cooking. This is ultimately an entry with a lot of small additions instead of one big one, so let’s get to it:

Padlock Penalties

Firstly, I’ve added a system for showing the player what potential penalties exist for incorrectly trying a lock. The method I went with was knots / bands around the lock part of the padlock (?) where colours denote the intensity of negative outcome for a mistake, and the number of knots denotes the likelihood of that outcome. So, for instance, (a) yellow knot(s) might indicate that a failed opening attempt will, for instance, lead to a minor trap being activated that will injure the player character but not to any severe extent, or might result in some item being lost or destroyed, or might lead to an alert being triggered somehow that will make that / other locks less accessible. Their orange cousins, by contrast, mean that something of significant severity will happen with an incorrect guess – a more serious injury, an attack by a moderately dangerous foe, a major loss of face with a faction, and so on. Their red cousins, meanwhile, would indicate a potentially fatal trap or outcome will activate, or some equally calamitous outcome (e.g. one might imagine red tags on a padlock housing a religion’s most prized relic – one failed attempt caught means the religion will immediately declare a holy vendetta upon you). Then the number of knots is the chance, so one knot means a penalty is unlikely (we’d probably expect more of those in the early game?) and three knots will either mean a penalty is certain or very likely (so more of those of course in the later game), and two knots sits in the middle.

We can still, of course, have locks without knots, in which case the game will just auto-check every key in your inventory to see whether you have the right one, or not, with no consequence for failure. But then, we can also have locks which do have penalties, and thus ask you to select from your inventory the key that you think is the correct key for whatever the scenario might be (or, of course, to decide discretion is the better part of valour, and try again another day). Naturally we should expect the higher quality locks hiding the higher quality things to have the greater risks, but the great thing about this system is that it doesn’t have to be that, and we can have things with minimal benefit but high risk that the skilled or confident player can take a shot at if they fancy it. One might therefore encounter something with a very bland low-quality lock, with three knots of red on it! That means whatever’s inside is probably not that great, and the penalty is extremely high for a failed key… and yet, if one is confident, then why not take the shot? The combination of “quality of reward” with “severity of risk” and “chance of risk” is – and I don’t need to tell you all this, you’re all roguelike players! – a delightfully good combination of factors for decision-making in this genre of game. I anticipate a lot of really nice decisions to be made depending on all these factors, but also plenty of locks that can just be pried open as soon as you get the key (even if you weren’t sure it was the right key – the game will tell you which was correct, of course, and update that key’s description in your inventory*). Anyway, these were a pretty quick add and are now nicely sorted, so these will be able to appear on padlocks from this point on:

*As an aside, I got to wondering: “what about used keys?”. Well, maybe there’s some kind of quest for / collector of used keys, or some other use? I’m not sure, but I like the idea of successful keys being used for some other purpose. I’ll ponder this one more.

Skeleton Keys

Next, I went back to key generation – which remains one of the image generators I’m honestly happiest with, I’m just so pleased with how they look – and added in a new variation we hadn’t seen before. This was discussed on the blog and in the comments threads previously, and so the new addition was a skeleton key. This’ll be a rare, one-use key that can be used in place of any other key to open any lock (will we later on need to have super rare locks that cannot be skeleton-keyed? Maybe, maybe not; only gameplay and testing will give the answer to that). Anyway, I do like the idea of this being a rare reward from a quest or a riddle thread with a lot of value but which does, of course, have to be strategically used – and it won’t just be viable for a one-lock padlock, as if you have a padlock with two locks and you have one of the keys but not the other, then you can use the functional key, and the skeleton key, to get that one open. Anyway, this one took a little bit to design and I went through quite a few colour variations, but in the end I settled on this, going for an even lighter shade than the medium-quality keys have and also a slightly stronger degree of colour highlighting on the edges, to make the white pop out a little bit more. I also experimented a fair bit with the colours for the bands, but grey and red (evoking blood, perhaps?) wound up looking really nice to me, so I went with those. Here’s the final version!

You’ll also notice two question marks here… I feel there must be other interesting key mechanics, like other very rare keys the player might find, but I can’t quite think in my brain what other modifiers there could be. If you have any ideas, leave them in the comments!

Book Damage

Next, books now have damage! This is something that we’ve been discussing in the blogs for a little while and this wasn’t the hardest thing to implement, in the end. We needed some code to keep track of where on screen the edges are, and then some code to make sure that different damage elements don’t end up overlapping with one another. This wasn’t too tricky, and included some code for greater or lesser degrees of damage. They can now never clash into each other, and the book’s quality determines the degree of damage to be seen on each page. Generally speaking, a low-quality binding is going to have a lot of the little bits of page damage we see in the first, second, and fourth examples in the image below, while a medium-quality bindings might have just one or two of those, and a high-quality binding wouldn’t have any. But we also have room for more active damage being dealt, as in the third image shown here, or indeed entire portions of a page being chopped out, or perhaps only a single corner remaining. Again, we can definitely see some potential puzzles emerging here – perhaps sometimes you need multiple copies of a really ancient book, all of which are badly damaged, to piece together what’s actually on a severely damaged page. Alternatively, someone could simply be missing from a page as shown in #3 below, and the missing information needs to be inferred from other sources. This will require some quite clever code to actually know what bit of information is being obscured, and how, by which bit of damage, and so on, but I can already see in my head how to actually handle that. For now, though – damage!

Hidden Maps in Books

And we can now have hidden maps appearing in books! These, as with others, would only appear under certain conditions (I’m using a “correct phase of the moon and correct location in the world map” example here). The local map ones definitely work better here, I think, so I might have this offer only local maps (the first and third shown here) rather than world maps appearing when you view the book under special conditions; the issue is that the world map format has a bit too much white space and so the idea that this is some kind of hidden or secret ink overlaid over the rest of the text doesn’t come through quite as convincingly. The alternative, of just having the black text still showing through the map gaps in the middle here, looks really hideous and just confused and confusing, so we won’t be going for that. Nevertheless, I think the local map ones look really cool – and also, of course, since they’ll only ever have one colour in this hidden ink, it makes them just a little bit tougher than maps where the player can see every colour. These were already going to be more hidden and more advanced riddle elements, but this definitely reinforces that – these will be a lot tougher to identify, but as ever, there will be other elements the player can draw on (including obviously those in the book itself!) to draw conclusions about the location being depicted. Anyway, even if I don’t think the middle one works, the local map variations look very cool, I think.

Hidden Text in Books

AND, we can now have hidden text revealed, too! Because of the size of the characters and the width of books, this one is very limited, but it can still produce some very simple but potentially impactful messages, especially once the reader figures out what they’re supposed to be combined with. You see an example of this in the middle here, but we can also have more abstract letters and numbers like we can have on notes. Again, I think there’s loads of great potential in this kind of hidden messages too, and we could even have them spread out across multiple places as well, so you might have a sentence split into a few blocks of a few words that need to be usefully and sensibly combined to give a particular message. Or, of course, we could have multiple pages in the same book – look at the book under the right conditions, and you might see “Follow the black rose” on one page, “But do not forget” on the next page, and “To count its thorns” on the final page – with all of these of course being important information. With these implemented, and with the other large scale symbols discussed a few entries ago, I’m not confident we have a nice selection of stuff that can be hidden in books, and will become visible once all the triggers are implemented. I really do like the idea of an early-game book with some vital early-game information, and then later – hours, tens of hours later – something tells you that a hidden message has been in there as well for the entire time…

More Hidden Symbols

AND, finally, as well as the single big symbol that can appear secretly on a page, we can also now have a little sequence of smaller hidden symbols, as shown here:

I’ve also had another thought, which is that – to prevent players needing to screenshot everything or not knowing what they should / shouldn’t screenshot – once you’ve viewed a book once under certain conditions, you’ll be able to just remember what that looks like again. So for all books they’d just start as normal conditions only, then for a rare few you’d have “Under a full moon in a desert” or “Near a volcano at night” or whatever, and then perhaps for the tiniest handful you might even have two of the secret ones – and once you’ve done it once, you can just recall what it looked like. I don’t see much benefit by not going with this model, so this’ll be something to add into the book-reading functionality…

Grants?! Other Contributors?!

Two final things of interesting note to report this week as well. Firstly, I’ve found a game development grant that I’ve decided to apply for! This is a pretty wacky and unexpected new step and, well, we’ll see how it goes. I’ve put together all the relevant application materials and will be getting it submitted soon-ish after I post this update. This money would be basically to hire a coder to massively polish the code, especially when it comes to things like handling keyboard inputs, screen resolutions, refresh rates, and so on, and lots of the other software-talking-to-hardware stuff that I really do struggle with, and just don’t have the required experience with, either. The grant would also be to ensure the game runs natively on Linux and Mac – something folks have been asking for since, uhhh, about ten years ago – and also start to prepare things for a future Steam release as well, and to improve how keyboard inputs are handled, and even add mouse support. Although I’ve applied for dozens upon dozens of academic grants – and even got some of them – I honestly haven’t the faintest clue what my odds of success here are, but I won’t of course be the least “embarrassed” or anything if I don’t get it. This is my first time trying grants of this sort, and URR is certainly a somewhat unusual project in many ways, so… we’ll see. Anyway, I hope to have something exciting to announce on this front before the end of the year, but I’ll of course let you all know if it doesn’t come to anything in the end. Ultimately, nothing ventured, nothing gained – and this is my first time taking a shot at something to really, really accelerate development speed.

The second (which is mentally, though not practically, related to the above) is that I find myself beginning to rethink the “pure solo development” life. This is, again, a huge shift, and one which is only just at the very start of forming in my brain, but I’m increasingly wondering whether I should think properly about bringing others on board in supporting roles – I get development accelerated, and they get to be part of a huge project which is now properly starting to come together! There are two ways this could work: coding, and content. On the coding front, that’s what I’m applying to these grants for money for – to hire a programmer who knows Python (and ideally knows libtcod already). However, even without the grant, it’s possible that someone out there would be really excited to contribute to this project (and get a credit in the credits, naturally), and that would be a really interesting and valuable option as well if the whole $$$ thing doesn’t work out – though obviously getting this grant would be, by far, the most ideal scenario. And more generally, I think it’s fine to work on one’s own project on free labour because one’s doing it for love, but I really do like the idea of being able to pay someone else for their time and their support in the project. It also makes the transaction one where I’m not asking for commitment, or long-term interest, or something more to do with passion or creative fulfilment, but a simpler exchange of services for money. Either way, though – I feel the possibilities opening up here in a way that, psychologically, they haven’t before now.

In turn, the content front, the idea would be to, for instance, set up a generic system for building generators for books, and then offer people the opportunity to contribute to the generator for a specific book type (e.g. the “tragedy” category within the “novel” category, or something of this sort), or to contribute a set of interesting generate-able responses for a certain conversation topics, and so forth. Once submitted I’d then go back through and integrate ways for the game world to seep into the novel, i.e. in the names of places, or giving hints that could be relevant data for the player to use in a riddle, and so forth, or do the equivalent for a conversation. This is still very early days, but I am beginning to toy with the idea. I’ve had plenty of “can I help out?” questions across the last 14 years, and I’ve always resisted – not from any place of “I must do it all myself!” pomposity, but just because I didn’t really feel a need, nor see how such an integration would work (and I guess I wasn’t convinced that I’d find someone with the required / desired long-term commitment). Under this model, however, the commitment could be far far less, and might be a really valuable addition. I worked damned hard on the game, but I’d love things to move even more rapidly than they have this year (which is already maybe the fastest in over a decade?). Anyway, this isn’t going anywhere “else” right now – I’m just floating the idea, pondering it, and wondering whether this would be a useful direction to explore after 0.11 is out (grant or not). So for now, I’m just sharing my thoughts and reflections, to come back to at a later date…

What next?

Thank you all, as ever, for reading everyone! I know this is a slightly lighter entry, but this is my first week getting back to it after taking a proper break, so things are really going to ramp up next time and there’s a lot to do before the end of the year, which I still hope for as the 0.11 release date, though it might slide into 2026. This has already, however, been the most productive and technically and creatively innovative year of coding I’ve ever done – so I’m not forcing myself into deadlines or feeling “bad” about the speed of development! Everything is coming together wonderfully – and there’s even something super super cool and secret about 0.11 that I haven’t announced yet, but will soon – and this is (if I do say so myself) a good fan to be an URRian (URRite?). Thanks as ever for reading everyone; please do share this with your friends or others online if you think they’d be interested; please leave a comment with your thoughts and any key ideas; and I’ll see you all in two weeks!

10 Comments

  • So good to hear news again after a pause! Dear Mark, your project is something like a light from a distant star and like a gospel in the dusk world of modern gaming which is stuck in hackneyed patterns. Your project is absolutely different. Best wishes for success in obtaining the grant! Rethinking solo dev is also an important step. Hidden texts and hidden maps are definitely an invention. I have neve seen such a mechanic anywhere. A lot of “wow”-emotions after reading the post.

    • Thank you dreamer! I do appreciate the generous words, thank you :). And I think you’re right – I’m moving at a damned good pace for someone doing all this in their spare time, but the thought of speeding things up further, through whatever method, is honestly really attractive to me at the moment. So glad you like the hidden stuff as well!

  • One “key” type that could be interesting is lock picks that can unlock all/some locks (maybe the lock picks would have different levels of quality that determine what quality of locks they can open). How this would differ from the skeleton key is that opening a lock in this way would have a chance of triggering any penalties, same as if you’d tried an incorrect key.

    • Hello Steven, thank you for the comment! Ooh, yes, that’s quite nice – guaranteed unlock of a certain sort of lock, BUT also a guaranteed triggering of a penalty. That’s really nice, thank you! I’ll think about how that could look / what it could be called…

      (Thought: hah, maybe it’s a pair of bolt-cutters!)

  • The idea to open the (textual) generators to contributions sounds really great – both because I’d love to have a chance to contribute to them, and also because it’s likely to result in an even bigger pool of words and phrases while cutting out some of the less interesting parts of the work for you (just imagine outsourcing the rhyme cross-referencing that was such a pain a couple entries ago! 🙂 ). No idea if there is any software that would help automate it though – but maybe a little web app for that is something else you could outsource. I’m sure somebody would be happy to help with that, and I state this with confidence, because I would be, so there’s at least one! 😀

    As for the keys – based on real “special” keys – there could be ‘master’ keys that open every lock in a particular location (those were common in hotels, I believe, where they could open every room, alongside it’s dedicated key). Those would be, in a sense, more limited than a skeleton key (only good in one location, like maybe a single mansion or a single temple?), but could be used multiple times.

    Another idea for special keys is metaphorical keys – or rather, metaphorical locks, I guess – maybe there are (there is a single one?) keys that are necessary ingredients to some riddles. Maybe crystal key that you need to shine a light through to reveal hidden ink in a particular book? Or just a key that activates a solution to the riddle – some of those expect player to arrive at a certain place with a certain item, and perhaps keys-that-don’t-open-actual-locks could be tokens that open some of those solutions?

    Anyway, great work as always – love reading those updates! 🙂

    • Thanks so much for the comment and the kind words, KarbonKitty! I think the rhyme cross-referencing specifically would actually have been super hard to outsource since it’s such a unique system, and the content is actually so closely connected to the tech side, *but* for books / NPC conversations, I actually *do* think I can create a generic framework, distribute it, and then receive submissions. Quite exciting! NPC conversations could be a really fun way to bring in some fresh voices and cool and interesting elements there. We’re not there yet, and I’m definitely still only at step 1 of thinking these ideas through, but… done the right way, and with the right contributors who are going to contribute something weighty that actually is faster than me having done the equivalent, could be really rich. Once 0.11 is done I’ll be pondering this more!

      Keys – master key for locks in a certain location or location type – love it. Fab idea. I’ve added it onto the list. Re: metaphorical locks, oh yes, we’ll be having loads of those as well! Those are really what the riddles have been working towards, and indeed what a large volume of quests / puzzles will be pointing towards – but I really like the light idea… let me sit with that one some more. I love the idea of a crystal or glass key. HMMMM…….

  • Great progress as always, and thanks for sharing. I love the new additions to books — damaged texts, along with hidden maps and hidden text, open up all sorts of interesting possibilities to the game. I’m immediately reminded of the map in The Hobbit that contained hidden text visible only under moonlight. Using something like this early in the game would be a fantastic way to kick off the story or a major starting quest. Imagine you are a museum curator, and during an eclipse you discover a hidden map in a dusty manuscript that been sitting on display for years that you’ve walked right by a thousand times…

    I also love the idea of early-game books, items, and locations that end up having hidden information or significance late-game — coming “full circle” like that is thematically very powerful, and is used to great effect in some of the best stories and games (Planescape: Torment springs to mind). One potential snag with this is how to get the player to hang on to those early-game books and items, instead of selling them or tossing them (unless books are retained indefinitely in inventory?). Even if the game automatically allows players to remember hidden messages, that presumably wouldn’t help them with messages that they haven’t discovered yet.

    Regarding locks, great idea with the danger level being displayed right on the lock. It adds an added “Warning! Keep out!” element that could definitely work on a ludonarrative level, particularly if this is mentioned early-game or in the tutorial, maybe with a catchy saying like “Marks on the metal, best not to meddle!” or something. (P.S. the word for the top curved part of a padlock is the shackle).

    And such wonderful keys the game generates! I have lots of ideas for keys; I hope that some of these are helpful:

    What to do with used keys:
    -There could be a religion in which keys are sacred, and they ritually bury used keys
    -Museum in the game that collects and displays keys, and will buy rare/unusual keys (maybe “The Museum of Keys”, with branches in several nations?). Even better would be if after selling the museum a key, it’s put on display where the player can see it (and maybe get a plaque with their name on it if they donate a rare key instead of selling it).
    -An artist or art collective needs keys for a mosaic or sculpture (since the use of locks and keys is so prominent in the world of URR, this might be a common cultural thing).
    -The Guild of Locksmiths (with branches in many nations) might have a standing policy to always buy used keys in order to protect the secrets of locksmithing. Maybe instead of just money, they offer you favors or something else useful (such as a single-use skeleton key after you donate a certain number or value of keys?)
    – A used key is needed as part of a quest (e.g., first part of riddle leads you to a certain statue, and then you have to leave a key in its hand and wait three days for something to happen); this is similar to KarbonKitty’s idea.

    Ideas for rare/special keys:

    Clockwork key: works like a skeleton key, but has multiple uses before it breaks or needs. Super-rare quest reward, or found in vaults of major religions or treasuries.

    Mystic Key: similar to a clockwork key, but instead of breaking after x amount of uses, it needs to be recharged (or have the mechanism wound up) in a special location, or in exchange for favors to a certain powerful group or person.

    Echo Key: acts as a skeleton key, but only works in a multi-lock padlock when you’ve already used one correct key. Basically, a less powerful skeleton key that’s useful only in multi-locks where you already have at least one correct key.

    Puzzle key: the key *itself* is a puzzle and has to be assembled or otherwise set up correctly before it can be used. Might be appropriate for a very difficult/late-game lock.

    Split Key: similar to the puzzle key, it comes in two halves that must be re-united in order for the key to work. For a great example of a split key, see the book “The World Beneath” by James Gurney (it’s the sequel to Dinotopia). For reference, I found a picture of the key from that book on this page: https://narrowdesert.blogspot.com/2024/05/orion-oriana-orellana.html

    Time Key: works only at a specific time of day (or under some other specific celestial or lunar configuration). Like the key in The Hobbit that unlocks the secret door into the Lonely Mountain, but only during a certain phase of the moon (which is why Gandalf & co are in such a rush to get there).

    Ink Key: another type of puzzle key, needs to be dipped into a specific type of ink/dye/chemical/holy water/etc before it can be used.

    Tuning Key: looks like a tuning fork. Works with some sort of sound-based lock where you need a specific frequency (or multiple frequencies to harmonize) to open the lock.

    Glass key: can only be used in sleep while dreaming (maybe this is too esoteric for URR). This one was inspired by one of the late-game heist mechanics in Fallen London, where in order to open a special lock you must put yourself to sleep and dream that you are at a ball doing an intricate dance, the movements of which corresponds to the lock’s tumblers (https://fallenlondon.wiki/wiki/Pick_the_lock_in_Parabola)

    Keyblade: like the one in the game Kingdom Hearts, a giant key that is also a sword (and can be used as a weapon in the game). Presumably opens a very large lock. Some of these look interesting: https://kingdomhearts.fandom.com/wiki/List_of_Keyblades

    Resetter(?): a clockwork device (not a key?) that automatically re-locks an opened lock on a delay after you’ve successfully unlocked it. Great for infiltration and fooling guard patrols (since when they look, the lock will still be closed), but the downside is that you’re stuck inside unless there’s another way out. Alternately, maybe the device just makes an unlocked padlock just *look* like it’s still locked, even though it’s not.

    Caution Oil: when poured on a lock it, neutralizes a trap, or maybe reduces the severity of a trap by one level.

    On a side note, one of my favorite examples of interesting keys is in the fantastic game “A House of Many Doors” (https://store.steampowered.com/app/437250/A_House_of_Many_Doors/). The game begins in a place called The City of Keys, where every so often a child is born holding a key (which is immediately confiscated by agents of the city’s tyrannical ruler). Finding and using these keys is a critical plot element in the game.

    Oh, and good luck on the grant. A game I played recently (https://alcyonegame.com/) was partially funded by VicScreen (https://vicscreen.vic.gov.au/funding/games/), soI hope you’ll get yours accepted too and then be able to hire some assistance. I’ll look forward to the next update and eventually finding out what the super cool secret is!

    • Crowbar – wow. Even as a long-term commenter, this might be your magnum opus to date :). Seriously – this is magnificent. Thank you! Just amazing ideas, so very very VERY good. These are such brilliant ideas! My goodness. There are a lot of concepts here which I really like and which I think could absolutely be fitted into URR’s quite specific “realistic world but weird stuff is fine as long as its physically possible” setting. These will take some time to digest and ponder the implementation of, but thank you so much for taking the time! I really do appreciate it.

      I’m also, of course, glad you appreciate the other hidden book information, and the idea of the early books coming back in later on. I think so many of the best puzzles or riddles in games are those where the answer was, to some degree, “in front of you the whole time”, and while this (and, er, everything) is harder when we’re talking PCG, I think it can absolutely be done. And, that’s a good question re: early game books and keeping them in the inventory. I think the fact that opened books have no sale value should really help with that, but perhaps I could add a tutorial prompt first time you discard a book spelling it out a little more explicitly? That’s not a bad idea, honestly. Also love the ideas for other uses for keys / uses for keys which have already been used, that’s a fantastic set of thoughts! Again, those things are very much in keeping with theme and setting, and again, I really appreciate such great concepts. As with the other: I will digest, and then, implement…

      (And – thank you for these game recommendations! I shall investigate further.)

  • Python developer here, reading this entry with great interest. I’ve lurked around watching the project for years, and the idea of assisting is certainly an appealing one for me. It’s definitely a non-trivial step that you’ll need to consider with care, with its own risks and challenges. Large, single-developer projects always have their unique practices and quirks, and might be challenging for someone else to fit into. If you can find someone who you have an existing relationship with, who you can communicate expectations clearly to – that might be your best bet (even if their existing experience isn’t ideal for the project). Good luck with the grant!

    • Thanks so much for the comment Ash! You’re totally right, of course, about everything you wrote here – its own risks and challenges as well as potential benefits, and I agree, it could well be tricky to find someone to usefully integrate with my existing workflow and norms, especially if there’s a very specific focus of what I’d be looking to bring someone on board to help with. I’m thinking of what I wrote about here as being the first step along ten steps – step 10 is “someone else is seriously helping and contributing to the project”, and this is nothing more than the first time I’ve taken step 1. It might not even go further than step 1! But I’m just stepping onto that first step, seeing how it feels, exploring possibilities, but with no particular expectations or commitments for myself (or anyone else, of course).

      (And of course, I certainly anticipate URR continuing development for decades – so there’s no rush!)

      (And – thank you!!)

Leave a Reply to Steven Cancel reply

Your email address will not be published. Required fields are marked *