Hello everyone! Welcome back – I do hope you’re all enjoying these regular updates :). I certainly am. To begin with here’s the latest update on progress, where BLUE denotes something finished and GREEN denotes something currently being worked on:
ITEM INTERACTIONS
- 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)
RELIGIONS
- 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
- 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?
As ever, if you enjoy these posts, please do think about sharing them around the internet, or on forums, or tweeting it out, or to fellow gamers who might be interested – it takes a heck of a lot of effort to write these things up and I really do appreciate it a ton.
Procedural relic generation
We begin by returning to our procedural religious relic generation! As before, every generated in-game religion now selects a relic archetype and then generates religious relics within those archetypes, and those relics now appear in religious buildings and monasteries and so forth where reliquaries used to appear (I might well find some new use for the reliquary graphics further down the line, but for now, they’ve had their last hurrah). I’ve been showing the generated relics off each update so far, and although I think next time I’ll be taking a short break on them in order to work on some other features, another three religious relic archetypes have now found their way into the game.
On the left-hand side we have the “wooden pyramid” religious relic archetype, which I don’t think was based on anything in particular; with that said, though, the idea came into my mind after watching Midsommar, so maybe there was something about wood carving and some of the interior visuals in that film that had lingered in my mind when creating this one. I wanted an archetype here that felt very grounded and quite close to nature, and quite close to something that people might actually construct, yet also an artefact that could have deep religious meaning for one group while being entirely overlooked by another. There are around 64,000 possible permutations of these pyramids, with various sizes and shapes, colour orientations, decorations, and so forth. These in turn have generated names like “The Divine Pyramid of [Name]” and “The Sacred Memorial of [Name]”.
In the middle we have the “sigil” religious relic archetype, which was definitely based on demonic symbols you see in real-world esoteric texts like the Lesser Key of Solomon. I’ve always really liked the visual complexity of some of these symbols and the sense one gets here that each symbol really means something and has a distinctive existence of some sort, and this was actually one of the most challenging generators to put into place so far. The game essentially draws a pattern which can have millions of permutations and then fills it in and tries to work out how to shade it correctly in the game’s ASCII/ANSI style. This was demanding but very rewarding, and as a result of this complexity there around sixteen billion possible relics in this archetype. They come with generated names like “The Greater Rune of the Burning Suffering” and “The Twisted Key of the Sacred Agony”.
On the right-hand side we have the “mirror” archetype, which are essentially fancy mirrors that might be ascribed some religious meaning. Naturally all relics will also have meanings and histories generated for them later on to be put into holy books or mentioned to you by priests or monks, but I think it’s pretty clear kinds of religious or esoteric meanings could be potentially ascribed to sacred mirrors, to their past owners, to what one supposedly might see by peering into them, etc. These vary a lot in terms of the colour of the class, the outside, the patterns of the outside and the corners, and where the “shine” on the glass is, leading to around two billion possibilities here (though I know it doesn’t look it!). The generated names on these are things like “[Name]’s Black Looking Glass” and “[Name]’s Blue Mirror”.
Again, super happy with how these are developing! There are a lot of relic archetypes to design for 0.11 but they’re cracking along at a fantastic pace so far, and I’m so excited to see them in the game giving a lot more life to the religions and the world.
Indoor general messages
I have now implemented a difference between indoor and outdoor general messages. I knew I needed to do this but the need for this became particularly apparent when I was inside a mansion in a nation that practices slavery and nobody who was not enslaved was in the building with me, and the message “You overhear someone talking about their work as a high-ranking bureaucrat” popped up on screen. As such the game now – when it tries to generate a general message as you walk around and do stuff in the game world – takes note of whether you are indoors or outdoors. If you are outdoors then it uses the message archetypes (several hundred!) that I’ve mentioned in previous blog entries, but if you are indoors then the game will look at what exact sort of building you’re in, what area that building is in (e.g. a religious building in a town vs in a city), and what the other cultural and political and religious traits of that nation might be, and what NPCs are currently inside the building, and will then create an appropriate and relevant pool of potential messages for that particular interior.
There are around as many here as there are for the outdoors, and again I think these give a really nice boosted sense of the alive-ness of the world! Here are some examples:
The trickiest part is keeping track of what NPCs are there and having the game add NPC-specific flavour texts into the pool – for instance, you can’t have “You hear the priest chanting something under his breath and looking up at the ceiling” if the priest is currently asleep or on a different floor of a religious building, for instance. Integrating these two systems took a little bit of work but I’m really happy with the result, and this should really bring the interiors to life just a little bit more, much like the exteriors.
Chest generation
As the observant reader will notice from the last of the three above screenshots, URR can now procedurally-generate chests. These are one of those classic game / RPG items which hadn’t made it into the URRniverse (????) yet, but have now been added in. To begin with chests have six possible types – low-quality, medium-quality, high-quality, religious, cult, and what for now I’m calling “ancient”, which will be chests that can spawn in underground areas a little bit later. Low-quality chests might appear for example in everyday homes or buildings like jails and taverns. Medium-quality chests will appear in homes in middle-class housing districts and might also be found in more up-market buildings such as theatres or banks or important military buildings. High-quality chests will be found in places like mansions and castles and the like. Religious chests will naturally be found in religious buildings, cathedrals, monasteries, and archives underneath cathedrals. Cult chests will be found in the locations that cults gather (these are still being worked on). Ancient chests will spawn in subterranean areas, ruins, and the like. Each will contain different possible items from a set of items, and might also contain unique items such as quest “keys” or other unique things like gemstones, unique notes with information (further quest clues), and the like.
Naturally as with everything else in the game, they need some nice procedurally generated visuals. For all of the chests the upper part of the chest of course varies according to the shape aesthetic of the nation the chest belongs to, and the shape of the metal around the lock also varies in the same way. Some shape archetypes share similar shapes on the chest, e.g. the “Square” and the “Concentric Square” shape archetypes, while others (e.g. “Pentagon”, “Hexagon”, “Triangle”, etc) have unique shapes on their chests. With that done I then set about ensuring that each chest archetype looks different and is instantly recognizable in its type when the player sees them. For the low-quality chests therefore I just went with a classic wooden image style as these are very common chests. For medium and high I wanted to get one of the colours on a national flag onto the chest, so the game selects an appropriate colour and uses it as the basis of these two chests. For nomadic nations the secondary colour is the secondary colour on their flag (which is guaranteed to have a good visual aesthetic match with the larger colour), while for feudal nations it just creates a lighter version of a flag colour and uses that as the basis instead. This is because I cannot predict what the colour combinations for feudal flags might be and some can look hideous, so this is far more reliable. It also doesn’t allow chests to use a couple of colours, e.g. white, because again they look vile, but the feudal flags have enough possible shade combinations that the game can always select an appropriate colour to put on the chests. For the high chests I kept the bars of lighter colour I’d put on the medium chest and added a band of coloured shapes around the chest. It also gets a nice gold rim instead of the grey of low- and medium-quality chests. For religious chests I then added the religious symbol in question for the religion whose chest it is, made the chest’s colours appropriate to the religion in question, and then added this nice sort of “band” design that runs around the chest in various sorts of ways depending on the shape archetype being used and the location of the religious logo. This then led to a somewhat comparable model for cult chests, which again show the cult logo (this one here is for a “Sun” cult) and then a set of lines in a range of possible locations. The subterranean chests, finally, iterate partly on the medium-quality chest but have a much darker and more shadowed appearance, and a number of extra metal bars down at the bottom. Overall I have to say, I love how these look!
These are now generating in the world! They do not yet contain items – this will need some more subsequent cleverness, and in 0.11 they might not contain items just yet because that will need the proper implementation of a key system to make the whole thing work – but they appear in logical places, and they make some really pleasing visual additions. Here’s a bunch of examples from different sorts of buildings:
As a final note on chests for now, an interesting issue also arises here with chests when we think about them in terms of item interactions. As mentioned in a previous blog entry you can now destroy items to check if there’s something inside them, and I’ve decided to make chests into items rather than objects. I think being able to actually pick up chests and move them elsewhere until you find the right key offers an interesting strategic option (given how heavy they will be) and also removes potentially frustrating backtracking when you do later find the key but the chest is still a million miles away somewhere else on the map. However, the idea here is that you need to find the key in order to open the chest and if you can just destroy a chest immediately to get the items inside, then the chest ceases to have any actual gameplay function (hiding some unknown reward behind working out how to get that reward). So after some consideration I’ve decided to make some items indestructible – as in, they cannot be destroyed by the player pressing the “destroy” button. This was already the case for currency which would just give the player a message about trying to snap a coin or an ingot in half but being unable to do it, but I’ve decided to extend this to chests. Trying to destroy one now yields a message about the chest being too tough to destroy, and that should do the job for now. As such coins, ingots and chests are now the only “indestructible” items – though this could of course shift with time – while everything else can be potentially destroyed.
Religion rework begins
I have now begun the rework of religions. The first thing I actually found – to my surprise – was that a lot of the existing stuff I can definitely keep around. When I took a good look at the religion information that shows up in the in-game encyclopedia, for instance, I found the following:
This is actually a really solid foundation! I hadn’t quite remembered how much good stuff was in place – but the world has changed a great deal since I designed these, so for some of the later elements (loyalty rewards, what happens if you leave, how you join, and what is forbidden) needed to be returned to in order to reflect what’s in the game now and what will be in the game going forward. I also wanted to think about the joining “rituals” in order to make it a bit of a strategic choice to decide what religious group – or if you’re feeling sneaky, groups – your character is going to join.
First thing though was to go back to the code for loyalty requirements and loyalty rewards, leaving punishments, joining processes, and forbidden things. These are the big four that were written half a decade ago with no conception of what was really going to happen later, what items would exist, how the monetary systems would work, etc etc, and hence needed a major rework. I want building up status with a religion – or again, if you’re sneaky, several religions – to be a key way to gain access to things and tools and information in the game, and also to make for potentially interesting conflicts (e.g. if you become incredibly prestigious in religion X, but then go to the nation that hates religion X, you might be in some degree of trouble).
Firstly, loyalty requirements. Each religion still has one objective that it very much wants met and will reward the player for meeting, but I’ve removed a bunch of the old ones which were no longer appropriate and added a massive number of new ones. Some of the new ones are also contingent on specific kinds of deities being worshipped, so some of them are rather dramatic. A “demonic” archetype religion might, for example, want the player to bring back evidence of people from other religions they have slain, while a “Lovecraftian” archetype religion might want the player to bring them relics from other religions so that they can be destroyed. Any type of religion, meanwhile, might want the player to bring back books of particular types, or weapons of particular types, or to discover distant lands, or things or this sort.
Secondly, loyalty rewards. Each religion is going to have two kinds of rewards that they’ll give the player as the player “advances” through the ranks of the faithful. These cannot clash with forbidden items (see below) but can be anything else, including – for now – things not ordinarily available within the nation the religion belongs to. I think that opens the door for more potential strategy to be involved here when perhaps a religion is the only route a player has to easily access particular items or trade goods or other rewards or whatever it might be. So, religions can now offer you various types of weapons, various types of books, various types of trade goods, or simply and directly new clues and information, in exchange for you doing whatever it is that they want done!
Thirdly, leaving punishments. Originally I had it so that only some religions would have a negative response to the player leaving, but on consideration I think it’s actually much more interesting to give all religions some degree of punishment when a player leaves. This will make it a more interesting strategic decision in terms of which religions to develop a relationship with, which to leave, whether or not one should risk attempting to “follow” several religions simultaneously without the others finding out, and so forth.
Fourthly, joining process. Anyone in the game can choose to pray with any priest to any religion – though of course doing so might have some consequences – but to really “join” a religion (I’m thinking here equivalent to something like a baptism) and to begin being able to accrue value from being a member of that religious group, there should be some kind of entry process. For some religions I’ve decided to make this simply a ritual, but for other religions they are going to actually require something specific for you to join them and become a more official “member” – this will generally be a small amount of money, but might also be in rare cases something more extreme, such as sacrificing a little finger or agreeing to have a certain scarification or tattoo added to you, which of course will then be visible unless you hide it! I think a wide range of entry requirements – from essentially nothing up to something quite significant – will again really enhance the variety here, and the strategic decisions that the player is able (and encouraged) to make.
Fifthly, forbidden things. Each religion now has certain types of things that they really don’t like their key followers doing – aside from, of course, following other religions. This was quite tricky to figure out because I didn’t want this to become a tiresome thing for the player, e.g. if a religion bans long weapons but the player has specialised in long weapons, then the player just ends up using long weapons except when dealing with the religion so they have to hide the weapon somewhere, and then go and get it again, and so on – and it could easily become frustrating and grindy. Instead, therefore, I’ve gone with things which are binary actions the player can or cannot take, and where it is at least somewhat logical that knowledge of the player performing that action could, via the grapevine, make it back to the religious authorities in question. As such, religions now forbid things like buying from a certain kind of store, for instance, or visiting a certain nation. It will be made clear to the player that the religion will discover this if you do it, which I think is actually a good thing for reducing frustration in trying to juggle restrictions which have to be directly “observed”. That said though, I’d value any feedback on this one.
I’ve also made some other really nice additions too, which I think you’ll all like. For example, all priests now have special names according to the religion. For example, a religion called the “Halls of the Ten” might have priests known as “Hallbinders” or “Hall-Walkers” or “Hall Listeners” or “Listeners in the Halls”; a Lovecraftian-styled deity with an unpronounceable name who is also known as, for instance, The Dark Hound of the Dusk, might have priests known as “Houndskeepers” or “Duskwatchers”. A pantheon religion called “The Scribes of the Six Ages” might have priests known as “Letterkeepers” or “Timewatchers” or “Timekeepers” or anything like that. These will then be used in sentences and other descriptions b y other characters, so you might be encouraged to “Visit a Houndskeeper priest” or warned to “Steer clear of the Hallbinders” or someone might introduce themselves as a “senior Letterpriest of the Scribes of the Six Ages”. I’ve always been fascinated by strange and esoteric religions both in the real world and in fiction, and this is a really fun place to crank some of this strangeness and alien-ness up to high levels. I want the religions in URR simultaneously to be widespread and important social actors in this world, but also cryptic and strange in places, and full of mysterious (procedurally generated) secrets.
I have also slightly tweaked the religion generation parameters so that the more unusual religion types – in the “Lovecraftian”, “Demonic”, “Egyptian” and “Pantheon” categories – spawn a little more often than had otherwise be the case. There’s plenty of interesting stuff and massive amounts of interesting potential generations in the “standard” religion types, but I thought it would be nice to get a few more of the striking and unusual ones into each game world to really mix things up even more. Rather than an average of three of these more “special” religions spawning in a game world, the average will consequently now be somewhat closer to around five, meaning that around a third of a game world’s religions are of the rarer types rather than around a fifth. I’ve also added some new name generators for the gods as well, which have added some nice additionally variety here. Overall therefore I’m really pleased with these additions and excited to see them start playing out in the game world too, and all these changes to the religion data will make for a good foundation when I start working on a proper faction-based system in the coming months.
New civilization names
I have made some big changes to how the names of civilizations are generated – this is something the player will be seeing a lot, and things you’ll be learning and getting used to, so they should be interesting and noteworthy and memorable (which at present I don’t think they really are). I entirely blame (the astoundingly good) House of the Dragon for encouraging me to make this change, because watching it has got me back into browsing the ludicrously deep histories on the ASOIAF Wiki and in turn enjoying some of the very unusual and “non-western” names for places, cities, civilizations, nations, historical periods, all these sorts of things. When I came back to URR after a little bit on the ASOIAF Wiki I was struck by how same-y a lot of the civilization names are – it’s always “The Nation of Blah” or “The Empire of Blah” or whatever – and this needed addressing.
To handle this the game now between 1/2 and 1/3 times when generating the name of a feudal or nomadic civilization moves away from the normal name generators towards a new set of generators that I’ve built specifically for 0.11. These have around twenty new generators (i.e. twenty new “archetypes” for nation names) and one of these generators is picked at random, although a few can only be picked for a nation with a particular policy or religion type and are therefore very rare and unlikely to come up – but should be all the more interesting when they do. Some of these names can apply to any location while others take names or other information from where the nation is, and some of them also do not have “the” in front of them (e.g. The Empire of Blah), a fact which required a surprising amount of effort in making sure that “the” is only used in in-game sentences in the right places (which is to say for around 95% of possible civs, but not all of them). Anyway, here’s an example of the new sets of civilization name generations for feudal and nomadic civs within a given world:
I rather like “The Riven Lands”, “The Artificer Kingdom of Upumnyx”, “The Province of Doubt and Wisdom”, “The Domain of the Terrifying Vision”, “The Torturer Traders of Icywin” and “The Seat of Crows”, but overall I think these really add a lot of good new flavour to the world’s civilizations. There’s a huge number of extra permutations and other archetypes which don’t even show up here, but around one in every two civilizations now has a new sort of name, and this has really added a nice lot of new variety to the whole thing.
Crown names
In anticipation of spawning crowns – both are ultra-rare lost items that might appear in treasure rewards, and for things to appear on the heads of civilization rulers once they are spawning – I’ve built a little crown name generator. Got to say, I think these are pretty dang cool. The crowns themselves will be appearing in the game very soon, probably in 0.11 honestly, at least as potential treasure items. This is a generator I am really looking forward to working on!
Using items
I have now begun implementing the “use” functions on various items! This has a number of different components. Firstly, every use function needs to take a certain number of turns which iterate in the background while you’re doing them. This will be vital for combat for example – you shouldn’t be able to whip off an entire suit of armour and change into another suit of armour in the space between an enemy attacking once and attacking again – and so by extension all item uses take a certain amount of time. This amount of time depends on the item, the action being performed, and various other things. For example, removing an item of clothing or armour might take x turns, putting on a piece of clothing or armour might take y turns, and doing the latter while also needing to take off something first (and both being done in one action) would take x+y. Using your shovel to dig into the ground might take only a few turns (digging into soil) or a very large number of turns (trying to dig into something like stone or marble flooring) – outside substances might take more turns to dig into if it’s winter and the ground has hardened with the cold. It can also vary depending on other aspects of items, so a large crossbow (arbalest or siege crossbow) takes longer to load than one of the normal-sized equivalents (crossbow or repeating crossbow). Time-consumption is also present in other things such as destroying items (it will take longer to destroy a heavy suit of armour than to destroy a lotus flower religious relic, for instance) and while these will generally not be strategic concerns and are mostly for the sake of immersion and realism, with weapons and armour these will likely have some tactical and strategic effects.
Anyway, I started this all by going to shovels and pickaxes. Shovels are for digging straight down while pickaxes are for digging horizontally, such as into a wall, or a cliff face of stone, or for that matter into terrain if that terrain area is above you by at least one ‘z’ level. I started with the idea of having it actually reduce the terrain by one z level but this runs the risk of then rendering certain areas impossible for the player to access, or impossible for NPCs to access, and although potentially interesting this isn’t really that kind of game, so instead the game creates a “hole” in the area where you have dug, and shows you whether any items showed up as a response to your hole-digging activities. For the shovel this is pretty simple, and the game now offers you a visual of the hole on as you’re looking at the area, and also a (procedurally generated, of course) image of the hole if you take a look:
More to come soon!
Bugs etc
- Fixed an issue with the inventory system incorrectly displaying the weight of items that weighed over 10 units (though it will indefinitely remain ambiguous what, exactly, these units are).
- Fixed a number of generation bugs in religions which allowed for strange combinations of traits to – very rarely – be combined, such as religion that banned the use of long weapons but also rewarded its followers with long weapons.
- Resolved an issue with the game very very rarely not being able to correctly track what kind of religion a certain religious belief was, which could lead to a couple of rare crash bugs in fairly obscure situations.
- Substantially sped up a few of the final aspects of world generation, essentially by just engaging my brain and reducing the number of times that the world has to iterate over the entire world map, or through all the civilizations in the list, or things of this sort.
- Fixed an issue with certain kinds of clothing not correctly entering and leaving the clothing / armour inventory under certain conditions (this is because a lot of the clothing code is very much “legacy” code I wrote a long time ago and it doesn’t always combine nicely with the recent stuff).
- Resolved an issue with the generator in desert wilderness tiles very rarely producing something extremely strange.
- Optimized some of the code for handling looking at some of the in-game graphics, speeding up their generation (from a fraction of a second to a smaller fraction of a second, but still worth doing!
What next?
i guess 0.11 isn’t under the download link yet? i’ve been playing Alpha 0.10.1 for the past few hours and i’m unable to leave my starting city gates without the game crashing. there’s also a building in this zone i can’t enter without it crashing shortly afterwards. absolutely love the game so far
Hi Charis, thank you so much for the message! Argh, that’s frustrating – can you send me any of the crash logs you get? Are you leaving city gates on foot or via fast travel? CAn you identify the building that crashes? Using ‘l’ or ‘;’ will let you look at the door and will give you more info :).
(And, indeed, 0.11 is under development, I generally release a new major version in January!)