如果你想导入一个资源,你就需要一素材,在这里,我会演示如何使用大佬工具1.5来生成DDS文件。
DDS是一种图片格式,是DirectDraw Surface的缩写,它是DirectX纹理压缩(DirectX Texture Compression,简称DXTC)的产物。由NVIDIA公司开发。
以上来自百度百科,现在你应该知道了,游戏是不能随便加载Jpg或者是Png的,你必须制作正确的格式,然而《文明6》对于图标贴图又需要多种分辨率大小,通过Photoshop手动保存将会是一个噩梦,所以,我会一一讲解,如何最快生成大量的游戏素材。
如果你想下载Photoshop的DDS插件,请访问:https://developer.nvidia.com/nvidia-texture-tools-adobe-photoshop(该文章不讲解这个工具的疑难问题和安装过程,百度有大量相关教程。)
友情提示,如果PS的DDS插件装不上,可能和如下情况有关:32位与64位,PS版本。
文明6大多数图标都是圆形的,他们大多数的最大分辨率是256像素*256像素,但实际的图像内容并不是占满整个256*256的,如果你想了解什么内容,请翻查Sid Meier's Civilization VI SDK Assets,如果你忘记这个东西是什么,请看第一章:
该文件夹里包含着大量的文明6原始数据,在2018年8月最近的更新中,补齐了资料片的素材,若你不知道图标的具体大小和尺寸,请访问该资源包来获得信息,若你不太明白其中的内容,请先看完本章节,你将会了解贴图色彩问题和多个素材拼合在一张图片上的问题,而如何挖掘官方素材的信息,我将会单独打开一章节。
对于领袖图标,你需要注意的是:
当你完成后,请将该文件存为png格式,我们用大佬工具1.5来生成各个分辨率的dds。
由于文明6有相对引用,例如背景等等,所以一些Id错误的格式会导致游戏引入失败,表现状况为:黑色贴图。
ID请尽量起的比较特殊,比如查理曼,该文明存在于场景包的情景模式中,同名ID冲突可能会造成资源引入错误,表现状况为:图标存在,但不是你所关联的。
Ps在某些情况下保存后的贴图被大佬工具1.5生成后格式错乱,请保存为png再通过大佬工具1.5生成,如果仍然花屏,请用画图工具打开你的png文件并重新存储一下,如果还花屏,请换个图片工具打开并重新存储。
上图是重点
接下来将一一讲解:
尺寸的来源是通过分析官方文件数据得到的,如果你不知道或者你想手动通过PS保存各个尺寸,请查阅相关信息来了解,大佬工具1.5内置这些尺寸,不同引用的尺寸是不一样的,例如:文明图标需要44号而领袖不需要。
文明图标的45号被用于初始领袖选择界面时加载,这是在风起云涌版本之前的情况。
如你所见,当我们打开文件并选择图标生成尺寸类型(刚才提到的:Keep Resolution)之后,这就是常规情况下的样子,这时候,我们可以点击转换。
不要关掉大佬工具1.5!这时候,我们通过右下角的文件夹图标打开生成目录。
你可以通过PS打开后来检查一下:
OK,接下来我们回到大佬工具1,5,点击右下角的ATLAS按钮。
将这些内容复制出来,在你的ModBuddy里新建一个xml,这个xml将专注于存储你的图标数据:
<GameData>
<IconTextureAtlases>
<Row Name="ATLAS_LEADER_FSN_ARCHER_EMIYA" IconSize="256" IconsPerRow="1" IconsPerColumn="1" Filename="ICON_FSN_ARCHER_EMIYA_256.dds"/>
<Row Name="ATLAS_LEADER_FSN_ARCHER_EMIYA" IconSize="80" IconsPerRow="1" IconsPerColumn="1" Filename="ICON_FSN_ARCHER_EMIYA_80.dds"/>
<Row Name="ATLAS_LEADER_FSN_ARCHER_EMIYA" IconSize="64" IconsPerRow="1" IconsPerColumn="1" Filename="ICON_FSN_ARCHER_EMIYA_64.dds"/>
<Row Name="ATLAS_LEADER_FSN_ARCHER_EMIYA" IconSize="55" IconsPerRow="1" IconsPerColumn="1" Filename="ICON_FSN_ARCHER_EMIYA_55.dds"/>
<Row Name="ATLAS_LEADER_FSN_ARCHER_EMIYA" IconSize="50" IconsPerRow="1" IconsPerColumn="1" Filename="ICON_FSN_ARCHER_EMIYA_50.dds"/>
<Row Name="ATLAS_LEADER_FSN_ARCHER_EMIYA" IconSize="48" IconsPerRow="1" IconsPerColumn="1" Filename="ICON_FSN_ARCHER_EMIYA_48.dds"/>
<Row Name="ATLAS_LEADER_FSN_ARCHER_EMIYA" IconSize="45" IconsPerRow="1" IconsPerColumn="1" Filename="ICON_FSN_ARCHER_EMIYA_45.dds"/>
<Row Name="ATLAS_LEADER_FSN_ARCHER_EMIYA" IconSize="32" IconsPerRow="1" IconsPerColumn="1" Filename="ICON_FSN_ARCHER_EMIYA_32.dds"/>
</IconTextureAtlases>
<IconDefinitions>
<Row Name="" Atlas="ATLAS_LEADER_FSN_ARCHER_EMIYA" index="0"/>
</IconDefinitions>
</GameData>
该元素通过<Row>来记录数据,Row有如下属性:
该元素同样通过<Row>来记录数据,Row有如下属性:
以上就是文明6图标是如何从外部引入到游戏内部的流程,大体上是将图标的各种尺寸都定义成一个集合,再将这个集合引入到游戏里起个游戏能够识别的Id,如果你不太明白,并不影响后面的制作,你只需要跟着我的步骤就能够成功。
图标的开头均为ICON_
领袖贴图命名为ICON_领袖ID,例如教程Mod领袖ID为LEADER_FSN_ARCHER_EMIYA,那么名称即为ICON_LEADER_FSN_ARCHER_EMIYA(先不考虑后缀名),该图标会被相对加载到部分领袖图标上。
文明名称开头为ICON_,然后同上,是文明的ID,例如ICON_CIVILIZATION_CHARLEMAGNE_SABER_FRANCIA。
背景为领袖ID加上_BACKGROUND,例如LEADER_FSN_ARCHER_EMIYA_BACKGROUND,该文件名称作为ID时,选择对应领袖会被自动加载。
FALLBACK_NETURAL_FSN_ARCHER_EMIYA,该名称为FallBackLeader使用,用于游戏中外交界面的2D领袖贴图,命名为去掉LEADER_后的领袖ID前加上FALLBACK_NETURAL。(实际引用则根据Artdef而变化)。
好了,现在你会做图标了,这里我也要讲一下文明的图标怎么做:
标记图标实际上是一个纯白色的标志,背景透明,置入在图像中,游戏通过内部的颜色系统为标志上色,从而实现一个图标多次使用。
与上方流程相同,将图标存储为所需要的图标尺寸后等待导入Asset Editor进行进一步处理。
除去图标以外,背景图,领袖图等等都是一单张DDS,他们的尺寸是固定的,你可以参考官方素材文件夹里,或者使用我提供的办法(我提供的并不准确)。
宽768,高1024,整体图像请偏左一些。
岁数大了……每次做都忘记这个尺寸,你可以查查别人的……或者告诉我一下正常尺寸。
宽1280,高1000
宽1920,高1080
超过这个尺寸,载入图边缘的一层蒙版会消失,这个尺寸也应该是文明6最大载入贴图尺寸。
载入领袖图:
宽1024,高1024
这张图片载入的时候,底部会与屏幕贴紧,所以不管大小如何,请保证底部是存在的,否则会断层。
上下左右若有不连贯地方可以考虑使用羽化。
没有太多要求。
以上就是所有的图片大致情况了,将这些图片根据上面给的命名规则或者你所知道的名字保存为DDS后,我们进行下一步工作。
文明6的Mod的资源是需要被打包才能够被游戏载入的,这里就需要使用Asset Editor这个工具,通过该工具,我们可以把多媒体资源打包并入Mod中。
当你打开后,你就可以看到一个框框,正在加载,请稍等片刻。
注:笔者写该章节日期于2019年8月,该工具受到了大幅度的更新,界面有变化并且修复了几个Bug。
文明6的贴图会被打包入Xlp形成一个集合,并为集合附上正确的类,例如:图标的类是UITexure,若把该类型的Xlp写在错误的加载区域,是不能被游戏读取的,所以,正确的类标记和是Xlp打包的关键,首先,让我们先认识一下如何新建一个文件:
本章节只介绍ArtDef和Xlp两个部分。
这里,我们选择Xlp,并点击OK,于是得到一个新的文件编辑窗口:
首先,我们来介绍一下这几个内容的意思:
关于ID别名:文明6里有大量的相对引用,例如领袖ID_BACKGROUND,该Id用于显示领袖选择界面的领袖背景层,若想要一张图片在多个领袖下适配,就需要为该贴图起一个ID别名,例如LEADER_1_BACKGROUND,LEADER_2_BACKGROUND,但是他们实际引用的是同一张图片。
我们点击第二个按钮,弹出一个框框:
我们首先点击+ Add Source File... 添加源文件,弹出文件选择菜单,我们选择需要添加的贴图,然后点击打开,这里我添加的只有刚刚制作的领袖图标数据。
在这个界面修改原始图像,(演示路径:F:\Mods\CIV\2019\RESOURCE\FATE_EMIYA)中已经导入的文件,游戏会自动刷新,或者你可以按reimport刷新。
该功能用于检阅官方的素材,因为官方的素材都是这种格式。
Tex文件保存的是每个图片的数据源信息,以及这些图片的类型,标签,还有特殊的格式资料,一般情况下不需要修改。
通过导入Xlp文件就会自动生成Tex。
点击左上角File菜单下的Save,即可保存,保存之前请在Package Name写上名称,这里我写的与XLP Class一致。
现在,我们把加载背景,加载立绘,游戏背景,选择界面背景,还有刚刚已经添加的领袖图标都放入UITexture类的Class中。
如果你想要更方便的调试(Debug)你的素材,你可以给Package Name起一个有标志性的名字,比如,我现在改成了EmiyaUITexutre。
当你在log中查阅素材加载情况的时候,你可以快速搜索EmiyaUITexture来获取信息。
完成这一步,我们还需要单独为游戏的领袖立绘新建一个Xlp,这个Xlp的Xlp Class为:LeaderFallback
是不是很简单?现在请你编译一下Mod,然后看一看这两个Xlp是否成功被加入到了编译后的Mod中。
下一步,我们需要学习ArtDef相关的知识与内容。
当你有了素材之后,你还需要通过Artdef为这些素材建立关系,顾名思义,ArtDef是Art Define(艺术定义,应该是这么拼写),比如单位的模型在游戏中的大小,一个单位里在视觉上有多少个步兵,领袖在游戏中的二维贴图等等,都是通过该功能来实现的。
这一章节,我们只介绍如何为领袖绑定LeaderFallback,也就是如何为领袖绑定游戏外交界面的贴图立绘。
首先,我们新建一个Artdef。
这里的工具发生了Bug,需要再添加一个新的节点,然后删除,才能显示所有的属性。
如果你已经正确添加但是没有找到你的领袖立绘,请关闭Asset Editor并重新打开该工具刷新即可找到。
如果还没有,请先做完下方的Art.xml部分,再来做这一块。
如果还没有,请直接在外层复制粘贴你添加在Xlp文件中的ID
保存这个文件,然后,我们完成了游戏外交界面领袖立绘的绑定。
你以为刚才就完成了吗?并不!文明6还需要把Artdef和Xlp写在Art.xml中,该步骤用于游戏在正确的区块加载正确的数据文件,举个例子,如果这局游戏需要单位素材的话,文明6会加载单位的数据,如果不需要单位素材,文明6就不会加载任何单位素材,而如何细分哪些Xlp是单位素材,哪些Artdef是单位素材,就是通过Art.xml来实现的。
这里我们讲解一下这几块内容:
该文件编译后,后缀名会变为 .d e p(请无视空格,gitbook对这个词有特殊感情),本质还是个Xml。
这一部分,你可以使用大佬工具1.5来制作,你也可以使用我的方式来制作。
你已经了解Art.xml了,那么我们的任务有两个部分:1.引用正确的Artdef,2.引用正确的Xlp。
我们刚才的制作,一共创建了两个Xlp,一个Artdef,我们需要把这三个文件添加进去。
和刚才的套路一样,我们继续再Packages部分点击Add..找到我们的Xlp文件:
然后我们还需要添加UITexture:
终于,我们完成了这一部分:
以下部分可做参考:
如果你的Mod只需要原版游戏素材数据的话,你也可以去修改最底下的Dependencies,让Mod的兼容性原版游戏:
进阶Modder注意:这一部分很迷,似乎可以为每一种依赖添加不同的资源引用
现在我们保存这个文件,它可能会弹出这个窗口:
现在你可以编译一遍,然后我们会得到dep和artdef还有xlp
如果都存在,就证明你没有做错。
大佬工具还在测试可能有问题,所以不是很建议
把生成后的文件替换原来的art.xml(图中的例子是Fate_Stay_Night__Emiya.Art.xml)
很好,你现在已经完成了素材的部分,现在你需要重新修改我们之前再第四章做的一些数据,如果你忘了一些内容,建议你返回查阅:
<!-- 修改前 -->
<Players>
<Row CivilizationAbilityDescription="LOC_TRAIT_CIVILIZATION_ADJACENT_DISTRICTS_DESCRIPTION" CivilizationAbilityIcon="ICON_CIVILIZATION_JAPAN" CivilizationAbilityName="LOC_TRAIT_CIVILIZATION_ADJACENT_DISTRICTS_NAME" CivilizationIcon="ICON_CIVILIZATION_JAPAN" CivilizationName="LOC_CIVILIZATION_JAPAN_NAME" CivilizationType="CIVILIZATION_JAPAN" LeaderAbilityDescription="LOC_LEADER_FSN_ARCHER_EMIYA_UBW_DESCRIPTION" LeaderAbilityIcon="ICON_LEADER_HOJO" LeaderAbilityName="LOC_TRAIT_LEADER_FSN_ARCHER_EMIYA_UBW_NAME" LeaderIcon="ICON_LEADER_HOJO" LeaderName="LOC_LEADER_FSN_ARCHER_EMIYA_NAME" LeaderType="LEADER_FSN_ARCHER_EMIYA" Portrait=""/>
<!-- Expansion 1 Support -->
<Row CivilizationAbilityDescription="LOC_TRAIT_CIVILIZATION_ADJACENT_DISTRICTS_DESCRIPTION" CivilizationAbilityIcon="ICON_CIVILIZATION_JAPAN" CivilizationAbilityName="LOC_TRAIT_CIVILIZATION_ADJACENT_DISTRICTS_NAME" CivilizationIcon="ICON_CIVILIZATION_JAPAN" CivilizationName="LOC_CIVILIZATION_JAPAN_NAME" CivilizationType="CIVILIZATION_JAPAN" LeaderAbilityDescription="LOC_LEADER_FSN_ARCHER_EMIYA_UBW_DESCRIPTION" LeaderAbilityIcon="ICON_LEADER_HOJO" LeaderAbilityName="LOC_TRAIT_LEADER_FSN_ARCHER_EMIYA_UBW_NAME" LeaderIcon="ICON_LEADER_HOJO" LeaderName="LOC_LEADER_FSN_ARCHER_EMIYA_NAME" LeaderType="LEADER_FSN_ARCHER_EMIYA" Portrait="" Domain="Players:Expansion1_Players"/>
<!-- Expansion 2 Support -->
<Row CivilizationAbilityDescription="LOC_TRAIT_CIVILIZATION_ADJACENT_DISTRICTS_DESCRIPTION" CivilizationAbilityIcon="ICON_CIVILIZATION_JAPAN" CivilizationAbilityName="LOC_TRAIT_CIVILIZATION_ADJACENT_DISTRICTS_NAME" CivilizationIcon="ICON_CIVILIZATION_JAPAN" CivilizationName="LOC_CIVILIZATION_JAPAN_NAME" CivilizationType="CIVILIZATION_JAPAN" LeaderAbilityDescription="LOC_LEADER_FSN_ARCHER_EMIYA_UBW_DESCRIPTION" LeaderAbilityIcon="ICON_LEADER_HOJO" LeaderAbilityName="LOC_TRAIT_LEADER_FSN_ARCHER_EMIYA_UBW_NAME" LeaderIcon="ICON_LEADER_HOJO" LeaderName="LOC_LEADER_FSN_ARCHER_EMIYA_NAME" LeaderType="LEADER_FSN_ARCHER_EMIYA" Portrait="" Domain="Players:Expansion2_Players"/>
</Players>
<!-- 修改后,修改了LeaderIcon、LeaderAbilityIcon、Portrait -->
<Players>
<Row CivilizationAbilityDescription="LOC_TRAIT_CIVILIZATION_ADJACENT_DISTRICTS_DESCRIPTION" CivilizationAbilityIcon="ICON_CIVILIZATION_JAPAN" CivilizationAbilityName="LOC_TRAIT_CIVILIZATION_ADJACENT_DISTRICTS_NAME" CivilizationIcon="ICON_CIVILIZATION_JAPAN" CivilizationName="LOC_CIVILIZATION_JAPAN_NAME" CivilizationType="CIVILIZATION_JAPAN" LeaderAbilityDescription="LOC_LEADER_FSN_ARCHER_EMIYA_UBW_DESCRIPTION" LeaderAbilityIcon="ICON_LEADER_FSN_ARCHER_EMIYA" LeaderAbilityName="LOC_TRAIT_LEADER_FSN_ARCHER_EMIYA_UBW_NAME" LeaderIcon="ICON_LEADER_FSN_ARCHER_EMIYA" LeaderName="LOC_LEADER_FSN_ARCHER_EMIYA_NAME" LeaderType="LEADER_FSN_ARCHER_EMIYA" Portrait="LEADER_FSN_ARCHER_EMIYA_PORTRAIT"/>
<!-- Expansion 1 Support -->
<Row CivilizationAbilityDescription="LOC_TRAIT_CIVILIZATION_ADJACENT_DISTRICTS_DESCRIPTION" CivilizationAbilityIcon="ICON_CIVILIZATION_JAPAN" CivilizationAbilityName="LOC_TRAIT_CIVILIZATION_ADJACENT_DISTRICTS_NAME" CivilizationIcon="ICON_CIVILIZATION_JAPAN" CivilizationName="LOC_CIVILIZATION_JAPAN_NAME" CivilizationType="CIVILIZATION_JAPAN" LeaderAbilityDescription="LOC_LEADER_FSN_ARCHER_EMIYA_UBW_DESCRIPTION" LeaderAbilityIcon="ICON_LEADER_FSN_ARCHER_EMIYA" LeaderAbilityName="LOC_TRAIT_LEADER_FSN_ARCHER_EMIYA_UBW_NAME" LeaderIcon="ICON_LEADER_FSN_ARCHER_EMIYA" LeaderName="LOC_LEADER_FSN_ARCHER_EMIYA_NAME" LeaderType="LEADER_FSN_ARCHER_EMIYA" Portrait="LEADER_FSN_ARCHER_EMIYA_PORTRAIT" Domain="Players:Expansion1_Players"/>
<!-- Expansion 2 Support -->
<Row CivilizationAbilityDescription="LOC_TRAIT_CIVILIZATION_ADJACENT_DISTRICTS_DESCRIPTION" CivilizationAbilityIcon="ICON_CIVILIZATION_JAPAN" CivilizationAbilityName="LOC_TRAIT_CIVILIZATION_ADJACENT_DISTRICTS_NAME" CivilizationIcon="ICON_CIVILIZATION_JAPAN" CivilizationName="LOC_CIVILIZATION_JAPAN_NAME" CivilizationType="CIVILIZATION_JAPAN" LeaderAbilityDescription="LOC_LEADER_FSN_ARCHER_EMIYA_UBW_DESCRIPTION" LeaderAbilityIcon="ICON_LEADER_FSN_ARCHER_EMIYA" LeaderAbilityName="LOC_TRAIT_LEADER_FSN_ARCHER_EMIYA_UBW_NAME" LeaderIcon="ICON_LEADER_FSN_ARCHER_EMIYA" LeaderName="LOC_LEADER_FSN_ARCHER_EMIYA_NAME" LeaderType="LEADER_FSN_ARCHER_EMIYA" Portrait="LEADER_FSN_ARCHER_EMIYA_PORTRAIT" Domain="Players:Expansion2_Players"/>
</Players>
<!-- 修改前 -->
<LoadingInfo>
<Row LeaderType="LEADER_FSN_ARCHER_EMIYA" ForegroundImage="" BackgroundImage="" PlayDawnOfManAudio="1" LeaderText="LOC_LOADING_INFO_LEADER_FSN_ARCHER_EMIYA"/>
</LoadingInfo>
<DiplomacyInfo>
<Row Type="LEADER_FSN_ARCHER_EMIYA" BackgroundImage=""/>
</DiplomacyInfo>
<!-- 修改后 -->
<LoadingInfo>
<Row LeaderType="LEADER_FSN_ARCHER_EMIYA" ForegroundImage="LEADER_FSN_ARCHER_EMIYA_NEUTRAL" BackgroundImage="LEADER_FSN_ARCHER_EMIYA_BACKGROUND_LOAD" PlayDawnOfManAudio="1" LeaderText="LOC_LOADING_INFO_LEADER_FSN_ARCHER_EMIYA"/>
</LoadingInfo>
<DiplomacyInfo>
<Row Type="LEADER_FSN_ARCHER_EMIYA" BackgroundImage="LEADER_FSN_ARCHER_EMIYA_BACKGROUND"/>
</DiplomacyInfo>
我的分辨率是2K,所以加载界面有很多地方比较诡异……(不过游戏本身做的就很诡异)
好了,现在开始下一章节。