



材质包(Texture Packs)是泰拉瑞亚1.3版本加入的一个实验性功能,于1.4实装。其用途是可以让玩家任意替换游戏的默认素材,比如说人物形象,物品图标,武器防具外观,建筑图块等。
其生效原理为,让游戏本体读取一个外部文件夹,从而把标有对应文件名的素材应用在实际游戏中。
因此,材质包修改的素材,都是外观上的,并不会影响到游戏的逻辑——不能修改怪物的血量、行为模式等,被修改的武器外观也仅仅是一个皮肤。
但部分游戏体验可依靠材质包进行改善,比方说对于昆虫恐惧者,可以把蜘蛛的模型都替换为可爱的史莱姆;对于硬核玩家,可以尝试把所有的怪物的贴图缩小,让他们更难被察觉,从而使游戏更加困难。
泰拉瑞亚的最新版本(新版本的部分文件格式发生了变化,因此使得1.3以前的版本素材不可直接套用)
任意版本的Adobe Photoshop CS6或美图秀秀(用以修改素材)
Aseprite(同上,但对于创作像素画来说,这个软件比PS更加好用)
xnbexporter(解包软件)
Notepad++或任意编程软件(可选)
任意解压缩文件(可选,需支持.zip格式)
泰拉瑞亚中文wiki(https://terraria-zh.gamepedia.com/Terraria_Wiki)
工具都准备妥当后,我们需要先了解材质包的生效原理:让游戏本体读取一个外部文件夹。
游戏本体是如何识别材质包文件夹的呢?是随便丢张图片给它都会当作材质包吗?
非也。
和很多应用程序一样,游戏本体只会读取拥有对应规格的文件夹(或压缩包),就好象人脸识别一样,对的人才会通过验证,否则所有文件都是不生效的。
第一步:
首先我们来了解材质包的存放路径:主盘C:\Users\Administrator\我的文档\My Games\Terraria\ResourcePacks

你还可以在上级的Terraria里找到你的人物和地图存档。
好,说回正题。所以一个完整的材质包,都应放置在这个路径上(如果你找不到,可以在游戏主菜单的Texture Packs里点击打开文件夹)。
那么何为一个完整的材质包?
一个完成的材质包需要包含以下文件:
·总文件夹 (任意命名,它包含下列文件,为了方便理解,我们就叫它“惨 月总 惨”吧) ·icon.png (文件名不能改) ·pack.json (同上) ·Content (同上) ·Images (同上) ·<—— (在Images里放你的素材)
以上为一个完整的材质包,无论你往Images里面丢了东西。

一个完整的材质包,Images在Content文件内
因此,游戏可以同时存在并应用多个材质包,但上级的会被下级的覆盖(待验证)。
接下来,我们详细说说材质包文件夹里每个文件负责的职能。
1.icon.png是在游戏里显示的材质包预览图标,图片长宽为77x78。这个文件是可选的,没有它的话图标会显示为一个默认符号。
2.pack.json主要负责存储说明信息,这个文件是必要的。信息用以在游戏里显示你的材质包简介等。它由6行简易的代码构成:

通过Notepad++打开的pack.json,这里借用作者skymory_24的文件进行讲解
—————————————没有折线———————————————
{
"Name": "Modified Kimono (Original - Black + Pink)",
"Author": "skymory_24",
"Description": "Tweaks the kimono texture to closer resemble a furisode kimono",
"Version": {
"major": 1,
"minor": 0
}
}
—————————————没有折线———————————————
第一行代码,Name意为材质包的名字,这用于在游戏中显示。你可以将其设置为与“惨 月总 惨”文件夹一样的名字 。
第二行代码,Authoer意为作者,也就是材质包的作者。也是用以在预览材质包时显示。
第三行代码Description为简介,你可以在这里简短的对材质包进行说明。功能同上。
第四行以下的是版本号,比如当前的“1,0”。major控制的是第一个字符,minor是第二个。更改这两个字符可以让下载的玩家知道你的材质包是否有进行过更新,而对于自己做着玩的作者,这两个字符是不需要理会的。
3.Content及其下级的Images,要理解这个,我们可以打开游戏的安装盘:\Terraria\Content。

我们可以看到,在游戏的根目录,也有一个Images文件夹,而旁边还有fonts(字体),Sonunds(音效)文件夹。此处是游戏素材的主要存放路径,但今天我们只介绍Images文件夹。
打开根目录的Images文件夹,我们可以看到其下又有7个文件夹,以及一大堆.xnb格式的文件。

其中一个xnb文件,白色的图标透露出不详的气息
这些基本上NPC、怪物、防具、武器等等东西的贴图文件——也就是我们接下来要进行修改的对象。还记得教程一开始说的材质包生效原理吗?现在我们只需要找到对应的文件,将其提取出来,然后再改回同名文件,放进之前我们准备的材质包文件夹的对应位置,那么我们的材质包就算是制作完毕了。
但是这一大堆文件,我怎么才能知道哪个是我想要的呢?假如我想改女仆装,我怎么知道哪个文件是女仆装?

试着快速搜索“maid”,唔,毫无结果
看来这些文件和游戏里我们看到的道具不一样,并非使用直白的命名。而是采用一种更加“程序”化方式——数据ID。
接触过mod或者用过作弊指令的同学可能都知道,泰拉瑞亚里面每件物品,甚至NPC都有他们自己对应的数字ID。通过这些ID,结合它们的功能,我们就可以在文件夹内找到想要修改的文件。
比如说Item_3238.xnb,这是一个道具的贴图文件,对应ID为3238的物品(严格来说,是物品图标)。
Armor_206.xnb,就是ID为206的护甲贴图文件。
知道上述命名规律后,我们就可以快速定位到要修改的文件了。可是现在问题又产生了一个问题,泰拉瑞亚的物品和人物少说有上百个,我哪里能知道或者记得所有东西的数据ID呢?
这当然是不可能的事情,就连开发者可能也无法记住以上全部的数据ID。因此我们就需要借助泰拉瑞亚wiki的帮助了。

进入wiki,在右上方搜索栏输入“数据ID”,即可找到当前泰拉瑞亚所有东西的数据ID(除了人物的默认皮肤、默认服饰以外,这两样我现在还找不到哪里有标记它们的ID)。

这个页面是我进行翻译的,但由于不熟悉wiki的模板,物品名还是英文
比如说,女仆裙的ID是210,物品图标的ID是4129,它们分别对应Armor_210.xnb和Item_4129.xnb两个文件(用英文可能更容易理解它的对应关系)。需要注意的是,泰拉瑞亚一个套装通常有三个部件,每个部件们都是单独文件。
女仆套有头饰,衣服,鞋子三个部件,因此它们有三个对应的文件。头饰的ID是217,但不等于Armor_217.xnb对应的就是女仆头饰。由于多部件的缘故,护甲文件采用了以下特殊的命名规律:
Armor_n.xnb 身体配件(n为数字)
Armor_Head_n.xnb 为头部配件
Armor_Legs_n.xnb 为腿部配件
其次还有,Item_n.xnb是道具图标,NPC_n.xnb为敌人的贴图文件,Player_n即是玩家人物的部件……等等。
第二步:
现在我们已经知道了怎么创建一个名为“惨 月总 惨”的材质包了,以及如何才能找到我们要修改的对应文件。接下来要做的就是对内容进行修改了。
在开始前,我们还需要了解一个知识,即,“.xnb”格式到底是个什么东东?
与我们常见的png 、avi ,psd等格式不同,xnb是个很多人闻所未闻的文件格式,而且显然这种格式的文件无法被常规手段打开并进行预览。所以“.xnb”到底是个什么东东?,下面小编就来介绍“.xnb”格式到底是个什么东东?
“.xnb”格式到底是个什么东东呢?
基本上市面所有的游戏在发售前都会进行一定程度的加密,这是为了防止被破解,或是为了防止玩家能直接修改游戏内容从而作弊。
就好比我们上传小油黄总得先丢进一个压缩包一样——xnb就是加密后的“压缩包”。

一个等待被解压的压缩包
所以如果我们要提取出其中的内容,就需要对xnb进行“解压”,将其恢复成原始文件。
这里就不得不提一下,泰拉瑞亚1.4之前的材质包和mod制作方法了。由于这些加密的存在,作者们在制作mod的时候需要先把游戏的内容解密出来,然后进行修改,修改完毕还需要将内容再次加密为xnb,然后放回去。
由于当时官方还没有正式开放一个“接口”,因此这个过程是十分繁琐且痛苦的,特别是你需要多次对内容进行测试的时候。
但现在就不需要那么麻烦了,因为有了Texture Packs这个官方接口,tmodloader这个官方加载器也使得安装和测试mod更加方便。
现在我们只需要对内容进行解密(甚至你熟悉了以后,这步可以略过),对内容修改完毕后,直接放进“惨 月总 惨”里面就可以了。不需要再加密成xnb。
我们需要用到xnbexporter这个软件,它可以非常简单地把xnb复原为原始素材。

“像我这么叼的还有两个”
首先我们下载一个xnbexporter,然后把它和我们要解密的素材放在同一个文件夹内,打开xnbexporter,在输入栏内输入要解密的文件名,然后点击Go for it!
搞定。
不到3秒,我们就得到了游戏的原始素材。
接触过游戏制作方面的朋友,应该都清楚,游戏的素材通常不是我们理解的那样,是一个“整体”。不是直接画出一个完整的人就能用上的,很多情况下还需要把身体拆分为许多部件。
泰拉瑞亚的素材也不例外,服装不仅被单独划分开三个文件,每个部件还被拆成了一堆零散的碎片。

你以为的游戏默认素材

实际的游戏素材……
(一般人看到后的反应,这tm都是啥???)
别慌,下面我们一个个来慢慢讲解,但开始之前,我们最好先了解大致的素材规格:
一般来说,三角插头无法插入二插插座,素材同理。如果默认的原始图片大小是38x144,你修改后的图像就不应该大过或者小于这个值。否则这可能导致素材无法被正确读取的情况。
先来说说服装图片的常规大小。一般而言,护甲身体部件的图像大小是360x224(如有变化,以默认素材为准,下同)。但头部和腿部的图片又并不遵守这个大小,他们都是40x1120的规格。

NPC的图像更加过分,由于每个怪物移动帧数、体积的不同,几乎所有怪物的图像大小都是独立的。
哪怕是僵尸这单一品种,由于有许多种类的僵尸,图像大小上也存在略微差别。
(不小心把怪物衣服画没了,就不上图了)
清楚这个谜之设定后,我们再来了解其中的小部件分别是啥。
先说护甲。

人物的部件示意图
以上部件分别对应不同的动作,如跳跃,奔跑——玩家处于不同行为状态,游戏中的人物就会显示对应行为的贴图,也就是上述的其中一个部件。
这样看可能看不出什么,我们换一张图片。

每个单元格为40x56px
从左上角到右下角,呈以下对应关系:
一二行为男性动作,分别为
默认,跳跃,手臂空闲,挥动1,挥动2,挥动3,挥动4,前臂1,后臂1
前肩,后肩,手臂跳跃,手臂奔跑1,手臂奔跑2,手臂奔跑3,手臂奔跑4,前臂2,后臂2
三四是女性的动作。
需要注意的是,男女动作有略微的不同(外观上),体型上也有细微差别。
(操/蛋得过分的细节)
躯干说完,我们来了解头部和腿部的部件,这两个相对简单。

很简单,也很长……
再来是敌人,比起上述复杂的部件拆分,敌人的贴图划分容易理解许多。以史莱姆为例,他只有2帧动画,所以图片素材上有两格。僵尸是3帧,所以是三格。如此类推。

修改后的僵尸贴图
有两点是值得注意的,首先是色调。
史莱姆这个怪物比较特殊(当前只发现这个,不排除还有其他的),它的默认素材看起来是灰色的。但游戏里我们会遇到非常多种类的史莱姆:粉丝、蓝色、绿色、黑色……
我猜想,这是一种开发者“省事”的方法,在游戏内改变贴图的色调,就可以实现一张素材出现不同种类的敌人。所以如要修改史莱姆贴图,这个是需要注意一下的。
其次,关于怪物的面朝向。可能已经有人发现了,目前我们看到的素材都只有一个面朝向的,但游戏里我们可是可以左右移动的。
这其实是很多横版游戏里会用到的技巧,仅将图片翻转来代替人物面朝向改变。好处是开发商可以节省很多资源,不需要把素材镜像画一次。
坏处就是会出现DNF鬼剑士的那种情况——原本设定在左边的鬼手,在玩家改变朝向时突然变为了右边。

忽左忽右的鬼剑士
因此,当你要画一个新形象作为代替的时候,首先参考默认素材的面朝向。否则可能出现会“太空漫步”的情况。
第三步:
首先我们按照上述方法,提取出要修改的文件,然后我们把它放入到任意作图软件里。
这里举例PS。假如你会画画,想必接下来的步骤都不需要我教你了;你不会画画的话我也没法教你,因为我TM也不会。但我们可以通过PS简单进行一些“嫁接”行为,比方说给每个NPC和敌人都P上臭鼬头,或者把原版的护甲都改成女仆时装等等。

服装的嫁接基本上只要把想替换的提取出来,然后改个文件名就完事了,因为服装图像的规格大致相同。
但怪物在嫁接的时候就比较麻烦,由于上面所说的,每个怪物的动画帧数不同。史莱姆2帧的图像要代入僵尸的3帧,就需要用到一些小技巧,甚至美术手段。
这样就不一一累赘了,感兴趣可以自己查阅相关资料。
经过千辛万苦,我们终于把第一个材质包素材制作完毕。现在只需要把它们放进材质包文件夹内就OK了。
不过此时需要注意最后一件事情,那就是文件的放置位置。
材质包文件夹里放置的素材并非完全对应原始文件的位置。
比方说女仆装(为啥又是它),Armor_210.xnb原本是在Terraria\Content\Images目录下的,但是如果按照这个路径,直接放在材质包文件夹Images文件夹内,这个素材是不会被读取的。
这需要在“惨 月总 惨”的Images文件夹内新建一个Armor文件夹,然后再将服装身体部件的文件丢进去,才能被正确读取。目前还不清楚这这是bug还是怎么回事,因为女仆装的原始文件并不在Armor里,而是在外面。
其他身体部件可能也需要丢进去(待验证)。
你可以直接把整个文件夹都放进 主盘:我的文档\My Games\Terraria\ResourcePacks 内,也可以先打包成zip的形式再放进去(根据国外老哥的说法,原本是需要打包成zip的,但现在似乎整个文件夹也能被正确读取)。
测试的话推荐整个文件夹丢进去,因为如果是zip,如果要修改素材的话频繁打包解压你会急得想丢键盘。非常不方便。
好了,最后,在游戏里激活我们的材质包。
确保完全没有问题后,享受它!
当然,发布到论坛进行也是一个非常不错的选择。
原本说就写一个简短教程的,没想到这样就花了一天时间,字数都快破6000了。就厚着脸求个硬币和点赞好了……
