Hey guys, I wrote a map script that generates 1/n of a map and then copies it for each player in the game. With cylindrical wrap, this is basically the equivalent of a multiplayer mirror map setup (though it's not mirrored, it's replicated instead).
At this point there's still several things I haven't gotten to yet, which I really want to add. But it's already good for a decent number of tasks, so I figured I'd post it now in case someone finds it handy.
The one thing it's actively bad at right now is placing rivers near the edges of the slice. (They just end abruptly.)
The last two options on the screen allow you to change how what the game calls "start position normalization" works. Their default values are how the game normally works, minus adding fresh water and trying to balance positions compared to others. The option that shows up as "Allow Bad Capital T..." actually ends with "Terrain", and if you turn it on, the normalizer will no longer remove stuff like peaks and tundra in your BFC. Since the map is mirrored anyway, it's perfectly valid to change these settings. Or, perhaps you wish to choose the capital locations and boost them yourself. (In that case, turn the normal normalization off so you don't boost a random BFC in the wilderness.)
Also note that changing the map size ("small", "huge", etc) does not actually change the map dimensions! These are set precisely by number of tiles in later options. However the "size" is relevant for stuff like tech and maintenance costs, and the number of cities required for national wonders.
A suggestion: perhaps a setting so that every other player's area would also be flipped vertically. That is, right now your script might make a map like this:
Code:
......
PPPPPP
......
......
......
With this option on, it would make a map like this:
Code:
......
P.P.P.
......
.P.P.P
......
Rivers would probably be even *more* frustrating, but if you could get it sorted then it might be a worthwhile addition.
novice Wrote:Really cool, SevenSpirits. How do I install and use it?
Move the enclosed Hall_of_Mirrors.py file to [your bts installation]/PublicMaps
(Actually I think there are PublicMaps folders in a few places and any of them will work.)
Then, it will show up as a map in-game (called Hall of Mirrors).
Quote:A suggestion: perhaps a setting so that every other player's area would also be flipped vertically. That is, right now your script might make a map like this
Interesting, I hadn't thought of that. (Another possibility, which I had thought of, is to flip every other strip horizontally.) Aside from the river problem though, and the possibility that the whole thing just won't wrap as well, it would also require an even number of players. So I think that idea would be better suited for a spin-off script specialized for that purpose. In any case, it would be a while before I get to it.
I really like the resources generated by this map ... but it didn't a few options that I was looking for (no NS / EW wrap). So ... I have made some modifications to generate a Hall of Mirrors duel map that has no wrap.
I've got the two sides mirrored (had some fun with the rivers - see below) but I would like some help on the following:
I can't seem to put in minimum starting distance from the mirror line
my starting positions aren't the same (duh) - I think the start normalization process is running after I have mirrored all of the map info
Is there a way of forcing a river not to venture into / onto the right most plot (this gets mirrored and the river is borked)
There must be a way as you don't see rivers heading off into the ether on the edge of a non-wrap map
Mirror Rivers
I borrowed the approach from Mirrorland but rivers flowing EW were not having the direction mirrored if I used this code ...
Code:
if pPlot.isNOfRiver():
rivDir = pPlot.getRiverWEDirection()
if rivDir == CardinalDirectionTypes.CARDINALDIRECTION_WEST:
rPlot.setNOfRiver(True, rivDir)
else:
rPlot.setNOfRiver(True, CardinalDirectionTypes.CARDINALDIRECTION_WEST)
However, if I used the code below, the flow direction is mirrored.
Code:
if pPlot.isNOfRiver():
rivDir = pPlot.getRiverWEDirection()
if rivDir == CardinalDirectionTypes.CARDINALDIRECTION_WEST:
rPlot.setNOfRiver(True, CardinalDirectionTypes.CARDINALDIRECTION_EAST)
else:
rPlot.setNOfRiver(True, CardinalDirectionTypes.CARDINALDIRECTION_WEST)
Note that this map doesn't work for 3+ players. It is explicitly aimed at duel games. Is there a way of forcing only 2 players regardless of size selected?
I have finally decided to put down some cash and register a website. It is www.ruffhi.com. Now I remain free to move the hosting options without having to change the name of the site.
(October 22nd, 2014, 10:52)Caledorn Wrote: And ruff is officially banned from playing in my games as a reward for ruining my big surprise by posting silly and correct theories in the PB18 tech thread.
(February 19th, 2013, 22:15)Qgqqqqq Wrote: Could someone reupload this?
I have finally decided to put down some cash and register a website. It is www.ruffhi.com. Now I remain free to move the hosting options without having to change the name of the site.
(October 22nd, 2014, 10:52)Caledorn Wrote: And ruff is officially banned from playing in my games as a reward for ruining my big surprise by posting silly and correct theories in the PB18 tech thread.