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