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  (80 - 90 of 137)
Roh
Roh

Finally! I am a fan of fantasy and scifi myself. But the fact that someone is finally letting you play a game like this as a single individual sparks my interest. I've been trying to figure out why no one has done this already for a while now. Nice to see that someone actually IS!

Reply Good karma Bad karma+4 votes
dark_matter_mobius
dark_matter_mobius

I think it is the amount of effort to accomplish such a task vs how much sales will go up due to it. It is far better, for the bigger game companies, to replicate old results and just add new shiny features.

Indie is the true birthplace for innovation because you HAVE to stand out and you're free to develop how you want to despite how the thing will sell. This game likely won't appeal to the large population of casual gamers out there. Even if we gave it really shiny graphics. However, I think it'll hold a place in the heart of any hardcore/DF fan once it is finished.

Reply Good karma Bad karma+3 votes
Zollec
Zollec

Nicely wrote. I played the Version 0.2.0, and came here to write my congrats. But u hit the point. One more thing to say, I hope that URR will dont have a game killing bugs like DF.

Reply Good karma Bad karma+2 votes
UltimaRatioRegum Creator
UltimaRatioRegum

Thanks for congrats, again! Let me know what you think of 0.3 once it's out.

Reply Good karma+2 votes
UltimaRatioRegum Creator
UltimaRatioRegum

I absolutely agree. Indeed, maybe strangely, were I aiming to sell it I would be aiming a lot lower because I have to meet deadlines, put polish on the 'product' early, etc. The freedom to develop you mention is exactly what appeals to me, and exactly what I'm enjoying. And thanks - I hope it will :).

Reply Good karma+2 votes
UltimaRatioRegum Creator
UltimaRatioRegum

Thank you! Should be interesting to see how it all turns out...

Reply Good karma+2 votes
Soviet_Union
Soviet_Union

awww why so confusing :/

Reply Good karma Bad karma+2 votes
UltimaRatioRegum Creator
UltimaRatioRegum

Haha; which bit? Or the trees as a whole? They aren't THAT complex; I was thinking about something more like an FF Sphere Grid at first...

Reply Good karma+3 votes
Malcore
Malcore

I'm really liking the look of those skill trees. FFX is one of my favorite games and I immediately thought of its sphere grid. Always loved that system, and I know I'll love this one!

Reply Good karma Bad karma+2 votes
UltimaRatioRegum Creator
UltimaRatioRegum

Thanks! I always liked how imposing and interesting the sphere grids looked, and much depth you could see there was, and that was - on a much smaller scale - that look I was going for.

Reply Good karma+2 votes
dawixx
dawixx

It crashes very often. Mostly when you reach a place that game needs to load, after pressing Enter game crashes without log or error.This makes game almost unplayable. Another annoying crashes are ones during combat like:
"NameError: global name 'self' is not defined
Traceback (most recent call last):
File "alphatime.pyw", line 60819, in <module>
File "alphatime.pyw", line 53606, in place_menu
File "alphatime.pyw", line 41588, in options_menu
File "alphatime.pyw", line 53612, in place_menu"
Also Quitting doesn't work.

Reply Good karma Bad karma+1 vote
UltimaRatioRegum Creator
UltimaRatioRegum

You'll have to give more info than that on the crash; that doesn't show the actual crash. Also, I've never had issues on Loading screens, and nobody else has reported any. Does it still happen in 0.1.2 (just uploaded)? If so, I'll need more information, as nobody else is getting loading problems.

Reply Good karma+2 votes
dawixx
dawixx

Yes it still happens on 0.1.2. During this loading screens with tips and quotes and with ones with "Saving/loading chunks" or something like this. It happens like 10% of time. The combat crashes occured twice. Once while fighting a cyclop, i think i cut his leg off or at least broke ant then choosed to attack his torso, then game crashed and that was in the log. The second time was when i started the game near the dragon and he killed me. Instant crash after pressing Esc. Without logs or something. In this verision hovewer I've experienced this:
"Assertion failed!
Program: D:\alphatime.exe
File: src/console_c.c
Line: 220
Expression: dat != ((void *)0) &&(unsigned)(x) < (unsigned)dat -> w && (unsigned)(y) <(unsigned)dat -> h"
Also I've noticed there are far too many equipment just lying around in this new version.

Reply Good karma Bad karma+3 votes
UltimaRatioRegum Creator
UltimaRatioRegum

Ha, whoops! I forgot to change weapon spawning back (I'd only done that for testing purposes). I'll make a change at once...

Anyway - that's weird. So it crashes on both the Loading and the Saving/Loading Chunks screen. Do those leave a log? Anyway, I can't figure out why that might be, but thanks for letting me know, I'll look into it.

Reply Good karma+2 votes
dawixx
dawixx

No, they don't leave a log. Maybe my PC is just weird exception or maybe memory issue. Anyway It's nice that you are taking care about game, working on all those problems, replying to all that comments :)

Reply Good karma Bad karma+2 votes
UltimaRatioRegum Creator
UltimaRatioRegum

You're very welcome :). I've found the cause of the problem, and it'll be fixed for 0.1.3 on Monday!

Reply Good karma+3 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