ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

文明6 Mod DDS图标制作全攻略:从白块到正常显示

文明6 Mod DDS图标制作全攻略:从白块到正常显示 做文明6 mod 这件事很多人一开始都卡在 XML、Lua 和 Gameplay Script 上但我个人的经验是真正让人懵圈的往往是一张 64x64 的小图标。你辛辛苦苦给新文明写好了特性、配好了外交台词进游戏一看文明选择界面直接给你一个白色方块那一刻真的很泄气。这个问题的根源就是 dds 图标文件。我在这个坑里爬了好几轮从 PS 插件、压缩格式到 modinfo 里的一行路径全踩过一遍。这篇文章就把“文明6 mod 里 dds 图标文件怎么做”这件事彻底讲清楚不管你是第一次做 mod还是已经被白块折磨到想放弃照着这套流程走一遍基本能直接解决问题。1. 搞清楚你做的到底是哪种“图标”文明6 里哪些地方需要 dds1.1 游戏里图标的出现位置和对应目录文明6 的图标不是一个统一的东西。按功能和尺寸可以分为这几类文明选择界面的大图标、领袖头像、领袖特性图标、政策卡图标、科技/市政图标、单位与建筑图标以及宗教信条图标。它们虽然都在Assets/UI/Icons目录体系下但各自有各自的子目录和命名逻辑。我最早犯的错误就是以为所有图标只要扔到一个文件夹就行后来才发现游戏是根据 IconName 到特定路径下找文件的。常见的对应关系如下图标类型典型目录参考尺寸备注文明图标Assets/UI/Icons/CivSymbols/256x256文明选择界面、左上角小图标领袖头像Assets/UI/Icons/Leaders/256x256领袖界面、外交面板领袖特性图标Assets/UI/Icons/LeaderTraits/64x64特性列表里的小图科技图标Assets/UI/Icons/Techs/64x64科技树节点市政图标Assets/UI/Icons/Civics/64x64市政树节点政策卡图标Assets/UI/Icons/Policies/64x64政策选择界面单位/建筑/区域图标Assets/UI/Icons/Units/、Buildings/、Districts/64x64生产中、百科界面这里的“参考尺寸”不是绝对的。游戏引擎会根据 UI 场景自动缩放但你做源文件的时候最好按这个规格来尤其是 64x64 的小图标如果源文件做成了 512x512缩小后精细度反而不好控。1.2 为什么文明6偏偏要用 dds 而不是 png很多刚接触 mod 的人都会问这个问题png 不香吗透明背景、无损压缩、PS 里还能直接编辑为什么非要搞一个连看图软件都未必打得开的 dds核心原因在于 dds 是 DirectX 的压缩纹理格式。游戏引擎可以直接把 dds 文件交给 GPU 采样不需要在运行时花 CPU 去解压。文明6 的 UI 是游戏引擎直接绘制的不是网页嵌套所以它天然倾向使用 GPU 能直接读的纹理格式。png 加载到引擎里反而要额外的 IO 和解码流程而且无法直接生成 mipmap 链。另外dds 可以内置 mipmap。所谓 mipmap就是预先生成的一组逐级缩小的图像当 UI 上的图标被缩得很小的时候GPU 直接拿小尺寸的那一层来采样而不是把大图硬缩下去这样既快又不容易闪烁。这也是为什么有些 mod 图标看起来“发虚”、“有颗粒感”大概率就是没带 mipmap。所以不要试图把 dds 替换成 png游戏并不是“不能读 png”而是整套 UI 资源规范就是围绕 dds 建立的。你只要入乡随俗把 dds 这套流程跑通后面再做复杂 mod 就顺畅很多。2. 工具选择和 DDS 核心概念2.1 三套主流工具链怎么选制作 dds 文件最核心的一步是“导出”也就是把普通图像转成带压缩格式的 dds。工具上我实际用下来主流就三套。第一套是 Photoshop Intel Texture Works 插件。这是我目前最推荐的方式。插件免费开源支持 BC1 到 BC7 的块压缩格式界面简单导出时能直接预览而且对文明6 需要的 DXT5/BC3 支持得非常好。相比之下NVIDIA 官方出的 DDS 插件新版把很多旧格式选项砍掉了反而不方便。不少文明6 mod 作者用的就是这个组合。第二套是 GIMP dds 插件。优点是完全免费、跨平台不需要 PS 授权。缺点是插件的导出选项相对简洁批量处理能力弱一些但对单个图标来说完全够用。如果你本来就不太用 PS或者不想折腾破解版那选 GIMP 是最省心的。第三套是命令行工具比如 DirectXTex 里的 texconv。这个适合批量转换一条命令可以把整个文件夹的 png 转成 dds。缺点是要记参数而且没办法在界面上直观预览压缩效果适合已经熟练的老手用来批处理。我个人的建议如果你只要做几个图标用 PS Intel Texture Works如果你要做一整包文明、一堆领袖、一堆科技树 mod建议学一下 texconv 批量转换能省下大量重复劳动时间。2.2 必须理解的三个关键词块压缩、Alpha 通道、Mipmapdds 导出设置里那堆选项本质上就是在处理这三个东西。块压缩Block Compression是 DirectX 系纹理最常见的压缩方式。它不是像 png 那样逐像素压缩而是把 4x4 像素作为一个块用一个颜色极值和插值方式去近似表示整块颜色。这样 GPU 在采样时可以直接解码速度极快。常见的 BC1/DXT1 是无透明通道的格式BC3/DXT5 带有 8 位 Alpha 通道。文明6 的 UI 图标必须保留透明背景所以最稳妥的选择是 BC3/DXT5。Alpha 通道就是透明度信息。很多人导出 dds 后进游戏发现图标是白色方块原因就是选成了不带 Alpha 的 BC1/DXT1透明背景直接变成了不透明白色。另外 Alpha 通道还直接影响边缘质量如果原图边缘是硬切一刀的正方形没有半透明过渡图标在游戏里就会出现明显的锯齿白边。mipmap 前面提过是预生成的降采样层级。导入游戏时如果底层纹理没有 mipmap引擎会在 UI 缩小时临时做降采样效果差而且性能开销高。所以在导出时务必勾选生成 mipmap 的选项。文明6 原版图标基本都带 mipmap这也算是一个可以对照检查的基准。2.3 关于 Intel Texture Works 与 NVIDIA 插件的取舍这里单独说一下插件选择因为很多人一开始会去装 NVIDIA 官方的 Texture Tools Exporter。这个工具单看界面其实不错但它有版本兼容问题。NVIDIA 新版插件默认导出格式集中在对 BC7、BC5 这类现代格式上BC3/DXT5 这些老规格反而要额外切模式。而且它的旧版插件不支持 Windows 新版 Photoshop安装后经常出现滤镜列表里找不到插件的情况。相比之下Intel Texture Works 兼容性更好支持 Photoshop CC 到较新版本BC1 到 BC7 全都有还能设置 SRGB 输出。做文明6 图标Intel 插件几乎就是最优解。如果你用 GIMP那插件方面基本没得选直接装 GIMP-DDS 插件就行。这个插件可以读 DXT1/DXT5也能导出但注意它默认的压缩质量选项和 Intel 插件有个细微差别——如果没有勾选高质量重采样小图标边缘可能出现明显色斑。这个我在第 4 部分会详细说。3. 从一张透明底图到游戏内可见图标完整实操流程3.1 源文件准备画布尺寸、画布内容、安全边距制作 dds 图标之前先在 PS 或 GIMP 里把源文件画好。这里有几个实操细节非常关键。画布尺寸文明图标建议 256x256领袖图标 256x256小图标 64x64。导出 dds 的时候插件一般不会帮你在维度上做缩放所以源文件的尺寸最好就是最终尺寸。如果你从别的素材直接拉伸到 256 再导出会发现图标边缘发虚因为压成了 DXT5 之后本来就丢细节再拉伸一下细节就彻底没了。画布内容背景层一定删掉或者隐藏。文明6 原版图标是扁平化风格颜色块干净、形状清晰、边缘有轻微的圆角或描边。以文明为例游戏里的文明图标通常是一个圆形徽记中心是文明元素外围是深色环带。领袖特性图标则是更小的四边形符号。如果你的图标风格太写实、渐变太多压缩到 DXT5 之后很容易出现色块断层看起来和原版气质不搭。安全边距这个很多教程几乎不提但非常重要。图标的视觉主体内容最好与画布边缘保持至少 2 到 4 像素的透明间距。原因是压缩算法的块处理会导致边缘像素被“污染”如果你把色块一直顶到画布最边缘导出 dds 后游戏里放大看边缘会出现一圈脏兮兮的半透明色带。留出安全边距后这个问题基本消失。3.2 导出设置逐项讲解以 Intel Texture Works 为例源文件画好之后下面就是导出环节。以 PS Intel Texture Works 为例文件菜单里选“导出”里的“Texture Works DDS”然后在导出面板里按下面设置格式选择直接选 BC3 (DXT5) 8bpp。这个格式带 8 位 Alpha能保留透明通道压缩率适中画质在 UI 图标这个尺度下完全够。不要选 BC1/DXT1否则透明背景全变白块。勾选 Generate Mip Maps。mipmap 能保证游戏内缩小显示时依然清晰。可以观察一下文件大小的变化带 mipmap 后 dds 的大小会大约是原始纹理的 1.33 倍。比如 256x256 的 BC3 纹理基础大小是 64KB带 mipmap 后大概 85KB 左右。如果导出后文件大小正好是 64KB 左右说明 mipmap 没生成成功要回头检查插件版本或设置。输出色彩空间选 SRGB。UI 贴图一般按 SRGB 处理Gamma 校正正确后颜色才和原图一致。选成 Linear 可能导致游戏内颜色变亮或变灰。质量选项选最高Quality: Highest。虽然这个选项会略微增加压缩时间但对 256x256 的图标来说也就几秒钟没必要省。如果插件里有“Use Premultiplied Alpha”之类的选项这个要特别注意。文明6 的 UI 系统走的是非预乘 Alpha 管线不要勾选。一旦勾选图标的半透明边缘在游戏里会出现暗色晕边。3.3 文件命名、目录摆放和 modinfo 导入导出的 dds 文件要放进 mod 的正确目录结构中这一步直接决定图标能不能被游戏识别。一个典型的 mod 目录结构长这样MyCivMod/ MyCivMod.modinfo Assets/ UI/ Icons/ CivSymbols/ Leader_Catherine_Civ.dds Leaders/ Leader_Catherine.dds LeaderTraits/ TRAIT_LEADER_CATHERINE.dds注意看dds 文件必须放在Assets/UI/Icons/下的对应子目录里而且命名要和你定义的 IconName 一一对应。然后在.modinfo文件里你需要用ImportFiles把这几个 dds 文件导入到游戏的虚拟文件系统VFS。这一步是最容易漏的。只把 dds 文件放在目录里没用必须让 modinfo 知道要加载它。modinfo 里导入文件的部分大概是这样Mod idxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx version1.0.0 Properties NameMyCivMod/Name /Properties ImportFiles idIMPORT_ICONS FileAssets/UI/Icons/CivSymbols/Leader_Catherine_Civ.dds/File FileAssets/UI/Icons/Leaders/Leader_Catherine.dds/File FileAssets/UI/Icons/LeaderTraits/TRAIT_LEADER_CATHERINE.dds/File /ImportFiles /Mod如果文件多File条目可以写很多行。也可以把整个目录打包进 VFS但那样可能导入过多无关文件还是逐个列清楚更稳妥。这里提醒一个深坑路径大小写必须和实际目录完全一致。Windows 下 mod 可能不区分大小写但游戏引擎在 Linux、Mac 或某些反作弊环境下是区分大小写的一旦大小写不对图标就会消失或者显示空白。3.4 图标在 Gameplay 数据里的引用逻辑dds 文件摆好、导入 VFS 之后还要让游戏的数据系统知道“某个文明要用哪个图标”。这就是 IconName 的引用逻辑。在文明6 的数据文件里文明本身会指定一个 IconCivilizations Row CivilizationTypeCIVILIZATION_CATHERINE ... IconICON_CIVILIZATION_CATHERINE / /Civilizations这个ICON_CIVILIZATION_CATHERINE是一个字符串 ID游戏加载时会自动在Assets/UI/Icons/CivSymbols/下找Catherine.dds或类似命名的文件。具体映射规则一般是通过 Texture 引用名和 Group 前缀来决定的。常用的对应规律是ICON_CIVILIZATION_XXX 对应CivSymbols/XXX.ddsICON_LEADER_XXX 对应Leaders/XXX.ddsICON_UNIT_XXX 对应Units/XXX.dds。所以如果你发现 mod 定义的数据没报错但游戏里就是显示白图标优先去看看你的 IconName 字符串和 dds 文件名是否对得上。比如你定的 IconName 是ICON_CIVILIZATION_MY_PEOPLE那 dds 文件名就应该大致是My_People.dds中间的下划线、大小写都要一致。不同图标类型可能有细微差异最好的办法是打开原版游戏里的一个相同类型图标照着它的命名方式逐字比对。4. 常见问题与排查技巧实录4.1 白色方块、黑色方块、发紫图标分别是什么情况我在做第一个文明 mod 的时候图标直接就是白色方块当时以为是压缩格式错了回头看才发现是 IconName 和文件名对不上。这类问题本质上分三类。白色方块多半是 Alpha 通道丢失或者游戏没找到对应 dds。前者是导出时选了 BC1/DXT1 或者忘记保留透明背景层后者是 IconName 映射不到文件游戏退而求其次显示一个默认占位方块。黑色方块常见原因是 dds 文件有 Alpha 通道但 Alpha 通道全黑。多发生在从 png 转 dds 时工具没有正确识别透明通道。尤其是用某些网页转换工具转出来的 ddsAlpha 通道经常是反的透明区域变成了不透明不透明区域反而全透明游戏里自然就变成黑块。发紫或花屏这个比较少见一般出现在你用错误的格式打开或导出时。比如 GIMP 的 dds 插件在存储时格式选项误选成了 BC1 的“无 Alpha”但原图又带透明或者文件头格式和游戏期望的不一致。蓝色/紫色偏色多见于色彩空间选错导出的 Linear 颜色被游戏当 SRGB 用了。4.2 图标模糊、边缘白边黑边图标模糊99% 是 mipmap 没有生成。文明6 的 UI 在多个尺寸下显示同一个图标大图缩小必须依赖 mipmap否则引擎临时降采样很容易导致边缘锯齿和细节丢失。导出时一定确认勾选 Generate Mip Maps。边缘白边是另一个高频问题。原因大多在于源图边缘的颜色值不是纯色或者透明过渡没有做好。比如一个红色圆形图标红色区域紧贴透明背景的边界但源文件里这个边界还有 1 像素的半透明渐变导出 dds 后这圈渐变被压缩算法和 Alpha 通道一搅和游戏里看起来就是一圈浅色边。黑边则通常是预乘 Alpha 搞出来的。如果你在导出时勾选了预乘 Alpha而游戏 UI 不按预乘方式处理半透明边缘的颜色会比预期暗合成到界面上就出现黑色晕圈。解决方法是关掉这个选项重新导出。如果源文件已经因为压缩坏了那就回到 PSD 源文件把边缘的透明过渡处理好再导出。4.3 验证 dds 是否正确的几个快速方法这里分享几个我常用的验证手段能帮你少启动几次游戏。在 PS 里导出后先用看图软件打开 dds 看看。Windows 11 自带的照片查看器较新版本可以直接预览 ddsXnView MP 和 IrfanView 也可以。如果看图软件里显示的是正常的彩色图标说明基础格式没问题。如果打开后是绿屏、紫屏或者只有灰色轮廓那说明文件已经坏了直接回炉重做。检查文件大小。256x256 的 BC3/DXT5 dds不带 mipmap 大约 64KB带 mipmap 约 85KB。如果文件大小远小于这个值比如 16KB那很可能是压缩格式选错或者没有 Alpha 通道。64x64 的 BC3 dds 基础大小约 4KB带 mipmap 约 5.3KB。文件大小是很好的诊断信号。在 mod 内部用临时测试资源验证。如果你同时改了好几个图标不要一次性全部替换进游戏。先把一个最简单的图标比如一个纯色圆形按完整流程放进 mod进游戏确认能显示再逐步把其他图标加进来。这样一旦出问题你能快速定位是绘制问题还是配置问题。4.4 关于 DDS 修饰流程里那些看不见的坑最后说几个容易被人忽略的细节。源文件一定要单独保存一份 PSD 或 XCF。dds 是压缩格式存过一次再打开就回不到无损细节了。我见过很多人为了省事直接拿 dds 改结果颜色断层和边缘杂色越改越重最后只能全部重做。保留无损源文件是基本习惯。不要在 dds 文件本身里反复另存。每次另存必然会重新压缩一次多来两轮图标质量就肉眼可见地下降。你只需要保留一份原始无损源文件以及一份最终导出的 dds中间过程文件不需要。如果是给“自创文明”做图标建议先看一下原版文明设施的配色和构图逻辑。文明6 的界面风格很统一如果你的图标对比度太高、线条太细在游戏界面上会显得非常突兀。压成 DXT5 之后细线条更容易糊特别是 64x64 的小图标太细的纹理基本可以放弃。另外如果你做的是“把别人作品的图标搬过来用”这种操作注意版权和素材来源问题这已经不是技术层面的事了。自己做原创图标或者用 CC0 素材库里的基础形状组合是更稳妥的选择。5. 从制作到集成的一句话经验其实 dds 图标文件的制作流程绕来绕去就四件事画好图、选对格式、放在对的位置、让 IconName 能和文件名对上。前三步是死的最后一步才是真正决定成败的地方。我做过的几个 mod 里八成以上的图标问题最后都出在 IconName 和文件路径的匹配上。另外一个很实用的小技巧做 64x64 小图标时先在 256x256 的画布里把图形画好再等比缩小到 64x64导出前用“存储为”流程多检查一眼 Alpha 通道。很多画图时视觉上没问题的小图标一缩到 64 就有细节堆叠的问题不提前缩放检查一遍进游戏就会看到一团糊。做文明6 mod 的乐趣之一就是能用一个像素级的资源文件去撬动整个文明、领袖和特性的视觉呈现。dds 图标只是入口把这套流程吃透了后续做更复杂的 UI 替换、政策图标修改都会顺手很多。希望你不用像我一样卡在白色方块上对着 modinfo 怀疑人生。
返回列表