fairland: Fix island growth and correct its bias
grow_one_sector() picks a coastal start sector, then moves along the coast trying to add an adjacent sector to the island. It operates in spiking mode with a chance of @sp percent. When spiking, the neighbors with sea on both sides are preferred. For instance, when the area around the sector being considered looks like this - . - - . - . then the neighbor in direction j is preferred, because it has sea in directions u and n. No other neighbor is preferred. The start sector is the first coastal sector found in a linear search in growth order, starting at the last sector grown when spiking, or else at a random sector. This is new_try(). grow_one_sector() tries adding a neighbor in clockwise order, starting with a random direction. When spiking, it goes around the clock two times, trying only preferred sectors in the first round. When it can't add a neighbor, it moves to the next coastal sector with next_coast(). Taken together, this randomly picks one element from the set of pairs (S, D) where the sector in direction D off base sector S can be added to the island. How does the probability distribution look like? Bias: a sector's probability to be added to the island land increases with the number of base sectors it is adjacent to. This tends to fill in bays and lakes, which is fine. Bias: coastal sectors following runs of non-coastal ones are more likely to be picked as start sector. Perhaps less of an issue when spiking, where the pick is not intended to be random. Bias: a pair (S, D) is more likely to be picked when base sector S follows a run of coastal sectors that aren't base sectors, or direction D follows a a run of directions that don't permit growth. The impact of these two biases is not obvious. I suspect they are the reason behind the tendency of large islands to curve around obstacles in a counterclockwise direction. This can result in multiple islands wrapping around a central one like layers of an onion. Bug: the move along the coast is broken. next_coast() searches for the first adjacent sea in clockwise order, starting in direction g, then from there clockwise for a sector belonging to the island. Amazingly, this does move along the coast in a clockwise direction. It can get caught in a loop, though. Consider this island: - - - - - If we start at the central sector (marked 0), the search along the coast progresses like this: 1 - 0 2 - It reaches the central sector again after three moves (to 1, to 2, back to 0), and stops without having reached the two sectors on the left. If we start with the leftmost sector, the search loops: 0, 1, 2, 3, 1, ... 2 0 1 3 - grow_one_sector() ensures termination by giving up after 200 moves. Nuts! Because of this, grow_one_sector() can fail when it shouldn't, either because the search along the coast stops early, or goes into a loop, or simply because there's too much coast. The latter should not happen in common usage, where island sizes are in the tens, not the hundreds. Clean up this hot mess by rewriting grow_one_sector() to pick a sector adjacent to the island with a clearly defined probability, as follows. Use weighted random sampling to pick one sector from the set of possible adjacent sectors. When spiking, a sector's weight increases with number of adjacent sea sectors. This directs the growth away from land, resulting in spikes. When not spiking, the weight increases with the number of adjacent land sectors. This makes the island more rounded. To visit the adjacent sectors, grow_one_sector() iterates over the neighbors of all island sectors, skipping neighbors that have been visited already. This produces comparable results for low spike percentages. The weird onions are gone, though. Noticeable differences emerge as the spike percentage grows. Whereas the old one produces long snakes that tend to curve into themselves, the new one produces shorter spikes extending from a core, a bit like tentacles. Moreover, islands are more centered on their first sector now. The probability for coastal capitals is lower, in particular for moderate spike percentages. I consider this improvements. Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
parent
5aa3938b37
commit
73c103e9df
11 changed files with 4302 additions and 4304 deletions
|
@ -68,7 +68,7 @@ average size of additional islands (default \fIsc\fP/2)
|
||||||
.TP
|
.TP
|
||||||
.I sp
|
.I sp
|
||||||
land spikiness (in percent, default 10), low values result in rounded
|
land spikiness (in percent, default 10), low values result in rounded
|
||||||
islands, high values result in snakes
|
islands, high values result in tentacles
|
||||||
.TP
|
.TP
|
||||||
.I pm
|
.I pm
|
||||||
how much of each island is mountain (in percent, default 0)
|
how much of each island is mountain (in percent, default 0)
|
||||||
|
|
|
@ -45,12 +45,17 @@
|
||||||
*
|
*
|
||||||
* For all continents, add the first sector at the capital's location,
|
* For all continents, add the first sector at the capital's location,
|
||||||
* and the second right to it. These are the capital sectors. Then
|
* and the second right to it. These are the capital sectors. Then
|
||||||
* add one sector to each continent in turn, obeying the minimum
|
* add one sector to each continent in turn, until they have the
|
||||||
* distance between continents, until they have the specified size.
|
* specified size.
|
||||||
*
|
*
|
||||||
* The kind of shape they grow into is determined by the "spike
|
* Growth uses weighted random sampling to pick one sector from the
|
||||||
* percentage" --- the higher the spike, the more spindly they will
|
* set of adjacent sea sectors that aren't too close to another
|
||||||
* be. If you lower the spike, the continents will be more round.
|
* continent. Growth operates in spiking mode with a chance given by
|
||||||
|
* the spike percentage. When "spiking", a sector's weight increases
|
||||||
|
* with number of adjacent sea sectors. This directs the growth away
|
||||||
|
* from land, resulting in spikes. When not spiking, the weight
|
||||||
|
* increases with the number of adjacent land sectors. This makes the
|
||||||
|
* island more rounded.
|
||||||
*
|
*
|
||||||
* If growing fails due to lack of room, start over. If it fails too
|
* If growing fails due to lack of room, start over. If it fails too
|
||||||
* many times, give up and terminate unsuccessfully.
|
* many times, give up and terminate unsuccessfully.
|
||||||
|
@ -166,9 +171,6 @@ static const char *outfile = DEFAULT_OUTFILE_NAME;
|
||||||
|
|
||||||
/* these defines prevent infinite loops:
|
/* these defines prevent infinite loops:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define COAST_SEARCH_MAX 200 /* how many times do we look for a coast sector
|
|
||||||
when growing continents and islands */
|
|
||||||
#define DRIFT_BEFORE_CHECK ((WORLD_X + WORLD_Y)/2)
|
#define DRIFT_BEFORE_CHECK ((WORLD_X + WORLD_Y)/2)
|
||||||
#define DRIFT_MAX ((WORLD_X + WORLD_Y)*2)
|
#define DRIFT_MAX ((WORLD_X + WORLD_Y)*2)
|
||||||
#define MOUNTAIN_SEARCH_MAX 1000 /* how long do we try to place mountains */
|
#define MOUNTAIN_SEARCH_MAX 1000 /* how long do we try to place mountains */
|
||||||
|
@ -209,6 +211,14 @@ static unsigned char *adj_land;
|
||||||
*/
|
*/
|
||||||
static short *xzone;
|
static short *xzone;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set of sectors seen already
|
||||||
|
* Increment @cur_seen to empty the set of sectors seen, set
|
||||||
|
* seen[XYOFFSET(x, y)] to @cur_seen to add x,y to the set.
|
||||||
|
*/
|
||||||
|
static unsigned *seen;
|
||||||
|
static unsigned cur_seen;
|
||||||
|
|
||||||
static int **elev; /* elevation of the sectors */
|
static int **elev; /* elevation of the sectors */
|
||||||
static int **sectx, **secty; /* the sectors for each continent */
|
static int **sectx, **secty; /* the sectors for each continent */
|
||||||
static int **sectc; /* which sectors are on the coast? */
|
static int **sectc; /* which sectors are on the coast? */
|
||||||
|
@ -503,6 +513,7 @@ allocate_memory(void)
|
||||||
own = calloc(WORLD_X, sizeof(int *));
|
own = calloc(WORLD_X, sizeof(int *));
|
||||||
adj_land = malloc(WORLD_SZ() * sizeof(*adj_land));
|
adj_land = malloc(WORLD_SZ() * sizeof(*adj_land));
|
||||||
xzone = malloc(WORLD_SZ() * sizeof(*xzone));
|
xzone = malloc(WORLD_SZ() * sizeof(*xzone));
|
||||||
|
seen = calloc(WORLD_SZ(), sizeof(*seen));
|
||||||
elev = calloc(WORLD_X, sizeof(int *));
|
elev = calloc(WORLD_X, sizeof(int *));
|
||||||
for (i = 0; i < WORLD_X; ++i) {
|
for (i = 0; i < WORLD_X; ++i) {
|
||||||
own[i] = calloc(WORLD_Y, sizeof(int));
|
own[i] = calloc(WORLD_Y, sizeof(int));
|
||||||
|
@ -802,106 +813,68 @@ add_sector(int c, int x, int y)
|
||||||
adj_land_update(x, y);
|
adj_land_update(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int grow_weight(int c, int x, int y, int spike)
|
||||||
try_to_grow(int c, int newx, int newy)
|
|
||||||
{
|
{
|
||||||
if (!can_grow_at(c, newx, newy))
|
int n, b;
|
||||||
return 0;
|
|
||||||
|
|
||||||
add_sector(c, newx, newy);
|
/*
|
||||||
return 1;
|
* #Land neighbors is #bits set in adj_land[].
|
||||||
|
* Count them Brian Kernighan's way.
|
||||||
|
*/
|
||||||
|
n = 0;
|
||||||
|
for (b = adj_land[XYOFFSET(x, y)]; b; b &= b - 1)
|
||||||
|
n++;
|
||||||
|
assert(n > 0 && n < 7);
|
||||||
|
|
||||||
|
if (spike)
|
||||||
|
return (6 - n) * (6 - n);
|
||||||
|
|
||||||
|
return n * n * n;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Move along the coast in a clockwise direction.
|
|
||||||
*/
|
|
||||||
|
|
||||||
static void
|
|
||||||
next_coast(int c, int x, int y, int *xp, int *yp)
|
|
||||||
{
|
|
||||||
int i, nx, ny, wat = 0;
|
|
||||||
|
|
||||||
if (isecs[c] == 1) {
|
|
||||||
*xp = x;
|
|
||||||
*yp = y;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < 12; ++i) {
|
|
||||||
nx = new_x(x + dirx[i % 6]);
|
|
||||||
ny = new_y(y + diry[i % 6]);
|
|
||||||
if (own[nx][ny] == -1)
|
|
||||||
wat = 1;
|
|
||||||
if (wat && own[nx][ny] == c) {
|
|
||||||
*xp = nx;
|
|
||||||
*yp = ny;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Choose a sector to grow from
|
|
||||||
*/
|
|
||||||
|
|
||||||
static int
|
|
||||||
new_try(int c, int spike)
|
|
||||||
{
|
|
||||||
int secs = isecs[c];
|
|
||||||
int i, starti;
|
|
||||||
|
|
||||||
if (secs == 1) {
|
|
||||||
if (sectc[c][0])
|
|
||||||
return 0;
|
|
||||||
} else {
|
|
||||||
i = starti = (spike && sectc[c][secs - 1]) ? secs - 1 : roll0(secs);
|
|
||||||
do {
|
|
||||||
if (sectc[c][i])
|
|
||||||
return i;
|
|
||||||
i = (i + 1) % secs;
|
|
||||||
} while (i != starti);
|
|
||||||
assert(c >= nc);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Grow continent c by 1 sector
|
|
||||||
*/
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
grow_one_sector(int c)
|
grow_one_sector(int c)
|
||||||
{
|
{
|
||||||
int spike = roll0(100) < sp;
|
int spike = roll0(100) < sp;
|
||||||
int done, coast_search, try1, x, y, newx, newy, i, n, sx, sy;
|
int wsum, newx, newy, i, x, y, off, dir, nx, ny, noff, w;
|
||||||
|
|
||||||
if ((try1 = new_try(c, spike)) == -1)
|
assert(cur_seen < UINT_MAX);
|
||||||
|
cur_seen++;
|
||||||
|
wsum = 0;
|
||||||
|
newx = newy = -1;
|
||||||
|
|
||||||
|
for (i = 0; i < isecs[c]; i++) {
|
||||||
|
x = sectx[c][i];
|
||||||
|
y = secty[c][i];
|
||||||
|
off = XYOFFSET(x, y);
|
||||||
|
|
||||||
|
for (dir = DIR_FIRST; dir <= DIR_LAST; dir++) {
|
||||||
|
if (adj_land[off] & (1u << dir))
|
||||||
|
continue;
|
||||||
|
nx = new_x(x + diroff[dir][0]);
|
||||||
|
ny = new_y(y + diroff[dir][1]);
|
||||||
|
noff = XYOFFSET(nx, ny);
|
||||||
|
if (seen[noff] == cur_seen)
|
||||||
|
continue;
|
||||||
|
assert(seen[noff] < cur_seen);
|
||||||
|
seen[noff] = cur_seen;
|
||||||
|
if (!can_grow_at(c, nx, ny))
|
||||||
|
continue;
|
||||||
|
w = grow_weight(c, nx, ny, spike);
|
||||||
|
assert(wsum < INT_MAX - w);
|
||||||
|
wsum += w;
|
||||||
|
if (roll0(wsum) < w) {
|
||||||
|
newx = nx;
|
||||||
|
newy = ny;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!wsum)
|
||||||
return 0;
|
return 0;
|
||||||
x = sx = sectx[c][try1];
|
|
||||||
y = sy = secty[c][try1];
|
add_sector(c, newx, newy);
|
||||||
coast_search = 0;
|
return 1;
|
||||||
done = 0;
|
|
||||||
do {
|
|
||||||
if (spike) {
|
|
||||||
for (i = roll0(6), n = 0; n < 12 && !done; i = (i + 1) % 6, ++n) {
|
|
||||||
newx = new_x(x + dirx[i]);
|
|
||||||
newy = new_y(y + diry[i]);
|
|
||||||
if (n > 5 ||
|
|
||||||
(own[new_x(x+dirx[(i+5)%6])][new_y(y+diry[(i+5)%6])] == -1 &&
|
|
||||||
own[new_x(x+dirx[(i+1)%6])][new_y(y+diry[(i+1)%6])] == -1))
|
|
||||||
if (try_to_grow(c, newx, newy))
|
|
||||||
done = 1;
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
for (i = roll0(6), n = 0; n < 6 && !done; i = (i + 1) % 6, ++n) {
|
|
||||||
newx = new_x(x + dirx[i]);
|
|
||||||
newy = new_y(y + diry[i]);
|
|
||||||
if (try_to_grow(c, newx, newy))
|
|
||||||
done = 1;
|
|
||||||
}
|
|
||||||
next_coast(c, x, y, &x, &y);
|
|
||||||
++coast_search;
|
|
||||||
} while (!done && coast_search < COAST_SEARCH_MAX &&
|
|
||||||
(isecs[c] == 1 || x != sx || y != sy));
|
|
||||||
return done;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -919,11 +892,13 @@ grow_continents(void)
|
||||||
|
|
||||||
for (c = 0; c < nc; ++c) {
|
for (c = 0; c < nc; ++c) {
|
||||||
isecs[c] = 0;
|
isecs[c] = 0;
|
||||||
if (!try_to_grow(c, capx[c], capy[c])
|
if (!can_grow_at(c, capx[c], capy[c])
|
||||||
|| !try_to_grow(c, new_x(capx[c] + 2), capy[c])) {
|
|| !can_grow_at(c, new_x(capx[c] + 2), capy[c])) {
|
||||||
done = 0;
|
done = 0;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
add_sector(c, capx[c], capy[c]);
|
||||||
|
add_sector(c, new_x(capx[c] + 2), capy[c]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!done) {
|
if (!done) {
|
||||||
|
@ -933,7 +908,6 @@ grow_continents(void)
|
||||||
|
|
||||||
for (secs = 2; secs < sc && done; secs++) {
|
for (secs = 2; secs < sc && done; secs++) {
|
||||||
for (c = 0; c < nc; ++c) {
|
for (c = 0; c < nc; ++c) {
|
||||||
find_coast(c);
|
|
||||||
if (!grow_one_sector(c))
|
if (!grow_one_sector(c))
|
||||||
done = 0;
|
done = 0;
|
||||||
}
|
}
|
||||||
|
@ -1000,7 +974,6 @@ grow_islands(void)
|
||||||
|
|
||||||
isiz = roll(is) + roll0(is);
|
isiz = roll(is) + roll0(is);
|
||||||
for (secs = 1; secs < isiz; secs++) {
|
for (secs = 1; secs < isiz; secs++) {
|
||||||
find_coast(c);
|
|
||||||
if (!grow_one_sector(c)) {
|
if (!grow_one_sector(c)) {
|
||||||
stunted_islands++;
|
stunted_islands++;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -15,41 +15,41 @@ World dimensions: 64x32
|
||||||
seed is 1
|
seed is 1
|
||||||
placing capitals...
|
placing capitals...
|
||||||
growing continents...
|
growing continents...
|
||||||
growing islands: 1(7) 2(14) 3(13) 4(3) 5(16) 6(4) 7(17) 8(9) 9(11) 10(12) 11(13) 12(14) 13(17) 14(11) 15(9)
|
growing islands: 1(9) 2(11) 3(15) 4(9) 5(12) 6(9) 7(7) 8(11) 9(15) 10(13) 11(10) 12(10) 13(4) 14(11) 15(8)
|
||||||
elevating land...
|
elevating land...
|
||||||
writing to sectors file...
|
writing to sectors file...
|
||||||
|
|
||||||
% % % % . . . . . . . . . . . . . . . . . . . . . . % % . . . .
|
. . . . . % % % % . . . % % . . . . . % % % . % % . . . . . . .
|
||||||
% % % % . . . . . . . . . . . . . . . . . . . . . . % % . . . .
|
. . . . . % % . . . . % % . . . . . % % % . % % % % . . . . . .
|
||||||
. % % % . . . # # . . . . . . . . . . . . . . . . . . . . . . .
|
. . . . . . . . . # . . . . . . % % . . % % . % % % . . . . . .
|
||||||
% % % . . . # # . # . . . . . . . . . . . . . . . % % % . . . .
|
. . . . . . . # # # . # . . . . % % % . . . . . . . . . . . . .
|
||||||
. . . . . . # # c c # . . . . . . . . . % % % . . % % % % . % %
|
. . . . . . . # c c # # . . . . % % % % . . . . . . . . . . . .
|
||||||
. . . . . # # # # # # . . . . . . . . . % % . . . . % % . . % %
|
. . . . . . . # # # # # . . . . % % % . . . . . . . . . . . . .
|
||||||
. . . . . . . # # # # . . . . . % . . . % % % % . . . . . . . .
|
. . . . . . . . # # # # . . . . . . % . . . . . . . . . . . . .
|
||||||
. . . . . # # # # # . . . . . % % . . . % % . . . . . . . . . .
|
. . . . . . . # # # # . . . . . . . . . . . . . . . . . . . . .
|
||||||
. . % . . # # # . . . . . . . . . . . . . . . . . . . . . . . .
|
. . . . . . . . # # # # . . . . . % % . . . . % % . . . . . . .
|
||||||
% % % % . # # . . . . . . . . . . . . . . . . . . . . . . . . %
|
% . . . . . . . # # . . . . . . % % . . . . % % % . . . . . . .
|
||||||
. % % % . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
% . . . . . . . . # . . . . . . . % % . . . % % % . . . . . . %
|
||||||
% % % . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
% . . . . . . . . . . . . . . . % % . . . . . % % . . . . . % %
|
||||||
. . . . . . . . . . . . % % . . . . . . . . . . . . % . . . . .
|
% . . . . . . . . . . . . . . . . . . # . . . . . . . . . . % %
|
||||||
. . . . . . . . . . . . % % % . . . . . . . . . . % % . . . . .
|
. . . . . . . . . . . . . . . . . . # # # . . . . . . . . . . .
|
||||||
. . % % . . . . . . . . % % % % % . # # # # . . % % . . . . . .
|
% % . . . . . . . . . % . . . . . . . # # # . . . . . . . . . .
|
||||||
. % % . . . . . . . . . % % % % . . # # # # . % % % . . . . . .
|
% . . . . . . . . . % % . . . . . . # # # # . . . . . . . . . %
|
||||||
. % % % . . . . . . . . . % % . . . . # # # # . % % % . . . . .
|
% % . . . . . . . . % % . . . . . . # # # # # . . . . . . . . %
|
||||||
. % % . . # # # . . . . . . . . . . # a a # # . . . . % % % . .
|
% . . . . . . . . . % % . . . . . # # a a . . . . . . . . . % %
|
||||||
. . . . # # # # # . . . . . . . . . # # # # # # . % % % % % % .
|
% . # # . # . . . . . % % . . . . # # # # # . . . . . . . . % %
|
||||||
. . . # # # # # . . . . . . . . . # # # # # # . . . . % % % % .
|
. # # # # # # . . . . . . . . . . # # # # . . . . . % . . . % %
|
||||||
. . . # b b # # # . % % % . . . . . . # . . . . . . . . . . % .
|
. # # # b b # . . . % % % . . % . . # . . . . . % % % . . . . .
|
||||||
. . . # # # # # . % % % % % . . . . . . . . . . . . . . . . . .
|
. # # # # # . . . % % % . % % % % . . . . . . . % % % . . . . .
|
||||||
. . . . # # # # . . % % % % % . . . . . . . . . . . . . . . . .
|
. # # # # # # . . . % % % . % % % % . . . . . % % % % % . . . .
|
||||||
. . . . # # . . . . . % % % . % . . . . . . . . . . . . . . . .
|
. . . # # # . . . . % . . . . % % % . . . . . . . . . . . . . .
|
||||||
. . . . . . . . . . . . . % . % % . . . . . . . . . . . . . . .
|
. . . . # . . % % . . . . . . . % % . % % . . . . . . . . . . .
|
||||||
. . . . % % . . . . . . . . % % % . . % % % . . . . . . . . . .
|
. . . . . . . % % . . . . . . % . . . % % % % . . . . . . . . .
|
||||||
. . . % % % . . . . . . . % % % . . . . % % . . . . . . . . . .
|
. . . . . . . . . . . . . . . . . . . . % % % . . . . . . . . .
|
||||||
. . . % % % . . . . . . % % % % . . . % % . . . . . . . . . . .
|
. . . . . . . . . . . . . . . . . . . . % % . . . . . . . . . .
|
||||||
. . . % % % % . . . . . . . . . . . . . . . . . . . . . . . . .
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
. . . % % % % . . . . . . . . . . . . . . . . . . % % % . . . .
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
. . . % . . . . . . . . . . . . . . . . . . . . . % % % . . . .
|
. . . . . . % % . . . . . . % . . . . . . . . . . . . . . . . .
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . . % % % . . .
|
. . . . . % % % . . . . % % . . . . % % % . . . . . . . . . . .
|
||||||
|
|
||||||
A script for adding all the countries can be found in "sandbox/no-spike-newcap_script".
|
A script for adding all the countries can be found in "sandbox/no-spike-newcap_script".
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -15,41 +15,41 @@ World dimensions: 64x32
|
||||||
seed is 1
|
seed is 1
|
||||||
placing capitals...
|
placing capitals...
|
||||||
growing continents...
|
growing continents...
|
||||||
growing islands: 1(13) 2(1) 3(10) 4(5) 5(23)
|
growing islands: 1(11) 2(11) 3(7) 4(15) 5(7)
|
||||||
elevating land...
|
elevating land...
|
||||||
writing to sectors file...
|
writing to sectors file...
|
||||||
|
|
||||||
. . . . . . . . . . . . . . . . . . # # # . . . . . . . . . . .
|
. . . . . . . . . . . % . . . . . . . # # # # # . . . . . . . .
|
||||||
. . . . . . . . . . . . . . . . . . . . . . . . . % . . . . . .
|
. . . . . . . . . . % % . . . . . . . # # . . . . . . . . . . .
|
||||||
. . . # # # . . . . . . . . . . . . . . . . . . . . . . . % % .
|
. . . . . . . . . . % % % . . . . . . # # . . . . . . . . . . .
|
||||||
. . # # # # # . . . . . . . . . . . . . . . . . . . . % % % % .
|
. . . . # # # . . . . % . . . . . . . . . . . . . . . . . . . .
|
||||||
. . # # # # # # . . . . . . . . . . . . . . . . . . . . . % % %
|
. . . . # # # # . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
. . # # # e e # . . . . . . . . . . . . . . . . . . . . . . . %
|
. . . # # e e # # . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
. . . # # # # # . . . . . . . . . . . . . . . . . . . . . . . .
|
. . . # # # # # # # . . . . . . . . . . . . . . . . . . . . . .
|
||||||
. . # # # # # . . . . . . . . . . . # . . . . . . . . . . . . .
|
. . # # . # # # # . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
. . . . . . . . . . . . . . . . . . # # . . . . . . . . . . . .
|
. . . # . . # # # . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
. . . . . . . . . . . . . . . . . # # # # . . . . . . . . . . .
|
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||||
. . . . . . . . . . . . . . . . . # # # # . . . . . . . . . . .
|
. . . . . . . . . . . . . . . . . . . # . . . . . . . . . . . .
|
||||||
. . . . . . . . . . . . . . . . . # # # # . . . . . . . . . . .
|
. . . . . . . . . . . . . . . . . . # # # . . . . . . . . . . .
|
||||||
. . . . . . . . . . . . . . . . # # c c # . . . . . . . . . . .
|
. . . . . . . . . . . . . . . . . . c c # # # . . . . . . . . .
|
||||||
. . . . . . . . . . . . . . . . # # # # . . . . . . . . . . . .
|
. . . . . . . . . . . . . . . # # # # # # # # . . . . . . . . .
|
||||||
# . . . . . . . . . . . . . . . . # # # # . . . . . . . . . # .
|
. . . . . . . . . . % . . . . . # # # # # # # . . . . . . . . .
|
||||||
# . . . . . . . . . . . . . . . . # # . . . . . . . . . # # # #
|
. . . . . . . . % % % % . % % . # # # # # # . . % % . . # # # #
|
||||||
# # . . . . . . . . . . . . . . . . . . . . . . . . . . # # # #
|
. . . . . . . . % % % % . . % % . . . . . . . . . % % . # # # #
|
||||||
# # . . . . . . . . . . . . . . . . . . . . . . . . . . # a a #
|
. . . . . . . % % % % % . % % % . . . . . . . . . % % . # a a #
|
||||||
# # # . . . . . . # . . . % % . . . . . . . . . . . . . # # # #
|
. . . . . . . . . % . . . . % % % . . . . . . . . . % . # # # #
|
||||||
# . . . . . # . # # # # . % % . . . . . . . . . . . . . # . # #
|
. . . . . . . . . . # . . . % . . . . . . . . . . . . . # # # #
|
||||||
. . . . . . . # # # # # # . % % . . . . . . . . . . . . . . . .
|
. . . . . . . . . . # # . . . . . . . . . . . . . . . . . # # #
|
||||||
. . . . . . # # # # # # # . % % . . . . . . . . % % % . . . . .
|
. . % . . . . . # # # # . . . . . . . . . . . . . . . . # # # #
|
||||||
. . . . . . . # # d d # # . % % . . . . . . . . % % % % . . . .
|
. . % % % . . . . d d # . . . . . . . . . . . . . . . . . . # #
|
||||||
. . . . . . . . # # . . . % % . . . . . . . . % % % % . . . . .
|
. . % % % . . . # # # # . . . . . . . . . . . . . . . . . . # .
|
||||||
. . . . . . . . . # # . % % % % . . . . . . . . . % % . . . . .
|
. . . % % % . . # # # # # . . . . . . . . . . . . . . . . . . .
|
||||||
. . % . . . . . . # . % % % . . . . . # . . . . . . . . . . . .
|
. . . % . . . # # # # # # . . . . . . . . . . . . . . . . . . .
|
||||||
. . . % . . . . . . . . % % . . . . . # # . . . . . . . . . . .
|
. . . . . . . . . # # # # . . . . . . # . . . . . . . . . . . .
|
||||||
. . . % % . . . . . . . % . . . . # # # # . . . . . . . . . . .
|
. . . . . . . . . . # . . . . . . . # # # . . . . . . . . . . .
|
||||||
. . . . % . . . . . . . . % . . . # # # # # . . . . . . . . . .
|
. . . . . . . . . . . . . . . . . . # # # # . . . . . . . . . .
|
||||||
. . . . . . . . . . . . . . . . # # # # # # . . . . . . . . . .
|
. . . . . . . . . . . . . . . . . . # # # # . . . . . . . . . .
|
||||||
. . . . . . . . . . . . . . . . . # # # b b . . . . . . . . . .
|
. . . . . . . . . . . . . . . . . . . # b b # . . . . . . . . .
|
||||||
. . . . . . . . . . . . . . . . . # # # # . . . . . . . . . . .
|
. . . . . . . . . . . . . . . . . . # # # # # . . . . . . . . .
|
||||||
|
|
||||||
A script for adding all the countries can be found in "sandbox/plain-newcap_script".
|
A script for adding all the countries can be found in "sandbox/plain-newcap_script".
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -15,41 +15,41 @@ World dimensions: 64x32
|
||||||
seed is 1
|
seed is 1
|
||||||
placing capitals...
|
placing capitals...
|
||||||
growing continents...
|
growing continents...
|
||||||
growing islands: 1(25) 2(22) 3(23) 4(23) 5(19) 6(20) 7(20) 8(13)
|
growing islands: 1(13) 2(22) 3(29) 4(17) 5(30) 6(12) 7(27) 8(21)
|
||||||
elevating land...
|
elevating land...
|
||||||
writing to sectors file...
|
writing to sectors file...
|
||||||
|
|
||||||
. b b # # # . . . . . . . . . # . . . . . . . % % . . % . % % %
|
# b b # # . . . . . . . . % . % % % % % . % % . . . . . . . . .
|
||||||
. ^ # # # . . . . . . . . . # . . . . . . . . . % % . . . % % .
|
# # # # . . . . . . . . . % % % % ^ % % % % % % . . . . . # # #
|
||||||
# # ^ # . # . . . . . . . . . . . . . . . . . . . % % . . % % .
|
# # # # . . . . . . . . . . % % % % % ^ % . . . % ^ . . . . # #
|
||||||
# # # # # . . . . . . . . . . . . . . . . . . . . . . . . . % .
|
# # . . . . . . . . . . . . . . . % % % . . . % % % % % % . . #
|
||||||
# . # # . . . # # . . . . . . . . . . . . . . . . . . . . % % .
|
. ^ . % % % % . # . . . . . . . . . . . % . . . % % % ^ ^ % % .
|
||||||
# # # . . . # # . . . . . . . . . # . . . . . . . . . % % . . .
|
. . % % . . . # # . . . . . . . . # # . . . . % % % % % % % . .
|
||||||
. . # ^ . . # . # # # . . . . . . ^ # # . . # . . . . . . . . .
|
. % % % . # # # ^ # . . . # . . # # # # # # . . % ^ % % % % . #
|
||||||
. . . # . . ^ # # # # . # . . . . f f # # # . . . . . # # # . .
|
. % % . # # ^ # # . . . . # # # ^ f f . . # # . % % % % % . # .
|
||||||
. % . . . . . e e ^ ^ # # . % . . . # ^ # # # . . . . # # # # .
|
# . % % . # # e e # # . . . . # # ^ # . . . # . % % % % % . # #
|
||||||
% % % % . # # # # # # . . % % . # # ^ # # # # . . . # # # ^ # .
|
. % % % . . # ^ # # # # . . # ^ # # . . . . # . % % % % . # ^ #
|
||||||
. % % % . . . # # # # . % % % . . # . # # # # . . # # ^ # # # .
|
. ^ % % % . . # # . # # . . # # # . . . . . . . . . . % . # ^ #
|
||||||
% % % % . . . . . . . % % % % % . . . # # . . . . # # # h h ^ .
|
. % % % % . . # . . . . . . . . . . . . . . . . . . . . h h # #
|
||||||
. % % . . . . . . % . % % % . . % % . # . . . . . . # # # . . .
|
. ^ % % . % . . . . . . . . . . . . . . . . . . . . # # ^ # # #
|
||||||
^ % . . . . . . . % ^ ^ % . . . % . . . . . # . . # # . . . . .
|
. . % . . . . . . . . . . . . . . . . . . . . . . # # # . . # .
|
||||||
. . % . . . . . . % % % . . . . % . . . . # # # . . . # . . . .
|
. . . . . . . . . . . . . . . . . . . # . . . . . # . # . . # #
|
||||||
. . % . . . # . % . . . . . . . ^ . . . # # # . . . . . . . . .
|
. . . % . . . . . . . . . . . . . # # # # # # . . . . # . . . .
|
||||||
. . . % . . . # . . . . . . % . . % . . # # # # . . . . . . . .
|
% . . % % % . # . # # . . . . . . . . # # ^ # # . % ^ . . % % %
|
||||||
. . . . . . # . . . . % % % % % % . . # d d . . . . . . . . . .
|
% % % % . . # # # # . . . . . . . . # ^ d d # # . ^ % % % % % %
|
||||||
. . . . . . # . . # . . % . % . % . . # # ^ . . . . . . . . . .
|
% % ^ % . # # # # . . . . . . . . . # # # # # # # . % % % . . .
|
||||||
. . . . . # ^ # ^ . . . . % % % . . # ^ # # # . . . . . . . . .
|
. % % . . # ^ # . . . . . . . . . # . # . . . ^ . % % . . # . .
|
||||||
. . . . # # c c ^ # . . . . ^ . . . # # # # # . . . . . . . . .
|
. . . . # # c c . . . . . . . . . # . . . . . . # . % . ^ # # .
|
||||||
# . . . . # # # # # . . . . . . . . ^ . # # . . . . . # # . . #
|
. . . . . ^ # # . . . . . . . . . . . . . . . . . . . # # # . .
|
||||||
# . . # # # # # # # . % . # . # . % . . . . . . . . . . g g # #
|
. . . . . ^ # # . . . . . % . . . . . . . . . . . . . # g g # .
|
||||||
# . . # . . . # # . % . . # # . . ^ . . . . . . . . . . # ^ ^ #
|
. . . . . . # # . . . . % . . . . . . . . . . . . # # # # ^ # .
|
||||||
# . . . . . . . . . % % . . # # # . % . . . % % . . . . # # # #
|
. % % . . . . # # . . % % % . ^ # . . . . . . . . . # # ^ # # .
|
||||||
# . . . . . . . % ^ % . # # # . ^ . % % % % ^ % . . . . # ^ # #
|
. % % . . . . # # . % % . . . # . # # . . . . . . . # # . . # #
|
||||||
# . . . . . . . % . % % . . . # # . . % % % % % % . % % . # # #
|
. % ^ % . . . . . . % % . # # # # # # . . . . . . . . . . . # #
|
||||||
. . . . . . . % % % . . . . . # . # . % % % % % % % % % . . # .
|
. % % . . . . . . ^ % % . . . # # # # ^ . . . . . . . . # # . .
|
||||||
. . . . . . . . . . . . . # ^ # a a . % ^ % . % . % ^ % % % . #
|
. . . % % . . . . % % ^ % % . # a a # # # . . . . . . . . . . .
|
||||||
% . . . . . . . . . . . . ^ # # # . % % % % % . . % % % % % . .
|
. # . % % . . . % % % % % . # # # ^ # # . . . . . . . . . . . .
|
||||||
% . . . . . . . . . . . . . # # . . . % % ^ % % % % ^ % % ^ % %
|
^ # # . . . . . . . . . . . . . . # # . . . . . . . . . . . . .
|
||||||
. # . . . # . . . . . . . # # . . . . . . . % . % % % ^ % % % %
|
# ^ # # . . . . . . . . . . . % . . . . . . . . . . . . . . . .
|
||||||
|
|
||||||
A script for adding all the countries can be found in "sandbox/spike-newcap_script".
|
A script for adding all the countries can be found in "sandbox/spike-newcap_script".
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,17 +1,17 @@
|
||||||
add 1 1 1 p
|
add 1 1 1 p
|
||||||
newcap 1 53,11
|
newcap 1 62,16
|
||||||
add 2 2 2 p
|
add 2 2 2 p
|
||||||
newcap 2 45,31
|
newcap 2 5,5
|
||||||
add 3 3 3 p
|
add 3 3 3 p
|
||||||
newcap 3 8,4
|
newcap 3 45,7
|
||||||
add 4 4 4 p
|
add 4 4 4 p
|
||||||
newcap 4 29,7
|
newcap 4 51,27
|
||||||
add 5 5 5 p
|
add 5 5 5 p
|
||||||
newcap 5 17,17
|
newcap 5 12,24
|
||||||
add 6 6 6 p
|
add 6 6 6 p
|
||||||
newcap 6 38,18
|
newcap 6 22,12
|
||||||
add 7 7 7 p
|
add 7 7 7 p
|
||||||
newcap 7 62,24
|
newcap 7 29,31
|
||||||
add 8 8 8 p
|
add 8 8 8 p
|
||||||
newcap 8 24,28
|
newcap 8 38,18
|
||||||
add 9 visitor visitor v
|
add 9 visitor visitor v
|
||||||
|
|
|
@ -15,53 +15,78 @@ World dimensions: 64x32
|
||||||
seed is 1
|
seed is 1
|
||||||
placing capitals...
|
placing capitals...
|
||||||
growing continents...
|
growing continents...
|
||||||
Only managed to grow 32 out of 37 sectors.
|
Only managed to grow 36 out of 37 sectors.
|
||||||
|
|
||||||
try #2 (out of 10)...
|
try #2 (out of 10)...
|
||||||
placing capitals...
|
placing capitals...
|
||||||
growing continents...
|
growing continents...
|
||||||
Only managed to grow 30 out of 37 sectors.
|
Only managed to grow 32 out of 37 sectors.
|
||||||
|
|
||||||
try #3 (out of 10)...
|
try #3 (out of 10)...
|
||||||
placing capitals...
|
placing capitals...
|
||||||
growing continents...
|
growing continents...
|
||||||
growing islands: 1(5) 2(9) 3(11) 4(7) 5(11) 6(18) 7(17) 8(7) 9(10) 10(8) 11(6) 12(18) 13(7) 14(9) 15(1) 16(2) 17(2) 18(1)
|
Only managed to grow 30 out of 37 sectors.
|
||||||
No room for island #19
|
|
||||||
8 stunted islands
|
try #4 (out of 10)...
|
||||||
|
placing capitals...
|
||||||
|
growing continents...
|
||||||
|
Only managed to grow 33 out of 37 sectors.
|
||||||
|
|
||||||
|
try #5 (out of 10)...
|
||||||
|
placing capitals...
|
||||||
|
growing continents...
|
||||||
|
Only managed to grow 35 out of 37 sectors.
|
||||||
|
|
||||||
|
try #6 (out of 10)...
|
||||||
|
placing capitals...
|
||||||
|
growing continents...
|
||||||
|
Only managed to grow 34 out of 37 sectors.
|
||||||
|
|
||||||
|
try #7 (out of 10)...
|
||||||
|
placing capitals...
|
||||||
|
growing continents...
|
||||||
|
Only managed to grow 29 out of 37 sectors.
|
||||||
|
|
||||||
|
try #8 (out of 10)...
|
||||||
|
placing capitals...
|
||||||
|
growing continents...
|
||||||
|
growing islands: 1(13) 2(7) 3(10) 4(19) 5(23) 6(11) 7(22) 8(17) 9(6) 10(2) 11(11) 12(6) 13(2) 14(5) 15(2) 16(1)
|
||||||
|
No room for island #17
|
||||||
|
7 stunted islands
|
||||||
elevating land...
|
elevating land...
|
||||||
writing to sectors file...
|
writing to sectors file...
|
||||||
|
|
||||||
. . # # # # . . . . . . . . . . % % % % . . . # # # # # # . . .
|
. . # # # # # . . . . . . # # a a # # . . . . . % . . . . . . %
|
||||||
. . # # # # . . . . . . . . . % % % % . . . # # e e # # . . % %
|
. # # # # # # # . . . . . # # # # # . . . . . . % . . . . . . .
|
||||||
. . . f f # # . . % % % % . . . . . % % . . # # # # # # . . % %
|
. # # h h # # . . . % % . . . # # # . . % % % . . % % % % % . .
|
||||||
. # # # # # # . . . % % % % . . . . % . . # # # # # # . . % % .
|
# # # # # . . . . % % . . . . # # . . % . . . . . . . . % . . .
|
||||||
. . . # # # # # . . . % % . . . # . . . . . . # # # # . . % . .
|
# # # # # . . . . % % % . . . . . . . % . . . . . . . . . . . .
|
||||||
. . . # # # # # # . . . . . . # # . . . . . . . . . . . . . . .
|
# # # # . . . . . . . . . % . . . . % . . # # # # # # . . . . .
|
||||||
% % . . # # # # . . . . . . # # # # . . % % . . . . . . . . . %
|
. . . # . . % . . . . . . . . . . % % . . # # # # # # . . % % .
|
||||||
. % . . # # . . . . % . . # # # # # . . . % % % % . . % . . . .
|
. . . . . % . . . # # # . . . % % % . . # # # # # # . . % % % .
|
||||||
. . % . . . . . . % % . . # # g g # # . . . % . . . . . . . . .
|
% . . . . % . . # # # # # . . . % % . . # # e e # # . . % % % %
|
||||||
. . % . . . . % % % % . . # # # # # # # . . % . . . . . . # # #
|
. . % % % . . # # # # # # # . . . . . . # # # # # . . % . . . .
|
||||||
# . . . . % . . . . . . . . # # # # . # . . % . . # # . . # # #
|
. . % % % . . # # # # # # # . . . . . . . # # # # . . % . . . .
|
||||||
# . . . . . . . . . . . . . # # # # . . . . . . # # . # # # # #
|
. . . % . . # # # d d # # . . . . . . . . # # # . . % . . # # #
|
||||||
# . . % . . . . . # . . . . . # # # . . . . . . . # # # h h # #
|
# . . . . . . . # # # # # # . . % % % . . . # . . . % . . # # #
|
||||||
. . % . . # # # # # . . % . . . . . . . % % . . . # # # # # # #
|
. . . . . . . . . . # # . . . % % % . . . . . . . % . . # # # #
|
||||||
. . % . . # # # # # # . . % . . . . . . . % % % . . # # # # . .
|
# # . . % % % . . . . . . . . % % % . . % . . . % % . . # # # #
|
||||||
. % . . # # b b # # # . . % % % % % % . . . . . . . # . . . . .
|
# . . % % % % % . . . . . . . % % . . . % . . % % . . # # # g g
|
||||||
% % % . . # # # # # # # . . % % . . . . . . . . . . . . . . . %
|
# # . . . % % % . . . . . . . . . . . . . . . % % . . # # # # #
|
||||||
. . % . . . # # # # # # . . % . . . . . # # . . % . . . . % % .
|
# . . . . . . . . % % % % . . . . . # . . . . . % . . # # # # #
|
||||||
. . . . . . . # # # # # . . . . . # # # # # # . . % % % . . . .
|
# . . % . . . . . . % % % % % . . # # # . . . . . . . . . . . .
|
||||||
# . . . % . . . . . . . . . . . . # # # # # # . . % % . . . . .
|
. . % . . # . . . . % % % % . . # # # # # . . . . . . . . . . .
|
||||||
# # . . . % . . . . . . . % . . . . # # c c # # . . % % . . # #
|
. . % . . # # # . . . % % % . . # # # # # # # . . % % . . % % .
|
||||||
# # . . . . . . % % % % % % . . . . # # # # # # . . % . . # # #
|
% % . . # # # # # . . . % . . # # # b b # # # . . . . . . . % %
|
||||||
# # # # . . . . . . . . . . . . % . . # # # # # . . . . . # # #
|
% % . . # # # # # # . . . . . . # # # # # # # . . . . . . . . .
|
||||||
# # # # . . % . . . . . . . . . % . . # # # # # . . . . . # d d
|
% . . # # # c c # . . . . . . . # # # # # # . . % . . # # . . .
|
||||||
# # # # . . % . . # # . . # # . . % . . . . # . . . % . . . # #
|
. % . . . # # # # # # . . % % . . . . . . . . . % . . # # # # .
|
||||||
# # # . . % . . # # # # # # # . . % . . . . . . . % % . . # # #
|
% % . . # # # # # # # . . % % . . . . . . . . % . . # # # # . .
|
||||||
. . . . . % . . # # # # # # # # . . % % % . . . . % % % . . . #
|
. % % . . . . . . # # . . . % % . . % % % % % % . . # # # # # .
|
||||||
. . . . % % . . # # a a # # . . . % % % % % % . . . . % . . . .
|
. % . . . . . . . # . . . . . . . . . . . % % . . # # # # # # .
|
||||||
. % % % % % . . . # # # # # # . . . % % % % % . . . . . % . . .
|
. % . . % % % % . . . . % . . . . . . . . . % . . # # f f # . .
|
||||||
% % . . . . . . . # # # . # . . . . . . . . . . . # . . . . % %
|
. . . . . . . % . . . % . . # # # # # # . . % . . # # # # # . .
|
||||||
% . . . . . . % . . . # . . . . % . . . . . . . # # # . . . . %
|
. . . . . . . . . . % % . . # # # # # # # . . % . . # # # # . .
|
||||||
. . . # # . . % . . # . . . . % % % % % % . . # # # # # . . . .
|
. . # # # # . . . % % . . # # # # # # # # . . % . . # # . . . %
|
||||||
|
|
||||||
A script for adding all the countries can be found in "sandbox/stunted-newcap_script".
|
A script for adding all the countries can be found in "sandbox/stunted-newcap_script".
|
||||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue