您當前的位置:首頁 > 遊戲

【饑荒mod】饑荒系列教程-地圖製作方法

作者:由 紫翼之獅 發表于 遊戲時間:2022-11-21

宣告

本文所述皆為實踐過程中產生的經驗,基本覆蓋了從零開始構建mod的相關方法以及思路,文中所介紹的所有內容皆出自作者理解,有可取之處也有一定侷限性,請讀者以實踐所得結論為準。

文章從如何解決一個問題的角度記錄mod製作過程中可能遇到的問題以及解決方案,因此

文章適合任意一個同學

,當然有程式設計基礎食用更佳,對於沒有程式設計基礎的同學,建議結合菜鳥教程-lua一起食用。

寫作時間:2022/10/22

遊戲版本(生成版本ID):Don‘t Starve Togather-9775009

[程式設計介面版本(API)](應用程式程式設計介面_百度百科 (baidu。com)):10

tips:

遊戲版本檢視方式:

【饑荒mod】饑荒系列教程-地圖製作方法

拋磚引玉

相信上一篇文章在坐的各位都懂了,那此時若要請各位同學按自己的想法自己造一個地圖出來這合理麼?顯然不合理。為什麼?這就好比給我一堆鐵礦然後要讓我造一個挖掘機去把張三家的房子推平了。

【饑荒mod】饑荒系列教程-地圖製作方法

為了推張三的房子還必須去一波藍翔,但想自己造一個地圖只需要關注計算機技工。先欣賞一下成果:

【饑荒mod】饑荒系列教程-地圖製作方法

【饑荒mod】饑荒系列教程-地圖製作方法

開門見山

將饑荒的地圖視為一張畫布,在上邊描繪自己腦海裡的風景的前提就是這張畫布是空的,是一張白紙,這樣被饑荒耽誤的畫家門才有機會大展拳腳。那麼如何清理就是需要思考的問題。這裡提供兩種清理畫布的方式,一種是建立法,另一種是覆蓋法。限於篇幅,本文中主要給出建立法的描述。涉及的完整程式碼及資源可在公眾號“

計算機技工

”後臺回覆【z_dst_1_1】獲得。

建立法

我願稱這種方法為“無中生有”。這種方法其實就是重建一個level,怎麼建立呢?那就用到了到

這篇文章

中知識,文中具體說明了建立一個新的level所需的資源以及建立沒種資源的方法,這片文章中不再重複,我們需要把重點放在細節處理上,具體包括:程式碼組織、系統依賴兩個方面。

程式碼組織

通常情況下為了程式碼易於維護和管理,會將程式碼根據模組進行劃分,比如建立地圖時需要的資源有room、task、taskset等,而這些資源都是可以隨意新增和修改的,因此將沒種資源單獨命名為一個資料夾,每種具體的資源又根據資源名建立資原始檔,比如這樣:

【饑荒mod】饑荒系列教程-地圖製作方法

而每個具體的資原始檔中的所有內容其實就是呼叫介面建立相關的資源,說白了就是copy & paste且不需要新增任何東西(鬥宗強者可以修改),對於新手來說,建議除了物件的名稱之外不要修改任何東西,可以獲得更快的成就感。當然不按這種結構來劃分程式碼也是可以的,即使所有程式碼全放在一個檔案裡也沒問題,畢竟自己看著爽才是真的爽。

系統依賴

當把資原始檔都開發(copy)完成後,就需要讓各種資源都能互相看到,這涉及到一個關鍵性的檔案:modworldgenmain。lua。這個檔案是官方提供的mod載入入口,檔名一定不能寫錯,在這個檔案中新增資源的請求會將mod中自定義的資源載入到全域性,這樣無論是遊戲本身的邏輯還是mod中的邏輯想要訪問mod中自定義的資源就都莫得問題了,請求類似這種:

modimport(“scripts/map/layouts/z_default_start”)

modimport(“scripts/map/layouts/z_start_layout”)

modimport(“scripts/map/location/z_location”)

modimport(“scripts/map/rooms/z_room_1”)

modimport(“scripts/map/tasks/z_task_1”)

modimport(“scripts/map/tasksets/z_taskset_1”)

modimport(“scripts/map/levels/z_level”)

由於自定義的mod中也會使用到系統的資源,比如

WORLD_TILES

物件,因此還需要在modworldgenmain。lua中匯入相關的系統資源:

require(“constants”)

require(“map/rooms”)

require(“map/tasks”)

require(“map/level”)

require(“map/network”)

注意:require的路徑是相對路徑,該路徑是相對於Don’t Starve Together\data\scripts的。

通常為了修改系統中已有的物件(增加一個屬性或者修改某個屬性的值或者刪除屬性),需要在modworldgenmain。lua中加入這樣程式碼:

GLOBAL。setmetatable(env,{__index=function(t,k) return GLOBAL。rawget(GLOBAL,k) end})

當然一個完整的mod還需要一個描述檔案:modinfo。lua,這個檔案沒啥好說的,建議公眾號“

計算機技工

”後臺回覆【z_dst_1_1】獲取完整的mod檔案看一下。

就這麼簡單,建立法建立了使用建立法建立了一個屬於你自己的map。那麼,這就結束了麼?

載入mod&選擇預設

對於新手同學來說,如何將自己開發的mod執行起來似乎也是一個腦闊疼的問題。或許部分有基礎的同學知道需要將

mod根目錄

複製到Don‘t Starve Together\mods目錄下即可,但是進入遊戲勾選mod並自豪感爆棚的進入遊戲想要驗收一下勝利的果實的時候,卻發現生成的地圖還是系統自帶的:

【饑荒mod】饑荒系列教程-地圖製作方法

這個時候先別罵我寫的辣雞教程毀青春,建議在勾選mod後進入森林介面選擇預設之後再生成世界:

【饑荒mod】饑荒系列教程-地圖製作方法

注意:mod根目錄指的是modworldgenmain。lua所在的目錄

本篇內容到此結束。沒錯是真的結束,你問我怎麼跟成果圖不一致?別急,下篇文章就見分曉~

See you next time! Happy Playing!!!

標簽: MOD  map  Scripts  資源  建立