URR 0.6 released!

After seven months of development, I am extremely proud to announce the release of Ultima Ratio Regum 0.6! This release allows you to explore every single settlement you see on the map: every feudal city, hunter-gatherer encampment and nomadic fortress, in addition to the towns and farms dotted through the feudal lands, are free to explore. You can download it here, and read more detail about the release notes below.

This is the sixth of seven planned worldbuilding releases, which will conclude in March with 0.7′s creation of the interiors of every single building you see in this release, after which core gameplay will begin with 0.8′s NPC generation. Until then, look around the vast world, be sure to ‘l’ook at everything, consult the ‘E’ncyclopedia for information on the planet you’re exploring, and generally get an idea of the scale and complexity of the generated civilizations the game features.

- Explore massive and varied feudal cities (each able to support a population of ~300,000+), each with its own range of districts, architectural styles, and buildings influenced by the political and religious choices of its civilization.

- Discover nomadic fortresses in the desert, enclosed by walls and with an emphasis on strong defence and open-air markets.

- Farms and towns now also generate within the countryside, which in the future will be important stops on your travels, and sources of occasional markets and information.

- Hunter-gatherer civilizations now have settlements, laid out in complex geometric patterns, built from a range of materials, and containing cryptic shrines…

- A huge range of new ‘l’ook graphics for almost everything new in the game, and for a range of items/features/terrains which did not possess graphics in the past.

- Improved world map generation – now includes rare marshland areas, and a significantly overhauled polar biome, now featuring ice as well as snow.

- Introduction of strategic-layer movement around cities, a note on the pricing of city districts, and the unique coinage of each civilization, which will be activated in version 0.9.

- Significant expansion of variety of religion and civilization generation.

- A range of bug-fixes and optimizations on roads, settlement generation, coats of arms, line of sight, generating certain aspects of rivers, and more.

From this point onwards, developing URR will be my full-time occupation for approximately the next twelve months, and I will post in more detail about this next week. Until then, I hope you enjoy exploring this huge world, please report any bugs you might encounter and the crash log (either on this blog post or emailed to mark @ this domain) and here are some screenshots of the kind of variation you’ll find in an average generation:

06_1 06_3 06_4 06_2 06_5 06_6

Interim House-Moving Blog Update

So folks, I’m moving house today and the internet might not be up for the best part of a week, so I’m probably going to miss the update this weekend. Therefore, I’m going to do a very brief update now, and then seek to update on the 13th. The plan at this point is:

December 13th - release 0.6 or announce the start of the full-time development year! For 0.6 two major issues remain, and approximately twenty small issues, none of which should be too significant. I estimate two to three days of bugfixing to conclude. As for full-time development, I am technically considering it to be tomorrow onwards, but I still want to officially talk about it on the blog!

December 20th - Whichever of the above two things I didn’t do on the 13th.

December 27th - A summary of URR development of the last year, followed by…

January 3rd - … detailed plans for the coming year of URR development, and a few other projects too, which will also be a slightly more personal entry that I’ve been wanting to write for a while about my longer-term goals for the game, games academia, the next few years, blah blah.

January 10th – regular, weekly, dense and detailed URR updates resume, working on the great palaces and humble houses of 0.7!

I will have vague phone internet access from today until our internet is connected (hopefully the 11th) so I’ll check blog comments and emails as ever, but I might not be able to reply for at least a week. See you all, hopefully, for release on the 13th! In the mean time, here’s a very zoomed-out image of city for you, approximate population ~300,000. Pretty nice, right?

A City

City FAQ:

Q: Why so square?
A: A deliberate choice – districts in foreign cities cost cash to enter, and the selection of which districts to explore and which to ignore is part of the strategy-layer gameplay.

Q: What are the districts?
A: The dense districts are lower-class housing; the less dense are middle-class housing; the special district near the top-right corner is the city centre, containing embassies, a mint, a parliamentary building, etc; then the row of three special districts in the middle are upper-class housing (where the player will begin), a military district, and a market; the district near the bottom-left corner is a religious district with a range of religions represented, and the blank district is the castle, which is effectively an “interior”, so that is coming in 0.7.

Q: How big actually is this?
A: Each district is a single character on the world map, and 200×200 tiles, so the city is around 1000×1000 tiles across, and has enough housing to support approximately ~300,000 NPCs (coming in 0.8)!

Q: Will I be able to enter every single building?
A: In 0.6, no, in 0.7, yes, from 0.8 onwards, only if you have the right key.

More bugs than Chips Challenge level 82

This week I have been getting about six hours sleep a night (I’m an eight-hour person normally) and working like mad to both finish my doctorate, move house, and try to get 0.6 released. I’ve only been able to devote a single day to 0.6 whilst I was waiting for feedback on a chapter, but I managed to get a ton done. I don’t normally post long reports of bug fixes – though I will in future gameplay releases to denote balance changes and additions/removals and the like – but for this week’s entry I thought I’d put up a list of everything fixed this week. Some of these terms may be cryptic, but this is a direct copy-and-paste from my list. Obviously most days this blog is generally focused on what I’ve coded each week rather than how I’ve coded it, but I thought a little look into one of the URR text files that helps me keep track of everything might be amusing. Some are descriptions of the issue, some are descriptions of the solution, whilst others are just reminders to me, but here’s how I write the bugs that need fixing. In the mean time I’m aiming to release 0.6 on the 13th of December, assuming we actually have internet set up at the new place by then – if not, it’ll be a holiday present on the 20th!

 Shops cannot spawn in one-religion exclusion places
 Lakes cannot end in cities
 Prechoose military stuff
 Force a gate next to a market if possible
 Redo markets
 Force a gate by a graveyard, IF they can path to a road
 Floodfill from graveyards, ensure you can access them!
 Place special combat NPCs, one per fortress no matter what
 Cannot exclude desert if desert, water if colonies? (religion!)
 When adding extra embassies, lines to other capitals, choose closest
 Tundra/ice plants are lighter
 Shops in towns are fixed beforehand, markets gen right
 Towns are not spaced well enough in world gen
 Lava on town doors
 CROSS + ROADS AND DOORS (+ road on map, doesn't align with gates)
 River markets
 River religious
 River centres
 *ONE DOOR* manor house, save 1
 Some weird shit with torches, walls...
 No infinite district knowledge, no 'S', no prints
 Dead family, not always ornate
 Stick can be placed on water... (no sticks)
 Some one-road towns are tiny
 Graveyards, gates, like road teats
 STILL the bloody shift bug when i press space bar
 Travel through cities is showing thre X
 Roads are slighlty going over city wall corners in farms
 Coast, delta ocean is too high!! IT's not going down the HILL!
 Lookups for catapults
 Flags of nomads double-size
 Some issue in military with a large parade ground???
 Tried to enter mil district, loading issue (because i'd S before?)
 Viewing gate bricks are on your level
 Darken ice
 Loading ontop of city causes loading failure
 Finding entrance door MUST be a gate, and height z level
 Sometimes wall blurs bottom/top, sometimes not
 Space & Tab whilst in city brings up wrong thing
 Those tiny edge fronds of road on city centers
 Saved next to city, moved, was able to break through wall?
 The blue from city roads doesn't vanish on the left when you travel
 Roof of uilding in town only 2 over highest terrain, walked up!
 Going south into centre failed to find an entrace
 Officer flags
 Double doors vary based on which SIDE of the building they are on (vert only)
 No door on barracks special?
 Snowtrees, plants in tundra/ice for cities... (centers only?)
 City, travel, tab, @ and X
 Right side of stable door on bottom,no doorpicture (hard to recreate...)
 Archery targets (should be like trees)
 Catapults (should be like trees)
 A corner wall when otuside a city and corners should be city tower (failed)
 Cannot move into docks/castles *on foot*
 Move into district via travel, then diag, then enter, places you corner
 Barley colour
 Rye colour/lookup don't really match
 HUNTER GATHERER SHRINES
 Graveyard, remove some ice near the core, add snow within walls + frozen soil?
 Upper class gates
 Moving diagonally into non-city tile will spawn you on wall edge
 Plants are "on top" of trees on farms, odd
 If a graveyard, limit up/down hills around graveyard on map grid
 WE ARE HISTORY (ignore for now?)
 Shrine issue
 Print_Districts, "you are currently in" vs "this is a"; foreigner detail
 Serious relig issue .png
 Roads in religious districts reset to the proper height going through walls
 Embassy gate
 Military gate
 Archery lookup
 All signs for courts/galleries/etc
 Correct door wood
 Single water edge, city, save 9
 Pgup On player lookuyp 1/4 goes to blank when 'l' at player
 Lookup message does not repeat
 Wheat doesn't show
 Block off docks
 This is not a courtroom, it only PRETENDS

I will attempt to access the internet on the 6th via mobile and have an entry already written, so hopefully we won’t go a week without a post, though it might be a very short one, or a non-URR one. We’ll have to see what I have the time to throw together. We’re so damned close to full-time development it’s agonizing, but thank you all for sticking with me through the past couple of months (I know I’ve been saying this a lot recently but I mean it, and my PhD has dragged on beyond all sanity) and the slow development pace I’ve been forced into. The places URR will go in 2015 will be amazing.

The Kirov Metagame

Before poker, and before Counterstrike, it was Red Alert 2. I think my love of Command & Conquer is well-known by this point, but it reached its apex with RA2. Although not the most well-designed mechanically of the franchise and with some fairly severe balance issues, it was the first game in the franchise that brought with it extensive online matchmaking options and a competitive ladder. I dove into it. The 1v1 competitive ladder was “reset” each month (or each three months, I don’t recall perfectly) and I spent a lot of 2002 as the highest ranked player in the world, reaching the #1 spot at various months throughout the year. The game (including the expansion) consisted of three sides – the Allies, who were astoundingly strong, “Yuri” who was probably in abstract terms the most powerful side but difficult to micro correctly, and the Soviets, who were terrible. Both the Allies and Yuri had a range of extremely powerful special units and unique strategic options, whilst the Soviets had no strategic benefits specific to their side and were lumped with a range of powerful but extremely slow units, and no real long-range or support options. However, I played as the Soviets, and the epitome of this was a Soviet unit called the Kirov Airship.

In competitive play, these units were considered a joke. Although possessing the most powerful individual weapon in the game – bombs dropped directly beneath them, able to decimate any building in a few hits – and an impressive amount of health, they were painfully slow and had no way to defend themselves other than dropping bombs straight down to the ground directly below. However, I saw potential in them, and became (to the best of my knowledge) the first person to seriously use these units in high-level competitive play. This is the tale of the strategies I developed to actually get some value from this seemingly-useless unit, and an exploration of an interesting unit that could have significantly more value than its mediocre in-game stats would suggest.

Kirov1

The key to the strategies I developed is the fact that Kirovs have a feature unique to them among all vehicles. This unique feature is similar to how “superweapons” work. Each side has two superweapons which can only be constructed upon reaching the highest tech level. When you construct a superweapon, a timer appears in the bottom corner of the screen, and the fog of war around the superweapon is revealed to all players. This timer counts down from five minutes for the “lesser” superweapons, and ten minutes for the “greater” superweapons, and upon reaching zero – if the superweapon has not been destroyed by an enemy or sold by the player who built it – it can then be used. This immediate warning serves a number of purposes – it fractionally reduces the value of these extremely powerful weapons by warning the enemy about their existence, it gives the enemy a little bit of information about their opponent’s base, and it also serves to amplify and change up the pace of the game. For the player who constructs the superweapon, the overall strategy of their game shifts to defending that structure (unless it is intended as bait); for the player who is faced with an enemy superweapon, their strategy shifts to either destroying it, or constructing their base and placing their units in a manner that will minimize the eventual damage.

However, the game change when a Kirov is built is more subtle. It is not revealed on the map, and there is no timer noting when its attack will be ready (since it can attack as soon as it is built, like any unit). Instead, a sound plays – a voice clip that announces “Kirov Reporting!” to all players. All the enemy player knows is that a single Kirov has been built, and that – although desperately slow and somewhat unwieldy – this unit will single-handedly destroy their base if it is allowed to gain entry. Once the sound has played they know it is out there somewhere, moving to some location on the map, and needs to be dealt with. This voice clip was presumably implemented because the designers felt the Kirov was a sufficiently powerful unit to merit its own sound clip upon completion (something only unique infantry units also possess) and warn other players about what was coming their way. However, alerting players in this way allowed for a range of interesting tactical options and ways to exploit enemy play, all dependent upon the fact that one’s opponent is informed about the creation of the Kirov, but knows nothing of its movements.

Force the construction of AA

The construction of a Kirov necessitates the production of anti-air (AA) units or buildings for your opponent. Even if Kirov’s may be slow and obvious, their destructive power cannot be ignored. A Kirov costs $2000, and whilst technically even a single AA unit would be sufficient to bring one down given enough time, it would take far too long were the Kirov to make it to the enemy base; as such, most opponents I played would quickly spend significantly over $2000 on anti-air units to protect their base, giving me an immediate financial advantage (as well as the secret weapon of the Kirov). Even if I never did anything else with it, this forced investment on their part was often enough to make it a worthwhile purchase in almost any game I played simply due to a desire to immediately “counter” the Kirov threat.

A Kirov could therefore be used as a method to establish temporary financial superiority over an opponent who was forced into committing to significant amounts of otherwise-useless AA to counter the hypothetical threat. Additionally, this production of anti-air is likely to upset the production intentions of my opponent. There were many times when I found that an opponent was building up to a particular attack with a particular timing, but upon constructing a Kirov, it disrupted their original plan. This disruption seemed to be both in mechanic terms – they had to change what they were building – but also in mental/tactical terms, as it changed their expectations of the coming battle, made them rethink if they really wanted to attack immediately when there was an airship potentially bearing down on them, etc. Building a Kirov therefore forced them to commit both in-game money and real-world cognitive effort into the production of anti-aircraft weapons (and as we shall see the subsequent management of these weapons) and therefore, even if the Kirov was never used, its construction had significant positive effects by throwing a spanner into their plans, even if this was only to the extent of delaying them or encouraging a change in their build order. It was a small effort-investment in my part to force them to potentially rethink significant chunks of their strategy.

Destroy enemy AA

Kirov1

Once these AA units had been built, a strong secondary strategy was to set about destroying them. By destroying anti-air units in this way (units which are often weak to ground attack), I found I could force my enemy into building more anti-air units (which could then, once more, be destroyed!) simply to continue countering the potentially nonexistent threat of the looming Kirov that was somewhere on the map. It was a way to pressure my enemy into constantly spending money on anti-air units that might never see action and could easily be destroyed, rather on money to counter whatever other offensives I intended to launch. If they decided to stop spending on anti-air units and concentrate on the ground war – that, of course, was the moment to send in the Kirov. As part of the standard rock-paper-scissors game balance of many RTS games, AA units were generally highly vulnerable to ground attack and therefore open to attack, making this tactic all the more viable.

Force opponents to play differently

As well as forcing foes to “waste” money on the initial defence, and subsequently forcing them to continue wasting money on anti-air, the other significant impact of the Kirov was its use as an “abstract” weapon – something that may never be used, but scared my opponent for as long as the possibility existed. Some players would spend far more time scouting the map to prevent any easy paths of shroud for the Kirov to reach their base – although probably the optimal response, this still distracted them from other matters. Other players would also allow the threat of the Kirov to entirely change their gameplan. Many AA units in the game double as troop transports, and many players would commit to significant production of these units. If the Kirov appeared, they could defend, but if it didn’t, they had value as dual-use units. These units were however significantly weaker than “ground only” units, meaning that my opponents would reduce their offensive capability in order to account for the potential need for defence. A small number of players would consider the Kirov to be such a threat that they would overextend themselves and go out of their way to destroy it, potentially opening them up to easy counterattacks; an even smaller number would ignore the Kirov (considering it to be a joke unit), and they were naturally those who eventually got bombed by it.

In this way I would suggest that the production of a Kirov is akin to having a charged attack in a fighting game that is ready to be unleashed. The threat of the attack and the changes it forces into your opponent’s playstyle can be just as useful, if not more useful, than the attack itself. Although the Kirov was imagined by the developers as a purely offensive unit, it also had rare but surprising value in a defensive role due to the functioning of one of the game mechanics – how units automatically choose targets if no specific target is set. If attacked, a Kirov would easily soak up damage and distract enemy units from attacking your more important defensive units, and if not, the Kirov still survives to continue to attack. As with everything above, the balance for the Kirov remains between its threat and its use – getting this balance right and using this balance in a range of different ways unveiled the possibility for a surprisingly strong set of tactics with a seemingly worthless unit, and showed that units of this type can be used as much for their psychological as their mechanic value. If there was no use for the Kirov, keep it back as a threat; if the Kirov could safely attack, use it.

Concluding thoughts

SovThere were, however, limits to these ideas. Firstly, these tactics had limited applicability against an Allied player. The Allies possess a building which reveals the entire map to them, and thus any sly movements with the Kirov would be instantly revealed. However, a decent number of top players either played as the Soviets (mostly for their early-game rush abilities) or Yuri (for their seemingly-unstoppable mind control units and excellent late game options), and against such players the use of Kirovs in this way was supremely viable. Secondly, these tactics were better on some maps than others, and there were not many maps in the 1v1 ladder list (eight in total, if memory serves). Maps with oceans around them were ideal as few players took advantage of the naval game; and larger maps with no essential or strategically useful terrain at the edges were also useful for sneaking Kirovs past. Other maps, however, made it trickier to get them anywhere near my foe’s base before discovery. I therefore suspect that among the players who seriously competed for the highest ranks, some of those players who chose to play as the Allies may have never encountered any of the strategies I’ve described here, despite the many hundreds of games I played on the competitive ladder.

Official_Tournament_Map_A

A perfect map for Kirov use; plenty of ocean and an apparent emphasis on land combat.

Despite the strength of these strategies, I don’t think I ever built more than one Kirov. The returns from the strategies here diminished rapidly the more you built – the threat of a single Kirov was sufficient for almost everything described here, and whilst the rare actual base attack with the Kirov would surely be stronger with two, the presence of two created rapidly diminishing returns. Although in friendly games I experimented with multiple Kirovs, a single Kirov remained the best for competitive play – it allowed me to psych out my opponents, to push them towards non-optimal builds and spending, and if all else failed, gave me a pretty powerful unit that once or twice actually saw action, rather than just floating above the battlefield as an existential threat that may one day descend from the heavens to wreak havoc. This set of interrelated strategies for this mobile semi-superweapon were something that, to the best of my knowledge, I pioneered. I never saw Kirovs in competitive use at a high level before this, and whilst once or twice I did see them used towards the end of my time playing the competitive ladder, I think I hold a strong claim to being the developer of these metagame ideas. Without the sound effect the Kirov would be a more effective unit in traditional battles and more able to sneak up on your opponent, but with the sound effect, it became a strikingly effective form of psychological warfare and opened up a wealth of interesting tactical options.

New House and New Markets

Just a quick one this week. First off, I’ve finally found a place to move to, which is this lovely building:

Brew

The intention is to move on the 3rd/4th of December, so we can therefore say my full-time development year will be starting on the 5th of December! More information nearer the time. I’ve also been planning my travels in this coming year and there are potentially a lot of places I’m going to be visiting to give talks (including this year’s roguelike conference, unless it ends up in North America), so more on those as and when – I’ve loved meeting fans in the past, so it would be awesome if anyone was based near some of the places I’ll be travelling to.

More immediately, I’ve redone market districts. The playtesting I’ve been doing has shown a serious issue in the navigation of market districts above all others – it was very unclear what the boundaries of the district were, it took a long time to find all the shops, there wasn’t much else to look at within the districts, and (quite simply) there were just too many damned shops. Here’s what they used to look like:

As you can see, there’s a huge number of shops (the normal buildings) and warehouses (the enclosed/walled buildings), but it’s not clear if you’d have missed one or not without exploring the entire district because they are so spread out. That means optimal gameplay within a market district is uncovering the entire thing rather than having some idea where to go for the shop you wanted, and that’s just not on. Instead, I decided to blend market districts with some of the housing districts, to create something like the version below. In this model (there’s naturally a large number of variations) the markets and warehouses that service them are placed in a pattern in the middle of the district. All the patterns make it very clear when you walk around them when you have “exhausted” the shops that district has, and also, this new contained version allows me to simply have fewer shops in a market district. They can now spawn with 7-10 shops (towns have only 1-3 shops, heavily biased towards 1 or 2), and always spawn with a currency exchange (the diamond building) and an auction house (the flattened cross building).

New_SThese both look a lot better, and more importantly, play a lot better. As above, there’s never uncertainty once you’ve seen every shop there is to see, and the smaller number will make the variations in shops between market districts much more significant, as in the past most districts contained most shops, which doesn’t really fit the scarcity gameplay mechanics one is used to from roguelikes. Alas, that’s everything for this week, but we’re only about a fortnight to the release of the colossal 0.6. There’s a couple more graphics I need to make, and then it’s just onto bug fixing. Stay tuned!