Hello everyone! It is with great pleasure that I think the time has come to publicly state what has probably become obvious already given some of the recent blog posts:
I am working on 0.9!
And, even better, I have been cracking along with it. We’re just a bit over half-way through 2021 and I am past half-way through development. At least 85% of the new graphics are done and 30% of the new code is done. I am prioritising URR dev each weekend and sometimes in the evenings and this is yielding a tremendous and steady amount of progress. Just as importantly, however, given what long-term readers will know of the 0.8 issues, I am enjoying it massively, it’s hugely satisfying, and my enthusiasm for the project after years of lag (for job reasons, health reasons, and psychological reasons) has catapulted back up to its levels before 2017. I’m so excited about 0.9 and pushing onto 1.0 within the honestly not too distant future (though let’s not get ahead of ourselves) and I really, really want to release 0.9 at the end of the year, and from now on to stick with a yearly release schedule for major updates.
As such, this release will have four main components:
One of the core elements of 0.9 is the introduction of currency. All players will start with a solid amount of money from their home nation (the currencies of course being entirely procedurally generated and accompanied with some lovely graphics, if I do say so myself) and with these you will be able to buy, sell, and ship a massive range of items, all with their own procedurally-generated images. Each civilization has its own currency and you’ll need to spend the appropriate currency in order to buy items, and selling items will pay you out in the local currency of that nation. There will also now be currency exchanges for you to trade currencies for each other, and some exchanges will have better or worse rates for different currencies. Some currencies contain just a single “large” coin denomination, while others, as in the screenshot shown here, contain two. Unlike in most games where currency is an abstracted number that your character just stores somewhere, in URR coins are actual physical items you trade (as, one notes, is the case in the real world, at least before the invention of debit cards). In the future I’ll be thinking about weight and inventory management and how those will factor in, but for now you collect coins in the “Currencies” section of your inventory, where you can view them all.
URR 0.9 is absolutely full of items. As an incomplete list, this new version contains procedurally-generated religious books, novels, philosophy books, history books, biographies, records of deaths, shovels, short weapons, slashing weapons, long weapons, short weapons, shields, textiles, wooden goods, pottery, board games, alcohol, whale oil, ambergris, spices, rings, necklaces, bows, crossbows, bolts, arrows, pistols, rifles, gunpowder bags, treasure maps, pistol/rifle balls, ingots, gemstones, military uniforms, helmets, cuirasses, greaves, gauntlets, pickaxes, pocket watches, and more (as well as a number of generators for non-item things such as symbols for towns, graphics for hedges, fences, other new kinds of terrain, etc). A couple of these items will have immediate functionality in 0.9 – pocket watches tell you the in-game time, for instance! – while most will be “only” functioning as procedurally-generated trade goods for now, with their other functionalities coming in later. (Some of course will only ever be trade goods, such as spices, or whale oil, and so forth, but most will of course have other functions, like the books and so forth).
These can all be found in shops, and bought using money. Some sorts of items are more or less expensive in different nations and – importantly – each nation is both known for creating especially high-quality items of certain types, and for especially desiring items of other types, and this (from my testing) is already adding a great deal of complexity to the trade system. I am also in the process of implementing a system whereby you can choose whether to have an item in your inventory, or to have it “shipped” to another nation, which you pay a small fee for and lose access to that item until you’re in that other nation. When you’re in a given nation you can ship any items elsewhere OR acquire items you’ve shipped to that nation, but once you ship an item elsewhere, you cannot get it back into your inventory until you visit that nation. This system is designed to generate interesting strategic decisions about what you send where (especially once you uncover more of the world) and how this intersects with your own movements – for now you can only sell things in person, so you need to travel with your items if you want to sell them at the other end, otherwise they just rot in a warehouse.
Finally, as part of this I am also removing a few shops, e.g. “Botanist”, because I’m not yet completely sure what they would sell, what value it would have, whether it would be just trade goods or other gameplay things, how it would intersect with other systems, etc. It’s only a handful of shops I am thus (temporarily?) removing, but in 0.9 any shop which would not spawn with items you can actually buy will not be there. There are dozens of shops in 0.9 and all will contain items, and of course, the shops and the items within those shops are all procedurally generated according to the location and civics and culture and so forth of each civilization, so over time I’m hopeful players will begin to get a sense of what might be bought where, and why.
The third and smaller component of the release’s new content will be rethinking how travel works. This is a topic I am actually looking for some feedback on, so I’ll be posting a separate blog post on this in the next month or two, but essentially I am beginning to think about what the clock is for URR (like food clocks in most roguelike games, or the rebel fleet in FTL, these sorts of things) and how this should interact with different kinds of travel. Part of this is, as above, adding a system where you can “ship” things between civilizations and send them to specific cities or towns (or monasteries or mines or whatever) and then collect them there, but I’m also giving a lot of thought to adding costings to sea travel, adding fast travel options over land, mountain passes, desert caravans… and so forth. I don’t know how much of this will make it into 0.9 since I am absolutely committed to a December 2021 release no matter what, but we’ll see how it goes. More on this later.
There are basically 4 main bugs/issues to be resolved, which only still exist because a) they are relatively rare and relatively mild in severity (at the moment), and b) they are very different and intractable to hunt down and purge. These are:
- When the game crashes and autosaves, or when you save the game by pressing the ‘X’ in the top-right corner, reloading the game will sometimes produce an issue with NPC management which later crashes the game. This is very strange, because the code for “what to do when the game shuts” should be identical to when the player chooses to save the game, and yet it elicits this different outcome. This is very strange, and isn’t helped by the fact that the NPC management code is extraordinarily complex, having to handle NPCs which do exist, don’t exist, are spawned, are not spawned, are moving around, have their own timetables, move through areas the player might or might not have generated and might or might not be currently loaded, and so forth. Nevertheless this is – obviously – one that must be fixed. (It also might be trivial if I just notice some important saving function actually isn’t being called when the game crashes, but I think this is optimistic…)
- People in crowds fizzle out over time. I need to confirm whether this always happens, or just sometimes happens, but you often get a burst of general people in a city distract or town when you first enter and then the crowd fizzles out over time. There is a lot of code in there for maintaining the “illusion” of the active crowd while keeping the CPU usage low, but I think something is going wrong here; possibly the game is not being strict enough with de-spawning NPCs that aren’t anywhere near the player’s vision, or perhaps the limits of NPC numbers are too low, or… something. But this needs fixing, because it is very important that inhabited parts of the world always, rather than sometimes, appear inhabited. This should be the easiest of the first 4, so this is the one I intend to prioritise for 0.9.
- The schedules of some NPCs break over time. This appears to only be guards for certain buildings, and potentially tellers in banks. I don’t know what causes these, and it doesn’t seem to cause a crash, but if you keep hanging around where these NPCs should be and you keep saving and loading things and moving around the world map, these NPCs eventually just trickle away and stop turning up – yet like I say, it doesn’t crash the game. This obviously needs hunting down and resolving, but for the same reasons as #1, this is going to be a long, difficult, involved bug hunt.
- Rendering the world as you walk around is too slow. This one speaks for itself – I’m still using some very old early libtcod code for this and it needs some serious refactoring that, I am told, will massively increase its speed. This is again going to be a tricky one because the viewing code is quite complex (since it deals with heights, for instance, and it deals with objects “embedded” in terrain, e.g. doors), but this is one which really must be done at some point soon, since walking around the world is simply far too demanding of CPU time. It’s okay at night time, but day time is sometimes just so slow.
So, my goal for 0.9 is definitely to fix #2, potentially to fix #4, and depending on timescales, my energy, my inclinations, and my desire to get 0.9 out within 2021, we might start to address #1 or #3. #2 is the one I’m definitely going for though, that really has just got to be fixed no matter what, it’s too odd and alienating walking around empty places that should be bustling with life. (Oh, and although I have a 0.8.3 that is pretty much ready to go live, I have decided to just fold it into 0.9 now instead.)
So yes: 0.9 is cracking along, and there will be another update once I have another ton of stuff to update you all on. I cannot realistically get back to the old weekly updates I used to do, but from now on I am going to aim for an update at the end of each month. More soon!