The 10-Year Journey of Ultima Ratio Regum: The Culture Generating Roguelike

How do you design culture?

Society has taken many forms throughout millennia of human existence. Cultural norms that are established come from iteration, consensus and communication. It defines our traditions, our customs and values. Culture can influence our forms of technologies, our modes of communication, our artistic expression. Our cultures are defined by our religious beliefs, our philosophical stances, our political ideologies and so much more.

Could you design a culture by hand? How would you go about building it? And if you could, how would you then task a computer with designing unique cultures for you to explore all within the confines of a video game?

Today we explore the inner workings of Ultima Ratio Regum: a roguelike that has been the personal quest of one individual for almost 10 years. To build a game that can procedurally generate the most culturally detailed worlds possible. Comprised of societies with their own political and religious ideologies, their own dialects and material expressions. All in a vast open world for players to explore and interact with a durable power supply is much need it.

In late 2020 we sat down with the games creator, Dr Mark Johnson, as he reached a significant milestone with the release of version 0.8 of Ultima Ratio Regum. We discuss the complexities of the game he has designed, how someone with no knowledge of game development sought to create this unique experience and the highs and lows of dedicating ten years of his life, towards achieving his goals.

What is URR?

Ultima Ratio Regum is a roguelike that aspires to do something rather distinctive, to procedurally generate game worlds that are not just bespoke to that playthrough, but the backstory behind it, be it the notable figures, conflicts and their religious, political and other cultural practices are the backbone of the experience. Players are tasked with solving a mystery: a conspiracy hidden throughout history that requires players to find clues throughout the game worlds by visiting different cultures and exploring them, either by chatting with people in the cities or by exploring their religious altars or scouring the sarcophagi of their royal and military histories.

The game is an open-world comprised of a map of 250×250 tiles, each of these tiles itself breaks into 200×200 tile spaces to move around in. Resulting in a game world comprised of over 2.5 million tiles that is procedurally generated one time for each new playthrough of the game. Each world map is comprised of multiple nations, each nation is comprised of settlements. You can enter a city and see the districts built within it. Each district is separated into specific building types, you can then zoom in further and go into buildings, read books in libraries, admire pottery, visit the graves of the dead and talk with the locals to learn more about the world. And that’s just one city, with the game on average generating 18 cities per world map, each with its own civilisations, religions, cultural artefacts, and dialects.

But while the scale is already quite breathtaking, the most impressive facet of Ultima Ratio Regum is how procedural content generation is used to build each of these civilisations in smart interconnected ways. This approach, referred to as ‘qualitative procedural generation’ is built to support the idea that objects – even in video games – should not be created in isolation, but are instead related to one another.

“Fundamental to URR’s world-building processes and the creation of meaning within them, is the idea of “chains of meaning”. Nothing (or at least, very little) is intended to appear in the world that is only related to itself, or only related to one other element.”

[Mark Johnson, Procedural Generation in Games Design, Chapter 27]

What does this mean? Well, if you consider the flora and fauna systems that generate plants and wildlife in the open world, if a particular animal or plant is generated within a region, it can influence the possibility that others might appear alongside them. Conversely, it can also prevent specific species from appearing in that region, given that would contradict the biomes that are being generated.

This then goes one step further, if you visit the local town nearby, a healer may refer to a plant in that region as a remedy for specific ailments. It could influence their religion, with their beliefs or symbolism making reference to the topgraphy of the region. It could even influence language, as their dialects use bespoke phrases that not only refer to the world around them but are bespoke to that culture. It’s a game that is as grandiose as it is intimate, and it all stems from a procedural generation system with layers upon layers of complexity.

While Mark has spoken about the game on many occasions, be it at academic conferences, roguelike events, in textbooks and conference publications, there is also the very human element of trying to build a game of such scale and complexity and the challenges that present. URR started development late in the summer of 2011, the same year that Johnson started his Ph.D. at the University of York in the UK. However, unlike many of the other enthusiastic games academics cum developers, Johnson’s background isn’t in computer science, but rather, sociology. Johnson graduated with a Ph.D. in Science and Technology Studies in 2015 and has subsequently built a career as a games researcher, with a notable interest in the challenges and complexities faced by the ever-growing cultures and economies that surround esports and livestreaming. At the time of writing, Mark is a lecturer in digital cultures at the University of Sydney, in Australia.

And so here we are almost 10 years after the game began development and Ultima Ratio Regum v0.8 was released back in December of 2020, with some minor bug fix updates since. This update was a huge undertaking, with the game now including non-player characters in settlements, procedural face generation that gives variation based on cultural beliefs as well as genetic variations. A conversation system complete with bespoke dialects and mannerisms. Procedural clothing where the outfits of citizens will also fluctuate depending on their culture or religious affiliations. And much much more. It’s a hell of a patch, but it’s one that has taken much of the past 5 years to build. And so a couple of weeks beforehand, I sat down with Mark to talk not just about this patch, but the early beginnings of the game, its inner workings and all of the challenges – be they technical or personal – he has overcome along the way.

Early Beginnings

Mark Johnson: “I mean I would love to claim that I had this kind of massive procedural cathedral planned from day one but that would not be true. I believe what happened was I came across this tutorial for how to make a roguelike in Python and for some reason I thought ‘yeah, that sounds like fun’. And that was basically the entire thought process. I just thought ‘yeah sure why not?’. I had never programmed anything before this but I had modded a lot of games and so I had some sense of what I was doing on some level. I quickly kind of really enjoyed the sensation of being able to change things very easily and to quickly spin off into something very very different from the tutorial. I think at first I programmed in a system for having monsters judge how scared they are based on how many hostile monsters are near them, and that created this really intriguing kind of equilibrium where creatures would have kind of standoffs and would kind of approach and then back off and these sorts of things. That took me let’s say two hours to make and yet it created a kind of dynamic system which I’d never really seen in a roguelike. And so I think that kind of thing: that quite quickly and quite early I thought it’s actually not that hard to kind of create new stuff or to try new things.

And then I suppose after that there was about a six-month period where I guess I was making something extremely ‘Dwarf Fortress’-esque and quite soon I realised well a) we don’t need another Dwarf Fortress because we already have one and b) I realized that the roguelike world has a lot of sort of clone projects and I didn’t feel like the roguelike world needed another clone project. So then I sort of started to think about whether i could do something weird and different and that coincided with me beginning to get a little bit better with python and beginning to explore this kind of procedural graphics idea with ASCII art. And the first time I showed off some kind of PCG ASCII graphics the internet really liked it a lot. And that made me think ‘okay this is the thing my game will be’ because no one’s really done this. This is something which I find very rewarding to make and this is something other people seem to like and so that seemed to be a really good pairing to kind of build the game around. And then over time, the PCG graphics expanded into kind of other sorts of PCG stuff which most roguelikes don’t do like speech or religions and this type of stuff.”

And so from the very beginning, this notion of complex worlds with bespoke aesthetics and cultural artefacts began to take shape, but one of the things that hasalways stood out about URR is that Mark has always said in talks and publications that the game was intended as a 10-year project. But it’s not often you hear a game be described as such, or for someone to commit to such a prolonged development cycle. Saying to yourself in advance this is a 10-year game and you’re intent on making good on that ambition, sounds awfully pragmatic.

Mark Johnson: “I felt that was a realistic scope and, to be honest, if I hadn’t had some serious health issues it probably would have been actually. Because even with a lot of what I think we euphemistically called ‘challenges’. Even with a lot of challenges I’ve still got 80% of what I wanted done within the 10-year period.

But yeah I wasn’t really interested in making something smaller because, like I said, I’ve always been kind of attracted to the big, grand, mad piece of art I guess. Though once I discovered this kind of procedural graphics stuff and then to less extent the other kind of culture PCG stuff I felt like I really wanted to take that as far as I could take it basically. And I felt that wasn’t something which would be like a one-year dev cycle and then you release a game which has a few PCG swords or something. If I wanted to do it I had to really go for it and really PCG every graphic in the game, and how everyone talks and how everyone looks, and all this type of stuff.

I’ve often been criticized by online people who are less generously inclined as kind of always extending what the game should be. But the genuine truth is after about two years in the ambition didn’t really change much. From there it was just a matter of getting it done. But I think in hindsight the ‘how long is a piece of string’ issue definitely was there at the back of my head. Especially when you have like a really compelling, but pointless PCG system which you could work on. Or something really uncompelling but something really crucial. I definitely found it hard to choose option two when those choices arose.”

How Does URR Work?

Now from everything described thus far, Ultima Ratio Regum sounds horribly complex, but once you dig into the details, you discover that a lot of it is fundamentally quite simple and – perhaps even contrary to the creator’s own beliefs, the subject of some effective design decisions. As Johnson himself admits, he’s not a professional programmer. But while his technical skills have grown, the background knowledge required to build these culture simulators was much more fleshed out and established.

Mark Johnson: “Yeah I mean I don’t come from a techy background at all. There was a point where someone tried to teach me to program in BASIC on the ZX Spectrum when I was about five and I found it intensely frustrating – because I was five! I mean I think a lot of this also just stems from the fact that although I have made mods and so on this is the first game I’ve ever programmed. I learned python while making it. I knew less than nothing about how to write good code and I still don’t!

I come from a much more kind of political science-y, sociology-y, philosophy-y kind of background. My undergrad is in politics and sociology and my Ph.D. is in sociology. So yeah I had read a lot of this stuff for my own interest already. I had read like a lot of anthropology of religion, I’d read a lot of political science. All this type of stuff. As what URR was going to be coalesced I thought that was again kind of something quite new and fresh and different which I felt I could bring. Although PCG game makers and roguelike makers are an unusually PhD-heavy bunch of people, it tends to be of course Comp Sci or Mathematics PhDs. And so as someone from a very different background, again I felt that was something intriguing and different and new. So a lot of that I already had. There were definitely a few points where I would go and kind of lookup like really obscure bits of political social theory but for the most part, it was very much that stuff rather than any kind of tech knowledge which I started the project with.”

All of the generators in Ultima Ratio Regum follow a method typically referred to as a template-driven or constructive procedural generation. This means that a generator has a set of rules and even predefined pre-built chunks or samples from which to build from. Rather than having each item pre-built and ready to go, there are thousands of painstakingly handcrafted sets of features that can be used for specific generative systems and the pseudo-random number generator helps ensure variety. To take a popular example, the room tiles in Mossmouth’s Spelunky are all pre-built, but a lot of subsequent actions are applied to each room tile to change them up and make them feel more unique on each playthrough. This emphasis on variety still enables for enough diversity provided that the range of templates you work from is sufficiently broad.

So let’s take a look at a specific example in Ultima Ratio Regum: the creation of family crests. The crest or shield generator has a number of existing pre-built components from which it can then use to create the final piece. This includes pre-built templates on the design of the shield, each with its own rules on the layout, size and shape, and key features. Then there is the specific graphic or crest on the shield itself, whose availability is influenced by the type of shield design. Once we get to the design, there are a lot of options, we could have a Gargoyle, a skull, the sun or even a Snowflake to name but a handful of the dozens available. Each of these graphics carries specific traits, such as the types of properties used in the language of the family motto or what the family perceives as their strength and virtues, not to mention the ASCII art for the graphic itself. So as particular options are selected in the creation of the crest, it prevents specific properties from being used but also enables others.

This of course requires a lot of time and effort during development to ensure there is sufficient range in the properties visible. Even in this one example of family crests, there are 5 different shield designs and over 70 unique graphics that can be used. The design types can enable multiple graphics per shield and even the colours used when drawing the art to the screen is influenced by the decisions made along the way.

This process is largely replicated across all generators in the game, it’s just how the pre-built chunks are established and the rules for connecting them will vary. If we consider one of the more complicated systems from the 0.8 release, the procedural speech and dialogue systems for NPCs, the same rules apply, it’s just the rules and templates established are more nuanced.

Every character in URR can speak English, but each culture has its own dialect. To facilitate this, the dialect will have its own set of nouns. To achieve this, syllables are first created by lumping sets of letters together, and then names are crafted by multiple syllables stitched together. These names can be used for locations, objects and even people. The naming conventions can vary with each culture, given their stitch syllables in pairs or triplets. Furthermore, each culture can create its own set of greetings, insults and compliments. And when responding to questions prompted by the player, the sentences can vary in depth and complexity, based on an idea of how verbose that dialect is. So while some cultures may speak to you with rather flowery language, others may seem more curt or direct.

Maintaining Diversity

But the number of pre-built templates is only one critical part of ensuring a rich and diverse set of possible outcomes, it’s also about the probability distribution of how frequently these items appear. Do all the family crests run the risk of looking similar to one another? What are the odds that two cultures use markedly similar dialects? This is always a challenge with procedurally-generated games, given you want to maintain a sense of familiarity while continuing to provide novelty in each run. For Johnson, the intent was to go in the other direction. And ensure that every new culture feels bespoke and sufficiently different from all others that appear in your current playthrough.

Mark Johnson: “A lot of PCG games have kind of ‘flat’ generators and what I mean by that is maybe there’s 10 outcomes and each one happens one in ten times, that type of thing. Whereas it’s far more compelling to have say three outcomes which each happen 30% of the time and then 50 incredibly obscure ones which only happen 0.2% of the time.

For instance a game like ‘The Binding of Isaac’ does that quite well because it has a large number of extremely rare things which can happen and that makes it kind of quite compelling I think. Because it pretty much always gives you something unusual to latch on to when you’re doing a playthrough I guess is how I would put it. And so my thinking for URR was I didn’t want that. At the macro generation level there should be big differences between each world, between each culture, between each
whatever. So there are lots of hidden functions in the game which basically check if something that’s been created is too much like something else. And if it is then it spins it and re-rolls and tries it again. That I think is a really central part of how you generate stuff.

It kind of foregrounds difference it’s really obsessed with making things different. And to me, a good way of doing that is to have at the kind of macro-level a smaller number of really different templates which then bifurcate after that because it makes sure that things are are always quite different when the player encounters them. So it takes a lot of time, but I must say when you spend the day creating a procedural ASCII vase – as probably the only person who’s ever created a procedural ASCII vase – when you spend the day doing that and it looks bloody great by the end then you feel that was a day well spent. I have created a new piece of interesting generated content which is meaningfully different from everything else in this world.”

And when you start laying out how many generators there are, you already begin to see the scale of this monumental task that Johnson offered unto himself. The actual final number is hard to tell, and Mark himself wasn’t entirely sure when I asked, but it means for every possible facet of the game, there is effectively a collection of pre-made, curated options for the generator to select from.

But regardless of the number, they vary in depth and complexity given the particular challenge they’re designed to tackle. Hence some generators, even those that are highly critical to the experience, can be very simple, while other seemingly innocuous elements to the player present massive challenges during development.

Now it’s safe to say that all of this sounds cool, but also still markedly formulaic. It’s not going to result in this plausible, sensible world that players experienence in URR. Which brings us to the next step of URRs generative process.

Returning to earlier when I discussed the dialect system, it’s much more complicated than I originally described. A given culture doesn’t just have its own naming convetions and set of common phrases, they also have their own unique forms of expression that reference aspects of their heritage. A NPC you speak to can discuss aspects of their political or religious ideologies, they can comment on a topic by relating it to local geography or wildlife, or by referencing a well worn story that is defined in their cultures history.

So it’s pulling from other parts of the established game world in order to build the dialect. This history, the geography, the political ideologies are already defined before the dialect is established. And this is the real secret behind Ultima Ratio Regum, the chains of meaning we described earlier are achieved by having some procedural generators read the output of other generators as use that as part of their own creative process.

Connections

Mark Johnson: “A lot of roguelikes have disconnected things, like you’ll have a floor on Nethack and one room contains a lake, and one room has a bunch of leprechauns, and one room has some lava, and one boom has a bunch of swords, and one room has a whatever. There’s no links there; it’s just a bunch of rooms picked at random. So I thought well what’s the kind of extreme antithesis of this? And the answer is connections: everything should be connected in some way.

So every concept should in some way link to every other concept. If someone’s from a culture where ravens are thought to be lucky, then the player rocks up with a shield with a raven on it, they should go ‘oh great shield, I like it!’. That to me felt extremely un-PCG and so seeing whether I could PCG a world that didn’t look like PCG seemed both like a cool challenge but also like a really good way to develop something new, something different and something which wasn’t just random rooms and so on.”

Each generator in Ultima Ratio Regum is designed to solve one specific task within the game. However, all of it connects to one another.

The real complexity of the game comes from the order in which generators operate and how the output of one system can influence another. For example, while the generator that handles the creation of the open world is largely unfetted and allowed to build on its own, the generator that names locations uses the open world data to guide its decision making process. Locations in the game world are all influenced by their local environment. Hence, if you live in a snowy tundra, the name of the location will pull on this motif. Same if it’s in a desert, a forest, a jungle, a swamp, each of these locations will influence the names of the towns and villages generated.

But it doesn’t stop there, the location is a piece of information that is fed into even more systems down the line. Crests and cultural symbols and even the designs of furniture such as vases and chairs may refer to local flora or fauna (which will also have been influenced by the local environment). The selected political and religions ideologies can be heavily influenced by where in the world that culture exists. And of course the aforementioned dialogue system pulls from all of these elements in different ways.

And as all of this continues to spiral outwards, each generator has the potential to influence the outcome of another. And a lot of it requires careful consideration and management of potential outcomes with rules to catch edge cases that don’t succesfully align with the world being built or our collective understanding of specific cultural practices. For example, it doesn’t make sense for a civilisation that has embraced theocracy – meaning the politics of this region is driven by the belief that a specific god is their supreme authority – to subsequently embrace the ideas of religious freedom and allow people to establish their own religions. I mean, sure that might sound funny but in practice it would mean everyone is in charge, no order could be established and everything would be a mess, and that detracts from the design goals of the game.

Scaling Up

With that emergent complexity in mind, it’s interesting to consider how easily the game could itself in a situation where as new generators are added, the number of new problems that emerge simply explodes, as undesirable outcomes emerge or weird stuff is generated that isn’t really within acceptable limits.

But the solution is actually down to a simple and straightforward approach by Johnson built around two rules:

  • First, once a generator is written, it doesn’t get rebuilt or refactored. Once it is written, it is done!
  • Secondly, when new generators are added, the execution order is not changed. If generator 34 is in development, then when it is finished, it becomes the 34th generator to run when a new world is built. It can’t be added in any earlier.

Hence a lot of thought is given to what generators are going to be made next, what existing generators they pull from and whether the output that generator creates is potentially going to influence something else that’s farther down on the to-do list.

Mark Johnson: “So i make sure to always be absolutely comprehensive on every generator I make. So there’s no way I will ever have to go back and, although i joked about this at the start, it is true i don’t remember how 90% of the generators in the game work. I haven’t a clue. They just output their thing and that’s that – and that’s fine.”

This markedly linear and irreversible nature of the existing generators, actually helps mitigate development woes down the line. Given a game of this magnitude could easily run another 10 years if systems were refactored or rebuilt as new ideas crept in. That said, it has led to some interesting quirks and hacks along the way.

Mark Johnson: “But then the second half of it is that sometimes I have had to do some fairly kind of hacky techniques to connect different generators. One which I’m not proud of, there’s two which both output graphics and, I have finished them both, if I wanted to link them. So rather than having them linked, basically one of them just looks at what character the other one printed on screen and then makes choices based on that. So it looks kind of purely at the console’s output rather than any part of the generator itself – which is truly shameful but now it’s out there in public! I guess the most crucial thing on some level is making sure that you put in a new generator at the right point. So everything new is always created after everything that I’ve already done so I never go back and put a new one between six and seven. Anything new always goes in at the end.

So what that also means is there’s a few points where to the player it looks like x generated y, but actually y generated x and then x is made in such ways to make it look like x created y. Because i did that one later than the other one but I couldn’t work out how to go back and and kind of fit it in. So yeah there’s an interesting number of hacky fixes and these sort of things in there.”

Reflecting on the Experience

Looking back on the ten years spent, like any long-term creative endeavours, there’s much of that experience to reflect on. But it’s not just in terms of the creative outputs, it’s also the very personal experience of the man behind it. Ultima Ratio Regum has developed a community of players and supporters who follow it, with roguelike fans following along with the development of each new release. Not to mention that the game itself has over 100,000 downloads over the 10 year period, with his personal website receiving millions of hits over the years as people log on to find out more about the game. Plus URR has also achieved prominence in game development communities – with Johnson delivering talks at roguelike events all around the world, not to mention the likes of procjam, nucl.ai and even GDC Europe. It’s an experience that has also had a profound personal impact on Mark’s life, but in some ways you might not expect. As mentioned earlier, Mark suffered severe health problems in the earlier years of development, and URR provided something of a coping mechanism as means to focus his energies on something productive.

Mark Johnson: “After about two years, so in late 2013 I became very ill. I nearly died and basically a large part of the work ethic both in URR and in my academic work was in essence, it was almost a sort of displacement activity. That if I worked on these productive projects then I wasn’t thinking about my own mortality and the fact that my life had just explored, basically. So in the real peak period of both programming and my academic output which is sort of 2014 until 2018 let’s say 2017/2018. In that peak period most of my time, I was posting weekly updates or at worst fortnightly updates. I was publishing like 10 papers a year or something insane and going to every conference I could find. So that was largely kind of what took me in that direction I think. And it worked on a kind of narrow metric of ‘is this continuing to get coding done?’. On that kind of narrow metric, it worked well.”

But as these projects linger, the pressure of continuing on and delivering on your goals can feel substantial – even if that pressure is brought on by your own aspirations. URR arose during what could be argued as a more streamlined and simpler period of Mark’s life while conducting his Ph.D. research was demanding, it is still a single attainable goal over several year periods and – speaking from experience – quite often other larger aspirational goals are still a far-flung idea. But of course, Johnson graduated from his Ph.D., and the larger concerns of moving on and building a career from that position became paramount. This led to a period as a postdoctoral researcher at the University of Alberta starting in 2017, followed by his position at the University of Sydney from 2019 until now, all of which in an area of specialism completely disparate from the game itself. And it can prove challenging to balance the needs of side projects against your larger career goals and the cognitive load that bears down on a person. As a result, burnout can arise all too easily or a lack of motivation as the original drive becomes lost in a sea of influences and expectations.

But while the project was effectively put on ice for over a year, the recent 0.8 release is a rekindling of the fires that drove Johnson to begin with, and while the question of whether URR ever reaches a 1.0 release is still an open one, its encouraging to see that Mark’s passions for his work have realigned in a healthier and more pragmatic form.

Mark Johnson: “Yeah I mean I basically stopped working on it from kind of mid-2018/early-2018 until around six months ago. And that was just because academia is quite a demanding career – as you know – and there were three factors: one was an intensification of my academic work. I wanted a tenured job with some research time, so that was one part of it. The second part of it was a recurrence of some ill health stuff. And the third part of it, not to pre-empt a future question, was that my motivations had become very extrinsic rather than intrinsic.

I was very much doing because I felt obliged rather than because I wanted to and that’s not really a good motivator. So the combo of career, health and change motivations was a pretty powerful combo to basically bring development around two and a half years ago. In general, my fans have been extraordinarily patient. It’s solely an internal thing, that just over time my motivation shifted, like I say, from intrinsic to extrinsic ones. My interest shifted from ‘I want to make a game’, ‘I want to make something new’, ‘I want to make new PCG things’, ‘I want to make a finished product’, well… ‘product’. All of these kinds of intrinsic things, over time, became less central to my motivation than people expect a blog post, people expect an update, people want to see new stuff and new content and people are excited. And I think this was intensified because during the mad ill-health period of 2013 and 2014, although they didn’t know it at the time, my fans were a bit part of what kept me going. And so I did feel a certain need to ‘repay’ that.

And so all of these things, like I said at the start, it was one of those things which happens so slowly you don’t notice it day by day. But then after a few years you look back and think ‘wow, this has changed completely’. And just one day in 2017 I realised, I no longer actually want to work on this. I’m only doing it because I feel I have to, because I feel I should. Because there are tens of thousands, if not six figures worth of people who have downloaded this game and there are many people who comment a lot. There’s always people on like the roguelike subreddit or the roguelikes Discord or the roguelikes thread on somethingawful. These sorts of places, there’s always people talking about it and always people saying ‘I wish there was a new version’. So over time I just felt obliged. But then once I realised I had come to feel obliged, I suddenly felt I just don’t want to do this anymore.

It’s not really accurate to say I did no URR for that two-year period. I did do some. There was always a good day or a good week where I felt like ‘yeah, let’s finish this system’ or ‘let’s bug fix this issue’ or something. But in general, there wasn’t really a lot of dev going on in that two year block. Yeah so, although people use the word ‘burnout’ a lot, I don’t think it was burnout in this particular case, because I have experienced burnout from my academic work and this was a different sensation. It wasn’t burnout, it was just a loss of motivation and while that is one component of burnout, I feel that burnout has several different facets. Whereas this sensation only had that one facet of ‘I just no longer feel motivated to do this’. And I felt really bad about it. This wracked me with guilt but I basically just promised myself that one day I would come back to it. And I’m proud and pleased to say that has turned out to be true. But I definitely needed that two-year break both to work on health stuff and to get a good academic post and to just renew my interest in having it finished.

I think if I kept going, I would have imploded in some way… yeah.”

Closing

And as our conversation concluded, Mark not only remarked on the changes in his life that had enabled his return to the project but also on the mistakes made along the way. Which might prove useful for others even if you don’t plan on spending 10 years making your passion project.

Mark Johnson: “Just like it was a confluence of different events or trends that took me away from it, it was a confluence of things that brought me back. It wasn’t just one thing. I went back to it partly because I had such a long gap that I felt motivated again. That was a big part, of course. But it was also that, in my academic career, I’m really trying to take on fewer projects right now. I’m trying to clear out my list of stuff to do.

This last year I’ve been doing 2/3 as many projects as I have for the last 5 years. So I have made a genuine and meaningful change: taking on fewer projects and finishing older projects. I was and still am in a period of just going back to old stuff and just get it done. Get it finished, and just move on. Also, because I think I was feeling a bit paralysed both in terms of game-making and in terms of my academic life because I had so many projects that were half-done rather than a small number that are being done, and a larger number that are finished. And you are nodding with appreciation and deep understanding I think!

And the third reason was unanticipated, but when I first booted it back up after a year and a half of no dev, I was really amazed by it. And to be super clear on this I’m not saying that in some kind of brag. “My God! I made the most AMAZING thing”. I’m not saying that. I’m just saying, I had forgotten how much work I had put into it. And I had forgotten what I had been able to create and I had forgot that it was quite interesting and quite good. When I first went back to it I thought ‘Y’know what, this is actually not bad. Let’s finish it.’

I’d think there’s a 25% chance I’ll do a 0.9. But if I do, it will be completely secret until it is done and then I will just release it one day. I’d say there’s a 50% chance at some point in my life I will work on some other, smaller, game. And there’s about a 25% chance I’ll just never make another game. It’s hard to say at this point where things will go from here. But I think those odds are roughly correct. 50% something else, 25% more URR, 25% I’m done with game making.

Looking back, I think I made three… ‘mistakes’ is too harsh but let’s go with that. Which was 1) having this be a one-person project, 2) writing this in Python rather than something easier like say GameMaker and making it public from day one. Those were the three mistakes I made. Because having it be a one-person project is a downside for many obvious reasons, and then in terms of Python, it’s not the hardest thing on earth to code in, but it’s not the easiest either. And for someone who’d never coded anything in their life, it might have been a good idea to start with something even easier perhaps. And then the third thing is that because I was public from day one, the risk of that eventual shift to extrinsic was there from day one. So if I do ever make a game again. It will be with lots of people, it will be in GameMaker (or something like that) and it will be secret until it is finished. And I think with those three options I have a realistic chance of making another game and finishing it as well.

But the thing I am proudest of is the fact that it’s still going. Is the fact that I taught myself to program and I managed to create this. It’s the fact that after a life-threatening event I was still able to keep going with it. It’s the fact that I am going to get 0.8 out. Yeah, it’s the fact in spite of, again not to sound self-pitying, but despite a tremendous amount of shit, it’s still going and it’s still pretty interesting.”

Ultima Ratio Regum continues to address its larger design goals with each new release, with every new update bringing new and exciting innovations that culturally enrich each procedurally generated world. Adding depth and complexity to every new settlement, their large political motivations, character interactions and behaviour, and even the most mundane of things such as a vase you find sitting on a random table.

It’s a celebration not just of the level of creativity you can achieve with procedural generation but proof that the chains of meaning that Johnson advocated for can result in ones that feel rich and complex. Perhaps most importantly, it’s a testimony to a creative endeavour that has survived for close to a decade and has developed an audience eager to try out every new release. Whether the final argument is ever delivered is still an open question, but one can safely say that the game has already made a fairly definitive statement.