缺氧MOD開發(fā) 從小白到入門(一、工具及環(huán)境)
寫在前面:游戲過程中使用mod總有或多或少的不滿意,于是產(chǎn)生自己做mod的想法,中文環(huán)境相關(guān)資源比較少,英文又爛,一邊摸索一邊入門,將這個(gè)過程記錄下來,當(dāng)做筆記,也是拋磚引玉,希望未來能不斷完善。
一、需要用到的軟件
1、Microsoft Visual Studio?(必備)
下載地址:https://visualstudio.microsoft.com/zh-hans/free-developer-offers/
使用免費(fèi)版即可,用于創(chuàng)建dll文件。

2、dnSpy (必備)
下載地址:https://github.com/dnSpy/dnSpy/releases
用于解析DLL文件,查看缺氧游戲的相關(guān)功能代碼,同時(shí)可解析現(xiàn)成的MOD,學(xué)習(xí)一些功能的實(shí)現(xiàn)方法。

3、Poedit?(可選)
下載地址:https://poedit.net/
用于解析PO文件,查看物體的游戲內(nèi)名稱。非必備,可用其他軟件代替,甚至可以用記事本代替。

二、軟件的使用
1、安裝Microsoft?Visual Studio并創(chuàng)建項(xiàng)目
下載安裝包后雙擊運(yùn)行,在工作負(fù)荷選項(xiàng)卡中選擇“.net桌面開發(fā)”和“通用windows平臺(tái)開發(fā)”兩個(gè)環(huán)境,然后進(jìn)行安裝。這一步可以手動(dòng)選擇安裝路徑和其他開發(fā)組件。

安裝完成后啟動(dòng)軟件,新建項(xiàng)目,項(xiàng)目模板中依次選擇C#、Windows、庫,選擇類庫(.NET Framewark),點(diǎn)擊下一步。
項(xiàng)目名稱中輸入mod名字,最好使用全英文,不要帶特殊符號(hào)。項(xiàng)目位置可以自己選擇,也可以默認(rèn)。
點(diǎn)擊創(chuàng)建按鈕即完成項(xiàng)目的創(chuàng)建工作。


這張圖就是創(chuàng)建項(xiàng)目后的界面,以后所有代碼編輯工作都在這個(gè)里面完成。

2、在項(xiàng)目中引用庫文件
引用庫文件的意思是在項(xiàng)目中添加缺氧游戲中的代碼,以便可以引用相關(guān)內(nèi)容。
如下圖,在右側(cè)資源管理器中的“引用”上點(diǎn)擊右鍵,菜單中選擇“添加引用”打開引用管理器,點(diǎn)擊“瀏覽”選擇所需的DLL文件,之后將添加的7個(gè)DLL文件選中,點(diǎn)擊“確定”按鈕完成引用文件的添加,至此所有準(zhǔn)備工作就完成了。

7個(gè)文件分別是:
0Harmony.dll、Assembly-CSharp.dll、Assembly-CSharp-firstpass.dll、Newtonsoft.Json.dll、UnityEngine.dll、UnityEngine.CoreModule.dll、PLib.dll。
其中前6個(gè)文件在游戲本體中,路徑是:STEAM游戲庫文件\OxygenNotIncluded\OxygenNotIncluded_Data\Managed
PLib.dll需要額外添加,專欄沒法添加附件,這個(gè)文件可以在很多MOD文件里面找到,默認(rèn)路徑是:文檔\Klei\OxygenNotIncluded\mods\Steam中,可以使用搜索功能。
3、dnSpy的安裝和使用
這個(gè)軟件是綠色,解壓后雙擊 dnSpy.exe 既可以運(yùn)行
具體使用方法在隨后的分析游戲代碼中進(jìn)行說明。
4、Poedit的安裝和使用
游戲中物體的顯示名稱和內(nèi)部代碼名稱并不一致,所以我們要先找到物體的內(nèi)部代碼名稱。其中,中英文字典的文件是 strings_preinstalled_zh_klei.po ,文件路徑是 游戲安裝路徑\OxygenNotIncluded\OxygenNotIncluded_Data\StreamingAssets\strings 中。
Poedit安裝包雙擊運(yùn)行進(jìn)行安裝,完成后運(yùn)行,如下圖

點(diǎn)擊瀏覽文件,選擇strings_preinstalled_zh_klei.po文件并打開,如下圖,主界面中即是英文-中文對(duì)照。

在菜單中點(diǎn)擊“編輯” - “查找”,打開搜索框,輸入需要查找的物體的中文名字,例如“氫氣發(fā)電機(jī)”,因?yàn)榻Y(jié)果可能不是唯一,需要不斷點(diǎn)擊“上一個(gè)”或“下一個(gè)”,找到類似 <link="XXXX">XXXX</link>的內(nèi)容,其中l(wèi)ink=“”中的英文即是物體對(duì)應(yīng)的內(nèi)部代碼名稱。例如氫氣發(fā)電機(jī)的內(nèi)部代碼名稱就是“HYDROGENGENERATOR”。

當(dāng)然,這個(gè)工作用其他軟件也能代替,例如記事本:

以上就完成了所有準(zhǔn)備工作,因?yàn)槲沂切“祝虼藭簳r(shí)不涉及新物品的添加以及動(dòng)畫的添加,只進(jìn)行現(xiàn)有物體的修改。