A roguelike game inspired by the literature of Jorge Borges, Umberto Eco & Neal Stephenson, and the games Europa Universalis and Dark Souls. URR aims to explore several philosophical and sociological issues that both arose during the sixteenth and seventeenth century (when the game is approximately set), and in the present day, whilst almost being a deep, complex and highly challenging roguelike. It explores questions of philosophical idealism, cryptography, linguistics and the writing and formation of the historical record, and will challenge players to hopefully think in ways and about themes that are rarely touched upon by games.

  • View media
  • View media
  • View media
  • View media
  • View media
  • View media

Ladies and gentlemen, I am pleased beyond words to announce that, as far as I can tell,all the AI requirements for 0.8 are finished! Now, I must qualify this: there are a number of NPC classes that do not yet exist in the game, but those that do exist perform almost all their actions, although there are a small number of events currently omitted (rare or unique events like religious festivals and the like). What this means is that around 80% of all NPCs now do 98% of their schedules, and I think they work correctly no matter what kind of strange behaviour the player involves themselves in with regardless to moving, saving, loading, spawning/unspawning areas, and so forth. As a result, I am indeed putting out the interim playtesting/bug-finding release in the next few days! If you emailed me asking to be on the list, you should find an email in your inbox with details of how to download the playtesting release, and some things to look for, within the week. For the rest of this blog post, therefore, I’ll go over the final additions and refinements done in the last week, and then from next week onwards, we’ll finally be on to dialect and speech generation! I’m so excited. But, first…

Finishing Castles

On Tuesday, Wednesday and Thursday I finished off everything that still needed to be done for castles, and so as far as I can now tell, all the possible NPCs that can spawn in a castle all function correctly with their schedules, their placement, their tracking whether the castle map grid is spawned/unspawned and whether the castle itself is spawned/unspawned, and so on and so forth. One major issue was with sleeping and waking NPCs, and in a few particular contexts guards who should be spawned sleeping in beds were spawned sleeping at their posts, whilst those who should have been on guard duty at their posts were on guard duty in their beds! This got fixed by copying a line of code which should have applied to all guards, but was instead applying to around 90% of them thanks to a typo. I then ran into some issues with entering a castle after the 1080 time of the day (which has 1440 “ticks”, each being ten “turns”) which is when all the guard schedules should switch over; for some strange reasons, the knights guarding the throne room were struggling to spawn correctly and causing a crash, which had *something* to do with beds, but I wasn’t quite sure what.

The “filled” doors are doors to the outside whilst the hollow doors are within one building, so here we see various guards and conscripts going outside. It’s slightly jerky due to all the debug processes printing, but I think it still looks rather snazzy, and I love seeing such a large volume of people going about their day without the game crashing! (You’ll also see slaves and knights in these gifs also just going about their daily business in the castle)

Finalguards


And then immediately after, the guards/conscripts who were guarding outside come back inside and head to appropriate beds:

Finalguards2


Finalguards3


Here’s a cache guard switching with another cache guards whilst various other guards/knights/etc on the same timetable also move to wherever it is they need to go in order to switch over:

Cacheswitch

Guards on upper floors wouldn’t behave


As a result, here are some guards and a knight in one of the towers finding their way down correctly, rather than misbehaving terribly:

Down


I ran into a bug whereby I sometimes ran out of beds on certain generations, but only for knights and guards. It took quite some time to diagnose what was actually happening here, but it finally became apparent that when the smallest possible number of beds spawned in the corner/side towers (four per tower, so sixteen total) and the game was trying to place guards and knights in those towers, and there was a cache in the castle, there simply weren’t enough beds, so the NPCs were stuck trying to find a bed; this meant I had to specifically enable their ability to climb up towers to find another bed, but only specific staircases (because the main staircases are in the main castle, rather than in the towers)! The disconnected nature of the upper floors of castles is unique, and has basically required adding in quite a few exceptions to a lot of NPC behaviour which ordinarliy wouldn’t have to think about impossible paths on a given floor.

After that, though, things went quite smoothly with servants, slaves, and monks. Here we have a basement in this castle containing the castle’s slaves, who were all going about their day most of the time and then filed into the basement as time went by:

Allslaves


And monks sleeping at night in their quarters:

Sleep


I then turned my attention to priests, who – in castles – can fall into two categories. In religious nations you’ll find a single large chapel with a priest walking around inside, whilst in nations that have freedom of religion you’ll find a large number of small chapels, each with a priest (and altar, book, etc) of the appropriate religion. Here’s a priest wandering around a full-size chapel for a nation dominated by a particular religion (you’ll note various servants coming and going at the same time), and then various priests in smaller chapels in a castle in a nation with a plurality of religions:

Chapel


Priest


Priest2


And I must say there were some cool religions in this castle. Jaguars for the jaguar god!

Jaguar

Then, servants. They work the same as slaves (aside from being on the ground floor instead of underground), and these worked pretty much immediately thanks to all the code in place for slaves. I then moved onto torturers and jailers, who should be spawning in a different section of the basement, away from slave quarters (if slave quarters are present) and who keep to a very simple schedule. Sure enough, these folks seem to work perfectly well now too. Here’s one of them wandering around (I also really love how under-castle jails look, don’t you?).

Jailer


And heading to bed:

Jailhome


And here’s a torturer checking out the cells under their control (where unfortunate people will one day appear), and in a later version there will be various unpleasant things in the centre of this room, which will vary from nation to nation (so different nations have different methods of torture, if torture is their thing).

tort


And slave quarters and a dungeon in the basement of the same castle, with two different staircases. This is a rare-ish scenario, but meant I had to make absolutely sure that slaves returning to their quarters knew which staircase to take (servants, being on the ground floor instead of the basement, don’t have this issue)…

Jaguar

And that’s pretty much all the NPCs for castles! In future versions I may add in a couple of extra NPCs, like book-keepers for archives and the like, and also I need to add in concubines at an appropriate point – and the actual leaders themselves! – but for now, castles still appear very active when the player wanders around them, and that’s what matters for 0.8.

Final Check, Final Bugs

The last thing to do before sending out the playtesting release is to active all possible AI actors and spend a little while wandering around the world and trying to break them myself. I’ve now done so, and to my absolute delight, I have thus far discovered that everything seemed to be working correctly, although I do still harbour a tiny, tiny concern that certain NPCs in certain houses might not always appear in their houses at the correct times, depending on the player’s actions… but I couldn’t produce any bugs here, so that’s down to be super-secret super-elite playtesting team to figure out.

I’m also going to implement a few debug tools for my playtesters, so they can now look at a debug print-out which shows all the important NPCs in that area, where their homes are, what their current tasks and schedules and objectives are, and so forth. This, naturally, will not be in the final release, but I thought it was a pretty essential feature to maximize the potential of the interim playtesting beta.

Although I have ever confidence in my team, the complexity of all this stuff does mean it has to be possible that the final 0.8 release will go out with a few minor issues still in place. This would be disappointing, of course, but so long as there are no AI related crash bugs present when 0.8 hits the shelves, I’ll be content – it would obviously be even better if there were no AI bugs of any sort whatsoever, but I’m being realistic. Pathfinding and scheduling is massively complicated already and made even more complex by the variety of permutations of spawned/unspawned/loaded/saved areas the player can bring into existence or push into the background through their movements in the game world, and despite my best efforts, I’m sure it’s still possible for an NPC to duplicate, or to vanish into nonexistence, or something else of that sort. But we’ll see! Maybe the playtesting release will be remarkably stable and nobody will find any problems whatsoever.

HAAAAAAAAAAA.

Next Week

DIALECT GENERATION! For the next week or two I’ll be working on the underlying mechanics for generating different styles of speech for each in-game culture (in the average game we need to produce around 40 very different styles of speech, and ideally many tens of thousands possible across a long enough stretch of time). I’ve started to draft this in various forms over the last month or so, and so next week I’ll give you all a run-down of what I have in mind here. After that we’ll be onto designing the conversation screen! I’ve also been giving this a lot of thought, and I have some idea how this is going to play out, and how it will connect to the dialect/sentence generation stuff I’ve been quietly putting together and experimenting with in the background. See you in a week!

Castles and Bugs

Castles and Bugs

News 0 comments

We're within a week of the URR 0.8 interim playtesting release, after a full year's work, and here is a big update on castle AI and NPCs!

The Hopefully Penultimate AI Update for 0.8

The Hopefully Penultimate AI Update for 0.8

News 0 comments

Another AI update with major progress on castles and those who occupy them, other developments, and bug fixes!

The Antepenultimate AI Update for URR 0.8

The Antepenultimate AI Update for URR 0.8

News 4 comments

Another AI update - farmers, innkeeps, monks, and a huge host of bugs fixed!

More AI, of course!

More AI, of course!

News 6 comments

Possibly the penultimate AI update for Ultima Ratio Regum 0.8!

Post comment Comments  (60 - 70 of 143)
romenigcandido
romenigcandido

I must say that I created an account just to be able to follow the development of this game, and if you ever decide to charge for the game I'll be more than happy to pay. The game seems to be extremely complex, which is something that I love, not to mention that you make ASCII graphics into something beautiful to behold. My sincere congratulations!

Reply Good karma Bad karma+5 votes
UltimaRatioRegum Creator
UltimaRatioRegum

My sincere thanks! Very glad you like the concept and the graphics. As I speak, I'm finishing off the religious symbol generation (which there will be a blog entry on next week), which is itself another graphical route I'm exploring (along with flags). Let me know if you have any thoughts/ideas for the game in general, anyway :)

Reply Good karma+2 votes
romenigcandido
romenigcandido

I have some questions and ideas about Religions, but I'll wait for the next update to comment on the matter.

Reply Good karma Bad karma+2 votes
UltimaRatioRegum Creator
UltimaRatioRegum

Cool; I await them come Monday :).

Reply Good karma+2 votes
Arethrid
Arethrid

I am looking forward to see this project's final version :)

Reply Good karma Bad karma+2 votes
UltimaRatioRegum Creator
UltimaRatioRegum

Thanks :) - though I couldn't possibly say when that will be...

Reply Good karma+2 votes
taylan!
taylan!

Looks like a very ambitious game and highly interesting. I downloaded 0.2.1 and played around a bit. One thing that I noticed was the frequent loading pauses in the game (to load zones, I assume?), which can be bothersome after a while. Oh and the game crashed for some reason. Are you interested in crash logs to be emailed to you?

Reply Good karma Bad karma+2 votes
UltimaRatioRegum Creator
UltimaRatioRegum

Re: loading, yes, loading does happen often. However, it seems much more often because there is nothing "to do" yet, so to speak - if you're spending half an hour on a single map grid, the odd loading screen shouldn't be a trouble, whereas just running across a map grid is going to trigger another load screen very quickly. Yes, please, absolutely re: the crash log, and info about OS as well :)

Reply Good karma+2 votes
HereticUK
HereticUK

I would like to ask if possible about the language implementation in the game. What are your plans for this? How are you going to do this? As a student of languages it really interests me.

Reply Good karma Bad karma+2 votes
UltimaRatioRegum Creator
UltimaRatioRegum

Thanks for the question! Well, a longer explanation is going to go up on a blog entry in the future, but here's the brief one. The game produces two kinds of languages from scratch, either based around syllables (so it will generate a database of syllables for that language, like 'car' or 'ur' or 'ab' and piece them together into words) or based around chances of letters, so a language might have 'z' as its most common letter and 'h' as second, so it'll have a preference for those, and same goes for vowels. Each produces visually different languages. The ancient languages in the game do not use a Latin alphabet, but I'm not saying any more about those for a while! If an NPC says a word to you in another language, the game first checks if you know it - if so, it is translated - if not, it checks if a non-English word for that English word yet exists in that language's dictionary. If yes, it uses that word (so 'the' will always be translated the same), if no, it creates a word, checks that word is unique, then adds it to the dictionary. I know this means that all languages have the same grammar/syntax/whatever as English, which is far from true, but from a gameplay perspective I felt they had to keep the same structure to help the player make sense of half-translated sentences, and also because a system for the game recognizing adjectives, nouns, verbs etc and re-ordering them would be a) immensely complex, b) unnoticeable to a player looking at a non-translated language, and c) would prevent the player making informed guesses at unknown words. Shout with any more questions :)

Reply Good karma+2 votes
HereticUK
HereticUK

That is a very interesting way of generating languages... I shall be keeping an eye on this for sure!

So, will the player character have to learn new languages in order to communicate with others?

Reply Good karma Bad karma+2 votes
Post a comment

You are not logged in, your comment will be anonymous unless you join the community. Or sign in with your social account:

Icon
Ultima Ratio Regum
Platforms
Windows
Engine
Custom
Contact
Send Message
Release date
Game watch
Start tracking
Share
Style
Genre
Roguelike
Theme
Realism
Players
Single Player
Project
Indie
Boxart
Boxart
Twitter

Tweets will appear soon from

Embed Buttons
Link to Ultima Ratio Regum by selecting a button and using the embed code provided more...
Ultima Ratio Regum
Statistics
Last Update
Watchers
518 members
Articles
139