Hello friends! Welcome back. This week we continue directly on from last week with more progress on developing the player’s journal, and integrating various new pages, mechanics, and other things which will partly find their way fully into the game for 0.11, and partly most likely for 0.12. I’m feeling really happy with how the player’s journal is looking, how I think it’ll focus players on what they want to be doing, and just the overall novelty of a genuinely reactive and somewhat procedurally generated journal that accompanies the player’s adventures, rather than the fixed journal entries one gets in many games. I also hope it’ll reduce the amount of alt-tabbing people will have to do out of the game to make notes, but that latter part will only be proven or disproven with playtesting and feedback. I’m really pleased I’ve been able to move much closer to getting the journal finished for 0.11 in this fortnight, so without further ado, let’s get into it:
Continuing Narrative Pages
The first thing this fortnight has been finishing off the narrative page generation for the player’s journal. Now, some of the potential entries here I actually cannot fully code yet – the one for “I saw [animal species name] for the first time” naturally cannot appear until we have wildlife (though wildlife will be on their way at some point), and there are quite a few other examples in this regard – but for all the ones I can code now, I want to get in for 0.11. I also want to get these in for a 0.10.3 release I’m working on currently which I hope to have out in the post after this one, which will contain a huge number of bug fixes as well as the journal and a few other features, even while the major elements are still in development for 0.11. Anyway, the point is – there were still plenty of other elements of the journal’s narrative generation that needed to be added, and these have all now been implemented and integrated into the narratives that can emerge from the player’s organic actions. One of the biggest of these was the “Looked” event type, which now triggers whenever you look at anything unique or particularly important within the game world. Again, a few of these are not currently implemented, such as tapestries and paintings and the like, but a huge number of relevant things – statues of many kinds, altars, shrines, wanted posters, graves, tombs, and so forth – are in the game, and so these all now have appropriately generated sentences for the first time the player sees them, describing both the nature of the thing and the specifics of that particular instance. I particularly enjoyed doing the religious / god statues part, as shown in the screenshot above, as that can now produce some really nice sentences of detail in the journal.

Aside from these, various others also demanded my attention. The journal will now correctly acknowledge when you have had a conversation with someone, and will say “an unknown [wo]man” if you don’t know their name, and can add “another” before that if you’re talking to a bunch of unknown names in a row. In the near future I actually expect to move the default from names showing to names not showing, so that will be showing up a lot. If you do know the name, of course, it gives you their name, and adds an “again” if you recently talked to that person beforehand. I might in the future add something into the journal about noting what topics you talk about, but since I have a total redevelopment of the speech system planned anyway, right now that’s not a priority, since I’d just be doing work now that needed to be undone and redone at some point in the probably not-too-distant future. I also needed to add other permutations for some of the existing ones such as travelling to new nations or regions, to ensure they trigger when the player is on foot, for example, as well as in some other relatively niche contexts. The journal also acknowledges now when you enter a building, and can tell you what that building is, and also describes the very first time you read a note – which gives you a brief description of what the note is and what it depicts, but without ever giving anything away. A few others can only be added later, like “solving a secret” or “opening a chest” or “unlocking a lock” and so on, but for now, the journal’s narrative function is around 90% done for 0.11, and the final parts will be coming in later once everything else is in. I’m really happy with how this is all coming together!

Language Pages
This then brings us onto the language pages, where the player can scroll through all their current translations for the in-game languages, and check how confident or not they are in those translations. Again, much like the item or clue categorizations shown last time, this is intended to be an easy way for the player to check how much of a language they have deciphered so far, and also (soon) to make adjustments directly in this interface if they come across a translation they think is better (as part of this, and more generally, I’m actually removing the in-game encyclopedia – it’ll be far more interesting if all information has to be gained in the game world itself, and it opens the possibility for false information, too, which a non-diegetic arbiter of truth would undermine). Anyway, to do this, the game now has a basic data structure for each language, which is a dictionary that contains each word in that language, what it means, and the player’s current guess at what it means, and the confidence of that guess. The game isn’t going to create an entire dictionary up-front at world generation, partly because of the time that’ll take, and partly because I can’t actually perfectly predict what words will be required in-game and which will not! So instead, every time the player looks at anything in an ancient language, the game will check how many of those words have already been generated, use those again, and then generate new ancient language words for all the remaining words, which will then be consistent for the rest of the game. This won’t be noticeable by the player, of course, but this is definitely the most computationally-efficient way to do this, and means we never generate words we don’t actually need to generate, and doesn’t add extra time to the world generation process. This system is therefore now in the game, and the first time you come across an ancient language or an ancient civilization, the game adds a relevant page into your journal with three illustrative symbols (to help the player keep track of which ASCII alphabet I’ve written is being used for which script) and the name of the language…

…and will then fill up with information later on. Then the player, for example, might look at a tablet, and all the unknown words in there will be added to the dictionary in-game of the language – or rather, the translations are actually generated as the player looks, and then they’ll be added into the dictionary. This now happens (!!) and so the dictionary of ancient words in a given language fill up organically as the player (and by extension the game) encounters them, and the game sorts them in the journal from longest to shortest. This was on the rationale that the player is probably going to be reasonably confident in the translations of the shortest and most basic words first – to, and, the, or, a, an, and the like – while it’s going to be the longer words that might take longer to establish a meaning for, so those should be the ones foreground in your list. So, once you’ve seen or heard some words in one of the ancient languages, the journal pages will then show you the list of the unknown words on the left, and the list of your current translations on the right. Readers might recall that once you have some translations suggested, you’ll be able to toggle between your believed translations and the original text on things like ancient tablets which actually show ancient scripts, and also see your confidence in each of the translations (green being confident, yellow being a “maybe?”, and red being a “possibly”). As such, you’ll notice the little white arrow on the left-hand side! While you’re on the language pages in your journal, the journal now becomes interactive, and you can scroll up and down the pages to select a word that you want to check out the translation(s) for. Although I haven’t yet implemented this, when you press “Enter” you’ll be able to adjust what you think the translation is, adjust your confidence, and it’ll keep a record of your previous hypotheses on that word, too, so you can always revert later if you change your mind.


I really like how these pages look! I’m also thinking that, in the near future, other pages of the journal should probably be made interactive as well – so for instance, on the pages which list your categorizations of the items in your inventory, those could be “hyperlinks” to take you back to looking at those items, for example. Another thing which occurred to me in the process of working on the journal this fortnight is that I’m definitely going to need to implement a system where you can actually look at, and compare, two items at one time. Right now only one item can appear (on the left of the main screen) with the inventory list on the right-hand side, but I realise now that it’s going to be annoying to potentially be flicking between items when you want to look at one using information from another. Perhaps a note hints that one wants to be looking for a book with a particular thing on its frontispiece, and you think you have the right book, but you aren’t sure – so you’d want to be able to scroll through the books on the right of the screen while keeping the note up on the left of the screen to compare back against. Equally, it also opens up the possibility for two copies of a book to have slightly different information in them (e.g. the “collector’s edition” of book X has info A on a certain page, but all the other books have info B on that page) – yes, I’m thinking of The Ninth Gate here – and more generally lots of potential riddles involving other kinds of cross-referencing, or identifying commonalities or differences between different items in your inventory. This is definitely something I’ll need to add in the future (and will be useful for language translations, too, since perhaps different books give different translations – if the word is “sun”, for instance, maybe some books will incorrectly give it as “light” or “beam” or “orb” or “star” or whatever it might be…)
Faction Pages
This then brings us to the final category that needs to be implemented into the journal – the pages that show you how your actions and deeds will have affected the world, and helps you keep track of potential effects on both individuals and factions. Factions will appear in your journal as soon as you encounter them, and by this I mean nations and religions, but since there are so many named individuals within a given game world – i.e. a good thousand or being actively tracked, aside from just randoms one encounters in the street – we’re not going to have those appear in the journal when you first meet them, but rather, only if you do something that will definitely have had some effect on a specific named NPC. Might change this later, might not, we’ll see how it goes over time. Anyway, the model now is that whenever you encounter a religion or a state for the first time they’ll get added into the book, with either their flag or their appropriate icon if you know it yet, and from that point on it’ll add in information about things you’ve done that might have affected things in that nation / for that religion, and which they might remember. So if, for example, you (in the not-too-distant future) decided that the only way to get into a particular chest was to rob a member of the aristocracy in a particular nation in order to acquire their key, then the journal will record you did this, and now you’re wanted in that nation, guards are going to be aware of you, and so forth. Alternatively, of course, if you were to come across a treasured national relic of that civilization and return it to the state instead of selling it off in exchange for some filthy lucre, that’ll certainly go in there as well. It’ll also record you joining religions, donating to them, any other interactions with them – e.g. clearly following another religion in front of an inquisitor, or desecrating an altar, or whatever – that would affect your standing. The “standing” won’t be actually visible, but more something the notes should give clear information about and can be inferred / deduced from there. I’ve also decided these pages additionally fill up with information as well as actions, but only unambiguous information, e.g. “This religion worships in pagodas” (if “pagoda” is the chosen name for their religious buildings), or “Ruled by a Vulture-King” (if that’s the title for rulers of that nation), and so on – just some core things to help the player keep track. It’ll also in the future list major events in those nations, e.g. “An asteroid has struck and destroyed their town of X”. So these pages are sort of “everything important about this nation or religion”, I guess is the best way to think about it, and here’s now they look:



As with some other sections, we’ll be adding more triggers and things to these in the future, but for now, this is how this part of the book starts – describing your local civilization in some detail, and what you already know of local ones – and more will be added as the game progresses. More on this in a near-future entry as we add more stuff in that can appear here, and ensure that things trigger correctly to add relevant information when you discover something (so first time seeing a conscript means you’ll make a note the nation has conscripts, and so forth). Actually, some of the code I’ll be using for that is the code currently (previously) used for the encyclopedia, which was designed to activate certain parts of an entry when the player discovered something, so those elements of the code will just need adjusting rather than rewriting altogether. This actually shouldn’t be too difficult, but it’ll be a mildly time-consuming thing to sit down and ensure that all “discovery” moments can generate appropriate sentences to go into the player’s journal as they learn things about a country, or do something of some clear relevant to that country. As future versions come along, in turn, I’ll be able to easily add in more, so when it’s possible to behave in a somewhat criminal manner, for instance, the journal will note that one has done something one shouldn’t have done, whether it was seen or not, and the like – and everything else we’d expect to appear in here to keep track of how things are going (e.g. a duel against a local person, insulting the religion somehow, all these kinds of things). Really happy with how these read.
What next?
And there we are! That’s now all five sections the player gets in their journal mostly complete, and all the sections will expand and extend as the game goes on, filling up – but also sometimes being potentially ticked off or removed or cancelled out. I’m really happy with how all of these are looking, and especially now the encyclopedia has been removed from the game (!) – since it’s far more interesting to encourage the player to learn, and because its removal means the removal of a single arbiter of truth, allowing us to have all manner of different perspectives and interpretations of truth related in the information the player might find – the journal will be the vital source for keeping track of what the player has seen and categorized and influenced and discovered, but without making any explicitly confident claims to truth or certainty (as in, claims to truth or certainty of the conclusions – the player will of course always truthfully record things in their journal, as that would be peculiar otherwise). In next fortnight’s blog, I will indeed be posting a big bug-fixing update which I’ve been gradually working on for quite some time now, and – I hope! – releasing 0.10.3 which will contain all of those same improvements! I’ve ticked off around 30 so far from the list, and by the time I post the update I hope to have that number certainly pushing upwards towards 100 or so. This won’t quite get URR completely bug-free, but it’ll get it at least half the way there from where we are now, and I’m excited to share all that progress as well, before we then get back into quest design and the like toward the 0.11 release.
As ever – please do leave a comment with your thoughts, and please do share around on the web with any roguelikers you know! Thanks as ever for reading, friends, and I’ll see you next fortnight…