by the way, worldmap! i rewrote POI placement several times already, and will rewrite it at least one more time, but there are some interesting things in there already:
// special POI
Config ATTNAM;
{
NameSingular = "Attnam";
BitmapPos = 0, 48;
NameStem = "mighty cathedral reaching the clouds";
UsesLongArticle = false;
AttachedDungeon = ATTNAM;
CanBeGenerated = true;
NativeGTerrainType := { LEAFY_FOREST, EVERGREEN_FOREST, STEPPE }
WantContinentWith = ATTNAM; // yeah, sorry
RevealEnvironmentInitially = true;
// UT exit is generated *BEFORE* Attnam, this is how the game works!
DistancePOI = UNDER_WATER_TUNNEL_EXIT;
MinimumDistanceTo = 3;
MaximumDistanceTo = 6;
MinimumContinentSize = 25;
MaximumContinentSize = 700; // it was 1000 before, but i want smaller continents
}
here, you can see some new properties. `WantContinentWith` (for Attnam it is a hack, though, because Attnam actually placed *after* UT Exit). `*ContinentSize` fields moved out of source code. `DistancePOI` and distance props are there to enusre that you don't have to travel half of the continent to find Attnam. there is nothing interesting in overworld as of yet, so there is no reason to spread POIs. most POIs are more-or-less close now.
Config ASLONA_CASTLE;
{
Probability = 100;
CanBeSkipped = false;
NameSingular = "Aslona Castle";
BitmapPos = 96, 128;
NameStem = "mighty seaside castle";
UsesLongArticle = false;
AttachedDungeon = ASLONA_CASTLE;
CanBeGenerated = true;
NativeGTerrainType := { STEPPE, LEAFY_FOREST }
SeparateContinent = true;
CloseTo = ATTNAM; // try to move as close as possible to Attnam
//RevealEnvironmentInitially = true; //for debug
MinimumContinentSize = 25;
MaximumContinentSize = 0; // any size
}
Config REBEL_CAMP;
{
Probability = 100;
CanBeSkipped = false;
BitmapPos = 16, 64;
NameSingular = "Rebel Camp";
NameStem = "hidden camp";
UsesLongArticle = false;
AttachedDungeon = REBEL_CAMP;
CanBeGenerated = true;
NativeGTerrainType := { JUNGLE, STEPPE, LEAFY_FOREST, EVERGREEN_FOREST }
WantContinentWith = ASLONA_CASTLE;
//RevealEnvironmentInitially = true; //for debug
DistancePOI = ASLONA_CASTLE;
MinimumDistanceTo = 5;
MaximumDistanceTo = 9;
}
now, some more interesting things. `SeparateContinent = true;` — this does exactly what it says on the tin. Aslona will be placed on a separate continent. then `WantContinentWith = ASLONA_CASTLE;` in Rebel Camp will ensure that Rebels will not travel too far away.

`CloseTo = ATTNAM;` — this will try to find the point close to Attnam (but still on another continent), so you won't be forced to sail over the whole world.
the additions are not fully working yet (POI placement algo sux), but even in half-working state they make the overwold more manageable.
now we prolly need an overworld compass too: Aslona still might be quite away, and it is sometimes to hard to find it on a worldmap, and then even harder to keep the direction to it. maybe even "autotravel" command, so the ship will automatically sail to Aslona and back.
the problem with current POI placement code is that it only tries once with random coords, and if it fails, it throws away the whole world, starting from scratch. it doesn't have to be this way: we might still find suitable POI placements if we'll try hard enough. this is kind of graph searching problem, which i tried to solve with brute force first. and you might guess how well it goes — solving graph problems exploring all possibilities, without any heuristics to cut off dead ends. that is, it never finishes even once.
i have to rewrite the code, aggressively pruning impossible solutions. this way it should work MUCH faster, and satisfy all constraints in no time. at least i believe so. for the time being, the old algo is still used.
p.s.: and completely unrelated note: the game shows "saving…" popup when saving the game. it might take some time now due to all compression and such (less than half of a second, but still noticeable), so the popup will tell you that the game is busy archiving your precious character and dungeons, not stuck in some endless loop.