看了一下代码,关于地图关联,大致是这样的: 首先 xml中设定了部分文明的地图关联,在地图生成时,会优先满足该文明的地图倾向。 地图关联有这些: 英国沿海, 奥斯曼沿海, 西班牙沿海, ...

看了一下代码,关于地图关联,大致是这样的:

首先

xml中设定了部分文明的地图关联,在地图生成时,会优先满足该文明的地图倾向。

地图关联有这些:

英国沿海,

奥斯曼沿海,

西班牙沿海,

玻璃沿海,

丹麦沿海,

阿拉伯荒漠,

阿兹特克丛林,

印度草原,

易洛魁森林,

俄罗斯苔原,

蒙古平原(没错,是平原),

印加丘陵。

应该注意到:沿海之外的其他地貌关联且只关联唯一文明。

地图逆关联有:埃及无丛林和森林,暹罗无森林,桑海无苔原。可以注意到有逆关联的都没有地图关联。

其次

每种地图,都有自己的生成规则,生成规则中会有一个专属该地图的“默认”地貌倾向,比如沙尘暴的倾向就是沙漠,盘古地图应该是无类型,岛图是沿海。

然后,程序会把地图分割成很多区块,计算每个区块的地貌比例,然后根据规则归类为“草原类”“苔原类”“混杂类”等等(比如苔原+雪原占区块面积30%以上就定义为苔原区块)。

之后计算区块产出,并按照一定规则进行修正。比如荒漠地块粮食过少,而且地块内没有河流,那么就吧荒漠换成丛林,苔原地块粮食少就加鹿等等。从而保证每一个区块的产出都不会过少或者过多。

与文明的优先倾向对比。如果满足,就把相应文明放在那,然后计算下一个文明的位置。

其中,地图关联判定优先级为:沿海>沿河(目前无文明关联)>其他关联>逆关联>地图默认

如果没有区块满足地图关联,比如砍2爷遇到整块地图都没有“丛林区块”的情况,那么就把他放到有相应地貌的区块,也就是说放到有那么一两个丛林的区块中。

如果有相应地貌的地方无法设定初始位置,比如说离其他文明过近或者压根没有区块满足以上条件,或者文明本身就没有特定倾向,那么就把该文明强制归类为地图的“默认”类型进行分配。比如高海平面的岛图,全部都是小岛,不满足任何一种沿海之外的地貌标准(其他类型都要求陆地面积要达到一定数量),所以所有文明在高海平面的岛图中都是“沿海”属性。

如果默认类型都没地方放了,那么就在主大陆临近的海里,生成一个1格大小的草原地貌,把该文明放上去。(前阵子那个I大打的孤岛衰图估计就这么形成的。。。)

大致看过地图生成算法之后,大家可以猜测一下为什么沿海之外的每种地貌,只关联了一种文明。

总而言之,地图关联就xml里列的那么几个,不用猜测了。但是要说两点,一个是在个别地图上,地图关联常常不满足条件,因而失效。另外一个是由于地图生成算法问题,不同的地形关联几率是不同的,有的地貌容易出现,就容易关联,有的地貌不容易出现,无关联的情况就比较多。

《文明5:美丽新世界》地图生成关联指南