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

A big URRpdate this week, as we hit around 80% completion on the scheduling and pathfinding for all the world’s important NPCs, and also add some smaller additions like banners, drawbridge chains, and finishing off the upper floors of castles. At this point you can now track NPCs leaving their home and going INSIDE buildings – and this again works regardless of what the player does, where the player is, what maps/buildings have thus far been spawned, etc. This is, to put it mildly, a landmark moment. It works completely for guards in mints, and banks (though I have yet to test arenas and archives, but those are the first tasks I’ll be working on checking this coming week). It’s always hard to tell how much code written to deal with Situation A will actually also apply to Situation B until you give it a shot, when the Situations in question are so complex and have so many variables, but I think this code should be entirely transferable. I hope.

Scheduling

So, it’s time for some gifs! Various gifs here of guards leaving districts, entering districts, entering buildings, leaving buildings, exchanging guard duty with others, etc. Guards now work correctly for all outside guards, and almost all inside guards work correctly, and any and every weird combination of movement across the map and the player’s actions also, as far as I can tell, work perfectly.

Comigin


Intobuliding


Bankswitch


intogate


Guardout


However, all of this has given rise to a very amusing bug. So, consider this: the world map is split into map grids, each of which is 200×200 tiles when spawned but naturally starts unspawned, and each map grid might contain a range of buildings. When the world is generated I can check exactly what buildings will be in each district, but naturally in most cases I don’t know exactly where each one will be placed – since that would entail spawning the entire map, on the human rather than world scale, at world gen! Which would be absurd and take probably the best part of an hour or something, possibly more (I’ve never tried it and don’t intend to).

Now, consider this. The player is in Map Grid A. In Map Grid B is a guard, who is due to leave their house and move into Map Grid A, to relieve another guard on guard duty. Map Grid B has never been spawned. How long, therefore, should this first action – moving from B to A – take? No matter how any map grid spawns, moving from any point of a map grid to an appropriate edge can never take more than 200 turns, and therefore all movement of this sort, in unspawned areas, takes 200 turns. Were it spawned, it might “actually” take 20 turns or 190, but we have no idea what the correct number would be until spawned, and since it hasn’t been spawned, I play it safe and assume 200.

With me so far? Splendid. Now, let’s say that the guard leaves their (unspawned and nonexistent) home at turn 1000, and therefore is due to leave Map Grid B and enter Map Grid A at 1200. Now, the player is sat in Map Grid A. If the player waits until turn 1190, and then enters Map Grid B, it will then spawn all the buildings and have the NPC do 190 turns of their action. However, what if this building is near the edge to Map Grid A? Let’s say they get there with 90 turns left. Ordinarily, they would go through, and then take 90 turns on the other side… but that would mean if the player immediately went back through, from the player’s perspective, upon returning to Map Grid B, it would appear as if in two turns an NPC had just appeared and teleported ninety tiles up the map grid! Therefore, if an NPC is just about to cross grids, and the player is about to enter that grid, it takes them to an earlier step in their movement so that the player, just entering Map Grid A, sees the NPC for a few turns before they go into Map Grid B. However, what this means, is that if the player keeps hopping back and forth, the NPC keeps getting pushed back and never actually moves through until the player goes somewhere else! It’s very silly. I’m not sure how to fix it yet, though it probably needs some kind of counter that notes if the NPC has already been pushed back once in its current district, and resets after moving to a new grid. But still: it’s an interesting example of the complexity of the system, and some of the weird situations that arise, and how I’ve tried fixing them.

To further illustrate this point, here are some examples of the scenarios that can arise:

  • Player is in a map grid and an NPC moves into that map grid, and should physically spawn.
  • Player moves into a map grid, and all stationary NPCs outside buildings (e.g. guards) must spawn.
  • Player moves into a map grid and another important NPC is moving in that map grid, and must spawn in the right place, an appropriate way along their schedule according to the timing of their schedule.
  • The player follows an NPC into a new grid, and the NPC should be x turns away from the edge of the grid once they are spawned, despite having been unspawned after leaving the player’s grid.
  • NPC enters unspawned building, player stays in grid, things must happen in building that doesn’t exist.
  • Player is in grid with unspawned building and NPCs within that unspawned building need to leave.
  • Player is in grid, NPC enters building, player leaves, NPC must be handle its behaviour in unspawned building and unspawned grid.
  • As above, but player enters building first, leaving a spawned but unloaded building in a spawned but unloaded grid.
  • Player enters building part-way through NPCs doing behaviours within it, causing it to spawn for the first time, and they should all be at the right part of their schedules…

Basically, consider every variable of 1) the player’s action, 2) spawned grids, 3) spawned buildings, and 4) important NPCs moving through all these, and I cannot begin to describe all the variations. Naturally in many cases a piece of code I wrote to resolve Scenario #14 also worked for Scenario #26, and so forth, but in many cases it didn’t and a massive amount of code had to be written to handle every possible variation and permutation. But I think a large part of it is now done.

Drawbridge Chains

What is says on the tin, really.

Chain

Next Week?

Dare I hope… AI pathfinding/scheduling… finished?!?!?!?!

Banners and Castles

Banners and Castles

News 4 comments

Banner generation and the upper floors of castles, alongside just a small AI update (although massive work is being done).

Scheduling Progress, Clothing Implementation, Counties, Jails, Harems

Scheduling Progress, Clothing Implementation, Counties, Jails, Harems

News 4 comments

Lots of AI and scheduling improvements, alongside a bunch of snazzy new graphics and generators.

Nomadic Clothing, Tribal Clothing, Class Variation

Nomadic Clothing, Tribal Clothing, Class Variation

News 2 comments

2016's first major URRpdate - finishing off procedural clothing generation in dramatic fashion!

Procedural Castle Generation

Procedural Castle Generation

News 2 comments

Procedural castle generation is finally implemented, and it has turned out extremely well.

Post comment Comments  (60 - 70 of 137)
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
MichaelSeph
MichaelSeph

Oh My Gosh O.o

Reply Good karma Bad karma+3 votes
UltimaRatioRegum Creator
UltimaRatioRegum

I apparently cannot just post :), but please nevertheless accept my appreciation for your comment!

Reply Good karma+2 votes
SteelMantle
SteelMantle

You do not know how excited I am for this game. I downloaded your 0.2.0 release and although there isn't a lot to do at the moment (alpha), the content I have read from your website is amazing. This is the type of game I've been wishing for a long time. It's a shame that this is a single player, but I know it's extremely hard to set up a multi-player option due to the turn-based movement.

But anyways, a humongous thanks from me for starting this project, I'll definately be tracking this game. Thank you!

Reply Good karma Bad karma+3 votes
UltimaRatioRegum Creator
UltimaRatioRegum

Thanks! Ditto; because I'm a one-man team, and releasing for free, I have that kind of freedom to just shovel everything I've ever wanted to see in a game, into the game! Multiplayer I did briefly consider, but rejected both for the reason you said, and because I know nothing about it technically. You're very welcome! Let me know what you think of 0.2.1, which I've just released - added resources, and you can export maps to .png now, too.

Reply Good karma+2 votes
GorillaOne
GorillaOne

Unsolicited advice from a fellow dev: Constraints are what make us the most creative, and produce the best games/movies/whatever. When you're free to just shovel anything in, it may be interesting in the moment, but not make a good game.

Good luck! I already like how you used ASCII - much more elegant than some other implementations.

Reply Good karma Bad karma+2 votes
UltimaRatioRegum Creator
UltimaRatioRegum

Very interesting, and I understand what you mean. I hope people would/will tell me if/when that happens, but at the same time, this is a *long* project. Anyway, thank you re: ASCII - glad you like it.

Reply Good 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
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
510 members
Articles
131