Over the last few days there’s been an interesting set of posts over at Brad Wardell’s blog and forums for Stardock related to their space 4x game, Galactic Civilizations III.
The first that caught my eye was a discussion on why performance sucked on certain map sizes.
One of the biggest challenges we have faced in developing Galactic Civilizations III has been map sizes and the memory they require.
On a number of occasions, we have tried to reduce the the largest map sizes down to improve performance and shrink memory requirements. And each time we have attempted to do that, we have ended up with a very vocal outcry of anger.
But large map sizes come with a significant memory cost to be aware of.
Galactic Civilizations, like its inspiration, Sid Meier’s Civilization, is a tile based game. Virtually every space strategy game is point based (you travel across the galaxy from point A to point B without going in-between). There’s a good reason why they do that: scale. If you want your space game to appear to have an epic scale, then you need to have stars that appear to be very far from one another. For Galactic Civilizations to pull off the same thing, as a tile based game, means a lot more tiles and a lot faster (late game) ships.
That’s right, the Ludicrous map size has 100 times more tiles than the largest Civilization VI map. More tiles isn’t better, it just means the maps are much bigger and more to the point, and the memory requirements go way up.
Until you get to HUGE map sizes, you don’t really need a crazy system to play Galactic Civilizations III. But what frequently happens is that people with perfectly good gaming systems will paly on the Ludicrous size and find it very slow. Why? Because you need 32GB of memory to play it well (or else you’ll be swapping out memory constantly to disk).
Even if you have enough memory, picture the pathfinding for 50 players (and GalCiv III supports 128 players) if there’s 650,000 tiles to potentially go through. Path finding is what most of your turn time gets consumed by.
Luckily, GalCiv III has a multicore AI which means that each pathfinding task can be distributed to your CPU. But again, even if you have 32GB of memory, if you have 50 players but only a 4 core processor, you’re going to be in for a world of hurt.
For optimal performance, you shouldn’t have more than 2 players per logical processor (usually 2X your cores). So if you have an 8 core machine with 16 logical threads, you’re probably fine with 32 players.
However, I frequently get saved games from players who have 4 core machines with 8GB of memory trying to play on these ludicrous maps with 100 players who have given us a negative review because “obviously” we have a memory leak.
Later, there was a blog post on the upcoming changes to planetary management and farming:
Galactic Civilizations III will be treating food a bit differently to reflect the awareness of just how important a large population is on your planets.
When Galactic Civilizations III first shipped, players built farms on planets and that would increase that planet’s population. Because it was so easy to increase your population, our conversion between population to production was: production = the square root of population.
When Galactic Civilizations III v2.0 came out, we changed this so that food became a global resource that was then consumed by cities. You could build as many farms as you wanted elsewhere, and then build cities on another planet that used that food. Because this made increasing population more challenging (requiring two tiles — a farming tile and a city tile), the formula was changed to production = population. This proved better on paper than in practice because on larger maps, players had no problem dedicating entire worlds just to farming, no matter how terrible the planet or how unrealistic that would be. This worked well for building other planets to huge populations, but it created production quantities that were balance breaking.
Throughout the v2.x series, we have tinkered with the formulas for what it takes to build a farm and what it takes to build a city, to the point where players were becoming frustrated when they discovered they didn’t have the right resource to build something.
For v3.0, we have created a much simpler – and we think, more intuitive – system. Good planets have arable land tiles. The better the planet, the more of these tiles it will have. You can choose to build farms on them or you can bulldoze them and build whatever you want. This reflects the fact that Ceti Alpha V (a class 6 world) is never going to have farms while even a wonderful planet like Earth (class 10) can’t have its entire surface farmed (and we do abstract farming to an extent in that your initial colony is self-sufficient in food).
Thus, population = production. Arable land produces food without you having to do anything at all, but you can also build them up with various levels of farms and use that surplus food elsewhere. Some worlds will have no arable land. Others will have several.
I’ve got my butt handed to me by the learning curve several times but still enjoying the game – it’s a lot of fun and far more flexible than the options I’ve had a chance to explore in just getting my head wrapped around it.