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!

One Comment

  • 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.

Leave a Reply

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