作者:石鬼面
來源:文明5吧
看了一下代碼,關於地圖關聯,大致是這樣的:
首先
xml中設定了部分文明的地圖關聯,在地圖生成時,會優先滿足該文明的地圖傾向。
地圖關聯有這些:
英國沿海,
奧斯曼沿海,
西班牙沿海,
玻璃沿海,
丹麥沿海,
阿拉伯荒漠,
阿茲特克叢林,
印度草原,
易洛魁森林,
俄羅斯苔原,
蒙古平原(沒錯,是平原),
印加丘陵。
應該注意到:沿海之外的其他地貌關聯且只關聯唯一文明。
地圖逆關聯有:
埃及無叢林和森林,暹羅無森林,桑海無苔原。可以注意到有逆關聯的都沒有地圖關聯。
其次
每種地圖,都有自己的生成規則,生成規則中會有一個專屬該地圖的“默認”地貌傾向,比如沙塵暴的傾向就是沙漠,盤古地圖應該是無類型,島圖是沿海。
然後,程式會把地圖分割成很多區塊,計算每個區塊的地貌比例,然後根據規則歸類為“草原類”“苔原類”“混雜類”等等(比如苔原+雪原占區塊面積30%以上就定義為苔原區塊)。
之後計算區塊產出,並按照一定規則進行修正。比如荒漠地塊糧食過少,而且地塊內沒有河流,那麼就吧荒漠換成叢林,苔原地塊糧食少就加鹿等等。從而保證每一個區塊的產出都不會過少或者過多。
與文明的優先傾向對比。如果滿足,就把相應文明放在那,然後計算下一個文明的位置。
其中,地圖關聯判定優先順序為:沿海>沿河(目前無文明關聯)>其他關聯>逆關聯>地圖默認
如果沒有區塊滿足地圖關聯,比如砍2爺遇到整塊地圖都沒有“叢林區塊”的情況,那麼就把他放到有相應地貌的區塊,也就是說放到有那麼一兩個叢林的區塊中。
如果有相應地貌的地方無法設定初始位置,比如說離其他文明過近或者壓根沒有區塊滿足以上條件,或者文明本身就沒有特定傾向,那麼就把該文明強制歸類為地圖的“默認”類型進行分配。比如高海平面的島圖,全部都是小島,不滿足任何一種沿海之外的地貌標準(其他類型都要求陸地面積要達到一定數量),所以所有文明在高海平面的島圖中都是“沿海”屬性。
如果默認類型都沒地方放了,那麼就在主大陸臨近的海裡,生成一個1格大小的草原地貌,把該文明放上去。(前陣子那個I大打的孤島衰圖估計就這麼形成的。。。)
大致看過地圖生成演算法之後,大家可以猜測一下為什麼沿海之外的每種地貌,只關聯了一種文明。
總而言之,地圖關聯就xml裡列的那麼幾個,不用猜測了。但是要說兩點,一個是在個別地圖上,地圖關聯常常不滿足條件,因而失效。另外一個是由於地圖生成演算法問題,不同的地形關聯幾率是不同的,有的地貌容易出現,就容易關聯,有的地貌不容易出現,無關聯的情況就比較多。