今天給大家帶來一個驚喜! 遊戲中將有 5 個新行星。
你到達的第一個星球將是一片陌生的新大陸,那裡富含鐵、銅、煤、石頭、石油和鈾,這些是初創工廠所需的一切。 還有水、魚、草、樹。 是的,這是一片肥沃的土地,我們一定會蓬勃發展。 我們將統治這片土地,我們將稱之為……“這片土地” 或 “Nauvis”。
雖然新星球Nauvis 與 1.1 版本的地圖類似,但它有一些實質性的更新。希望這對您來說是一個驚喜,因為我們原本不計劃對底圖進行更新。但在獲得更多設計其他行星的經驗並看到缺失或損壞的東西后,迫使我們做出改變。
這些更改總體上更新了 2.0 版本的內容,並不只限於擴展包。
這對我來說這是一個獨立的副項目,並且已經有一段時間了,而且才剛剛得出結論。 不管怎樣,故事是這樣的:
隱形沙丘
在完成 Fulgora 星球的工作後,我發現 Nauvis 的沙漠還不完美,它看起來不像一片真正的沙漠。我知道遊戲裡“有”沙丘,但它們似乎從未在我附近的區域生成。 即使在最乾燥的地區,也只有平坦的沙土和大量棕色的草。 因此,我決定研究一下。
在 1.0 開發的早期,沙漠中就有沙丘模型。但與圖塊的集成並不令人滿意,因此它們被“暫時”刪除。 好吧,其實並沒有完全刪除,因為如果它們真的被刪除,那麼如果當它們被放回去,則需要在現有遊戲中重新生成。 相反,裝飾模型仍然存在於遊戲狀態中,但它們看起來像棕色的草,只是臨時的圖形交換。但它們從未被放回原處。
我不喜歡草地沙漠,所以我詢問大家是否要改變它,但似乎這是一個令人不舒服的話題,沒有人真正想參與其中。
一天晚上,我決定將清理舊沙丘圖形作為一項秘密的副業項目。我已經很熟悉這些了,因為我在外星生物群落模組中使用過它們,而且我知道我可以快速完成一些事情。
這個版本使用了浮雕效果來更好地與地形融合。使其更加透明,然後在頂部添加低透明度的純白色和黑色來修改下面地形的亮度。 作者:WUBESOFTWARE https://www.bilibili.com/read/cv33200390/ 出處:bilibili
老沙丘 | 新沙丘
所有 3 種沙子類型看起來都不錯,而且我可以更靈活地放置它們。舊的模型使用“峰值”自動放置格式(我不會詳細介紹,但它是一個較舊的、更有限的系統)。我用一個新的噪聲表達式替換了它,該公式是根據我在其他行星上的代碼改編的。這使得沙丘在多種沙子類型上逐漸消失,併產生良好的過渡效果。
老沙丘 | 新沙丘 作者
PR(拉取請求)獲得主遊戲中的更新很成功(沒有出現任何問題),因此我的隱形沙丘項目最終成為改變 Nauvis 地圖生成的第一步。
查找缺失的裝飾物模型
我開始注意到圖形文件中熟悉的一些裝飾物模型似乎並沒有出現在遊戲裡。在查看裝飾物放置代碼後,發現每一個似乎或多或少都是正確的,或者至少是合理的。它們有正確的圖形,被分配到正確的星球,指定的生成區域沒有無效的數值,所以沒有明顯的錯誤。但後來我注意到了其他東西,一種模式,一組相似之處。其中一些裝飾物非常相似,事實上有些與其他裝飾物相同。
這聽起來可能不是什麼大問題。但放置一種裝飾物就不能隨後放置其他裝飾物,它們互相阻擋,如果嘗試將其放置在不同的地方,那沒關係。如果它們有一些重疊,沒關係,第二個會出現在第一個沒有出現的地方。如果設置相同,那第二個裝飾物將無法放置。
所以這是一個問題,但也是一個機會。
我們利用從其他行星學到的技能來改進 Nauvis 裝飾物。新系統不僅速度更快,而且在分佈和可控放置方面看起來也更好。
我開始繪製所有 Nauvis 裝飾物的圖像。主要有 3 個軸變量控制:溼度、溫度和輔助設置。Aux 是“地形類型”變量,用於控制 Nauvis 黃色沙漠與 Nauvis 紅色(略帶紅色,但仍主要是黃棕色)沙漠的差異。它們控制大尺度分佈,但還有一個“噪聲層”變量控制較小尺度的裝飾物放置和斑塊,就像第四個軸,但具有離散增量。
因此,最好直觀地繪製出來,以檢查是否有不需要的重疊、所需的空間份額等。重疊比我預期的要多得多。有些裝飾物完全缺失,但其中一半以上的範圍受到其他裝飾物的阻礙而受到嚴重限制。
繪製 4D 狀態並不是那麼糟糕,我已經為太空探索開發了一些系統來處理 12D 系統,因此相比之下 4D 是一個很好的突破。 我可以使用 blender 中的 3 維軸 (XYZ) 來顯示佔用的主要體積。 噪聲層的第四個軸是框的顏色,在這種情況下非常方便,因為噪聲層是離散且無範圍的(它具有單個值,而不是最小-最大範圍)。
這是修改過的分佈狀態,而以前分佈的狀態很是雜亂,但我沒有它的副本(而且我不想輸入數據來重新創建它)。
新裝飾物體積在 blender 中的可視化
舊系統有一個限制,它無法對裝飾物分組,例如在集群中的變體比較大,而在更遠的地方的變體比較小。這本身並沒有什麼問題,但能夠改進的話則會帶來附帶好處。
新系統重新繪製了所有內容,以便可以放置所有內容,但這只是冰山一角。為了突出地圖的某些區域,沙漠變得更加乾燥。一些乾旱地區紅色植物較多,其他的地區白色植物較多。在草地區域,有許多不同植物組合和更多集群的子區域。
當然,大部分地形都會用混凝土鋪成,但如果這是你的地圖上(到目前為止)唯一看起來像這樣的區域,那就更有意義了。
Nauvis 懸崖
懸崖很煩人,對吧? 你或許想遠離它們,就好像它們根本不存在一樣進行建造,但它們妨礙了你。懸崖堡壘的概念聽起來很酷,也許你已經嘗試過放置一些由位於懸崖的防禦炮塔,但它從來沒有像你希望的那樣有效。大湖泊是有用的屏障,但懸崖卻不是。這是為什麼?
第一個原因是懸崖上有很多縫隙每個缺口都需要防守,所以如果你在懸崖上每隔 6 個懸崖段就有一個缺口,那麼你需要連續的炮塔覆蓋。 雖然懸崖意味著你需要更少的牆,但敵人只需要 1 個間隙就能通過,而且沿著懸崖建造比建造良好的防禦牆更困難。
第二個原因是懸崖遵循海拔高度。湖泊是很好的防禦障礙,你可能會在湖泊之間建造牆壁作為界線。不過,因為懸崖使用與湖泊相同的海拔數據,這意味著在大多數情況下,懸崖只是湖周圍的一個額外的環,而且沒有什麼用處。 與湖泊平行的懸崖主要是防禦湖泊方向,但那裡已經有一個湖泊做得更好(或者它是從內陸防禦海岸,但這通常也沒什麼用)。 在大多數情況下,如果你試圖在兩個湖泊之間建造一堵牆,懸崖會擋路,而且通常會擋路兩次。
1.1 版本中的懸崖(高懸崖以線條顯示)。
對 Nauvis 改進的方向變得清晰起來。如果我們被困在這裡,那麼應該以最有用、最不煩人的方式解決問題。這個“簡單”的想法最終變成了對行星的徹底改革。
臺地地形
創建此種地形的第一次嘗試是基於建立一系列可防禦高原的想法。它們周圍會有一些懸崖,但它們不會遵循與湖泊相同的路線。為此,水面以上的土地大部分被夷為平地,然後將山丘分別添加到現有土地上。
結果比 1.1 版本要好,但仍然不夠好。懸崖不會像 1.1 版本那樣礙事,但它們只比以前有用一點。問題在於缺乏對懸崖縫隙走向的良好控制。 懸崖上的縫隙太多意味著它們無法作為抵禦敵人的屏障,同時仍然會妨礙設施。
對 Nauvis 的懸崖重建嘗試 1。(高懸崖以線條顯示)。
我們真正需要的是更長的完整的懸崖,但懸崖總數得更少。 遺憾的是,我們沒有辦法做到這一點。
讓我們暫時離題。
精確的懸崖
我通常儘量不看 C++ 代碼,因為每次我這樣做時,我都會被迫開始改變一些東西……(比如流體力學),而實際上我應該專注於其他事情。但懸崖的召喚實在是太強烈了,不知不覺間我就重寫了一些核心的懸崖放置代碼。
第一次發生這種情況是我在設計 Fulgora 時,沿著錯綜複雜的島嶼邊緣建造懸崖是不可能的。 似乎不可能讓懸崖和圖塊相匹配。我發現原因是因為懸崖被“磨平”了。
平滑是一種即使在抬升數據有噪聲層的情況下也能使懸崖高度保持一致的嘗試。老 Nauvis 行星需要它,因為海拔有時會變得混亂。
對於像 Fulgora 這樣需要更精確的懸崖放置的行星來說,平滑很不理想。 Fulgora 也沒有不穩定的海拔,因此平滑不會做任何有用的事情。 我對懸崖 C++ 代碼的第一個更改是添加一種禁用某些表面平滑的方法。 突然間,所有的懸崖都突然回到了原來的位置。 Fulgora 的懸崖問題已經困擾我好幾個星期了,所以說這是一種解脫有些輕描淡寫。
具有平滑效果 | 沒有平滑效果
自由形態的懸崖
現在回到 Nauvis 的規劃,我已經思考懸崖的情況有一段時間了。 現在我對核心懸崖生成代碼更加熟悉了,我看到了一種清晰的方法,可以進行一些細微的更改,讓懸崖使用完全不同的噪聲表達式來放置。
這意味著懸崖的走向可以獨立於行星上的水。 默認情況下,它們會使用水位高度,但如果行星願意,可以指定不同的表達式。
左:有很多懸崖,但沒有一個是有效果的。右:懸崖較少,但更有用。
主要的計劃是建造少量的長懸崖,如前所述。它們的數量越少,意味著它們就不會那麼礙事。長的、不間斷的懸崖將是對抗敵人的更好屏障,它也是你的基地擴張的更好屏障,這是一件好事。
如果有一個巨大的懸崖,你不太可能忽視它並在其中建造設施,你更有可能在遠離它的地方建造。它們對大型建築設施的影響更大,對小型建築設施的影響就會更少,這樣就不會那麼煩人了。
更少的懸崖本質上意味著它們阻擋你的去路也更少,但這是次要的問題,因為你總是可以使用地形控制來影響它,只要你喜歡。它們的形狀是證明它們存在的最重要的因素。
早期的高原形狀仍然是懸崖放置的良好起點。對於較大的高原來說,這是一個很好的起始形狀,但也可以用於峽谷等效果。最大的區別在於規模,功能更大。
調試懸崖高原的可視化。暗的地方是低區,亮的地方是高區。
這帶來了另一個很好的效果。此時的懸崖“抬升”與水面高度完全分開,但當一排懸崖伸向水面時,預計海岸線會有所不同,這表明懸崖上方的區域將進一步延伸到水域中,因為該區域較高。
這就是我所做的。懸崖的抬升會讓水面抬升,這會創建一些漂亮的地形特徵。河流通向峽谷、懸崖護衛的半島,以及一些美麗的新島嶼。
形成河流般的形態。
形成峽谷狀的構造。
重塑地形
問題在於,懸崖抬升會抬高水位,並減少水量。它可以調整水位以增加更多的水,但這會淹沒峽谷地區。這是高原形狀的主要缺點,被較低的陸地包圍,如果水位較高,它們都會成為互不相連的島嶼。這對於異星工廠來說並不理想,因為你想與撕咬者隔絕,但需要垃圾填埋場或高架鐵路來連接區域。如果大部分土地保持連通那就更好了。
問題:高原往往會形成島嶼。
你可能還記得在 FFF-390 中我已經有了解決這個問題的方法。基於山脊的海拔,其中有狹窄的相連土地,而其餘部分主要是互不相連的湖泊中的水。這與高原相反。使用這種模式製作更可靠的陸橋,混合基礎地形,然後添加凸起的懸崖區域,為遊戲玩法提供了非常好的效果,而且看起來也很棒。
和以前一樣的原始高原。 | 高原的實際地形與其他圖層混合在一起。請注意,在混合地形上,海岸線受到高原形狀的影響,內陸地區的懸崖也受到相同模式的影響。
但是,不僅僅是調整地形以獲得更好的懸崖呈現效果,更像是大幅度改進。如果它已經發生了很大的變化,那麼我們就讓 Nauvis 地圖達到最好的效果吧。
這就是我所做的修改。
讓我們從水滑塊開始。水量最少的幾乎全是陸地,但偶爾也有少量且相距較遠的小湖泊。
最小水量,100% 比例尺 | 最大水量,100% 比例尺
另一個極端是,水量耗盡後會形成美麗的島嶼群,即群島。
最小水量,25% 比例尺 | 最大水量,25% 比例尺
如果地形能夠很好地處理這些極端的水值,地圖也設置為正常值,那麼就會出現一些宏觀變化。在“中型水量”設置(默認)下,當你遠離地表中間時,土地開始在這些極端之間振盪,形成一些巨大的湖泊和廣闊的平原。它比以前更加多樣化。
從沙漠出發是一個常見問題。我添加了一個額外的滑塊,以便您可以自定義起始區域的溼度,而不會影響星球其他的地方。從森林起步要容易得多。
我們對懸崖上方和下方的地形類型進行了非常細微的調整,因此有時會有輕微的地形差異。 這是一個小細節,但讓它感覺更加 3D 並融入到遊戲中。
被阻擋
很多事情都進展順利。地形看起來好多了,玩起來也更好,但並不完美。
一條峽谷小路被水堵住了
在駕駛汽車探索時,很多探索、導航的老問題依然存在。當你沿著森林之間的縫隙走時,一個小湖擋住了你的路。你沿著一排懸崖尋找一個缺口,但它被樹木擋住了。你可以沿著陸橋走,但隨後一個垂直的懸崖擋住了你的路。
一條被懸崖擋住的路。
問題是懸崖系統、陸橋系統和樹木系統彼此不互通。這並不是那麼容易可以解決的,因為樹木系統仍然使用與前面提到的裝飾物相同的“峰值”定義。
一座被樹木擋住的陸橋。
所以我也改變了這一點。
森林的噪音表達
就像裝飾物一樣,我對樹木系統研究得越多,發現的問題就越多。總的來說,情況要好一些,因為“大多數”樹木都可以被渲染,但有一棵樹被完全排除在外,因為星球上沒有適合它的溫度。
盒子顯示了新的樹木放置體積,有一棵樹的盒子已放回原來的位置。你能猜出是哪一個嗎?
這類問題很難預防。需要大量的調查和理解才能發現很多這樣的問題。 即使這樣,也需要一段時間才能對正在發生的事情有一個完整的瞭解,所以當需要調整一些小事情時,比如調整產生溫度的噪音層是否不小心讓一棵特定的樹不會生成。 如果您更改裝飾物的噪音層,您會檢查它,但如果該裝飾物看起來不錯,但很難判斷您是否使其他隨機裝飾物不會產生。我們確實有測試來警告意外變化,但有時這些負面影響會與其他變化混合在一起,地圖生成會發生變化,因此不會被注意到。
與裝飾物一樣,樹木的放置地點也發生了變化,以使區域更具特色。
與以前一樣,乾燥地區的樹木密度通常較低,而潮溼地區的樹木密度較高,但差異更加極端且更加一致。 絕對的零水分沙漠現在根本沒有任何樹木。
這些樹木對你來說有新鮮感嗎?
所有這些看起來都不錯,但這實際上都是為了將樹木與其他系統集成以獲得更好的遊戲玩法的目標。
自然路徑
這才是將一切聯繫在一起的原因。
陸橋由山脊界定,這意味著一條連續的絲帶決定了最高點。當有陸橋時,這條帶絲線大致沿著該地帶的中間延伸。這些功能區是應保持暢通的區域,因此它們被添加到路徑列表中。
高原實際上使用了與山脊非常相似的系統,但它是倒置的。絲帶不是高點而是低點,本質上是山丘之間的“峽谷”區域。如果您從下面沿著懸崖邊緣走,您經常會進入這些區域,因此重要的是這些區域不要被樹木阻擋,因此它們也會添加到路徑中。
茂密的森林也是移動的一個問題,特別是如果您將樹木密度滑塊設置為最大並嘗試在景觀的潮溼部分移動。一組額外的森林步道線也被添加到路徑組中。
所有這些路徑線都被組合起來,並從懸崖和樹木的位置中減去。非常方便且感覺自然。 森林小徑是動物活動的結果,將它們連接到懸崖的縫隙是有意義的,因為那是它們可以通過的地方。 如果您沿著陸橋上的小路前進,那麼總有一條路可以穿過您可能遇到的任何懸崖和樹木。
左圖:紅色 = 峽谷路徑,藍色 = 陸橋路徑,綠色 = 樹木路徑。右圖:具有最大樹木設置的景觀,可以更清楚地顯示路徑。
當然也有例外情況,即事物相互阻礙,但這些往往是巧合。 例如,地形恰好連接在兩個湖泊之間,形成實際上的陸橋,但由於它不是由特殊的陸橋系統創建的,因此路線不受保護,並且有可能被樹木堵塞。
對我來說,真正的考驗是將樹木和懸崖設置為最大設置,並嘗試開車在地圖上導航。 你知道嗎? 這實際上是一張非常酷的地圖,現在可以在上面移動。
收尾工作
結果如下:
地圖比例為 100%。
地圖比例為 50%。注意:更改比例時,僅調整抬升的比例。像礦石這樣的東西留在同一個地方。
地圖比例為 25%。
另一張比例為 25% 的地圖。
我為此投入了大量的工作,並且在整個過程中進行了大量的測試,最終效果很好。 還有更多測試要做,因為這是一個很大的變化,並且對每個人都有很大的影響。稍後還有一些小事情要做,比如更多不規則的森林邊緣,但這並不是對遊戲玩法的重大改變。
所有這些變化讓新地形高度變得可定製。 即使您不喜歡某些設置,也可以輕鬆地按照您喜歡的方式調整地圖。 例如,我對懸崖頻率滑塊進行了一些額外的更改,以便低於 100% 的值將從地圖的大片區域中移除懸崖。
此外,如果您真的喜歡舊地形,它仍然存在以及單島地圖生成選項。