【CTMLT】0x01 環境與Hello World
注:以下教程均以Win7系統為準展示
編寫tMod時,類似平時的程式碼工程,我們需要編譯器與編輯器。 按照CTMLT 0x00所給的連結中的教程,您應搭建好了TML的基礎環境(放到了原版資料夾下)。開啟後應是(不關心版本): 為在我們編寫自己的tMod時更加清楚、方便,此時確保沒有其餘模組在模組資料夾中(可以先將幾個模組檔案移動至其它資料夾,也可以將以前的tMod全部禁用):
“編譯器”
編譯器即我們的tModLoader。一個tMod也有一份原始檔與編譯後的二進位制檔案,而在您編寫完原始碼(一個資料夾)後,通過TML將此原始碼編譯為"可執行"的二進位制檔案(.tmod)。
“編輯器”
即常用的程式碼編輯器或整合開發環境。在這裡推薦Visual Studio
具體除錯方法以及輔助工具
除錯
編譯好後(編譯時可能發生錯誤,報錯資訊易讀懂,這裡就不多談),便需要開始測試(除錯)。除錯tMod其實就一句話:把自己的tMod就當成一個成形的mod來玩,玩的過程中便會發現不足、錯誤之處。個人建議的方法是:額外新建一個人物、一個存檔專門用於測試自己的tMod。
繪圖
做自己的mod當然需要貼圖。可以自己畫,也可以與別人合作。一般的團隊是一部分人負責貼圖一部分人負責程式碼的。畫圖軟體首選的當然是Photoshop,但TR貼圖屬於畫素畫
TR原始碼
TML使用的大部分其實都是使用原始碼內的類、函式等。在寫程式碼時為了能讓vs自動補全,需要一份TR原始碼檔案。 獲取原始碼可以加入我們的TML開發交流群,QQ群號:521594299,群檔案內可以找到。 獲取後,確保開啟TR原始碼資料夾或者開啟其目錄下的**.sln**檔案。我這裡為了方便,我把TR原始碼放在了Mod Sources資料夾。
TR貼圖
在自己畫mod的貼圖時,可能需要頻繁的去參考原版的貼圖。參考的方法一是去TR維基官網,二是用離線TR原版貼圖包。可以在裙中世界獲取。
HERO’s Mod
在測試自己的tMod時,舉個例子,我們寫了一支自己的槍LemonGun
Hello World Mod
以下操作的每個步驟先不做詳細解釋(大家可以猜測)。
- 啟動vs,資源管理器開啟"C:\Users\admin\Documents\My Games\Terraria\ModLoader\Mod Sources"資料夾(此資料夾用於存放tMod原始檔)。
- 右鍵Mod Sources資料夾,新增新資料夾,命名為"HelloWorldMod“。
- 右鍵HelloWorldMod資料夾,新建檔案,命名為"build.txt",並寫入:
displayName = Hello World Mod
author = Clavier905
version = 1.0
hideResources = false
hideCode = false
includeSource = true
includePDB = true
buildIgnore = *.csproj, *.sln, obj\*, bin\*, *.suo, *.user, .git\*, .vs\*, Libraries\*
- 右鍵HelloWorldMod資料夾,新建檔案"description.txt",並寫入:
Welcome to Hello World Mod!
- 右鍵HelloWorldMod資料夾,新建檔案"HelloWorldMod.cs",並寫入:
using Terraria;
using Terraria.ModLoader;
using Terraria.ID;
namespace HelloWorldMod.Items
{
public class HelloWorldSword : ModItem
{
public override void SetStaticDefaults()
{
base.SetStaticDefaults();
DisplayName.SetDefault("Hello World Sword");
Tooltip.SetDefault("Hello World!");
}
public override void SetDefaults()
{
item.damage = 14;
item.knockBack = 2.2f;
item.crit = 6;
item.rare = 2;
item.useTime = 30;
item.useAnimation = 30;
item.useStyle = 1;
item.melee = true;
item.UseSound = SoundID.Item1;
item.scale = 1f;
item.width = 32;
item.height = 32;
item.maxStack = 1;
}
}
}
- 準備一張80*80的圖片,命名為"icon.png",儲存至HelloWorldMod資料夾:
- 右鍵HelloWorldMod資料夾,新建資料夾"Items"(注意大寫),資料夾下新建檔案"HelloWorldSword.cs",並寫入:
using Terraria;
using Terraria.ModLoader;
using Terraria.ID;
namespace HelloWorldMod.Items
{
public class HelloWorldSword : ModItem
{
public override void SetStaticDefaults()
{
base.SetStaticDefaults();
DisplayName.SetDefault("Hello World Sword");
Tooltip.SetDefault("Hello World!");
}
public override void SetDefaults()
{
item.damage = 14;
item.knockBack = 2.2f;
item.crit = 6;
item.rare = 2;
item.useTime = 20;
item.useAnimation = 20;
item.useStyle = 1;
item.pick = 90;
item.melee = true;
item.UseSound = SoundID.Item1;
item.scale = 1f;
item.width = 32;
item.height = 32;
item.maxStack = 1;
}
}
}
- 準備一張32*32的圖片作為HelloWorldSword的素材,命名為“HelloWorldSword.png",儲存至Items資料夾:
- 啟動tModLoader,開啟模組原始碼,可以見到(下面的TR原始碼不用理它):
- 點選”生成並重新載入“。此過程會生成二進位制檔案,並重新載入所有tMod(所以在除錯自己的tMod時建議將其餘tMod禁用或搬移):
- 開啟模組管理,可以看到TML成功地載入了我們的模組(還可以開啟“更多資訊"):
- 進入遊戲,會發現左下角出現報錯資訊: 不用慌,這不是我們的模組的錯誤。此時可以回到主選單,開啟設定->tModLoader 設定,開啟實驗功能:
- 現在可以回到遊戲中測試我們的HelloWorldMod了。開啟HerosMod的物品瀏覽器->模組,可以見到:
- 拿取它放進揹包,可以見到:
- 可以測試擊殺一隻史萊姆。
總結
今天我們重點講了編寫tMod的環境和除錯方法。 需要的環境有:
- Visual Studio(或其它編輯器、IDE,這裡推薦)
- tModLoader
輔助工具有:
- VS的VAX外掛
- TR原始碼、原版貼圖
- 畫圖工具(Photoshop, Aseprite等)
- Hero’s Mod
除錯方法總結為:
- 編寫原始碼
- 用TML生成模組
- 若報錯,則除錯
- 進入遊戲測試效果
- 若有不意處,則修改
- 回到第1步
以後我們所講的重點就是如何具體執行第1步。