Unciv模組制作教程04-模組文件結(jié)構(gòu)概要
Unciv對模組文件結(jié)構(gòu)的要求一直在動態(tài)更新中,所以這一章節(jié)包含的信息可能滯后。
組成mod的JSON文件可以有多個不同的字段(題外話,并非所有字段都用于游戲中)。本教程將包含盡可能多的字段的完整信息,還會對JSON文件的語法提供簡短說明。
總目錄
General Overview of JSON files - JSON文件概述
Civilization-related JSON files - 與文明相關(guān)的JSON文件
Beliefs.json - 信條
Buildings.json - 建筑
Nations.json - 國家
Policies.json - 政策
Quests.json - 城邦任務(wù)
Religions.json - 宗教
Specialists.json - 專業(yè)人員/專家
Techs.json - 科技
Map-related JSON files - 與地圖相關(guān)的JSON文件
Terrains.json - 地形
TileResources.json - 資源
TileImprovements.json - 改良設(shè)施
Ruins.json - 遠古遺跡
Tileset-specific json - 地塊材質(zhì)包
Unit-related JSON files - 與單位相關(guān)的JSON文件
Units.json - 單位
UnitPromotions.json - 單位晉升
UnitTypes.json - 單位種類
Miscellaneous JSON files - 其他JSON文件
Difficulties.json - 游戲難度
Eras.json - 時代劃分
ModOptions.json - 模組選擇器
GlobalUniques.json - 全球影響
Tutorials.json - 教程修正
Stats - 數(shù)值
Sounds - 音頻
Civilopedia text - 文明百科
JSON文件概述
幾乎所有的Unciv JSON文件都以“[”開頭,以“]”結(jié)束。在這兩個符號之間,是你所描述的不同類型的對象,每個對象都包含在“{”和“}”之間。例如,一個非常簡單的Units.json可能如下所示:
[
? ? {
? ? ? ? "name": "Warrior",
? ? ? ? "cost": 16
? ? },
? ? {
? ? ? ? "name": "Spearman",
? ? ? ? "cost": 24,
? ? ? ? "promotions": ["Shock I", "Drill I"]
? ? }
]
該文件包含兩個單位對象,分別是Warrior/勇士,Spearman/槍兵。這些對象具有不同的屬性,在這種情況下為“name”、“cost”和“promotions”。所有這些屬性都有一定的類型,其中“name”是String/一段文本,“cost”是Integer/整數(shù),而“promotions”是List of Strings/數(shù)段文本。

下面是添加“文化圖書館”建筑的 Buildings.json 示例,該建筑物可提供+50%的科技和文化:
[
? ? {
? ? ? ? "name": "Cultural Library"
? ? ? ? "percentStatBonus" : {"science": 50, "culture": 50}
? ? }
]
這個例子中的Key是“science”和“culture”,它們的值都是“50”。
從某種意義上說,你可以從這些類型中看出,JSON 文件本質(zhì)上是單個建筑物、單位或其他事物的對象的列表。
Uniques
Uniques是Unciv用于可擴展和可自定義效果的一種標簽。幾乎每個規(guī)則集對象都允許使用一組uniques,作為名為“uniques”的列表。
每個Unique都遵循基本結(jié)構(gòu):Unique類型定義名稱[xxx]<條件或觸發(fā)器1><條件或觸發(fā)器2>......????比如:"[+20]% Strength?<for [Military] units> <when attacking>"
整個字符串,不包括所有"<xxx>"(即條件或觸發(fā)器及之間的空格),但包括"[xxx]"。"[xxx]"是Unique的關(guān)鍵。可選"[xxx]"的內(nèi)容取決于你希望實現(xiàn)的功能,它們是修改效果的參數(shù),并在Unique參數(shù)中描述。所有<條件或觸發(fā)器>都是可選的(但如果使用的話,它們之間必須有空格),并且每個都依次遵循<>尖括號之間的Unique結(jié)構(gòu)規(guī)則,包括可能的占位符,但不包括嵌套條件。
譬如:建筑的"uniques":["[+1 Gold] <with a garrison>"]與"gold":1的作用幾乎相同,但前者僅在城市有駐軍時才適用。在這個例子中,“[]”和“with a garrison”是Unciv用來查找兩個Unique的關(guān)鍵,一個效果(類型為Stats)和一個條件(類型為ConditionalWhenGarrisoned)。
Unciv中實現(xiàn)的所有Unique類型都自動記錄在uniques文件中。注意!該文件完全由源代碼自動生成,不要認為自編的英文句子可以使用!還要注意條件和觸發(fā)條件的單獨部分。與這些條目不對應(yīng)的Unique(包括大小寫!)被稱為“untyped/未類型化”,這些不規(guī)范的unqiues不會對游戲有直接影響,但很可能讓模組檢查器顯示警告?!皍ntyped”的Unique的合法用途是把他們放在過濾器中,作為在其他地方識別的標記(例如:在原版規(guī)則集中用作單位過濾器的“Aircraft”)。為了使模組檢查器能夠發(fā)現(xiàn)導致未類型化Unique的錯誤,但仍允許使用過濾器Unique,應(yīng)在GlobalUniques中也包含每個未類型化的Unique。
有關(guān)游戲中使用的JSON文件的信息
Unciv的許多部分都支持修改,并且每個部分都有單獨的json文件。包括Buildings、Units、UnitPromotions、Techs等json文件。你所定義的不同新建筑物或單位也可以有很多不同的屬性,但并非所有屬性都是必要的。下面的章節(jié)列出了每個元素可能具有的所有不同屬性的表格。只有被標記為“required/必要”的屬性才需要你填寫。所有其他屬性都有一個默認值,當你省略時將使用該默認值。