返回
Featured image of post 为什么不玩玩Tmod呢

为什么不玩玩Tmod呢

Terraria好玩,Tmod好玩,为什么不试着自己写一写tmod呢?

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 

从上往下依次是模组显示的名称,版本号,作者和模组主页。之后列出的四个选项则是模组在解包时提供的选项。

image-20220503161436930
image-20220503161436930

对于一个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(笑

runes-wave-sword
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仓库链接:

icon
icon

https://github.com/bear-zd/GreatForger

Licensed under CC BY-NC-SA 4.0