First look at 0.6

As I’m away from tomorrow until the next weekend, this week’s update is a little shorter, and a little bit early for once. First off, thank you all for the awesome response to 0.5 – copies have been flying off the virtual shelves and I’ve got a lot of really supportive feedback, and some important bits of constructive criticism too. Since I don’t know the meaning of “resting on your laurels”, I have already started work on 0.6 and made big strides in generating many of the game’s settlements. I decided to start off with farms, and have created a system for generating farms of various sizes, with various crops and various interior dimensions. Farms are obviously far from finished – I still need to get buildings generating, as well as making the trees in the orchards (currently just generic trees) – but it’s a solid start. I’m leaving the generating of buildings part until I have all the different types of settlement ready for building generation so that I can code it all in one fell-swoop; I expect taking account of all the required factors will end up being quite complex, so I’d like to do it all within a couple of coding days back-to-back.

TerrainTest

I’ve also begun to implement some of the basic parts of town generation. It starts off by creating a network of roads appropriate to the type of road going through the town (if any – special cases for isolated towns have not yet been handled) and then spreading buildings along them. There will be a variety of rare and crucial buildings in towns – more on this in some later entry – and then a large amount of general housing and the like. For now, just for the sake of testing the system, the buildings are generating… as lava… but I’m sure you get the idea in the bottom image for how towns will end up looking. The town code as it stands now only took a little over a day and I’m amazed at how interesting these layouts are already looking. Once I start to add buildings to towns I’ll put up another update on that. I’ve started to work on generating architectural styles as well, and varying the materials that civilizations like to construct buildings from, but the next step for towns is basically the creation of a massive building database.

Towns

From this point onwards (once I’ve done the few additions to farms I need to do) I’ll be working on the non-building parts of other settlements. I’ve got some very interesting ideas for how hunter-gatherer settlements will generate, but I think I may work on graveyards next, or possibly nomadic fortresses. We’ll see. Either way, I have a train so catch to that’s everything for this week. Let me know what you think of these very early stages, and see you all in eight days.

Ultima Ratio Regum 0.5 Released!

With 3.5 months of development behind it (my fastest release to date), I present Ultima Ratio Regum v0.5! You can download it here. Here’s a summary of the major additions:

 

- History generation! The world now contains over a thousand years of history of conflicts, religions, settlements, colonies and more. Some categories such as discoveries and cults will be added to more in later versions. Although they are currently all shown at the start of the game, exploring and discovering these histories (and the gameplay/world information they provide) will later emerge into a central game mechanic.

- Enlarged world map! The world map is now 250×250 rather than 150×150, but due to various optimizations takes up less memory than the older version. This allows for far more room for everything the game needs, and with a larger world map I can start to think about various mechanics for exploring the world without it all opening up too quickly.

- Religion generation! The world is now populated by religions – monotheistic, polytheistic and spiritual/animist/shamanistic – some of which may spread between multiple civilizations. The game describes their entire pantheons in addition to (for feudal religions) what agendas they might wish their followers to pursue.

- Cities, towns, fortresses and settlements! The world map is now populated by the capital cities and smaller towns of feudal civilizations, the desert fortresses of nomads (between which their caravans will later roam) and the settlements of hunter-gatherer civilizations. These different types of civilization also have different types of flag and symbols associated with them. In the next version, 0.6, these population centers will be fully explorable.

- Coats of arms and families! Feudal civilizations now contain a number of noble houses, each of which has a procedurally generated coat of arms to go with it. The player is assigned to a non-ruling house in their civilization of choice, and house allegiance will be one of several “faction” alignments that offer both benefits and risks as the game progresses.

- Updated start/load screen! The start/load a game screen now displays a wealth of information about each save to allow you to easily browse the saves you may have, and also loads in a fraction of the time that was required in the past. You are also now given a choice of what civilization to follow, and whether to follow the lead religion in that civilization (if any).

- Policies! There are now a large number of “policies” that each civilization possesses, spread across eight different categories. These will act as passive boosts to the player’s abilities, skills and stats in various areas.

- Road generation! A network of roads now criss-crosses the parts of the world controlled by feudal civilizations, and also generate on the human-scale map (not just the world map).

Hope you all like it. Let me know any feedback you have, any bugs you might find (I think the release is bug-free, but there is only so much playtesting two people can do) and any other suggestions or feedback. In the next few weeks I’ll be talking quite a bit about the plans for URR this coming year which I’m rather excited about, so I invite you all to join me for that discussion in the near future. Hope you enjoy the release!

Ratcatdoge

Finishing up 0.5

We’re now just a week away from releasing version 0.5! This version sees the addition of feudal cities & towns, nomadic fortresses and hunter-gatherer settlements to the world map; the creation of colonies by civilizations so inclined; an encyclopedia function that tells you everything about the world you’ve so far learned; a number of generated in-game histories which hint towards NPCs, items and plot points of interest; several tens of thousands of possible family sigils along with family trees for important houses; distinct flags for each type of civilization, and symbols for religions and cults; and various other small fixes, tweaks, memory/speed optimizations, etc etc. This week’s entry is going to be a summary of what’s happened in the last week, then next week – on the 12th – I’ll be releasing 0.5!

First off, for those who didn’t see this on Facebook, Twitter or elsewhere, this week the game really surprised me for the first time in a while by producing this rather tremendous city upon a small island (with a single slum just on the outside) and only accessible by docks:

Islandia

This in turn raised several things I’ll need to take account of for the next release, 0.6, when I’ll be generating the interiors of cities, towns, fortresses and settlements! Which is – what if a city has no roads? Or what if a town is completely enclosed by mountains? I’ll need to have the game recognize that and ensure the former can only be accessed by docks, for example, or ensure a mountain pass is generated to access the latter. It shouldn’t be too tricky to do that, but I’m glad this brought those possibilities to my attention.

I’ve also updated the “choose a save” screen, so it now looks something like this. For this release it just lists every civilization, but in the future it will naturally only list those you have actually encountered:

Newsaveload

And now some other more general notes:

- There will only be three cults visible in the in-game histories for this release and in the encyclopedia; these are the cults that will relate to the three early-game areas. Others are being coded in the game but will remain hidden for the time being. Likewise, only certain languages will show up in the “discoveries” list, but this will expand as versions go on.

- Although you can view nomadic fortresses and hunter-gatherer settlements in the encyclopedia, there is (as of yet) not a lot of information about these. I’m still working on precisely how they’re going to be structured, so there will be more on that in the near future.

- The resources map has been changed to the “resources and trade” map which displays roads as well as mineral resources, and will later show naval trade routes, mountain passes, etc (passes will show on the normal map too, but they’ll just be highlighted on this one).

- I’ve adapted the ziggurats to feature the correct language – though in this version you can still auto-translate the clues – and I’ve also begun some work under-the-hood for displaying other languages, allowing you to keep track of your information on languages, etc.

And that’s pretty much everything. See you next week for 0.5′s release!

We Are History

This week I’ve been working on the in-game histories. These can be viewed in the encyclopedia, and can either be looked through in one long list or according to the category they fall into. As you can see from the pictures here, histories currently fall into eight categories – colonies, conflicts, cults, disasters (natural disasters, plagues, etc), discoveries (languages, technologies), individuals (rulers, important soldiers, religious figures, etc), religions and settlements (although the term “Settlement” is used in a specific term in the game to mean hunter-gatherer settlements, as opposed to feudal Cities and Towns and nomadic Fortresses, in this regard settlement just means all population centers). Each category has its own associated icon.

Hist1

All the histories you see here are procedurally generated to a greater or lesser extent. Some build upon archetypes that vary game-by-game, whilst others have a huge range of different sentences that build up into a coherent story. The above screenshot also showcases one important aspect of the histories – any NPC mentioned in a history who is still alive will spawn in game (NPCs will be spawning in a few releases time – we’re getting close!), any weapon mentioned will appear somewhere, any and every town/city will be on the map, and so forth. As well as giving hints towards the story and – I hope – just being generally interesting/varied tales to read, the histories will also highlight potential items, people or locations of interest. In later versions histories will only “unlock” in the encyclopedia once you reach a logical location – a city’s history will only appear once you discover it, the history of a language’s discovery when you find the appropriate book that records the initial research, etc. I’m still working on the precise triggers, but when you begin the game you’ll only start off with the history known to your civilization (and also histories from the perspective of your civilization). For this release, however, all histories will be visible except for cult histories (which will remain hidden), most discovery histories (because a lot of those hint towards hidden parts of the later game) and individual histories (because I’m still working on how those are going to function, and those may stay absent until NPCs are added a few releases down the line).

Hist2

So, what does all this mean for you, the player? Well, for starters, it means an early release! This is going to be my fastest release yet (surprising, given the first two months were very academia-heavy); I’m currently expecting to release – at the very latest – in the middle of April, thereby making this between a 3 and 3.5 month release, as opposed to my others which have ranged inconsistently between 4 and 6. This has come down to my general improvement as a programmer and also, in part, my attempts to “standardize” and optimize my coding practice a little more (thereby speeding up development times) in the lead-up to something I’ll be announcing soon after this release. As for 0.5, all that now remains is tidying up the encyclopedia a little bit then a whole range of small optimizations and bug-fixes for unusual situations that can occur in world-gen such as handling unusual angles were territories meet, speeding up the placement of roads, limiting the number of towns a civ can spawn, ensuring the game never runs out of feudal flags to generate, adding some more variety to religion names, etc etc. Within a week from now I would hope to have a build that is pretty much finished, assuming all goes according to plan. I’ve also worked on upgrading the “Choose a Save” page to give much more information about each world you might have saved, whilst at the same time hacking down saving and loading times even further (because those can never be hacked down enough), and on a rather snazzy new world gen screen that’s a great improvement over the old one. See you all next week, when I’ll be talking about Something Else.

Addendum: the blog title refers to a very witty British comedy from the early 2000s. I recommend it.

Religions and Cults

I’ve pretty much finished all the work on religions. These take three forms – monotheistic, polytheistic, and “spirits”, which is the under-the-hood classification for animist/shamanistic beliefs, ancestor worship, and so forth. Hunter-gatherer civilizations are highly biased towards the third category whilst feudal civilizations have a roughly equal chance of producing monotheistic and polytheistic religions. Nomadic civilizations, meanwhile, never have official state religions – made up as they are by peoples from a wide range of places, and given their fluidity as civilizations whose people are generally in near-constant transit, I decided it would be more interesting if they were to often serve as “hubs” where large numbers of religions might be represented, as opposed to their feudal equivalents who may be more restrictive in the religions they’ll allow.

Rel1

As in the above image, feudal religions have agendas and rewards. I have tried to design these so that you cannot build your game plan around pursuing them – since there will be an overarching “clock” in the game (not a food clock, something else) you will not be able to farm for the rewards that your religion offers, but rather these are things that in the process of playing you might be able to work towards and thereby gain the religion’s rewards. Many religions have agendas that you can pursue by exploring the world, getting access to multiple cities and the like, but carrying out one religion’s wishes may turn others against you. As with most good things in roguelikes, the religious agendas are meant to be a middle-ground between things you can plan for – “I’m going to focus my gameplan around doing X and Y that my religion wants” – coupled with things you cannot plan for, such as which religions might be close to you, which religion you start with, how easy or difficult its agendas will be to carry out, etc. Religions will be one “faction” you can assist, and gain rewards from, or not, depending on the situation and your preference.

Rel2

Religions can all now be viewed in the in-game encyclopedia once you’ve discovered that religion. Monotheistic and animist religions can fit all their information on one page, whilst you can use Tab to cycle through the gods in polytheistic religions (as below). For monotheistic and polytheistic religions, the symbols or items that individual deities carry are dependent on what their worship entails; an agriculture god may have a sheaf of wheat, a war god an axe, and so on and so forth.

Rel3

The last part of religions I need to finish off for this release are the spread of religions, but I think this might need a reasonably sophisticated mechanic. In the end it would be interesting if you could view the spread of each religion on the world map (i.e. switch between religions, as many may overlap) so that you can see where in the world you might meet with a positive response, and where else you might meet with a rather less positive one. However, depending on how complex I want to make that system, that might get relegated to a future release or not. Currently hard to say. Some religions appreciate the player spreading their religion to other nations – setting up altars, encouraging nobles to allow the religion to exist within their borders, etc – so such data about the spread of religions will be important for that, though I still need to desire exactly how that mechanic is going to work.

I have also begun work on some of the hidden cults in the game – their names/functions will be fixed, though their locations, how you access them, who leads them etc, will be changed each game. I wonder what purpose they serve?

Rel4