1. Critias Empire
  2. News
  3. Devlog 1: Shifting Grounds

Devlog 1: Shifting Grounds

Rebalance, Replay


Back in April, Critias Empire was looking in pretty good shape. It felt polished and robust. I knew the game needed rebalancing, but I also had a nagging feeling this meant more than just adjusting the numbers. A round of intensive internal testing confirmed a number of my suspicions:

  • Disasters were a bit too random / arbitrary
  • Spamming quarries/pastures made the game too easy
  • The shrines next to wonders winning strategy removed the late-game challenge of keeping wonders alive
  • Population growth/decline was unintuitive and opaque
  • Wonders were not very wonderous. They didn't do anything


Moreover, these things contributed to the game being overall less replayable than I had hoped. To tackle this, I decided to take each problem on one at a time. The biggest was the disaster randomness and that's the subject for today's update. As you may have guessed by the title and the fact it's now the start of June, this took a looooong time and spawned multiple side quests along the way.

Terrain Regeneration


I was quite pleased with the old Critias Empire terrain generation algorithm. Every time there was a disaster, it would pick a new origin point somewhere near the centre of the map, then randomly calculate the likelihood of any tile/hex being land based on how far it was from that origin tile. The probability was non-linear - closer in, there would be a high chance of land, then medium distance out would be very low, followed by a decent chance furthest out towards the edge of the map. On top of this I laid a perlin noise pattern to add some randomness.



This generated an aesthetically pleasing effect - both the distribution of the land and the land rising and falling during disasters. However, whenever disaster struck, potentially every tile/hex could change, making it hard for players to plan. Equally no consideration was given to the balance of grassland vs mountains, and the distribution of bonus resources. In short, the randomness was the arbitrary, bad kind of randomness.

[h3]A New Land[/h3]

I won't say how this was solved exactly (as that would give the game away!). But the new terrain regeneration algorithm balances risk and reward for the player much better than before. Areas of the map that are more or less stable offer different bonus resources and so different decisions about what to build, where and when.

The new algorithm also reduces the difficulty early in the game, while ramping it up later on. This should give the game a less "survivalist" feel - as though the player is just hanging on until the one unlucky disaster pushes them over the edge into extinction - and instead give the player a feeling the Gods are toying with them, and that their patience has a limit!

[h3]Hot and Cold[/h3]

Previously, mountain = mines = stone, and grassland = farms = food, and sea was death. And that was about it. Whilst there was an elegant simplicity to the rock-paper-scissors of the three basic resources, (stone/food/prayers), and three basic terrain types (sea/mountain/grassland), it didn't lead to much variety, nor interesting decisions on where and what to build.



Rewriting the terrain algorithm threw up a chance to add in more terrain types. In particular, I wanted forests on tiles to be more than just aesthetic, and to actually have some meaning. Especially since they look different, and so players might expect them to act differently. As well, the map is awfully green and verdant for a game set in the ancient Mediterranean.

The result was something more subtle than I anticipated - Tiles now have an underlying terrain, plus a climate zone (alpine/temperate/arid) and vegetation zone (scrub/forest).



This not only makes the game look a bit more visually varied, but gives an extra axis to consider when deciding where to build - both between individual tiles, and more generally, to build north (cooler alpine) or south (arid, warmer).

[h3]Rivers of Tears[/h3]

The terrain plugin used for rendering the hexes/tiles in the game, while excellent in many ways, was not designed with the idea of parts or the whole map changing throughout the game. This is especially so when it comes to rivers. Since the plugin already had a river module that produced nice looking rivers, I wanted to keep rivers in the game just for aesthetic reasons. But like with the forests, players would not be unreasonable if they assumed the rivers affected gameplay as well. therefore I wanted to also rivers give bonuses or penalties, and so add further variety to the map.



Digging into the terrain plugin code and making rivers persist between disasters was not easy to say the least. Not helped by the many edge cases encountered along the way (what if the old river mouth becomes land after the disaster? Or the start point becomes sea?)

Fortunately I was able to work through these issues, but dealing with rivers alone took me many, many (....) many days.

[h3]Bronze Chains[/h3]

I also wanted to make building and production a bit more interesting, especially when it came to wonders. It had already been theoretically possible to make more complex production chains, but with the planned rebalancing I wanted to actually try this out and make sure it worked as expected.



Thus three new products were added to the game - Copper, Tin and Bronze - with the latter only being produced from the former two in a new "forge" type building. While I don't know if these will make it into the final game, I at least proved the idea (and code) worked for the future.

[h3]Spreadsheet Surprise[/h3]

In the course of rewriting the terrain algorithm and making the new resources, it also became clear I needed a better way to load balancing data into the game. Especially if I wanted to rapidly iterate ideas, requiring custom tools or making a new build of the game each time something needed changing and testing proved incredibly cumbersome.

So I took the chance to clean up the balancing spreadsheets and make them refreshable from inside the game. This could also represent the foundation needed to make the game moddable, though for now I don't want to invest too much more time going down that path.

[h3]What's Next?[/h3]

The shrines and spamming quarries problems should be relatively easy to fix. I will also re-write population growth/decline - population decline is how players lose the game, so it should at least be easy to understand! I will also need to get creative/inventive with wonders. Looking forward to trying out a bunch of ideas with them. Expect to hear all about the results of that, and more, in the next update!