1. 程式人生 > >【CTMLT】0x01 環境與Hello World

【CTMLT】0x01 環境與Hello World

注:以下教程均以Win7系統為準展示

編寫tMod時,類似平時的程式碼工程,我們需要編譯器編輯器。 按照CTMLT 0x00所給的連結中的教程,您應搭建好了TML的基礎環境(放到了原版資料夾下)。開啟後應是(不關心版本): 在這裡插入圖片描述 為在我們編寫自己的tMod時更加清楚、方便,此時確保沒有其餘模組在模組資料夾中(可以先將幾個模組檔案移動至其它資料夾,也可以將以前的tMod全部禁用): 在這裡插入圖片描述

“編譯器”

編譯器即我們的tModLoader。一個tMod也有一份原始檔編譯後的二進位制檔案,而在您編寫完原始碼(一個資料夾)後,通過TML將此原始碼編譯為"可執行"的二進位制檔案(.tmod)。

“編輯器”

即常用的程式碼編輯器或整合開發環境。在這裡推薦Visual Studio

,原因是在編寫tMod時,需要輔助的功能較多(如列出類成員、檢視函式簽名等),而vs的VAX或其他外掛提供了便捷。vs本身也是人們平常用得最多的。

具體除錯方法以及輔助工具

除錯

編譯好後(編譯時可能發生錯誤,報錯資訊易讀懂,這裡就不多談),便需要開始測試(除錯)。除錯tMod其實就一句話:把自己的tMod就當成一個成形的mod來玩,玩的過程中便會發現不足、錯誤之處。個人建議的方法是:額外新建一個人物、一個存檔專門用於測試自己的tMod。

繪圖

做自己的mod當然需要貼圖。可以自己畫,也可以與別人合作。一般的團隊是一部分人負責貼圖一部分人負責程式碼的。畫圖軟體首選的當然是Photoshop,但TR貼圖屬於畫素畫

類,因此在這裡推薦steam上的一款專業畫素繪圖軟體Aseprite

TR原始碼

TML使用的大部分其實都是使用原始碼內的類、函式等。在寫程式碼時為了能讓vs自動補全,需要一份TR原始碼檔案。 獲取原始碼可以加入我們的TML開發交流群,QQ群號:521594299,群檔案內可以找到。 獲取後,確保開啟TR原始碼資料夾或者開啟其目錄下的**.sln**檔案。我這裡為了方便,我把TR原始碼放在了Mod Sources資料夾。

TR貼圖

在自己畫mod的貼圖時,可能需要頻繁的去參考原版的貼圖。參考的方法一是去TR維基官網,二是用離線TR原版貼圖包。可以在裙中世界獲取。

HERO’s Mod

在測試自己的tMod時,舉個例子,我們寫了一支自己的槍LemonGun

,合成表為[鑽石<3>,任何 鐵錠<10>,任何 木材<15>,鐵鏈<2>][熔爐]。這支槍的確存在於我們的tMod裡了,然而想要獲取它、測試時,為收集合成這支槍的材料就顯得麻煩。一種方案是不用上面所說的新建人物、世界,而是用全物品存檔。而我個人認為更加方便的方法是Hero’s Mod。 眾所周知,這是一款“作弊Mod”,它可以幫你直接獲得某件物品(包括其他Mod裡的物品)、開啟****上帝模式調整時間編輯字首等等。因此對於測試自己的tMod十分方便(當你想要測試LemonGun的效能時,直接拿就行了)。 下面看看Hello World(以vs作演示)。

Hello World Mod

以下操作的每個步驟先不做詳細解釋(大家可以猜測)。

  1. 啟動vs,資源管理器開啟"C:\Users\admin\Documents\My Games\Terraria\ModLoader\Mod Sources"資料夾(此資料夾用於存放tMod原始檔)。
  2. 右鍵Mod Sources資料夾,新增新資料夾,命名為"HelloWorldMod“。 在這裡插入圖片描述
  3. 右鍵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\*
  1. 右鍵HelloWorldMod資料夾,新建檔案"description.txt",並寫入:
Welcome to Hello World Mod!
  1. 右鍵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;
		}
	}
}
  1. 準備一張80*80的圖片,命名為"icon.png",儲存至HelloWorldMod資料夾: 在這裡插入圖片描述
  2. 右鍵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;
		}
	}
}
  1. 準備一張32*32的圖片作為HelloWorldSword的素材,命名為“HelloWorldSword.png",儲存至Items資料夾: 在這裡插入圖片描述
  2. 啟動tModLoader,開啟模組原始碼,可以見到(下面的TR原始碼不用理它): 在這裡插入圖片描述
  3. 點選”生成並重新載入“。此過程會生成二進位制檔案,並重新載入所有tMod(所以在除錯自己的tMod時建議將其餘tMod禁用或搬移): 在這裡插入圖片描述
  4. 開啟模組管理,可以看到TML成功地載入了我們的模組(還可以開啟“更多資訊"):在這裡插入圖片描述
  5. 進入遊戲,會發現左下角出現報錯資訊: 在這裡插入圖片描述 不用慌,這不是我們的模組的錯誤。此時可以回到主選單,開啟設定->tModLoader 設定,開啟實驗功能在這裡插入圖片描述
  6. 現在可以回到遊戲中測試我們的HelloWorldMod了。開啟HerosMod的物品瀏覽器->模組,可以見到: 在這裡插入圖片描述
  7. 拿取它放進揹包,可以見到: 在這裡插入圖片描述
  8. 可以測試擊殺一隻史萊姆。

總結

今天我們重點講了編寫tMod的環境和除錯方法。 需要的環境有:

  • Visual Studio(或其它編輯器、IDE,這裡推薦)
  • tModLoader

輔助工具有:

  • VS的VAX外掛
  • TR原始碼、原版貼圖
  • 畫圖工具(Photoshop, Aseprite等)
  • Hero’s Mod

除錯方法總結為:

  1. 編寫原始碼
  2. 用TML生成模組
  3. 若報錯,則除錯
  4. 進入遊戲測試效果
  5. 若有不意處,則修改
  6. 回到第1步

以後我們所講的重點就是如何具體執行第1步。