Hello everyone, welcome back! As we move towards the holiday period it’s going to be a short-ish post today – but a productive one. Firstly, here’s a list of all the bugs and whatnot fixed in the last few weeks…
Bugs resolved / polishes introduced:
- Civilization names should now correctly use, or not use, “the” in front of them (e.g. “The Realm of the Blue Chimera”, vs “Xujjan’s Holdings”).
- Fixed something like a 1/1000 crash bug in world gen where the game was sometimes unsure where to place a desert.
- Fixed a crash bug where looking at a nomadic shield made the game extremely upset (this is only a temporary fix, defaulting to a generic-ish shield pattern, but with a vastly more detailed one coming later when I get around to it. But the crash is fixed, and that’s the important thing).
- Fixed a crash bug where trying to move diagonally off the world map, while on the local map scale, at an extreme end of the map (i.e. x or y coords of 0 or 249) would collapse the game, due to some deranged code that was 12+ years old.
- Made sure that entering some of the more obscure building sizes and shapes in an upper-class housing district do not sometimes lead to a freeze state.
- Pretty sure I’ve fixed a bug I didn’t understand, in which extraordinarily rare circumstances look lead a message to crash the game because the game couldn’t find the correct punctuation in it. No idea what caused it, but it’s sorted now.
- Made progress towards stopping a save file created during a crash from being dreadfully bugged, and making everything explode when you then reload it. This is really hard though, and very much stretching my Python competence, so… I’m doing my best with this one. Of course, one day, we’ll just have no crashes. Easy.
- Fixed a graphical bug with how the corners of chests would sometimes appear.
- Fixed a crash bug with diamond masks currently not appearing at all – “diamond” masks now share the overall “octagon” shape (because the diamond option proved so intensely difficult to generate without it just looking weird and goofy).
- Items like hearts and thumbs and tokens of gratitude no longer have incomplete messages (e.g. “This was taken from…”, where the “…” should depict a name), and now simply describe their nature, but will get that additional information by 0.11.
- Pressing ‘m’ now just brings up the messages window that shows you all the recent messages in the game, rather than doing quite a number of additional strange things.
- You can no longer crash the game by trying to categorize an item which doesn’t exist.
- Existing the item categorizing screen no longer leaves a little sliver of that UI still up on the screen, instead of correctly clearing it all away.
- The inventory windows no longer flash when you’ve dropped an item.
- Choosing the throw option for an item you’re wearing or wielding, and then deciding against throwing it after all, no longer unequips that item.
- Dropping an item you are wearing once again removes it from your inventory and “unwears” it correctly.
- Choosing the throw option, and then throwing or not throwing, both now correctly reprint an updated (or not) inventory (potentially including the item you were debating throwing) after the action is taken (or not).
- Destroying or throwing or otherwise removing the final item from an inventory category now correctly returns you to the inventory main screen, instead of leaving you in a weird-looking empty inventory that could sometimes produce bugs.
- Fixed a visual error where the tooltip for throwing items would just about survive, in part, after you exited the throwing option.
- A range of the rare item interactions that destroy the item without pressing the “destroy” option, or dropping or throwing it from your inventory – for example, the “use” function for a heart is eating the heart – now correctly update the screen as they should.
- The generated graphics for hearts no longer have a minor error in one corner in 1/10 hearts.
- Notes now correctly remove themselves from your inventory when they are thrown or dropped.
- Fixed a major issue with how octagonal masks were generating, due I think to overlapping variables between octagonal masks and other masks; this is now resolved.
- Punishment masks in nations that are really into torture no longer rarely result in a crash when the game can’t figure out where to put the blood.
- Fixed a crash bug where very rarely inside doors were not generated with he same door ID as the outside version of that door, and thus the game couldn’t work out what to do when the player passed through them.
- Fixed a rare – but not that rare -many-years-old freeze bug in upper-class housing districts. This had an amusing cause, in which servants were climbing to the top floor of a mansion, and then going to sleep at the foot of their master’s or mistress’s bed (i.e. not in the bed, but on the tile next to it). Er… whoops.
- Looking at the “order books” door in a library no longer results in a crash.
…and now, I’m pleased to say that 0.10.3 is out! Given that I plan a massive fanfare for 0.11 (most on this to follow, but it includes a competition that only one person will be able to win…!) I’m keeping 0.10.3 pretty quiet, especially as it’s largely loads of polishes and improvements from 0.10.2, lots of new features and graphics, and the foundations for a lot of stuff that’s coming in 0.11 but isn’t entirely finished yet. Nevertheless, I do invite you all – as the blog readers, the elite of the elite! – to check it out on the downloads page, and please send me any information about bugs (major or minor) you might encounter. It should be running far more smoothly now, and with a great deal more to look at.
In the coming weeks, then, the next blog post – on January 5th – will be my yearly round-up of games played and my thoughts on them, and then the post after that – on January 26th – will be the first post exploring quest generation, i.e. creating multiple riddles and clues (and leaving room for, in the future, aspects of quests that might involve combat, for example, or diplomacy, and still ensuring those can be “slotted” into the quests at a later date), with the goal of releasing 0.11 – with the first ever procedurally generated riddles in a game – in 2025. I’m so excited, friends! Thank you all, as ever, for coming along with me on this journey, and I hope you have a fantastic break :).
I like the description of 12+ year old code as deranged. Just how I’d describe most 12+ year old things. lol
I’m looking forwards to 5th January! Your breakdowns of a Year of Play are always a real blast to read through! Thanks for the continued updates and journey, Mark!
Hahahaha, thank you Conor! Super appreciate the comment, and I’m so glad you enjoy the annual reviews. And I think that’s a record for the fastest reply in URR blog history :)!
Oh no, hope I didn’t come across too keen! lol I literally just turned on my PC and saw you at the top of my RSS feed, so in I dove.
Not in the least – it pleases me immensely to know people have the blog on their RSS feeds!
Just swung back in to read some of the comments and noticed that the username and timestamp on comments gets smaller as they get chained. Not sure if you have any control over that, but it’s down to the use of em instead of something like px or rem. Seems like .8em on a top-level comment is roughly equivalent to 1.45rem, if you want it to not do the absolutely tiny text on these later comments. Only commenting about it because I’m a webdev and that means I’m a website narc- I come here for my of gamedev, not to critique CSS, I swear!
Conor – yeah, you’re right. I noticed that a while back, but I don’t know how to fix it. If you have an easy fix that someone who knows *literally nothing* about webdev / WordPress / etc can do (assume extreme incompetence, and then magnify that incompetence), please let me know…!
Of course! (Firstly, excuse me responding to the wrong comment, I have no ability to respond to the comments after this one for some reason.)
So, you mentioned WordPress so I’m going to assume that’s what this site is built on. I’ll also assume, seeing as you make these posts, that you have access to your wp-admin portal so you can see the site statistics, et cetera.
On the wp-admin/wp-login dashboard, hover ‘Appearance’ and click ‘Customize’ in the left menu- it should be about midway down. You should now be faced with your homepage and a thick left menu with about 5 options or so. The bottom one should say ‘Additional CSS’, click that one.
At the bottom of the Additional CSS input field, paste these three lines:
.content-area li.comment {
font-size: 1.45rem;
}
And that should sort you out! The only reason we’re doing it in there is because I don’t know what theme you’re using, otherwise there might be an option for this somewhere that I don’t know about. But either way, this is easier and poses no risks or issues, just make sure the pasted CSS isn’t nested in any other CSS.
For further info, (feel free to skip this, I’m just explaining a bit of CSS in the event you are interested/care/want to know what I’ve just told you to do) the reason we use the selector ‘.content-area li.comment’ to override the code on ‘.content-area li’ is because the more things you chain in a selector increases a thing called ‘specificity’, and by adding another level of specificity, then that means that if they update the theme or something happens to the website and they change the original code, our new addition will continue to override it because it’s more specific.
And the reason we add it to the bottom of the Additional CSS field is because CSS stands for Cascading Style Sheet, Cascading meaning the last written item in the Style Sheet is going to be the thing that will generally be priority. It cascades down the sheet. Essentially, it’s like the topmost code in a CSS file is the undercoat, the bottom most is the topcoat if we were to use a painting term (specificity and other tools can override this behaviour).
So if we add it to the top of the field and further down the exact same field is targetted with the same level of specificity, it will override our code.
One FINAL thing: the reason we changed font-size to 1.45rem. Currently, the code sets the commenter name and so on to 0.8em. The reason this is making everything progressively smaller is because ’em’ is a unit that pay attention to inheritance. As an example, imagine you have a container with some text in it and it’s sized to be 16px. Now inside that container you have another one with some text in it, and it sizes it’s text to be 0.8em. It’s essentially the same as saying 80%. So it’ll set the font-size to 80% of 16px (12.8px, so 13px). If there’s yet another container with 0.8em below that, it’ll set the font size to 80% of 80% of 16px (10.24px, so 10px). And so on. We set it to 1.45rem, rem is relative only to the root level font size. So if you set the entire site to 16px, setting an item to 1.45rem is the same as setting it to 23.2px. Why not just set it to 23.2px? Accessibility is a good reason. If people increase their browser font-size, rem will make it so that your entire site scales relative to that new base font size.
This info isn’t exhaustive, and some people might even argue some bits, but that’s a basic jist of what we’ve done and why. And that’s the point, so they can suck it. ๐
Conor, thank you! I have done as instructed and I do believe the issue is fixed. I think that’s another one for the “issue Mark left unfixed for 5+ years” list… but yeah, seriously, thanks so much. It’s far more pleasant now!
And I appreciate the information as well, actually – I can’t imagine I’m ever going to do any webdev stuff ever (feel free to come back to this comment when I inevitably make a URR ARG in 15 years time) but it’s always interesting to learn a little bit more coding logic, a little bit more about how other languages work and think, and so on. My own coding does continue to become
betterless bad as time goes by, and stuff like this is always helpful in a “how code thinks” sense, even if it’s not Python / roguelikey stuff. So yeah – big thanks for the fix, and for the info, too!My comment is a huge run-on sentence, so you might also want to add in this bit of css: .comment-content { white-space: pre-line; }. It won’t fix it entirely, but there will be better line-breaks in it. Whatever comment plugin you’re using my have settings you can change to enable whitespace, too.
You’re very welcome. The names are now legible! Hurray!
The version that runs is from your link on this page and the download on your website is named Ultima Ratio Regnum 0103 but the version of the program is Alpha v0.10.2 and the version in the text chat is 0.10.2. Just thought you should know the version that downloads seems to be an older one.
Hi Jano, thanks for the comment! That’s… weird, you’re right. There’s some mix up here. Let me check this and sort this out.
Edit: right version, wrong label. Reuploading now!
Edit: done :). Appreciate you spotting that!
I’ve just downloaded 0.10.3 and I’ve noticed something odd. The clothes entry of the guidebook – and only this entry – causes the game to crash, but only when I access the guidebook directly from the main menu. It’s perfectly fine when I access the guidebook once I’m in a world.
Kieran, thank you for spotting this one! How very annoying to have one so early on the game. Will fix and reupload ASAP :).
Hey Mark,
Just testing out the latest release, I usually download a version about once every year or so and it’s great to rediscover everything again. I love getting lost in the cities and just absorbing the culture. Still looking forward to books! (I did find a few but I couldn’t pick them up and I can’t remember if that’s by design. I figured the local church wouldn’t mind me flicking through their holy book but I suppose not)
Just a quick report – not sure what’s happened but just had a crash when walking into the arena. I reloaded and the crash didn’t happen. It seems like the game duplicated the guards stood just inside the building entrance as upon loading a second them there were only two whereas there seemed to be 4 upon entering the first time.
Looking forward to the next big release!
Kyle, thanks so much for the comment! Really appreciate the kind words – yep, books are coming soon, but probably not in 0.11, as I only have one year to do that and generating quests / riddles is going to be wildly complex already. They’re the objective after that, though. Thank you for reporting the arena bug! I’ve added it to the list for 0.10.3b :).
Been playing 0.10.3 on MacOS 15.2 using WINE64. What a great game this is becoming! It’s beautiful.
Are you aware of crashes when trying to ascend stairs in a tavern? I have been able to reproduce it twice, in two different worlds. Enter a tavern, go behind the bar, and attempt to ascend the stairs. Immediate crash. Interestingly enough, descending the stairs into the cellar below the tavern doesn’t cause a crash.
I would be more than happy to send the crash dump from WINE to you, but not sure if it would be helpful. Tomorrow I will do a test run on my Windows PC and see if I can reproduce there. That should rule out whether it’s something to do with WINE or the game code itself.
Scott, thank you so much for the comment! I really, really appreciate the kind words – thank you.
I was not aware of that crash, but thanks for spotting it. Even without heading into the code, I suspect I know the source. I’ve added it to the list for 0.10.3b, which I’ll put out before the end of the year. That would be great though, please do send, and double-check on Windows if you can!
“Punishment masks in nations that are really into torture no longer rarely result in a crash when the game canโt figure out where to put the blood.” — ha, this is such a quintessentially URR bug fix! Thanks for continuing to develop this game. I’ll look forward to your games roundup (always interesting to read) and especially the quest generation info in January. Until then, Merry Christmas & Happy Holidays!
Haha, thanks so much crowbar! I’m just finishing off the games round-up at the moment. And thanks as ever for being such a great contributor, and you too ๐ ๐
Hi, Mark!
I’ve played 0.10.3b a little, wanted to share what I’ve encountered.
I started a game with 23 Silver Roses, bought a book for 11, then traveled by road to a different country. I entered a city but didn’t have their currency to proceed into certain districts so I chose the exchange currencies option upon entering the city and for some reason I’ve had hundreds of coins!!! It was around 800-900, somewhere below a 1000, so I exchanged a bunch of them into local currency and entered the market excited of being able to buy everything in the city! Unfortunately game froze when I entered stables in a military district. Had to kill the process, console gave this error message:
File “URR0103b.py”, line 1104882, in
File “URR0103b.py”, line 1092532, in place_menu
File “URR0103b.py”, line 803998, in version_details
File “URR0103b.py”, line 1092316, in place_menu
File “URR0103b.py”, line 133305, in planet_gen
File “URR0103b.py”, line 116499, in world_menu
File “URR0103b.py”, line 1092508, in place_menu
File “URR0103b.py”, line 106256, in world_browser
File “URR0103b.py”, line 117118, in character_creation_1
File “URR0103b.py”, line 1087257, in new_new_game
File “URR0103b.py”, line 1090024, in new_play_game
File “URR0103b.py”, line 1000900, in keypresses
File “URR0103b.py”, line 78838, in quit_save
File “URR0103b.py”, line 79268, in quit_save2
File “URR0103b.py”, line 1092526, in place_menu
File “URR0103b.py”, line 804523, in options_menu
File “URR0103b.py”, line 1092514, in place_menu
File “URR0103b.py”, line 106146, in world_browser
File “URR0103b.py”, line 1085038, in new_load_game
File “URR0103b.py”, line 1090024, in new_play_game
File “URR0103b.py”, line 1008405, in keypresses
File “URR0103b.py”, line 818921, in player_action
File “URR0103b.py”, line 180596, in enter_door
File “URR0103b.py”, line 161715, in find_an_inside_target
File “tcod\_internal.py”, line 27, in wrapper
KeyboardInterrupt
[236] Failed to execute script URR0103b
When I loaded the savegame I’ve realized that it didn’t autosave and I was at the start in my manor but I was able to reproduce those steps and got the same huge amount of money – 989 held coins instead of the 12 left from the purchase (although I didn’t check if the coins appeared after the purchase of the book or upon entering the city, but I assume it’s the later). Interestingly the layout of the districts was different in this savegame and the books at the store were different but I’ve found exactly the same book as I bought before.
Later I’ve noticed that every time I entered a shop in that foreign country I’d have exactly 1000 coins of that country’s currency on me, so I really bought everything – the guns, the books, the whale oils, maps, tools, all of it.
Game also crashed when I tried to fast travel to a known location when I returned to my home civ (a manor):
Traceback (most recent call last):
File “URR0103b.py”, line 1104882, in
File “URR0103b.py”, line 1092514, in place_menu
File “URR0103b.py”, line 106146, in world_browser
File “URR0103b.py”, line 1085038, in new_load_game
File “URR0103b.py”, line 1090024, in new_play_game
File “URR0103b.py”, line 1012855, in keypresses
File “URR0103b.py”, line 81682, in put_in_important_npcs_who_should_be_there_b
ut_are_not_yet_there
RuntimeError: dictionary changed size during iteration
[204] Failed to execute script URR0103b
Interesting observation:
My manor is called Arcanethought Manor. When I traveled to the nearest city of the nearest civilization I’ve found in a noble district a house called Arcanethough Hall. Distant relatives?)
Another peculiarity were two intertwined trees – I was walking and looking around and suddenly spotted two different trees at the same spot! You can see the leaves are exactly at the same positions but the branches change when changing between the trees. I did enjoy imagining them as having intertwined trunks and it didn’t crash the game so just an observation.
Also can confirm that the game doesn’t crash when going upstairs in taverns.
Sitting on a bench and watching snowfall in URR was amazing, all of the new atmospheric effects and environmental features look incredible, looking forwards for the big 011 release to shoot vases, read books and dig up the treasures!
Screenshots:
https://imgur.com/a/8cH3rjq
Pavel, thank you so much for this detailed feedback. I can’t tell you how useful it is!
Firstly, re: the 1000 coins – whoops, that’s a playtesting thing that I’d left in. I’ll sort that out for 0.10.3c :). Stables = crash, that’s good to know, I’ll work on fixing that. Going to the manor, that’s a weird one that the dictionary size changed while being worked on… that’s really weird, I’ve seen that error in that function before but not for years. It’s possible that happened because you reloaded post-crash, but I’ll check it out. Also, manor names – mm, you’re right, too similar! I’ll fix that too. And re: trees, uhhhh, that’s also weird (another that should have been fixed ten years ago!). I’ll fix that one too. And thank you for the kind words Pavel, and the screenshots are super helpful as well. Thank you again, it really is *so* useful getting this kind of data, and happy new year!
Thank you for leaving this playtesting treat for us to enjoy in this version)
Always glad to help a little and happy new year to you as well!
Happy end of the year Mark, I hope everything will be fine for you and that you’re okay right now.
I’m amazed by the way URR is still lovingly developped by you for so many years.
I’m eager to read your annual review!
Hello Kasaris! Thanks so much for the message :). Things are going okay – though a pretty bizarre two weeks, actually – but I’m looking forward to this new year very much. Reviews are going live tomorrow!