地图模组制作:修订间差异

本页面所适用的版本可能已经过时,最后更新于1.1
无编辑摘要
(18:51, 8 November 2020‎ Cruxador)
第1行: 第1行:
{{version|1.1}}{{评分|C-1}}
{{version|1.1}}
 在 十字军之 王III》 中,可以修改游戏地图。这包括编辑陆地、海洋、河流和省份。关于修改 标题 ,请 [[title modding]].
 在[[ 十字军之 王 III]] 中,可以修改游戏地图。这包括编辑陆地、海洋、河流和省份。关于修改 头衔 ,请 [[ 头衔模组制作]]


== 高 图 ==
== 高 度地 图 ==
[[File:Heightmap example.png|thumb|right|An example heightmap of Ireland and part of Britain]]
[[File:Heightmap example.png|thumb|right| 爱尔兰和不列颠部分地区的高度地图示例]]
 高 图是每张地图的基础,定义了非纸 地图的整体形状。高度图用灰度图像表示,其中黑色是可能的最低海拔,白色是可能的最高海拔。
 高 度地 图是每张地图的基础,定义了非 羊皮 纸地图的整体形状。高度 图用灰度图像表示,其中黑色是可能的最低海拔,白色是可能的最高海拔。


=== 创建高度图 ===
=== 创建高度 图 ===
 对于现实世界的地点,美国航天局通过 "Blue Marble project" 项目的地形图部分向公众提供详细的高度图。
 对于现实世界的地点,美国航天局通过 “Blue Marble project 项目的地形图部分向公众提供详细的高度图。


 虚构的高 图通常是使用软件组合创建的,通常是Photoshop或GIMP等图像编辑器和World Machine或Gaea等地形生成软件。
 虚构的高 度地 图通常是使用软件组合创建的,通常是Photoshop或GIMP等图像编辑器和World Machine或Gaea等地形生成软件。


=== 主高 图文件 ===
=== 主高 度地 图文件 ===
 高度图在"[mod]/map_data/heightmap.png " 中找到,并且必须保存为16位灰度图像。
 高度 图在 [mod]/map_data/heightmap.png 中找到,并且必须保存为16位灰度图像。


 高度图的尺寸必须符合"[mod]/map_data/heightmap.heightmap " 中定义的 "original_heightmap_size"
 高度 图的尺寸必须符合 [mod]/map_data/heightmap.heightmap 中定义的 “original_heightmap_size”


=== 其 他heightmap 文件 ===
=== 其 他高度地图 文件 ===
 除了 "heightmap.png " 之外,还有两个重要的'''自动生成'''高度图文件,"indirection_heightmap.png " "packed_heightmap.png" 。当高度图被重新打包并保存时,CK3地图编辑器会创建这两个文件。
 除了 “heightmap.png 之外,还有两个重要的'''自动生成'''高度 图文件, “indirection_heightmap.png “packed_heightmap.png 。当高度 图被{{Ruby| 重新打包|repack}} 并保存时,CK3地图编辑器会创建这两个文件。


[[File:Repack.png|thumb|left]]
[[File:Repack.png|thumb|left]]
==== 重新打包 ====
==== 重新打包 ====
 当主heightmap.png被改变时,你必须在地图编辑器中 " 重新打包 " 以使河流、边界和 标题 等符合新 的heightmap 。如果你有任何问题,如东西似乎不 " 服从 " 高度图,第一个解决问题的步骤应该是重新打包。
 当主heightmap.png被改变时,你必须在地图编辑器中 “{{Ruby| 重新打包|repack}}” 以使河流、边界和 头衔 等符合新 的高度地图 。如果你有任何问题,如东西似乎不 服从 高度 图,第一个解决问题的步骤应该是{{Ruby| 重新打包|repack}}


== River map ==
== 河流地图 ==
[[File:Rivermap example.png|thumb|right|An example river map of Ireland and part of Britain]]
[[File:Rivermap example.png|thumb|right| 爱尔兰和不列颠部分地区的河流地图示例]]
 河流地图是一个定义海岸和河流的特殊文件,它既被地形引擎用来在地图上绘制河流,也用来定义军队过河的位置。它不用于通航的河流或其他水体。
 河流地图是一个定义海岸和河流的特殊文件,它既被地形引擎用来在地图上绘制河流,也用来定义军队过河的位置。它不用于通航的河流或其他水体。


''' 不正确 创建的河流地图将导 致CTD''。它们必须是索引的RGB图像,具有非常特定的调色板;在创建河图时,防止崩溃的最好方法是 开始 使用游戏的原始河图 "[CK3目录]/game/map_data/rivers.png " 中找到。除了原始颜色索引中的颜色外,任何其他颜色,包括反锯齿或透明,都会导 致CTD
''' 错误 创建的河流地图将导 致游戏崩溃并跳回桌面'''。它们必须是索引的RGB图像,具有非常特定的调色板;在创建河 流地 图时,防止崩溃的最好方法是 使用游戏的原始河 流地 [CK3目录]/game/map_data/rivers.png 中找到 。除了原始颜色索引中的颜色外,任何其他颜色,包括反锯齿或透明,都会导 致游戏崩溃并跳回桌面


=== 了解河图颜色 ===
=== 了解河 流地 图颜色 ===
[[File:River map color table.png|128px|thumb|left]]
[[File:River map color table.png|128px|thumb|left]]
 河流地图应该是有颜色索引的,这意味着它们是用特殊编码保存的, 表示 只能使用某些特定的颜色。
 河流地图应该是有颜色索引的,这意味着它们是用特殊编码保存的,只能使用某些特定的颜色。


 每种颜色都有特定的含义,由游戏引擎转化为好看的河流。
 每种颜色都有特定的含义,由游戏引擎转化为好看的河流。
#00ff00(纯绿色)表示河流系统的源头。
* #00ff00(纯绿色)表示河流系统的源头。
* #ff0000( 纯红色) 表示一条支流 主河 相通
* #ff0000 纯红色 表示一条支流 进入 主河。
* #fffc00( 纯黄色) 表示分
* #fffc00 纯黄色 表示 河流向外
* #ff0080(洋红色)表示海洋、湖泊和通航河流。
* #ff0080(洋红色)表示海洋、湖泊和通航河流。
* #ffffff(白色)表示陆地。
* #ffffff(白色)表示陆地。
 其余颜色为浅蓝色到深蓝色的渐变,蓝色越深,河流越宽。
 其余颜色为浅蓝色到深蓝色的渐变,蓝色越深,河流越宽。


===像素完美 ===
=== 像素完美 ===
[[File:River validity.png|thumb|right]] 每个河流像素必须与不超过2个其他河流像素正交相邻,分 连接 必须与不超过3个其他河流像素相邻。两个像素宽的河流''''将导致崩溃'',仅用对角线像素连接的河流将无法渲染。
[[File:River validity.png|thumb|right]] 每个河流像素必须与不超过2个其他河流像素正交相邻,分 流入 必须与不超过3个其他河流像素相邻。两个像素宽的河流''''将导致崩溃'',仅用对角线像素连接的河流将无法渲染。


=== 绘制程序 ===
=== 绘制程序 ===
[[File:River special pixels.png|thumb|right]]
[[File:River special pixels.png|thumb|right]]
 你可以认为CK3的河道绘制算法基本上是以三种特殊像素颜色(红、黄、绿)中的一种作为起点来绘制河段,其中绿色的那个是整个河系的起点。每条河段的一端应该有三种像素类型中的一种,另一端则没有。这意味着一条河流不能像现实生活中经常发生的那样,离开母体又重新加入母体。河段边上的红色和黄色像素与这个限制是分开的,因为它们会生成新的河段。三种河流类型中的每一种也决定了它生成的河段的流向。绿色和黄色像素使河流远离它们,红色像素使河流流向它们。
 你可以认为CK3的河道绘制算法基本上是以三种特殊像素颜色(红、黄、绿)中的一种作为起点来绘制河段,其中绿色的那个是整个河系的起点。每条河段的一端应该有三种像素类型中的一种,另一端则没有。这意味着一条河流不能像现实生活中经常发生的那样,离开母体又重新加入母体。河段边上的红色和黄色像素与这个限制是分开的,因为它们会生成新的河段。三种河流类型中的每一种也决定了它生成的河段的流向。绿色和黄色像素使河流远离它们,红色像素使河流流向它们。


==== 河源====
==== 河源 ====


 每条河流''系统''应该只有一个源像素;这意味着如果一条河流有任何支流,这些支流不应该有绿色的源像素。
 每条河流''系统''应该只有一个源像素;这意味着如果一条河流有任何支流,这些支流不应该有绿色的源像素。
第54行: 第54行:
=== 水下河道技巧 ===
=== 水下河道技巧 ===


 河流地图上的粉色和白色只供你参考 它们都有 一个共同的代号,那就 不属于 河流。因此,你可以像在陆地上一样轻松地 通过 水画出河流,只是不 会被看出来 。当一条河流在湖泊或大海中结束时,建议将河流延续几个像素进入粉色区域(甚至完全穿过小湖泊,如果它在另一边再次出口的话),这样CK3可以更好地理解河流末端的方向性。
 河流地图上的粉色和白色只 供你参考 它们都有 是河流 的编码含义 。因此,你可以像在陆地上一样轻松地 画出河流,只是不 可见而已 。当一条河流在湖泊或大海中结束时,建议将河流延续几个像素进入粉色区域(甚至完全穿过小湖泊,如果它在另一边再次出口的话),这样CK3可以更好地理解河流末端的方向性。


 如果您有复杂的河流系统,也要穿过湖泊,这也是很有帮助的,因为它为您提供了一个额外的工具来协调现实生活中河流属性和CK3引擎功能之间的差异。
 如果您有复杂的河流系统,也要穿过湖泊,这也是很有帮助的,因为它为您提供了一个额外的工具来协调现实生活中河流属性和CK3引擎功能之间的差异。


== 省地图 ==
== 省 地图 ==
[[File:Province map example.png|thumb|right|爱尔兰和 英国 部分地区的省份地图示例]]
[[File:Province map example.png|thumb|right|爱尔兰和 不列颠 部分地区的省份地图示例]] 
 省地图定义了男爵领 和海区。在 省地图中,每个 省/海区都以独特的颜色来定义。就像河流地图一样, 省地图必须避免反锯齿和透明度。
 省 地图定义了男爵领和海区。在省 地图中,每个省 /海区都以独特的颜色来定义。就像河流地图一样,省 地图必须避免反锯齿和透明度。


 省地图不能定义 、公国、王国或帝国。要定义 、公国、王国和帝国,你需要在landed_titles文件夹中定义它们。
 省 地图不能定义 伯爵领 、公国、王国或帝国。要定义 伯爵领 、公国、王国和帝国,你需要在landed_titles文件夹中定义它们。


== 创建 标题 ==
== 创建 头衔 ==
 创建头衔的方法是将省地图中的颜色与男爵、 、公国、王国和帝国的定义联系起来。这个过程包括以下步骤。
 创建头衔的方法是将省 地图中的颜色与男爵 伯爵领 、公国、王国和帝国的定义联系起来。这个过程包括以下步骤。
# 创建一个省地图来定义 个男爵领
# 创建一个省 地图来定义个 男爵领。
#通过"[mod]/map_data/definition.csv " 省地图中的RGB来识别男爵领
# 通过 [mod]/map_data/definition.csv 地图中的RGB来识别男爵领。
# 在"[mod]/common/landed_titles/" 中的新文件中定义你的头衔 继承权
# 在 [mod]/common/landed_titles/ 中的新文件中定义你的头衔 层级
# 在"[mod]/localization/[language]/" 中新建一个文件,为你的 标题 创建本地化。
# 在 [mod]/localization/[language]/ 中新建一个文件,为你的 头衔 创建本地化。


=== 定男爵 ===
=== 男爵 ===
 要把省地图的颜色变成可用的男爵领地,你必须在 "definition.csv" 文件中定义它们。
 要把省 地图的颜色变成可用的男爵领地,你必须在 “definition.csv 文件中定义它们。


 男爵领 定义的格式是
 男爵领定义的格式是
    [ID];[RED];[GREEN];[BLUE];[Barony Name];x
    [ID];[RED];[GREEN];[BLUE];[Barony Name];x;
    # 例如:
    # 例如
    2333;128;183;194;PARIS;x;
    2333;128;183;194;PARIS;x;


'''ID必须是 有顺序 的,否则你的游戏会崩溃''
'''ID必须是 是连续 的,否则你的游戏会崩溃 。'''
    # 这将工作。
    # 这将工作。
    1;42;3;128;CAMELOT;x;
    1;42;3;128;CAMELOT;x;
    2;84;6;1;AVALON;x
    2;84;6;1;AVALON;x;
    3;126;9;129;TINTAGEL;x;
    3;126;9;129;TINTAGEL;x;
    
    
    # 这将导致崩溃。
    # 这将导致崩溃。
    1;42;3;128;CAMELOT;x;
    1;42;3;128;CAMELOT;x;
    4;84;6;1;AVALON;x
    4;84;6;1;AVALON;x;
    19;126;9;129;TINTAGEL;x;
    19;126;9;129;TINTAGEL;x;


===  所有权 ===
===  头衔 ===
  所有权 和法律上的 级必须在"[mod]/common/landed_titles/" 中定义。基本结构如下。
  头衔 和法律上的 级必须在 [mod]/common/landed_titles/ 中定义。基本结构如下。


 名称(e_empire_tier ,k_kingdom_tier等) 只是举例,"color " 可以是任何你喜欢的RGB值,但 "color2 " 是静态的,有效的 大写字母 郡名 。任 何一个层 级都可以包含下一 个下层 的多个 (比如1个帝国有5个王国)。
 名称 (e_empire_tier ,k_kingdom_tier等 只是举例, “color” 可以是任何你喜欢的RGB值,但 “color2” 是静态的,有效的 首都 伯爵领头衔 。任 意等 头衔 都可以包含 多个 下一 头衔 (比如1个帝国有5个王国)。


 男爵 在游戏中出现的顺序与文件中的顺序相同。即第一个将是默认的首 。引擎将使用"[mod]\history\provinces@_title.txt " 中设置的首 男爵的文化和宗教来确定其 的文化和宗教 在任何设定的日期
 男爵 在游戏中出现的顺序与文件中的顺序相同。即第一个将是默认的首 。引擎将使用 [mod]\history\provinces@_title.txt 中设置 的在任何设定日期 的首 男爵 的文化和宗教来确定其 伯爵领 的文化和宗教。


   e_empire_tier = {
   e_empire_tier = {
第119行: 第119行:
              color = { 0 0 0 }
              color = { 0 0 0 }
              color2 = { 255 255 255 }
              color2 = { 255 255 255 }
              province = id (defined in map_data/definition.csv)
              province = id (在map_data/definition.csv 中定义)
            }
            }
          }
          }
第128行: 第128行:
== 地图定位器 ==
== 地图定位器 ==


 一旦定义了男爵领 ,就可以定义其四个主要定位对象的位置 (position) 。这将告诉引擎每 瓦的举起的 军队(船的位置) 的位置 ,以及地图上每个男爵的 守备 建筑、军队、军队战斗和攻城武器对象的位置。这四个定位器的位置分别在building_locators.txt, combat_locators.txt, player_stack_locators.txt and siege_locators.txt,这些文件可以在"[mod]/gfx/map/map_object_data/" 中找到。
 一旦定义了男爵领,就可以定义其四个主要定位{{Ruby| 对象|object}} {{Ruby| 位置|position}} 。这将告诉引擎每 区被调集 军队 的放置位置 (船的位置),以及地图上每个男爵的 地产 建筑、 被调集 军队、军队战斗和攻城武器对象的位置。这四个定位器的位置分别在building_locators.txt 、combat_locators.txt 、player_stack_locators.txt 和siege_locators.txt 中定义 ,这些文件可以在 [mod]/gfx/map/map_object_data/ 中找到。


 在这些文件中,每 个barony 都由一个实例来表示,在这个实例中可以设置地图对象的位置、旋转和比例。 例如,下面的代码定义了一个单一 的barony 的定位器,ID=1,标准尺寸,地图上的坐标为x=2000,y=1000
 在这些文件中,每 个男爵领 都由一个{{Ruby| 实例|instance}} 来表示,在这个实例中可以设置地图对象的位置、旋转和比例。例如,下面的代码定义了一个单一 的男爵领 的定位器,ID=1,标准尺寸,地图上的坐标为x=2000,y=1000


    instances={
    instances={
第141行: 第141行:
    }
    }


 这些数值,特别 提出了 军队在海陆 省的位置,用于定义部队移动 径指示 。在任何时候,都可以使用游戏中地图编辑器中的地图对象编辑器来微调这些对象的位置、旋转和比例。
 这些数值,特别 是被调集 军队在海陆省 的位置,用于定义部队移动 路。在任何时候,都可以使用游戏中地图编辑器中的{{Ruby| 地图对象编辑器|Map Objects Editor}} 来微调这些对象的位置、旋转和比例。


 要注意的是,如果一 个mod 的定位器文件有任何严重的问题,error.log应该会显示在"[用户]/[文档]/Paradox Interactive/Crusader Kings III/generated " 文件夹中创建了四个文件(一般是 持有 建筑、 举起的 军队、军队战斗和攻城武器定位器文本文件)。您可以将这些文件复制到您 的mod "[mod]/gfx/map/map_object_data/" 文件夹中,替换旧文件并重新启动游戏中的地图编辑器。
 要注意的是,如果一 个模组 的定位器文件有任何严重的问题,error.log应该会显示在 [用户]/[文档]/Paradox Interactive/Crusader Kings III/generated 文件夹中创建了四个文件(一般是 地产 建筑、 被调集 军队、军队战斗和攻城武器定位器文本文件)。您可以将这些文件复制到您的 模组的“[mod]/gfx/map/map_object_data/ 文件夹中,替换旧文件并重新启动游戏中的地图编辑器。


=== 自动推移 ===
=== 自动推移 ===


 游戏中的地图编辑器包含了一个自动推移工具(由对象放置模式上的骰子按钮表示),允许用户自动生成陆地省份的对象定位文件,并在给定省份内随机测试新的对象位置。要使用它,编辑器应该使用省选择工具,选择它想要随机 的省,然后点击推移工具按钮。然后,地图编辑器应该尝试在所有选定的省份上生成每个默认对象。
 游戏中的地图编辑器包含了一个{{Ruby| 自动推移|Auto nudge}} 工具(由{{Ruby| 对象放置模式|object placement mode}} 上的骰子按钮表示),允许用户自动生成陆地省份的对象定位文件,并在给定省份内随机测试新的对象位置。要使用它,编辑器应该使用省 选择工具,选择它想要随机的省 ,然后点击推移工具按钮。然后,地图编辑器应该尝试在所有选定的省份上生成每个默认对象。


 如果有任何无效的位置(例如由于缺乏有效的 产卵 空间而在该省的区域外 产卵 的对象),受影响的省份将在地图上以红色条纹交叉。要解决这个问题,用户就应该选择任何被红色条纹划过的省份,然后通过再次点击自动推移按钮尝试新的随机有效位置,或者手动将任何无效的对象拖入该省份。
 如果有任何无效的位置(例如 由于缺乏有效的 生成 空间而在该省 的区域外 生成 的对象),受影响的省份将在地图上以红色条纹交叉 显示 。要解决这个问题,用户就应该选择任何被红色条纹划过的省份,然后通过再次点击自动推移按钮尝试新的随机有效位置,或者手动将任何无效的对象拖入该省份。


 游戏中的地图编辑器还允许用户对自动推移工具的 产卵 设置进行微调。为了方便使用自动推移工具进行随机放置,用户可以 减少 物体的碰撞框,或者调整每个物体之间的最小和最大距离。用户应该注意的是,默认攻城引擎的设置是经过优化的,这样攻城引擎的动画就能正确地与 持有 建筑对象进行交互。
 游戏中的地图编辑器还允许用户对自动推移工具的 生成 设置进行微调。为了方便使用自动推移工具进行随机放置,用户可以 缩小 物体的碰撞框,或者调整每个物体之间的最小和最大距离。用户应该注意的是,默认攻城引擎的设置是经过优化的,这样攻城引擎的动画就能正确地与 地产 建筑对象进行交互。


== 连接 ==
== 连接 ==
 男爵领 可以通过两种方式连接:拥有相邻的像素,或者在"[mod]/map_data/adjacencies.csv " 中定义连接。
 男爵领可以通过两种方式连接:拥有相邻的像素,或者在 [mod]/map_data/adjacencies.csv 中定义连接。


"adjacencies.csv " 中的条目采用的格式是
“adjacencies.csv 中的条目采用的格式是
    ID From;ID To;Type;ID Through;start_x;start_y;stop_x;stop_y;Comment
    ID From;ID To;Type;ID Through;start_x;start_y;stop_x;stop_y;Comment
    #For example:
    # 例如:
    1527;1526;river_large;629;948;2791;-1;-1;London-Southwark
    1527;1526;river_large;629;948;2791;-1;-1;London-Southwark
    -1;-1;;-1;-1;-1;-1;-1;
    -1;-1;;-1;-1;-1;-1;-1;
* ID From、ID To和ID Through都 是ID。
* ID From、ID To和ID Through都 “definitions.csv 中找到 的ID
"definitions.csv " 中找到
* ID From和ID To是男爵领;ID Through是海 或可航行的河流。
* ID From和ID To是男爵领 ;ID Through是 海或可航行的河流。
* 类型为 “sea” “river_large”
* 类型为 "海 " "大河"
* start_x 和start_y  一个 军队在 “ID From ”男爵领 出发 的坐标(x,y)。
* start_x start_y 是军队在 "ID From "部落 " 出发 " 的坐标(x,y)。
* stop_x和stop_y是一个军队在 “ID To 部落中 登陆 的坐标(x,y)。
* stop_x和stop_y是一个军队在 "ID To " 部落中 " 登陆 " 的坐标(x,y)。
* start_x、start_y、stop_x和stop_y都可以使用 -1 来代替实际坐标,这将默认为军队在该 男爵领 的正常位置。
* start_x、start_y、stop_x和stop_y都可以使用"-1 " 来代替实际坐标,这将默认为军队在该 部落 的正常位置。
* 保留文件末尾的 -1;-1;;-1;-1;-1;-1;-1;
* 保留文件末尾的"-1;-1;;-1;-1;-1;-1;-1;"


== 使用自定义分辨率创建地图 ==
== 使用自定义分辨率创建地图 ==
'''注意:''宽度和高度是您为您 的mod 设置的新宽度和高度。
'''注意:'''宽度和高度是您为您 的模组 设置的新宽度和高度。


* common/defines/00_defines.txt:
* common/defines/00_defines.txt:
    WORLD_EXTENTS_X # Should be: map width - 1 
    WORLD_EXTENTS_X # 应该是地图宽度 - 1 
    WORLD_EXTENTS_Z # Shoud be: map height - 1 
    WORLD_EXTENTS_Z # 应该是地图高度 - 1 


* common/defines/graphics/00_graphics.txt
* common/defines/graphics/00_graphics.txt
    PANNING_WIDTH # However far you want the player to be able to pan left to right. Panning to the edge would mean this is equal to map width
    PANNING_WIDTH # 无论你想让玩家从左到右平移多远。平移到边缘将意味着这等于地图的宽度
    PANNING_HEIGHT # However far you want the player to be able to pan up and down. Panning to the edge would mean this is equal to map height
    PANNING_HEIGHT # 无论你想让玩家上下平移多远。平移到边缘将意味着这等于地图的高度




* /gfx/map/surround_map/surround_mask.dds   # Size should be: (width x height) * 1/2 
* /gfx/map/surround_map/surround_mask.dds   # 大小应该是:(宽度 x 高度)* 1/2 
* /gfx/map/surround_map/surround_fade.dds   # Size should be: (width x height) * 1/8 
* /gfx/map/surround_map/surround_fade.dds   # 大小应该是:(宽度 x 高度)* 1/8 
* /gfx/map/terrain/   # All files in this that have _mask (63 as of 1.3) or .tga (2 as of 1.3) in the name need to be resized TO: (width x height)
* /gfx/map/terrain/   # 所有名称中拥有_mask(截至1.3 版本有63个文件)或者.tga (截至1.3 版本有2个文件)需要调整大小到:(宽度 x 高度)
* flatmap.dds   # Size should be: (width x height)
* flatmap.dds   # 大小应该是:(宽度 x 高度)
* colormap.dds   # Size should be: (width x height) * 1/4
* colormap.dds   # 大小应该是:(宽度 x 高度)* 1/4
* detail_intensity.tga   # Size should be: (width x height)
* detail_intensity.tga   # 大小应该是:(宽度 x 高度)
* detail_index.tga   # Size should be: (width x height)
* detail_index.tga   # 大小应该是:(宽度 x 高度)
* ..._mask.png   # Size should be: (width x height)
* ..._mask.png   # 大小应该是:(宽度 x 高度)


* /gfx/map/water/flowmap.dds   # Size should be: (width x height) * 1/4 
* /gfx/map/water/flowmap.dds   # 大小应该是:(宽度 x 高度)* 1/4 
* /gfx/map/water/foam_map.dds   # Size should be: (width x height) * 1/8 
* /gfx/map/water/foam_map.dds   # 大小应该是:(宽度 x 高度)* 1/8 
* /gfx/map/water/watercolor_rgb_waterspec_a.dds   # Size should be: (width x height) * 1/2 
* /gfx/map/water/watercolor_rgb_waterspec_a.dds   # 大小应该是:(宽度 x 高度)* 1/2 


* /map_data/heightmap.png   # Size should be: (width x height) Ensure that this is in RGB format and not RGBA. If you get a white fog it might be because the heightmap was exported as RGBA. To fix this, you need to delete the alpha layer
* /map_data/heightmap.png   # 大小应该是:(宽度 高度)确保这是RGB格式而不是RGBA。如果你得到一片白雾,可能是因为高度图以RGBA格式导出。为了修复此问题,你需要删除alpha(透明)图层
* /map_data/provinces.png   # Size should be: (width x height) # Note, game will load even if the dimensions on this are wrong
* /map_data/provinces.png   # 大小应该是:(宽度 高度)# 注意,即使这个尺寸是错误的,游戏也会加载
* /map_data/rivers.png   # Size should be: (width x height)
* /map_data/rivers.png   # 大小应该是:(宽度 x 高度)
* /map_data/indirection_heightmap.png   # Size should be: (width x height) * 1/32 
* /map_data/indirection_heightmap.png   # 大小应该是:(宽度 x 高度)* 1/32 


* /map_data/heightmap.heightmap
* /map_data/heightmap.heightmap
    original_heightmap_size # Should be { width height
    original_heightmap_size # 应该是 { 宽度 高度


* /content_source/map_objects/masks   # All files in this that have _mask (21 as of 1.0) need to be resized TO: (width x height) * 1/2 
* /content_source/map_objects/masks   # 所有拥有_mask的文件(截至1.0 版本有21个文件)需要调整大小到(宽度 x 高度)* 1/2 




=== 如何导入高度图 ===
=== 如何导入高度 图 ===
 如果您在加载或重新打包自定义高度图时遇到困难( 尤其是大的高度图,这可能会有问题) ,请尝试以下步骤。这在1.1.3时有效。
 如果您在加载或重新打包自定义高度 图时遇到困难 尤其是大的高度 图,这可能会有问题 ,请尝试以下步骤。这在1.1.3时有效。


将vanilla indirection_heightmap.png和packed_heightmap.png复制 到mod 的map_data目录下。
将游戏本体的indirection_heightmap.png和packed_heightmap.png复制 到模组 的map_data目录下。
# 删 除vanilla 文件夹中的indirection_heightmap.png和packed_heightmap.png。
# 删 除游戏本体 文件夹中的indirection_heightmap.png和packed_heightmap.png。
# 加载地图编辑器并重新打包地图。重新打包的地图文件应该 在vanilla map_data 目录下。
# 加载地图编辑器并重新打包地图。重新打包的地图文件应该 在游戏本体map_data 目录下。
# 将新 的 indirection_heightmap.png 和 packed_heightmap.png vanilla  目录中复制到 mod  的 map_data 目录中。
# 将新 的indirection_heightmap.png 和packed_heightmap.png从 游戏本体 目录中复制到 模组 的 map_data 目录中。
# 对于Steam用户,请验证游戏缓存的完整性,重新下 载vanilla indirection_heightmap.png和packed_heightmap.png文件。
# 对于Steam用户,请验证游戏缓存的完整性,重新下 载游戏本体indirection_heightmap.png和packed_heightmap.png文件。


== Frequently asked questions ==
== 常见问题 ==


=== 为什么我不能一直向右滚动?===
=== 为什么我不能一直向右滚动?===
第225行: 第224行:
 或任何你的地图的等效像素宽度。
 或任何你的地图的等效像素宽度。


=== 为什么我不能使用自动推移(骰子)按钮来放置我的建筑 和定位器?===
=== 为什么我不能使用自动推移(骰子)按钮来放置我的建筑和定位器?===
 由于一个错误,你 需要有那些定义的''之前''你 可以自动推移 。幸运的是,游戏会为你生成它们。
 由于一个错误, 可以自动推移''之前'' 需要一些定义 。幸运的是,游戏会为你生成它们。


  所有 文件 从这里复制
  复制以下目录中的 所有文件:
    C:\Users\[user]\Documents\Paradox Interactive\Crusader Kings III\generated
    C:\Users\[user]\Documents\Paradox Interactive\Crusader Kings III\generated
 将它们粘贴到:
 将它们粘贴到:

2020年11月23日 (一) 22:28的版本

十字军之王 III中,可以修改游戏地图。这包括编辑陆地、海洋、河流和省份。关于修改头衔,请见头衔模组制作

高度地图

爱尔兰和不列颠部分地区的高度地图示例

高度地图是每张地图的基础,定义了非羊皮纸地图的整体形状。高度地图用灰度图像表示,其中黑色是可能的最低海拔,白色是可能的最高海拔。

创建高度地图

对于现实世界的地点,美国航天局通过“Blue Marble project”项目的地形图部分向公众提供详细的高度图。

虚构的高度地图通常是使用软件组合创建的,通常是Photoshop或GIMP等图像编辑器和World Machine或Gaea等地形生成软件。

主高度地图文件

高度地图在“[mod]/map_data/heightmap.png”中找到,并且必须保存为16位灰度图像。

高度地图的尺寸必须符合“[mod]/map_data/heightmap.heightmap”中定义的“original_heightmap_size”。

其他高度地图文件

除了“heightmap.png”之外,还有两个重要的自动生成高度地图文件,“indirection_heightmap.png”和 “packed_heightmap.png”。当高度地图被 重新打包repack并保存时,CK3地图编辑器会创建这两个文件。

Repack.png

重新打包

当主heightmap.png被改变时,你必须在地图编辑器中“ 重新打包repack”以使河流、边界和头衔等符合新的高度地图。如果你有任何问题,如东西似乎不“服从”高度地图,第一个解决问题的步骤应该是 重新打包repack

河流地图

爱尔兰和不列颠部分地区的河流地图示例

河流地图是一个定义海岸和河流的特殊文件,它既被地形引擎用来在地图上绘制河流,也用来定义军队过河的位置。它不用于通航的河流或其他水体。

错误创建的河流地图将导致游戏崩溃并跳回桌面。它们必须是索引的RGB图像,具有非常特定的调色板;在创建河流地图时,防止崩溃的最好方法是先使用游戏的原始河流地图(在“[CK3目录]/game/map_data/rivers.png”中找到)。除了原始颜色索引中的颜色外,任何其他颜色,包括反锯齿或透明,都会导致游戏崩溃并跳回桌面。

了解河流地图颜色

River map color table.png

河流地图应该是有颜色索引的,这意味着它们是用特殊编码保存的,只能使用某些特定的颜色。

每种颜色都有特定的含义,由游戏引擎转化为好看的河流。

  • #00ff00(纯绿色)表示河流系统的源头。
  • #ff0000(纯红色)表示一条支流进入主河。
  • #fffc00(纯黄色)表示河流向外分支。
  • #ff0080(洋红色)表示海洋、湖泊和通航河流。
  • #ffffff(白色)表示陆地。

其余颜色为浅蓝色到深蓝色的渐变,蓝色越深,河流越宽。

像素完美

River validity.png

每个河流像素必须与不超过2个其他河流像素正交相邻,分流和流入必须与不超过3个其他河流像素相邻。两个像素宽的河流''将导致崩溃,仅用对角线像素连接的河流将无法渲染。

绘制程序

River special pixels.png

你可以认为CK3的河道绘制算法基本上是以三种特殊像素颜色(红、黄、绿)中的一种作为起点来绘制河段,其中绿色的那个是整个河系的起点。每条河段的一端应该有三种像素类型中的一种,另一端则没有。这意味着一条河流不能像现实生活中经常发生的那样,离开母体又重新加入母体。河段边上的红色和黄色像素与这个限制是分开的,因为它们会生成新的河段。三种河流类型中的每一种也决定了它生成的河段的流向。绿色和黄色像素使河流远离它们,红色像素使河流流向它们。

河源

每条河流系统应该只有一个源像素;这意味着如果一条河流有任何支流,这些支流不应该有绿色的源像素。

水下河道技巧

河流地图上的粉色和白色只是供你参考;它们都有不是河流的编码含义。因此,你可以像在陆地上一样轻松地在水中画出河流,只是不可见而已。当一条河流在湖泊或大海中结束时,建议将河流延续几个像素进入粉色区域(甚至完全穿过小湖泊,如果它在另一边再次出口的话),这样CK3可以更好地理解河流末端的方向性。

如果您有复杂的河流系统,也要穿过湖泊,这也是很有帮助的,因为它为您提供了一个额外的工具来协调现实生活中河流属性和CK3引擎功能之间的差异。

省份地图

爱尔兰和不列颠部分地区的省份地图示例

省份地图定义了男爵领和海区。在省份地图中,每个省份/海区都以独特的颜色来定义。就像河流地图一样,省份地图必须避免反锯齿和透明度。

省份地图不能定义伯爵领、公国、王国或帝国。要定义伯爵领、公国、王国和帝国,你需要在landed_titles文件夹中定义它们。

创建头衔

创建头衔的方法是将省份地图中的颜色与男爵领、伯爵领、公国、王国和帝国的定义联系起来。这个过程包括以下步骤。

  1. 创建一个省份地图来定义个别男爵领。
  2. 通过“[mod]/map_data/definition.csv”省份地图中的RGB来识别男爵领。
  3. 在“[mod]/common/landed_titles/”中的新文件中定义你的头衔层级。
  4. 在“[mod]/localization/[language]/”中新建一个文件,为你的头衔创建本地化。

定义男爵领

要把省份地图的颜色变成可用的男爵领地,你必须在“definition.csv”文件中定义它们。

男爵领定义的格式是

   [ID];[RED];[GREEN];[BLUE];[Barony Name];x;
   # 例如:
   2333;128;183;194;PARIS;x;

ID必须是是连续的,否则你的游戏会崩溃。

   # 这将工作。
   1;42;3;128;CAMELOT;x;
   2;84;6;1;AVALON;x;
   3;126;9;129;TINTAGEL;x;
   
   # 这将导致崩溃。
   1;42;3;128;CAMELOT;x;
   4;84;6;1;AVALON;x;
   19;126;9;129;TINTAGEL;x;

实地头衔

实地头衔和法律上的层级必须在“[mod]/common/landed_titles/”中定义。基本结构如下。

名称(e_empire_tier,k_kingdom_tier等)只是举例,“color”可以是任何你喜欢的RGB值,但“color2”是静态的,有效的首都是伯爵领头衔。任意等级头衔都可以包含多个下一等级头衔(比如1个帝国有5个王国)。

男爵领在游戏中出现的顺序与文件中的顺序相同。即第一个将是默认的首府。引擎将使用“[mod]\history\provinces@_title.txt”中设置的在任何设定日期的首府男爵领的文化和宗教来确定其伯爵领的文化和宗教。

 e_empire_tier = {
       color = { 0 0 0 }
       color2 = { 255 255 255 }
       capital = c_county_tier
   
       k_kingdom_tier = {
           color = { 0 0 0 }
           color2 = { 255 255 255 }
           capital = c_county_tier
   
           d_duchy_tier = {
               color = { 0 0 0 }
               color2 = { 255 255 255 }
               capital = c_county_tier
   
               c_county_tier = {
                   color = { 0 0 0 }
                   color2 = { 255 255 255 }
   
                   b_barony_tier = {
                       color = { 0 0 0 }
                       color2 = { 255 255 255 }
                       province = id(在map_data/definition.csv中定义)
                   }
               }
           }
       }
   }

地图定位器

一旦定义了男爵领,就可以定义其四个主要定位 对象object位置position。这将告诉引擎每块海区被调集军队的放置位置(船的位置),以及地图上每个男爵的地产建筑、被调集军队、军队战斗和攻城武器对象的位置。这四个定位器的位置分别在building_locators.txt、combat_locators.txt、player_stack_locators.txt和siege_locators.txt中定义,这些文件可以在“[mod]/gfx/map/map_object_data/”中找到。

在这些文件中,每个男爵领都由一个 实例instance来表示,在这个实例中可以设置地图对象的位置、旋转和比例。例如,下面的代码定义了一个单一的男爵领的定位器,ID=1,标准尺寸,地图上的坐标为x=2000,y=1000:

   instances={
       {
           id=0
           position={ 2000.000000 0.000000 1000.000000 }
           rotation={ 0.000000 0.000000 0.000000 1.000000 }
           scale={ 1.000000 1.000000 1.000000 }
       }
   }

这些数值,特别是被调集军队在海陆省份的位置,用于定义部队移动寻路。在任何时候,都可以使用游戏中地图编辑器中的 地图对象编辑器Map Objects Editor来微调这些对象的位置、旋转和比例。

要注意的是,如果一个模组的定位器文件有任何严重的问题,error.log应该会显示在“[用户]/[文档]/Paradox Interactive/Crusader Kings III/generated”文件夹中创建了四个文件(一般是地产建筑、被调集军队、军队战斗和攻城武器定位器文本文件)。您可以将这些文件复制到您的模组的“[mod]/gfx/map/map_object_data/”文件夹中,替换旧文件并重新启动游戏中的地图编辑器。

自动推移

游戏中的地图编辑器包含了一个 自动推移Auto nudge工具(由 对象放置模式object placement mode上的骰子按钮表示),允许用户自动生成陆地省份的对象定位文件,并在给定省份内随机测试新的对象位置。要使用它,编辑器应该使用省份选择工具,选择它想要随机的省份,然后点击推移工具按钮。然后,地图编辑器应该尝试在所有选定的省份上生成每个默认对象。

如果有任何无效的位置(例如,由于缺乏有效的生成空间而在该省份的区域外生成的对象),受影响的省份将在地图上以红色条纹交叉显示。要解决这个问题,用户就应该选择任何被红色条纹划过的省份,然后通过再次点击自动推移按钮尝试新的随机有效位置,或者手动将任何无效的对象拖入该省份。

游戏中的地图编辑器还允许用户对自动推移工具的生成设置进行微调。为了方便使用自动推移工具进行随机放置,用户可以缩小物体的碰撞框,或者调整每个物体之间的最小和最大距离。用户应该注意的是,默认攻城引擎的设置是经过优化的,这样攻城引擎的动画就能正确地与地产建筑对象进行交互。

连接

男爵领可以通过两种方式连接:拥有相邻的像素,或者在“[mod]/map_data/adjacencies.csv”中定义连接。

“adjacencies.csv”中的条目采用的格式是:

   ID From;ID To;Type;ID Through;start_x;start_y;stop_x;stop_y;Comment
   #例如:
   1527;1526;river_large;629;948;2791;-1;-1;London-Southwark
   -1;-1;;-1;-1;-1;-1;-1;
  • ID From、ID To和ID Through都是在“definitions.csv”中找到的ID。
  • ID From和ID To是男爵领;ID Through是海洋或可航行的河流。
  • 类型为“sea”或“river_large”。
  • start_x和start_y 是一个军队在“ID From”男爵领中“出发”的坐标(x,y)。
  • stop_x和stop_y是一个军队在“ID To”部落中“登陆”的坐标(x,y)。
  • start_x、start_y、stop_x和stop_y都可以使用“-1”来代替实际坐标,这将默认为军队在该男爵领的正常位置。
  • 保留文件末尾的“-1;-1;;-1;-1;-1;-1;-1;”。

使用自定义分辨率创建地图

注意:宽度和高度是您为您的模组设置的新宽度和高度。

  • common/defines/00_defines.txt:
   WORLD_EXTENTS_X # 应该是地图宽度 - 1 
   WORLD_EXTENTS_Z # 应该是地图高度 - 1 
  • common/defines/graphics/00_graphics.txt
   PANNING_WIDTH # 无论你想让玩家从左到右平移多远。平移到边缘将意味着这等于地图的宽度
   PANNING_HEIGHT # 无论你想让玩家上下平移多远。平移到边缘将意味着这等于地图的高度


  • /gfx/map/surround_map/surround_mask.dds # 大小应该是:(宽度 x 高度)* 1/2
  • /gfx/map/surround_map/surround_fade.dds # 大小应该是:(宽度 x 高度)* 1/8
  • /gfx/map/terrain/ # 所有名称中拥有_mask(截至1.3版本有63个文件)或者.tga(截至1.3版本有2个文件)需要调整大小到:(宽度 x 高度)

* flatmap.dds # 大小应该是:(宽度 x 高度) * colormap.dds # 大小应该是:(宽度 x 高度)* 1/4 * detail_intensity.tga # 大小应该是:(宽度 x 高度) * detail_index.tga # 大小应该是:(宽度 x 高度) * ..._mask.png # 大小应该是:(宽度 x 高度)


  • /gfx/map/water/flowmap.dds # 大小应该是:(宽度 x 高度)* 1/4
  • /gfx/map/water/foam_map.dds # 大小应该是:(宽度 x 高度)* 1/8
  • /gfx/map/water/watercolor_rgb_waterspec_a.dds # 大小应该是:(宽度 x 高度)* 1/2
  • /map_data/heightmap.png # 大小应该是:(宽度 x 高度)确保这是RGB格式而不是RGBA。如果你得到一片白雾,可能是因为高度图以RGBA格式导出。为了修复此问题,你需要删除alpha(透明)图层
  • /map_data/provinces.png # 大小应该是:(宽度 x 高度)# 注意,即使这个尺寸是错误的,游戏也会加载
  • /map_data/rivers.png # 大小应该是:(宽度 x 高度)
  • /map_data/indirection_heightmap.png # 大小应该是:(宽度 x 高度)* 1/32
  • /map_data/heightmap.heightmap
   original_heightmap_size # 应该是 { 宽度 高度 } 
  • /content_source/map_objects/masks # 所有拥有_mask的文件(截至1.0版本有21个文件)需要调整大小到(宽度 x 高度)* 1/2


如何导入高度地图

如果您在加载或重新打包自定义高度地图时遇到困难(尤其是大的高度地图,这可能会有问题),请尝试以下步骤。这在1.1.3时有效。

  1. 将游戏本体的indirection_heightmap.png和packed_heightmap.png复制到模组的map_data目录下。
  2. 删除游戏本体文件夹中的indirection_heightmap.png和packed_heightmap.png。
  3. 加载地图编辑器并重新打包地图。重新打包的地图文件应该在游戏本体map_data目录下。
  4. 将新的indirection_heightmap.png和packed_heightmap.png从游戏本体目录中复制到模组的 map_data 目录中。
  5. 对于Steam用户,请验证游戏缓存的完整性,重新下载游戏本体indirection_heightmap.png和packed_heightmap.png文件。

常见问题

为什么我不能一直向右滚动?

你必须打开common/defines/graphics/00_graphics.txt,并设置为 PANNING_WIDTH = 8192 或任何你的地图的等效像素宽度。

为什么我不能使用自动推移(骰子)按钮来放置我的建筑和定位器?

由于一个错误,在你可以自动推移之前,你需要一些定义。幸运的是,游戏会为你生成它们。

复制以下目录中的所有文件:

   C:\Users\[user]\Documents\Paradox Interactive\Crusader Kings III\generated

将它们粘贴到:

   \gfx\map\map_object_data