索尼承諾將“增加PS5主機(jī)供應(yīng)”
2023-01-31
更新時(shí)間:2022-03-29 23:47:51作者:未知
饑荒聯(lián)機(jī)版中的MOD作為游戲中的一大特色,深受玩家喜愛(ài),但是那么多MOD里面沒(méi)有自己喜歡的MOD怎么辦,自己可以制作MOD嗎,怎么制作》今天小編為大家?guī)?lái)了關(guān)于玩家如何自建MOD的教程,不妨仔細(xì)看看。
準(zhǔn)備工作:
編寫(xiě)MOD所需要的工具
編輯Lua文件時(shí),推薦使用 notepad++,或者Vi/Vim(少數(shù)像我這樣的人才會(huì)用的編輯器 )。
不過(guò)如果你是程序猿,也許更想使用專為L(zhǎng)ua設(shè)計(jì)的IDE。
當(dāng)你需要編輯材質(zhì)文件(本游戲中要求的材質(zhì)文件格式是 .tex),推薦使用由 Handsome Matt 制作的TexTool(請(qǐng)?jiān)贙lei論壇登陸后下載,你可以使用Steam登陸)
當(dāng)你需要編輯png文件時(shí),請(qǐng)使用支持透明背景的圖像編輯器;如果你有閑錢(qián),不妨買(mǎi)個(gè)Photoshop;如果你窮得響叮當(dāng),就只有試試GIMP這款免費(fèi)軟件。
最后推薦你從Steam下載一個(gè)Don't Starve Mod工具,操作步驟如下:
MOD基本文件結(jié)構(gòu)
這里我用由 Eyres1 制作的 Never Perish Icebox(永久保鮮羊大白勺冰箱)來(lái)作為例子:
如上圖所示,一個(gè)必須具有兩個(gè)文件:
modmain.lua:游戲載入你制作的mod所需要的文件;
modinfo.lua:儲(chǔ)存mod的作者、版本等信息的文件。
接下來(lái)我們打開(kāi)這兩個(gè)文件看看:
modinfo.lua
第一行描述了該mod的名稱,
--The name of the mod displayed in the 'mods' screen.
name = "Never Perish Icebox"
第二行是作者留下的對(duì)該mod的簡(jiǎn)介,
--A description of the mod.
description = "Food doesn't perish in the Icebox."
第三行記錄了制作者的名諱,
--Who wrote this awesome mod?
author = "Eyres Valkrie"
第四行是作者設(shè)置的mod版本號(hào)(注意,mod版本號(hào)跟游戲版本號(hào)是兩碼事)
--A version number so you can ask people if they are running an old version of your mod.
version = "1"
第五行是本mod對(duì)應(yīng)的游戲API版本號(hào)(當(dāng)你自己制作了一個(gè)mod以后,記得在每次游戲更新后檢查自己mod是否依然能夠正常運(yùn)行,努力debug,并更改這一行的數(shù)值,然后上傳到創(chuàng)意工坊)
--This lets other players know if your mod is out of date.
This typically needs to be updated every time there's a new game update.
api_version = 10
第六行說(shuō)明本mod是否兼容 Don't Starve Together。
-- Compatible with Don't Starve Together
dst_compatible = true
第七行是向玩家說(shuō)明本mod是否和 Don't Starve 和 Reign of Giants 兼容(因?yàn)镈on't Starve Together和Don't Starve兩者有大量相同代碼,所以經(jīng)常有人把Don't Starve的mod和Don't Starve Together的mod交換使用)
-- Compatible with both the base game and reign of giants
dont_starve_compatible = true
reign_of_giants_compatible = true
這八行說(shuō)明本mod是否需要重啟生效
--Some mods may crash or not work correctly until the game is restarted after the mod is enabled/disabled
restart_required = false
第九行說(shuō)明本mod是否能夠兼容其他mod
-- Set this to true to prevent _ANY_ other mods from loading while this mod is enabled.
standalone = false
modmain.lua
Never Perish Icebox這個(gè)mod的modmain.lua中只有一行代碼,
TUNING.PERISH_FRIDGE_MULT = 0;
它的作用是修改 data\scripts\tuning.lua 中 TUNING 對(duì)象的成員 PERISH_FRIDGE_MULT,也就是修改游戲中 Icebox 的保鮮時(shí)間長(zhǎng)度。
由此可見(jiàn),要提供mod元信息,你就應(yīng)該給出 modinfo.lua;而為了真正實(shí)現(xiàn)你的 mod 的功能,你則應(yīng)該在 modmain.lua 中編寫(xiě)代碼。
范例 · 如何制作一個(gè)新的人物mod
首先從Klei論壇[forums.kleientertainment.com]或者創(chuàng)意工坊下載人物mod模版 Extended Sample Character。以此為基礎(chǔ),修改模版中人物信息和腳本,你就可以制作出自己獨(dú)家定制的mod了~
人物mod的文件結(jié)構(gòu)
如下圖所示,一個(gè)人物mod通常除了包括前面提到的modinfo.lua和modmain.lua以外,還包括anim、bigportraits、exported、images和scripts目錄,以及modicon.png、modicon.tex和modicon.xml文件。
官方人物
首先以官方人物Wilson為例,我們一起來(lái)研究一下選擇角色界面:就文本方面,有如上圖所示的三個(gè)方面,其一是Wilson的口號(hào)(Quote),其二是Wilson的頭銜(Title),其三是Wilson的簡(jiǎn)介(Description),全部都來(lái)自文件
Don't Starve Together\data\scripts\strings.lua
自建人物
現(xiàn)在將自建人物mod導(dǎo)入mod目錄下,進(jìn)入游戲建立本地服務(wù)器并激活mod,可以看出這些文本和貼圖跟人物mod中文件之間的關(guān)系。
修改人物元信息
以Windows系統(tǒng)為例,打開(kāi)Notepad++,按下快捷鍵 Ctrl + Shift + F,進(jìn)而在mod目錄中搜索esctemplate和ESCTEMPLATE并分別替換為你設(shè)計(jì)的人物的名稱,例如nymphoenix和NYMPHOENIX(注意大小寫(xiě))
如果你是在Linux系統(tǒng)上使用Vim編輯文件,又不知道怎么搜索并替換給定目錄下所有文件中的符合某字符串
find -type f -exec sed -e 's///' {} +
然后用Notepad++打開(kāi) modmain.lua,修改其中人物簡(jiǎn)介、稱號(hào)和臺(tái)詞等。
編譯已完成的mod
如果你的mod涉及貼圖,例如人物mod、武器mod等,那么你就需要把繪圖得到的png圖片(如果你的源文件不是png格式而是其他其他格式,請(qǐng)先使用Photoshop、GIMP或者你自己選擇的支持透明度的圖像處理軟件將圖片格式轉(zhuǎn)為png格式),編譯為tex貼圖文件。
首先你需要確認(rèn)自己安裝Don't Starve Mod Tools的目錄位置:
打開(kāi)其中高亮的mod_tools目錄,你可以在其中找到下面需要用到的可執(zhí)行文件scml.exe。
然后你需要調(diào)出Windows系統(tǒng)內(nèi)置控制臺(tái)cmd(Linux:Ctrl+Alt+T):
這時(shí)候會(huì)出現(xiàn)如下的窗口:
你需要做的就是把下面命令中的 字樣、 字樣和 字樣分別改為上述可執(zhí)行文件scml.exe的路徑,你制作的mod中貼圖項(xiàng)目文件(*.scml)路徑和你的mod目錄的路徑,然后復(fù)制粘貼到控制臺(tái)中,按下回車(chē)鍵(Enter)運(yùn)行即可。
"<exec_path>" "<project_path>" "<mod_path>"
(請(qǐng)保留上面命令中的雙引號(hào)!)
如果你有多個(gè) .scml 文件,你猜猜要怎么做?
清理并發(fā)布mod
一屋不掃何以掃天下
一般來(lái)說(shuō),玩家在下載mod的時(shí)候都不希望看見(jiàn)自己要下載的mod奇大無(wú)比。我相信這是每一個(gè)制作者的責(zé)任,即保證功能與性能的同時(shí),保持mod的緊湊度,也就是說(shuō),一個(gè)mod目錄不應(yīng)該有無(wú)用文件存在。
那么寶貝兒們就要問(wèn)了,自己的mod目錄要怎樣清理呢?
首先,你應(yīng)該備份自己現(xiàn)有的mod目錄,即用壓縮/存檔軟件,如7zip,對(duì)mod目錄進(jìn)行壓縮存檔,并在文件名后附加版本號(hào),方便自己查閱;
之后刪除exported目錄;
然后將mod目錄里除了后綴名為 .lua 和 .tex 的文件全部刪除,再刪除空目錄。
文勝質(zhì)則史,質(zhì)勝文則野
既然你都已經(jīng)把mod制作出來(lái)了,不矜夸一番怎么可以?下面就教你如何將mod發(fā)布到Steam創(chuàng)意工坊~
首先從Steam啟動(dòng)Don't Starve Mod Tools,選擇上傳工具,你會(huì)看見(jiàn)以下窗口,選擇你需要上傳mod對(duì)應(yīng)的游戲,即Don't Starve或Don't Starve Together;
然后點(diǎn)擊Add按鈕,會(huì)彈出以下窗口,點(diǎn)擊Browse按鈕,選擇要上傳的mod目錄路徑,并選擇要上傳的mod的種類,再點(diǎn)擊publish按鈕發(fā)布;(其中,點(diǎn)擊藍(lán)色框出的Browse按鈕,設(shè)定創(chuàng)意工坊mod預(yù)覽圖片)
接著你會(huì)看見(jiàn),按照程序預(yù)設(shè)的指示操作,同意Steam創(chuàng)意工坊的條款就大功告成了。
Lua編程
Lua(請(qǐng)不要念成“擼啊”),一款被設(shè)計(jì)成可用于包括游戲、網(wǎng)站和圖形處理等多方面等各類應(yīng)用的輕量級(jí)可嵌入的腳本語(yǔ)言,在很多游戲游戲中得到應(yīng)用,例如:Don't Starve,Don't Starve Together,Crusader Kings II,Europa Universalis IV,Crypt of the NecroDancer,等等。
要閱讀本章的內(nèi)容,你需要對(duì)計(jì)算機(jī)編程的概念有基本的了解。
首先為那些已經(jīng)學(xué)習(xí)過(guò) #編譯原理 的童鞋獻(xiàn)上Lua的AST
標(biāo)識(shí)符/Identifiers
Lua中的標(biāo)識(shí)符,可以是任何以字母或下劃線開(kāi)始,由字母([a-zA-Z])、數(shù)字([0-9])或下劃線('_')構(gòu)成的字符串。
Lua對(duì)大小寫(xiě)敏感,也就是說(shuō) Lua 跟 LUA 是不同的兩個(gè)標(biāo)識(shí)符。
關(guān)鍵字/Key words
Lua提供了共計(jì)21個(gè)關(guān)鍵字,即:
由于 Lua 是對(duì)大小寫(xiě)敏感的語(yǔ)言: 盡管 and 是保留字,但 And 和 AND 卻是兩個(gè)不同且合法的標(biāo)識(shí)符。
按照慣例,以下劃線開(kāi)頭的標(biāo)識(shí)符保留為 Lua 內(nèi)部變量。
其他符號(hào):
+ - * / ^ = ~ = <
= > = < > = = ( )
{ } [ ] ; : , . .. ...
字符串
字符串(Literal string)可以通過(guò)匹配單引號(hào)或者雙引號(hào)進(jìn)行界定,并且可以包括下列類C轉(zhuǎn)義序列(escape sequence):
另外,換行還可以用轉(zhuǎn)義符'\newline'表示;字符可以以 '\d'、'\dd' 或 '\ddd'(其中字母 d 表示十進(jìn)制數(shù)字,decimal digit)的形式,用其對(duì)應(yīng)數(shù)值表示;Lua 字符串可以包含任何 8 位字符,包括 '\0'。
Lua 字符串還可以用一對(duì)形如 [[ ... ]] 的雙方括號(hào)界定,如此可以跨行定義字符串,并且可以嵌套。
數(shù)字常數(shù)
Lua 的數(shù)字常數(shù)與 C 語(yǔ)言類似,以下是一些示例:
3 3.0 3.1416 314.16e-2 0.31416E1
注釋
Lua 的注釋以兩個(gè)連續(xù)的連接符,即 -- 開(kāi)頭
類型
Lua 是一種動(dòng)態(tài)類型語(yǔ)言。這就意味著變量沒(méi)有類型,而只有值才具有類型。
Lua 中有 8 種基本類型: nil, boolean, number, string, function, userdata, thread 和 table。其中number是雙精度浮點(diǎn)數(shù),string是 8 bit 字符串。
賦值A(chǔ)ssignment
Lua,正如JavaScript一樣,是一種類型松散(loose typing)的腳本語(yǔ)言;換言之,與C/C++和Java等強(qiáng)類型定義語(yǔ)言中要求聲明(declare)變量時(shí)必須選擇變量的類型不同,Lua賦值時(shí)只需要變量名和變量值:
my_var = "hello"
短路求值/Minimal evaluation
由于Lua內(nèi)核是基于C語(yǔ)言編寫(xiě)的,支持短路求值自然不足為奇。
所謂短路求值,即在以下Lua代碼
if condition_A and condition_B and condition_C then
中,首先計(jì)算 condition_A 的真值,若 condition_A 為假(false),則跳出;否則依次計(jì)算下一個(gè)布爾表達(dá)式的真值,直到出現(xiàn)假或者全部表達(dá)式都計(jì)算完畢為止。
表/Table
Lua的設(shè)計(jì)者在其語(yǔ)法中引入了表的概念,用以表示中的數(shù)組(Array)和圖(Map)兩種數(shù)據(jù)結(jié)構(gòu)。
1、創(chuàng)建一個(gè)表
你可以創(chuàng)建一個(gè)以字符串為鍵(Key)的表,即:
my_map = { apple = 5, banana = 10, melon = 9 }
或者一個(gè)類似數(shù)組的表,即:
my_array = { "Tom", "Jack", "Peter" }
2、修改表中的數(shù)據(jù)
如果你的表是以字符串為鍵的,那么你可以:
my_map.apple = 15
或者
my_map["apple"] = 17
如果你的表示以數(shù)字為鍵的,那么你可以:
my_array[1] = "Tompson"
請(qǐng)注意,Lua中以數(shù)字為鍵的表跟C/C++中數(shù)組不同,也就是 my_array[0] 的值是 nil。
表的遍歷
以字符串為鍵的表通過(guò)以下語(yǔ)法進(jìn)行遍歷:
for k, v in pairs(my_map) do
而以數(shù)字為鍵的表則是:
for i, v in ipairs(my_array) do
控制結(jié)構(gòu)
選擇
if exp then
block
elseif exp then
block
else
block
end
當(dāng)型循環(huán)
while exp do
block
end
直到型循環(huán)
repeat
block
until exp
從循環(huán)中跳出
在循環(huán)結(jié)構(gòu)中使用 return 和 break 可以跳出。
參考資料
與Lua有關(guān)的:
Lua 5.1 Reference:http://www.lua.org/manual/5.1/
Lua 5.0 Reference:http://www.lua.org/ftp/refman-5.0.pdf
Pre-compiled Lua libraries and executables:http://luabinaries.sourceforge.net/download.html
與DST有關(guān)的:
[Guide] Getting started with modding DST:http://forums.kleientertainment.com/topic/47353-guide-getting-started-with-modding-dst-and-some-general-tips-for-ds-as-well/
Getting Started: Guides, Tutorials and Examples:http://forums.kleientertainment.com/topic/28021-getting-started-guides-tutorials-and-examples/
Don't Starve Mods:http://dontstarve.wikia.com/wiki/Mods
Unofficial API Reference:http://dontstarveapi.com/
[Tutorial] Using Extended Sample Character Template - Tutorials & Guides - Klei Entertainment Forums:http://forums.kleientertainment.com/topic/46849-tutorial-using-extended-sample-character-template/
Matt's Tools! - Modding Tools, Tutorials & Examples - Klei Entertainment:http://forums.kleientertainment.com/files/file/73-matts-tools/
Better Crashes (RoG compatible) - Game Modifications - Klei Entertainment Forums:http://forums.kleientertainment.com/files/file/514-better-crashes-rog-compatible/