创建自定义地形集
在继续之前,你应该先阅读模组页面
要添加地形集模组(是的,地形集只是另一种类型的模组),你所需要做的就是将你的图像添加到 Images/Tilesets/MyCoolTilesetExample 下,并将模组启用为永久视觉模组 - 游戏将识别地形集,并允许你在选项菜单中选择它。
让我们看看示例"Grassland+Jungle+Dyes+Trading post"来学习游戏如何决定它应该为这个地块使用哪些图像:
- 当地形集配置中针对此地块有规则变体条目时,我们将使用该条目。
- 否则,如果有一个名为"Grassland+Jungle+Dyes+Trading post"的图像,我们将使用它。
- 否则,我们将检查是否有名为"Grassland+Jungle"(BaseTerrain+Terrainfeatures)和"Dyes+Trading post"(Resource+Improvement)的图像并使用它的剩余部分。假设你创建了一个名为"Grassland+Jungle"的图像,但没有创建名为"Dyes+Trading post"的图像。最后,我们将使用图像"Grassland+Jungle"、"Dyes"和"Trading post"。
所有这些图像如果你想在整个游戏中改变,比如说"Trading post"的外观,也可以使用时代相关的变体。只需创建图像并添加后缀"-[era name]"。 例如"Trading post-Classical era"、"Trading post-Industrial era"等。
建议经常使用分层方法(1 和 3),因为它带来一些优势。主要是:
- 减少文件大小(在磁盘上,用于下载)
- 更容易支持新地形、改良设施、资源,以及更改现有地块
你应该记住默认渲染顺序是: BaseTerrain、TerrainFeatures、Resource、Improvement。
地形集配置
这是地形集配置大放异彩的地方。你可以使用这些来改变 Unciv 渲染地块的方式。
要为你的地形集创建配置,你只需要在 jsons/Tilesets/ 下创建一个新的 .json 文件。只需创建一个 .txt 文件并将其重命名为 MyCoolTilesetExample.json。如果你想更改它们,你只需要添加内容。否则将使用默认值。
这是下面将解释的此类配置文件的示例:
{
"useColorAsBaseTerrain": "false",
"useSummaryImages": "true",
"unexploredTileColor": {"r":1,"g":1,"b":1,"a":1},
"fogOfWarColor": {"r":1,"g":0,"b":0,"a":1},
"fallbackTileSet": null,
"tileScale":0.9,
"tileScales": {
"City center":1.2,
"Citadel":1.5
},
"ruleVariants": {
"Grassland+Forest": ["Grassland","ForestForGrassland"],
"Grassland+Jungle+Dyes+Trading post": ["Grassland","JungleForGrasslandBack","Dyes+Trading post","JungleForGrasslandFront"]
}
}useColorAsBaseTerrain
一个布尔值("true"或"false")。默认值:"false"
如果为 true,则在每个地块下方放置一个额外的"Hexagon"图像,并以相应的 BaseTerrain 颜色着色。这消除了添加单独 BaseTerrain 图像的必要性。这就是"Minimal"地形集的工作方式。
useSummaryImages
一个布尔值("true"或"false")。默认值:"false"
如果为 true,则摘要图像用于特定的图像组,而不是使用单独的地块图像。摘要图像必须放置在与每个其他地块图像相同的文件夹中。使用的摘要图像:
| 图像组 | 摘要图像 |
|---|---|
| 自然奇观 | "NaturalWonder" |
unexploredTileColor
用标准化 RGBA 值定义的颜色。默认值:"{"r":0.24705882, "g":0.24705882, "b":0.24705882, "a":1}"(深灰色)
定义未探索地块的颜色。
fogOfWarColor
用标准化 RGBA 值定义的颜色。默认值:"{"r":0, "g":0, "b":0, "a":1}"(黑色)
定义战争迷雾的颜色。颜色被近似为 60%,以允许下方图像的颜色透出。
fallbackTileSet
一个字符串值。默认值:"FantasyHex"
如果此地形集缺少图像,则应使用另一个地形集的图像的名称。可以设置为 null 以禁用回退地形集
tileScale
一个浮点值。默认值:1.0
所有地块的比例。可用于增加或减少每个地块的大小。地形集模组 5Hex(由 ravignir 制作) 使用它来伪造阴影。
tileScales
一个将字符串映射到浮点值的字典。默认值:空
由"Minimal"地形集使用,将其所有地块(基础地形除外)缩小。每个条目覆盖指定地块的 tileScale 值。
ruleVariants
一个将字符串映射到字符串列表的字典。默认值:空
ruleVariants 是地形集配置最强大的部分。使用这个,你可以为特定地块定义应该使用哪些图像以及以什么顺序使用这些图像。
上面的代码中给出了一个示例。对于地块"Grassland+Jungle+Dyes+Trading post",我们将按顺序使用图像"Grassland"、"JungleForGrasslandBack"、"Dyes+Trading post"和"JungleForGrasslandFront"。
迷雾和未探索地块
Unciv 区分"未探索"地块,即文明从未见过的地块, 和"不可见"地块,即曾经见过但现在不可见的地块。
不可见地块按设计变灰,并且在其上应用了 CrosshatchHexagon.png 图像。
未探索地块显示 UnexploredTile.png 图像,在其上应用了 CrosshatchHexagon.png。
你可以通过将 CrosshatchHexagon 替换为 1px x 1px 的不可见图像来使其功能上不可见。
单位图像
单位图像可以根据文明特定样式(如果模组为每个文明指定了"style"变量)和拥有文明的当前时代进行更改。Unciv 尝试按以下顺序加载单位图像(其中 unitName 是 Units.json 中给出的单位名称,styleName 可选地在 Nations.json 中指定,eraName 是 Eras.json 中给出的时代名称(包括" era"))。
- unitName-styleName-eraName(例如:"Archer-customStyle1-Classical era.png")
- unitName-eraName(例如:"Archer-Classical era.png")
- unitName-styleName(例如:"Archer-customStyle1.png")
- unitName(例如:"Archer.png")
时代特定的精灵不需要为每个时代指定,只需要在精灵发生变化的时代指定。如果模组制作者希望大将军单位从现代时代开始更改精灵,他们只需要创建一个"Great General-Modern era.png"图像。大将军单位将在现代时代之前的所有时代使用默认的"Great General.png"精灵,然后在现代时代和之后的所有时代使用现代时代精灵,除非有此单位的后期时代精灵。
文明着色的单位
Unciv 可以根据拥有它们的文明为单位着色。[PR3231]
这是通过为每个单位提供多个图像来实现的,每个图像代表一个彩色图层。后缀为"-1"的图像将被着色为文明的内部颜色,后缀为"-2"的图像将被着色为文明的外部颜色。例如:
| 图像 | 描述 | 颜色 |
|---|---|---|
| Archer.png | 基础图像 | 未着色 |
| Archer-1.png | 颜色图层 | 文明内部颜色 |
| Archer-2.png | 颜色图层 | 文明外部颜色 |
@AdityaMH 的 Civ Army Color Style Sheet 模组和 @ravignir 的 5Hex Tileset 是如何使用这一点的非常好的实际示例。
攻击动画
这些是在单位受到伤害时播放的小动画。
它们可以用于单位类型(Archery、Seige、Cavalry)或特定单位名称
文件格式应为 <unit type/unit name>-attack-<frame number>。 例如,剑单位的 3 帧动画将具有文件 Sword-attack-1.png、Sword-attack-3.png、Sword-attack-3.png
边缘图像
你可以添加额外的图像,这些图像仅当地块在特定方向与另一个地块相邻时才会绘制。
图像应该放在 Images/Tilesets/<tileset name>/Edges 文件夹中,而不是 /Tiles 中。
地块的名称应该是 <tile name>-<origin tile filter>-<destination tile filter>-<neighbor direction>.png,其中方向是以下之一:
- Bottom
- BottomLeft
- BottomRight
- Top
- TopLeft
- TopRight
其中地块过滤器是以下之一:
- 地形名称
- 特征名称
- 地形类型(Land/Water)
例如:Cliff-Hills-Coast-Top.png
初始名称与使用的图像无关,它只是将图像分组在一起的一种方式。