Play
Terraria确实好玩,截至现在已经有350+小时,Tmod最初是没有在Steam上发售的,加上之前的游戏时长,Tmod少说也有250+小时了。
除了Terraria本身的趣味性,Tmod则是大大的扩展了游戏的内容,其中一批批优秀的模组甚至远远超出了游戏本体所具有的内容,例如灾厄,同时也能看到一批批新人、新mod逐渐加入,受到了大家的一致期待,例如星光之河,既然如此,那我应该也可以试着搞一搞tmod的开发?
Start
在构建mod之前,首先需要开启tmod中设置里的开发者模式,之后就可以在游戏界面看到一个模组源代码菜单,点击之后需要根据其提供的信息安装依赖库和vs,之后在vs中安装.NET桌面程序即可完成环境的配置。再完成上述的环境配置之后,我们理应能够成功进入这个菜单,并看到这个菜单里空空如也了。
那么接下来就是正式的开始我们的mod制作了。
First of all: basic information
在Tmodloader的Mod Resource目录下,我们创建自己的mod文件夹并开始模组的制作。
在进行复杂物品的创建和绘制资源之前,我们首先需要创建两个txt文件,作为编译和mod的配置文件。
- build.txt
- description.txt
这两个文件中的内容倒也不难理解
// build.txt
displayName = Learn2TMod
version = 0.1
author = zidea
homepage = https://github.com/bear-zd
hideCode = false
hideResources = false
includeSource = true
includePDB = true
从上往下依次是模组显示的名称,版本号,作者和模组主页。之后列出的四个选项则是模组在解包时提供的选项。
对于一个mod,我们是可以看到其有提取选项,那么这几个配置就决定了提取操作所能获得的内容。
hideCode为true时提取的代码不包含dll和cs文件。 hideResources为true时提取东西中不包含资源文件 includePDB是否提供编译错误
详细的内容可以参考github 的wiki
另一个则是description.txt这个就是简单的描述文件,也就是点进mod所能看到的内容。
From a basic item
Create a item
既然要自己搞mod,那么资源也得自己搞,这里就在steam区购买了Aseprite绘制像素画,这里就随便画了一个128*128的像素剑,我称之为runes-wave-sword(笑
那么接下来我们创建一个item文件夹并导入画的图片,并创建一个和贴图名称相同的cs文件。这里具体的东西先不说,我们在这个cs文件中写下如下代码
using Terraria.ModLoader;
using Terraria;
using Terraria.ID;
using Terraria.Localization;
// 注意,文件夹名可以随意,但是名字空间必须与之对应
namespace Learn2TMod.items.swords
{
public class asword : ModItem
{
public override void SetStaticDefaults() // 必须
{
DisplayName.SetDefault("runes-wave-sword");
DisplayName.AddTranslation(GameCulture.Chinese,"符文波能剑");
Tooltip.SetDefault("Made from greatest man!");
Tooltip.AddTranslation(GameCulture.Chinese,"来自至高无上之人!");
}
public override void SetDefaults()
{
item.useStyle = 1;
item.damage = 1000000;
item.useAnimation = 5;
item.useTime = 5;
item.width = 60;
item.height = 60;
item.scale = 1.25f;
item.value = Item.buyPrice(0,0,0,0);
item.value = Item.sellPrice(999,0,0,0);
item.rare = 5;
item.knockBack = 0.75f;
item.useTurn = true;
item.autoReuse = true;
item.accessory = true;
item.melee = true;
item.defense = 20;
item.mana = -20;
}
public override void AddRecipes()
{
ModRecipe recipe = new ModRecipe(mod);
recipe.AddIngredient(ItemID.Wood, 1);
recipe.AddTile(TileID.WorkBenches);
recipe.SetResult(this, 1);
recipe.AddRecipe();
}
}
}
图片和对应的cs文件应该在一个目录,同时我们创建与名字空间类似的目录
item-swords-asword.png
-asword.cs
在完成上面的操作之后就很简单了,打开Tmodloader中的模组源码,生成并加载即可。如果没有猜错,你将能在游戏中使用一个木头制造出这把剑,同时具有极度变态的属性。
What’s More
本来以为文档可以解决绝大部分的问题,但是由于没有体系的代码供参考,因此还是得需要通过专门的教程来学习这些内容,在此就给出国内教程的一个链接:
落星49模组的作者制作的论坛。https://fs49.org/
From then on
由于一些蛋疼的原因,我们服务器被封禁,再次获得服务器的时候,一个看上去不错的成品mod已经成功做出来了,目前在steam创意工坊有着上千的浏览量和上百的订阅数,也有不认识的人不断支持,可能后续会不断地进行更新,下面是对应的github仓库链接: