Hello everyone, welcome back! Lots of progress this month, so let’s get to it. Here’s the current status of 0.11’s development, where BLUE denotes something finished and GREEN denotes something currently being worked on:
- You can drop items
- You can pick items up
- You can use items (whatever that means for the item in question)
- You can destroy items (very rarely an item might have something hidden inside it…!)
- You can show items (e.g. to someone else)
- Generate the images for all 25+ archetypes of religious relics, and place them in religious buildings
- Update and transform things like religious beliefs, things religions dislike, information about religious histories, holy books, etc
- Enable the player to join and leave a religion
- Far more complex interactions with priests etc
- Develop proper model for “membership” in religions, nations, cults, etc
- Treasure maps spawn in shops just like non-treasure maps do
- Zoomed-out treasure maps correctly show relevant locations
- Zoomed-in treasure maps correctly show relevant locations (far more complex)
- High-value items are, indeed, under the ground where a map points!
- These will become, for now, the game’s primary objective (rather than, as they will be later, one aspect of many)
MORE OPTMIZATIONS / BUG FIXING / POLISHING
- I currently count 48 known bugs / issues – I want this down to 0
- Further speed up map generation
- Further speed up turn-by-turn rendering
- Try to speed up world generation as well?
You’ll see a great deal more green in the religions area – which is what I’ll be starting off with this week – and we’ve also moved closer again to completing the first objective in the religions set, as well as making a lot of progress in other areas as well. So, to begin with:
A really exciting start to this week, as the observant reader will note that the list of stuff which is done I posted above has now been updated, because I’ve done some major work on how allegiances to various groups – nations, religions, cults – are handled. The first part of this has been working on updating the status page. So here’s the status page you normally get when looking at yourself or looking at another character…
…but there were also a number of other status pages that you could use tab to cycle onto. Those have now been removed – they were a blank “health” placeholder, and some very basic stuff about what nation you’re a part of and things like this – and replaced by three very polished and slick new status pages instead which should give the player a lot of information at very fast glance. The first of these – anticipating combat, which is on its way… – is the health screen, which currently looks like this. I’m not going for something as detailed as Dwarf Fortress, for example, but still something more detailed than just a health bar, and it’s important that the game can track things like missing fingers (e.g. for betraying a particular religion) or missing eyes (e.g. lost in combat) and things of this sort, so I think this kind of detail will give an appropriate amount of information and detail without ever becoming overwhelming:
The next status page then shows what kind of standing you’re in with each of the different nations in the world. I originally had a model where each nation’s name was listed in the colours of its flag but it quickly got very hard to read, especially when there were large numbers of names on screen (i.e. you had discovered al of of nations) and so instead I changed it to showing the flag’s colours first on the left-hand side, and then just putting the name of the civilization in text next to it instead. You’ll see here of course that it distinguishes between known and unknown civs – so you could end up with a status (e.g. “Enemy of the State”!) in a civilization you haven’t actually yet encountered, and potentially without knowing it (though the player should always be able to judge what sorts of reception their actions might have). Some flags for feudal nations have two colours, others have three, while the flags for tribal and nomadic peoples always have two colours. You’ll also see here they all show as having “(none)” as the player’s status, even the nation they’re a part of, but this is just the first step, remember! Keep reading…
The fourth and final status screen – and again these show for strangers as well as for you, but will inevitably have far less information about them than you have about yourself – shows the equivalent for religions and cults. This time since each religion does have a single dominant colour I decided to use that colour (made slightly lighter) for the main text of the religion, and then again we have the relevant information about what your status is with a religion.
I think these look fantastic! I’m really happy with the degree of information here and how quickly the colours should also serve as quick reminders of what each nation or religion is. In turn, just for interest, here are some screenshots of how both of these screens might look when completely filled out. They are inevitably busy but I don’t think either one is too busy, especially as this will be a rare and unusual late-game scenario and by that time, given that you’ll be adding each thing to these lists one by one as you explore and seek out more of the world, it shouldn’t be overwhelming to the player as these lists gradually fill up.
So with all this in place, we then need to let the player track their actual status in each of these factions. Each NPC now has a bunch of variables which track their relationships with civilizations, religions, and cults, and can have multiple potential statuses. Starting with nations, there are now a range of different statues that the player can have within a given civilization. In their home civilization they begin as a citizen – although I am sure I will be able to find ways for the player to end up losing this status through poor behaviour or other means – while in other nations you start off as nothing, hence the none relations shown in the screenshots above. The other relations for now are ally (you are friends with a nation but aren’t a citizen), enemy (you will find people from that nation hostile and uncooperative), barred (you will face punishment if you enter that nation), nemesis (you will be attacked if you enter that nation) and wanted (you are actively being sought by that nation’s bounty hunters across the whole world, not just ni that nation). Citizen shows in light blue, ally shows in green, and the others all show in red. There will naturally be many methods by which you can affect this status – the “wanted” status can only come from a nation with the “vigilantism” justice choice, otherwise the worst you can get will be the nemesis status – both positively and negatively, and you’ll probably be able to acquire citizenship in other nations as well, though I will need a bit more time to think about what the various benefits and dangers of these various ranks are. Anyway, here’s an example of how the nation status page looks, acknowledging that you’re a citizen of your homeland:
And now here’s the equivalent for religions! Here I’ve settled on a model where each religion or cult has essentially four ranks once you become properly involved with them, though a “believer” might follow any or several beliefs without really having any involvement in the more practical / institutional elements of that belief. These four ranks, for a religion, are “acolyte”, “disciple”, “priest” and “high priest”, and they are known here with the words and also a little set of diamonds filled in or left empty to show what the higher ranks would look like. If you have no status in a religion, it still just shows the normal “none”. I also rather like the idea that you could potentially completely seize control of the entire apparatus of a religion if you become so extraordinarily holy and impressive in that belief… but we’ll come to that later on, I’m sure. For now these are the four levels we’ll be working with, where doing stuff for the religion – e.g. donating the items that they want, or achieving the objectives they want – will have you rise up in the religion. This screenshot is an example you’d probably never see, with the player having made progress in so many beliefs, but I kept it in as a trial to show how the various levels or ranks here look:
And the same of course can also be said of cults, although they get a slightly different colouring for it in keeping with the overall colouring I’m using for cult shrines, chests, and the like, which is this sort of red-grey colour:
The other interesting complication here, of course, is the relationship between what the player sees and what the player understands, when it comes to other characters. I want to make sure that other characters can be deceptive, e.g. a spy from one nation might show as a citizen of the nation they’re spying on, but they’re actually a citizen of the other nation, and other things of this sort. Or that they might be wearing a ring from another religion, or claim to belong to one belief but actually belong to another, and so forth. I went through a number of different models here, and then I decided to go with a model where you can see an NPC’s faction status as far as you know, but always with an associated “?”. So for instance, if you see someone wearing a certain religious ring it’ll give you a “(believer?)” status for them, but you’d have to see them, for instance, inside a relevant religious building in order to upgrade that to a higher rank, i.e. only when you witness them doing something a higher-ranked initiate would do, can they be upgraded. The same would work for nations, so you might see someone in a nation and they have the right look and the right name and you’ll get a “(citizen?)” status for them, but it could then be confirmed by other things, and of course there might be other statues – a secret belief for another religion, or they’re spying for another nation, etc – which would be harder to divine.
Overall I’m very happy with how this is coming along! The next step is to get the player able to join a religion, ascend through the ranks, things of this sort, and hopefully I’ll have stuff to share on that front next time around. All of this brings us a lot closer to developing some key conflicts and tensions between in-game factions – different nations dislike other nations, different religions dislike other religions, and so forth – but each can aid or hinder the player in various ways. I’ve always loved roguelikes with these sorts of detailed faction systems (Dungeon Crawl Stone Soup’s gods come to mind) but here, with the factions procedurally generated each time and what they each want and resist being generated as well, I think we should get some interesting strategic depth here as the player navigates the world, seeks out its information (with which various factions may reward the loyal), and so forth. More here in the next update!
Lovecraftian and nature god statues
I have returned to finishing off some of the statues we need in the game, particularly those required for some of the more unusual religious archetypes. In the previous update where I commented on these we had statues generating for many of the religious types – “ordinary” religions, demonic religions, and animal-based religions (these are just my labels, you don’t get these in-game) – but the statues for the Lovecraftian religion archetype hadn’t yet been produced. The issue here came from how the game currently generated descriptions for what these gods actually looked like, and hence how they might be depicted by followers who create statues or other kinds of art in their worship. This is one of the far more “lightly” generated parts of the game – i.e. I basically just wrote a bunch of cool sentences and had the game choose one – but when the reader looks over some of these sentences, and thinks about the potential tasks of actually generating the visuals for these, the potential scope and scale of the problem we face here should become immediately clear:
The issues, therefore, are a) that a lot of these descriptions would be extremely difficult to actually depict, especially in an ASCII / ANSI grid which doesn’t exceed forty characters to a side, and b) there are so many varieties here that creating a statue generator of this sort would require a level of effort which would far exceed all the other statues combined, and then some. There’s just too little commonality here to really get such hypothetical statue generators contributing usefully to other permutations outside of a specific one, so we’d be looking at dozens of different generators. This, unfortunately, is just not really viable in terms of effort. You all know I put a lot of effort into the detail of this game because I know finding these things in the games I play is one of the things I find most rewarding, but fifty generators for a single god archetype which might not even appear in a particular world?! Even for me, that’s pushing it. As such I needed to find a new solution to make these statues for these religions appear. I considered just changing them to having gods with freaky heads – so that they could be attached to the existing god statues – but I decided to get a little bit more outlandish with this instead, given how fundamentally non-human and inhuman the majority of Lovecraft’s deities are, and that’s really what I’m trying to emulate in URR when the game generates a god of this type.
Instead, therefore, I’ve reworked how the descriptions of the Lovecraftian god archetypes are produced by the games, and instead of well over a dozen different types (each of which, as above, would actually need several different generators itself), I’ve pared them down to ten main possibilities for how Lovecraftian gods might look – these archetypes are listed in the game’s code as “polyhedron”, “cthulhu”, “nyarlathotep”, “yog-sothoth”, “ophanim”, “worm”, “insect monster”, “meditating”, “starfish”, and “mouth”. Note that although I use actually Lovecraftian gods here as just the names for the archetype, these don’t apply to the name of anything in-game, so the “cthulhu” archetype just produces a god who is described as looking something like a giant monstrous squid-dragon thing, the “nyarlathotep” will produce something strange and writhing and slender, the “yog-sothoth” archetype produces something which looks like a gross mass of spheres and bubbles, and so forth. So the game now selects one of these (it can’t select the same one for two gods in the same world) when generating the god and writes up a description based on that overall sense, and that’s what then goes into the religion in the encyclopedia (and later into their holy book, etc). Each of these then does have its own generator – this was a solid amount of effort, but I absolutely adore how they’ve come out. Here are some of the examples of the different sorts of generated Lovecraftian-type god statues one might find in game…
…with no more than one of each archetype within a game world (and there are never more than two Lovecraft-style gods generated anyway), and then here are some examples within a given archetype:
I’m extremely happy with how these look! They’ll be rare-ish – around 2/3rds of game worlds generate with at least one Lovecraftian-type god in them, and even then that’s only a single religion with a world of at least a couple dozen – but they really stand out now and I’m really pleased I put in the effort to properly distinguish these from their more humanoid cousins (i.e. ever other religion archetype). They should really stand out when the player comes across them and they’ll also just, frankly, been a great deal of fun to work on generating. Please do let me know in the comments below what you think of these! Here are some of them in-game:
Additionally, alongside the appropriate statues for eldritch-horror-gods, I have also added in variations for a “nature” god religious archetype. This actually isn’t in the game yet (e.g. it doesn’t have altars, it doesn’t have a means to generate a god’s name, etc) but I’ve been just slowly adding little pieces of it over time and, one day, it will indeed appear complete in the finished game. For now though I’ve taken a moment to add in the appropriate god statue heads for this archetype. I really love how these look as well, as I’ve tried to simultaneously make them stand out from the other types even though they use the same basic humanoid blueprint, while also making them look just slightly strange or disturbing at the same time as well. I think a lot of the deities in the game lend themselves well to this (not just the Lovecraftian ones!) and I’m really pleased with how these have come together. There are a number of different heads that these gods can have – and these descriptions will come into being once I do the full generation of the nature god archetype, including their altars and so on, which themselves will require a new generator – but here you can see a god with a flower head, a mushroom head, and a tree head. These are pleasingly weird, I think, and I really like them a lot (holding, reading from top left, some scales, a padlock, an anvil, a spear, a heart, and an apple). They probably won’t make it into the game itself in 0.11, but the nature god archetype should appear before too long in the future.
I did of course debate making an entire generation type just for the future nature-type gods, but on consideration I think there’s something pleasingly weird about humanoid figures with the head of a flower or the head of a mushroom or something like that, so I decided to stick with this model instead. I think it’s also because the game does anyway generate images for actual flowers, and will later be doing the same for mushrooms once they find their way into the game world, and so I also didn’t want to risk much in the way of overlap on that point. It is always possible that I’ll change my mind on this in the future, of course, but for now the nature god types will simply offer different heads atop the humanoid statues just like the demonic god types, the animal-based god types, and various others. Lastly, as a final bonus extra, I don’t normally show this kind of behind-the-scenes stuff, but here are my very loose first ten MS Paint drafts for some Lovecraftian-god statue types, not all of which actually made it into the game in the end although some of them certainly did…
Aren’t they magnificent?
The skill of the brush, the sophistication of the imagery?
Truly, some of my finest work.
By pressing ‘w’ you can now tell your character to ‘wait’ for any period of time! This might not seem like much but NPCs and so on move around on schedules and the like, other things might happen at different times of day, and maybe there could be other benefits too further down the line (???). Pressing ‘w’ thus first brings up a menu where you can select whether you want to wait until, or wait for. Waiting until means that you input a particular time and date and the game then accelerates and simulates the game world until that exact time is hit, while waiting for means that you choose a number of turns, hours, days, and so on, which you want to wait for. The game highlights in red when you’re trying to wait until a time in the past, and will also give you a warning if you propose waiting for, say, a thousand years.
One of the cool things about how the scheduling and routines and so forth in URR work is that the longest possible period the game can take to generate through to the time the player wants is, as it were, 23 hours, 59 minutes, and 59 seconds (although this isn’t exactly how times work). Days and weeks and so forth can be quite easily jumped ahead with only a little bit of fiddling in the in-game code, and so the longest possible waiting period resolves in under a minute on my laptop (which when bought four years ago was a very high-spec gaming focused piece of equipment). Giving that there are literally hundreds of NPCs to be taking actions for in this time, and the passage of time also handles many other things as well on the local level and the abstracted world level, this is really very fast. However, a minute is still a minute (although normally I would anticipate the player waiting only a dozen or two real-time seconds to pass the in-game time they want to pass), so I’ve added a lovely little sand-timer animation. I miss the old windows animation and I felt an hourglass was nicely in keeping with URR’s aesthetic more generally, so the player now gets to watch a nice little animation as time passes, and gets to watch time progressing in the calendar on the left-hand side of the screen (in the sidebar).
As a side note, it was surprisingly non-trivial to make the whole thing come together. There are quite a few moving parts here, including the calendar, the time within a given day, the speed at which the sandtimer should run out, the number of frames the sandtimer should take, and what the game should do when you’re cycling around to the same month or going into a different year or just going later in one month or later in later months. The obvious model – just have the game check when you reach the time you told it to wait until – is, for various reasons, surprisingly tricky in the exact scheduling system the game uses, and so instead it now calculates the number of turns it needs to wait (regardless of whether you go wait for or wait until) and then iterates that number of turns, while also figuring out what the graphic should look like and how rapidly the calendar on the left (see the gif below, and yes, I know part of the sidebar disappears, that needs fixing!) should move along.
I’m really happy with how the whole thing has worked out! I haven’t yet found any issues with rolling forward the world’s calculations in a cycle like this, and indeed I’m pretty sure that I can make it all even more efficient than it currently is. This means essentially two main things. Firstly, any NPC who has a particular rhythm and you want to find – this would be particularly appropriate for merchants in shops, for example, who will only be found there during ordinary working hours – can easily be found without having to fumble around at finding some other and much slower way of iterating past the required time. That should be pretty useful for a range of purposes and is really a feature that has been missing for some time, but is especially important given that 0.11 is going to be the first main objective release (with a win condition!) for which these sorts of things just need to be working. Secondly, it also means that any kind of future puzzle involving a specific time of day can also now easily be implemented. I can imagine a puzzle that, for instance, directs you to a certain place at a certain time of day at which perhaps a particular secret NPC appears, or light falls through a window and shines upon a particular thing (I confess to being quite a fan of Journey to the Centre of the Earth), or a particular piece of hidden machinery reveals a specific thing, or a particular kind of animal is passing through a particular area, or whatever it might be (again one of the keys in all the riddle generation will always be having such a massive suite of pieces that prediction, without deduction, ought to be impossible). You’ll be able to get there and quickly move the game world to the time that you’re waiting for, in order to get the thing that you’re after. Waiting still needs a little bit more testing to iron out the final few bugs, but this is now essentially implemented, and a valuable addition to the game!
Bug fixing etc
- Monasteries can no longer spawn on roads, which both makes them feel a little more distant from the rest of the world (which I want) and prevents the presence of the monastery from completely screwing up road generation for the tile they appeared on.
- Massive pools of water no longer mysteriously appear in the map tiles on the absolute edges of the map (i.e. x=0, y=0, x=249, y=249).
- You can no longer climb down onto deadly surfaces – lava, abyss, and (for now) water, and instead the game tells you that you cannot climb down into that and just keeps you hanging onto whatever you’re currently climbing. This also prevents the player from finding sneaky ways to walk on water, lava, or abyss tiles, without dying.
- Fixed a problem with a few particular rare formations of chasms not correctly generating the actual chasms themselves when explored on the human scale.
- Updated the description of the dock / dockyard district when the player travels into it; the previous description was logical for other districts but didn’t really make sense for the docks since the docks are handled differently, and the new text is far more logical.
- Necklaces that depict levels of religious commitment are now more clearly described, and generated ring descriptions no longer have a few issues around vowels and “an”/”a” choices.
- Fixed a number of rare graphical issues with shop signs displaying their shading incorrectly.
- The generated interiors of castles in a small number of nations now no longer produce a weird and completely empty room where the ground floor throne room should be, and instead place the throne room correctly.
- Fixed a long-running visual issue with a small number of hairstyles allowing for skin to show through the hair in a few particular circumstances.
- Fixed another long-running visual issue, this time with the light shading on military helmets.
- Togas are no longer sometimes referred to in the game as shirts, despite being, er, togas.
- I have made major improvements to how most of the clothing looks – the issues here were left-overs from the Python 2 -> Python 3 transition and I think this is the last place (years later!) where changes were still needed. Normal clothes (i.e. not armour) now look really cool again, rather than, er, kind of hideous.
- Getting on a ship no longer consumes all your survival resources – so ships are now like towns, cities, and so on, in that you don’t need any of those to survive indefinitely in them.
- After a very long time, the names on graves now properly match the name style for the civilization to whom the grave belongs. Thank you to several fans for pointing this one out – you know who you are!
- Entering castles, cathedrals and monasteries now causes a “Loading…” thing to appear on screen when the player enters; this is because while most buildings are small enough to generate essentially instantly, these buildings are so large that it does take the game perhaps a half-second or second depending on your computer speed to actually create the interior, and thus a little “Loading…” note tells the player what’s going on and why the game has paused for that brief moment.
- The game’s other “Loading…” (or “Offloading…”) screens have now been polished and unified – they no longer show up all over the place, but only in sensible and logical locations on the game screen.
- You can now fast travel to Wells found in districts, towns, etc, just like one can fast travel to other exterior places like parks, gardens, memorials, and so on.
See you in a couple of weeks for another 0.11 update, probably with more faction and/or item interaction stuff, a couple new statues, and who knows what else? 🙂