- close to the center of the village,
- of the same type as the village,
- without danger,
- not on a mountain and
- with a danger-less animal or plant resource on them.
In the process, I've written a standalone (but slightly tricky to get running) program which you can use to set up a planet, populate it with resources, plonk down a civilization and let the game run for as long as you want without actually playing the game. Spoiler: it takes 43 hours, 49 minutes and 40 seconds for a village to grow to encompass an entire forest world, if the only resources are within the initial borders and there are no oceans :-) Filling the world with the pattern Superior Blueberry/Sup. StrawBerry/Sup. Blueberry speeds this up to 37 hours and a bit. The best you can hope for, under absurdly optimal conditions, in 2 hours is a city 27 squares large.
I'll only explain what I discovered here, the program (such as it is) can be found here, but I won't help you set up Visual Studio :-)
Anyway, on to the juicy details!
(I'm going to assume the danger levels are either tranquil or the first level, otherwise borders could theoretically shrink, and that makes the explanation more difficult. In normal play this should most often be the case)
A village has so-called 'reach points', these get increased every 5 seconds by 0.025 points (so a full point every 200 seconds). Also every 5 seconds, a village checks to see whether it can expand its borders. Each new tile has a buy cost, and if a village has enough reach points, it gets the tile (with a slight preference for expanding to the left - but I'm sure which that direction that actually is!). If it can't afford either tile, it just keeps accumulating reach points, so that when a bottled up village has one of it's neighbours destroyed, it can expand quickly.
Therefore, the most important thing is to figure out the buy cost of any neighbouring tile. Once you have that number, you can multiply by 200 seconds and you will know how long it takes to add that tile to the village.
The buy cost is computed as a product of two numbers, a bonus and a penalty.
The bonus starts at 1, is decreased by 0.3 if the tile has the same type as the village, and furthermore by 0.1 if the new tile has a plant or animal on it without any danger. Only stuff planted by the giants count, by the way.
The penalty starts at 0, is increased most importantly by 0.5 times the distance from the village (where I think the first tiles outside a new village count as 2 units away, i.e. count the number of tiles between the tile and the edge of the village). Then it is increased by 0.1 times the danger on the tile, and finally it is increased by 0.5 if the new tile is on a mountain. (Note that this means that it doesn't matter if you're growing your swamp village into a forest or an ocean!).
So in a formula:
Code: Select all
time to acquire tile = 200seconds * [1 - (0.3 if same type) - (0.1 if dangerless plant or animal)] * (0.5 * distance + 0.1 * danger on tile + (0.5 if mountain)
Any questions? I'll go playtest now, see how my predictions turn out :-)