地圖模組製作

本頁面所適用的版本可能已經過時,最後更新於1.1

十字軍之王 III中,可以修改遊戲地圖。這包括編輯陸地、海洋、河流和省份。關於修改頭銜,請見頭銜模組製作

如何開始[編輯 | 編輯原始碼]

這樣打開地圖編輯器:

  • Navigate to the Steam Library, right-click on CK3 and open properties.
  • Under the General tab, and within the "LAUNCH OPTIONS" section type -mapeditor in the specified field.
  • Simply open CK3. Do this with a map that functions before you try to use anything you've created. You can import new assets later from within the editor.
  • 導航至STEAM庫中,右擊CK3打開「屬性」
  • 在「通用」菜單下,「啟動選項」一欄輸入「-mapeditor」
  • 打開CK3。在你嘗試使用你所創建的任何東西之前,先用這個方式打開一個能夠正常工作的地圖。之後你就可以在編輯器內導入新的資源。(英文描述先不要刪除,這句話翻譯可能有歧義)

高度地圖[編輯 | 編輯原始碼]

愛爾蘭和不列顛部分地區的高度地圖示例

高度地圖是每張地圖的基礎,定義了非羊皮紙地圖的整體形狀。高度地圖用灰度圖像表示,其中黑色是可能的最低海拔,白色是可能的最高海拔。

創建高度地圖[編輯 | 編輯原始碼]

對於現實世界的地點,美國航天局通過「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中定义)
                   }
               }
           }
       }
   }

省份的地形[編輯 | 編輯原始碼]

You can set each province's terrain in [mod]/common/province_terrain/00_province_terrain.txt.

Each line's format is [prov_id]=[terrain] (plains/farmlands/hills/mountains/desert/desert_mountains/oasis/jungle/forest/taiga/wetlands/steppe/floodplains/drylands).

Note that the modification will take effect immediately in the game.

你可以在[mod]/common/province_terrain/00_province_terrain.txt文件中設置每個省份的地形。

每一行的格式為[prov_id]=[terrain] (plains/farmlands/hills/mountains/desert/desert_mountains/oasis/jungle/forest/taiga/wetlands/steppe/floodplains/drylands)。

注意,修改效果會在遊戲內立即生效。

地圖定位器[編輯 | 編輯原始碼]

一旦定義了男爵領,就可以定義其四個主要定位 對象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 
   WATERLEVEL # Corresponds to the heights from the heightmap - if too low, no oceans/lakes will appear. If too high, the entire map will be covered with water
  • 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