Unciv模組制作教程03-圖像與聲音
永久可見的模組
這一小章節(jié)描述了在 Mod?處于加載狀態(tài)(acitve)時 Unciv?的工作狀態(tài)。
Mod 要么在游戲開始界面選中并在這個存檔中永久加載(一旦開啟,這個存檔不能再取消這個模組的選用),若如此做,這個存檔會使用這個模組的所有規(guī)則和圖片/聲音資源;要么再游戲開始界面不選中,而是在主菜單的模組管理器中標記勾選“永久可見”按鈕,若如此做,這個模組的規(guī)則不會在存檔中加載,但是它的圖片/聲音資源會持續(xù)加載到所有存檔中。?
注意:Mod 作者可以(并且有義務)使用?ModOptions.json?來操控模組是否使用“永久可見”按鈕。


覆蓋已有圖像資源
如果 mod?給出與基本規(guī)則集的圖像具有相同名稱和路徑的圖像(并且mod的圖集是最新的),而且mod處于加載狀態(tài),那么Unciv將加載mod的圖像而不是基本規(guī)則集的內(nèi)置圖像。
例如,如果在你的mod中包含一個名為“Images/OtherIcons/Link.png”的文件,那么它將覆蓋Civilopedia(文明百科)中表示“Link”的小鏈接圖標。路徑的第一部分與是否覆蓋無關(guān),它控制一組atlas文件中的哪一個將承載該圖像,但在游戲中選擇時,只關(guān)注路徑的其余部分。因此,要覆蓋“Images.Tech/TechIcons/Archery.png”(箭術(shù)科技的圖像),你可以將自己的圖像放置為“Images/TechIcons/Archery.png”,這也會起作用,因為“TechIcons/Archery”部分是決定是否覆蓋加載的關(guān)鍵。
注意:你新增的圖像應該保證擁有和被替換圖像一直的尺寸和顏色,不然大概率會出現(xiàn)異常情況。
添加非覆蓋性的圖像資源
你需要為你模組的新元素提供圖像-就像你為新國家提供國徽一樣。添加非覆蓋性圖像資源的規(guī)則如下:
圖片文件的路徑和名稱保證是這種格式:Image[.AtlasName]/Type-specific/Objectname.png ,例如game2/BuildingIcons/Building_Academy_of_Classical_Learning
(Type-specific 被“xxxIcons”替換,比如?"TechIcons" 對應科技的圖標, "NationIcons" 對應國徽。Objectname指這個元素在json文件中定義的確切唯一的在被翻譯文件處理之前的名稱)
所有的路徑部分區(qū)分大小寫。
單位和地塊材質(zhì)包集有特殊的規(guī)則。
單位晉升(Promotion)可以命名為 "[Unitname] ability"。在這種情況下,如果存在 UnitIcons/Unitname.png,當 UnitPromotionIcons/Unitname ability.png 缺失時,將回退使用該單位圖標。
單位晉升可以命名為 "Something I"(或 "II" 或 "III")。后綴將被移除并作為小星星進行繪制,只加載基礎的 UnitPromotionIcons/Something.png。
單位晉升的特殊規(guī)則可以組合使用,例如 "[Warrior] ability III" 將回退到 Warrior 單位圖標并在其上繪制 3 顆星星。
此外,還有一些類型的圖像,游戲具有顯示功能但不提供圖形本身,見下文。
添加自定義字體
你可以向mod添加自定義的 .ttf 字體:將 .ttf 文件放置在你mod的 /fonts/ 目錄中。你添加的字體將在選項-高級選項中作為?<fontname>?(<modname>) 在字體列表頂部顯示并可選。
默認情況下,所有字體以50像素大小渲染,稍后根據(jù)游戲需求進行縮放。在當前版本中(4.8.6),字體在縮小時不會進行 mipmapping(紋理映射)。
你可以參考Leader Mission,它添加了字體。
添加奇觀專屬的彈窗圖像
你可以向mod添加奇觀(Wonder)彈窗圖像,當奇觀建成時,將顯示該圖像而不是原奇觀的小圖標。這個彈窗圖像必須是 .png 格式并且采用 2:1 的長寬比,例如 200x100 像素。
它的路徑是 /Images/WonderImages/ 。它需要根據(jù) Buildings.json 中的名稱字段進行命名,例如 “Temple of Artemis.png” 或 “Stonehenge.png”。
注意:為了與Android兼容,需要生成一個新的 atlas(紋理集)以包含這些圖像。
添加領(lǐng)袖肖像
原版規(guī)則集沒有提供領(lǐng)袖肖像,但可以在見面彈窗、文明百科、外交屏幕或國家選擇器中顯示它。mod可以通過將圖像添加到 /Images/LeaderIcons/ 目錄中來提供這些肖像。文件名必須與 Nations.json 中定義的國家的領(lǐng)袖名稱完全對應,否則將被忽略。
這些圖像最好是正方形,大小在 100x100 和 256x256 像素之間,并在該區(qū)域內(nèi)包括一些透明邊框。
你可以參考CoeHarMod_LeaderPhotos,這是我為CoeHarMod寫的專門拓展領(lǐng)袖肖像的子模組。
添加一般性肖像
原版Unciv使用帶有彩色圓圈作為背景的平面圖標(例如,用于與文明旗幟/國徽顏色相匹配的單位),來表示界面中的實體,如單位、建筑、科技、資源、改良、宗教、晉升、專屬單位、單位行動(unit actions)和國家等。mod可以通過將圖像添加到 /Images/<entityType>Portraits/ 目錄(例如,/Images/BuildingPortraits/、/Images/ResourcesPortraits/ 等)來提供“肖像”(靜態(tài)圖像),這些肖像畫將保持無色,并用于所有UI元素(除了世界地圖上的單位圖標)。文件名必須與在相應 JSON 中(例如 Units.json、Buildings.json、TileResources.json 等)定義的單位/建筑/科技/資源等的名稱完全對應,或與它們要替換的文件名稱相同,否則將被忽略。
如果 mod 提供 '/Images/Portraits/Background.png' 圖像,它們將用作相應肖像畫的背景,而不是默認的圓圈。
肖像畫和背景畫在 RGB 完全平方格式下效果最好,大小在 100x100 和 256x256 像素之間,并在該區(qū)域內(nèi)包括一些透明邊框。
你可以參考Civ 5 Icons模組,它添加了自定義的一般性肖像。
為單位類型添加圖標
在UnitTypes.json中定義的單位類型在原版Unciv中沒有圖標,但是如果你提供名為'Images/UnitTypeIcons/.png'的圖片,Civilopedia可以加載來裝飾它們的條目。(在此過程中,你可以覆蓋單位類型的母類型的默認圖標-它位于同一文件夾中的'UnitTypes.png',或者覆蓋用于領(lǐng)域的圖標-'DomainLand'(領(lǐng)域-陸地),'DomainWater'(領(lǐng)域-水上),'DomainAir'(領(lǐng)域-空中))。
你可以參考CoeHarMod,我在最近幾天的更新中應用了這個功能。


添加勝利時的插圖
你可以為每個勝利條件設置專屬插圖,以展示其進展情況。這可以是正在建造中的太空飛船,顯示你已添加的部件,或者是文化進展,顯示你完成的政策分支。它們將顯示在勝利畫面的一個新選項卡中。
為此,你需要創(chuàng)建一些圖片。在下面的說明中,<>表示在VictoryTypes.json中未翻譯的名稱,這些文件名(與Unciv中的其他文件名一樣)區(qū)分大小寫。除了Background以外,所有文件都是可選的:
VictoryIllustrations/<name>/Background.png - 這確定了整體尺寸,其他圖片的尺寸不能超過它,并且最好具有相同的尺寸。如果此文件缺失,則不會為該勝利條件顯示插圖。
VictoryIllustrations/<name>/Won.png - 如果你(查看的玩家)贏得了該勝利條件,則顯示此圖片。
VictoryIllustrations/<name>/Lost.png - 如果競爭對手贏得了該勝利條件,或者你已完成該勝利條件但在此之前已贏得了其他勝利條件,則顯示此圖片。
VictoryIllustrations/<name>/<milestone>.png - 對于里程碑字段中沒有[amount]的每個條目,需要一張圖片,名稱按原樣提取,但不包括方括號,空格保留。
VictoryIllustrations/<name>/<milestone>?<index>.png - 對于milestone(里程碑)字段中帶有[amount]的條目,每個步驟需要一張圖片,從索引1開始。
VictoryIllustrations/<name>/<component>.png - 對于requiredSpaceshipParts字段中的每個獨立條目,即只能建造一次的部件,需要一張圖片。單位名稱中的空格必須保留。
VictoryIllustrations/<name>/<component>?<index>.png - 對于requiredSpaceshipParts字段中需要建造多次的部件,每個實例需要一張圖片。單位名稱中的空格必須保留,并且名稱和索引之間必須有一個空格。索引從1開始。
注意:這些是邏輯名稱,需要按照它們在圖集文件中的索引,如果讓Unciv為你打包,VictoryIllustrations文件夾應放在<mod>/Images下-或者如果你希望這些圖片占用單獨的Victories.atlas,則放在<mod>/Images.Victories下(即使留空,也不要忽略Images文件夾,紋理打包程序需要它作為標志來完成任務)。
這基本上就是全部內(nèi)容了-不需要json文件,并且可以作為“永久可見”模組使用。Background圖片是觸發(fā)器,如果存在該圖片,則必須同時存在所有部件圖片,否則你的太空飛船將在起飛前墜毀,并帶走Unciv(你應該知道這是一個玩笑)。其他所有圖片都是可選的,但如果省略了錯誤的圖片,可能會很奇怪。
幾乎所有圖片都逐一疊加在Background圖片上,因此它們必須具有相同的尺寸。除了Won和Lost-如果滿足條件,它們將替換整個剩余部分,因此它們可以具有與背景不同的尺寸。部件圖片以無保證的順序疊加在背景圖片上,因此它們應使用透明度以避免相互遮擋。
創(chuàng)建合集的方法是使用“最終”圖像,選擇所有應成為主題的部分而不是背景(可使用套索、魔術(shù)棒或類似工具,根據(jù)需要使用抗鋸齒和羽化),復制并粘貼為新圖層。然后在背景圖層上對所選擇的部分應用去飽和度和曲線調(diào)整,只留下如何完成勝利的一點提示?,F(xiàn)在將主題分解 - 選擇適合一個部分名稱的區(qū)域,復制并粘貼為新圖層(在原位),然后從原始主題圖層中刪除所選部分。重復這個過程,然后將每個圖層分別導出為帶有適當文件名的PNG圖像。沒有建議的大小,但請記住紋理的最大尺寸為2048x2048像素,如果你希望圖像被正確打包,多個圖像應適合一個紋理中。如果需要,它們將被縮小以不超過屏幕大小的80%,保持縱橫比。
目前沒有mod應用這個功能(或者我沒找到),所以沒有參考對象。

添加聲音資源
標準的可選值(value)如下所示。
arrow(箭矢),artillery(火炮),bombard(轟擊),bombing(轟炸),cannon(大炮),chimes(風鈴),choir(合唱),click(點擊),coin(硬幣),construction(建造),elephant(大象),fortify(加強),gdrAttack(大型陸軍攻擊),horse(馬嘶聲),jetgun(噴氣槍),machinegun(機槍),metalhit(金屬擊打聲),missile(導彈),nonmetalhit(非金屬擊打聲),nuke(核彈),paper(紙張),policy(政策),promote(晉升),setup(設置),shipguns(艦船炮聲),shot(射擊聲),slider(滑塊),swap(交換),tankshot(坦克射擊聲),throw(投擲),torpedo(魚雷),upgrade(升級),whoosh(呼嘯聲)。
模組可以添加自己的聲音,只要attackSound中的任何新值在模組的聲音文件夾中有相應的聲音文件,可以使用mp3、ogg或wav格式(文件擴展名必須與所使用的編解碼器匹配)。請記住,名稱區(qū)分大小寫。強烈建議使用較小的文件尺寸,Unciv自身的聲音使用約為50-100kBps的24kHz聯(lián)合立體聲8位VBR。
覆蓋內(nèi)置聲音
這與圖形類似,但不涉及紋理集。例如,如果你添加了一個sounds/Click.mp3文件,Unciv將播放它而不是正常的點擊聲音。這些文件必須保持短小和小巧。未壓縮時大小超過1MB的聲音可能會在Android設備上無法播放或出現(xiàn)故障。Unciv試圖標準化為24kHz采樣率、聯(lián)合立體聲、低比特率VBR(-128kbps)的mp3格式。只有mp3和ogg格式將被識別(但可以使用ogg文件覆蓋現(xiàn)有的mp3文件)。
添加新的聲音資源
在一個mod的/music文件夾中,聲音文件(mp3或ogg)將被識別并在mod激活(active)時使用。除了下面描述的特定上下文音樂之外,曲目將隨機播放所有可用曲目(不是完全的隨機,而是傾向于避免重復播放相似曲目)。如果沒有覆蓋 - mod中的"thatched-villagers.mp3"將與原版Unciv提供給你下載的文件以相同的可能性播放。在比特率或長度上沒有嚴格的技術(shù)限制,但較大的帶寬需求可能會導致卡頓(在世界地圖更新之前,在下一個回合的結(jié)束時最容易出現(xiàn)卡頓,尤其是在非常大的地圖上)。
關(guān)聯(lián)上下文的音樂-概述
音樂控制器通常會播放一首曲目后,會有一段暫停時間(可以在選項中更改)。當"離開游戲?"確認對話框打開時,播放將淡出并暫停,關(guān)閉對話框后可以恢復播放。
游戲代碼中有各種觸發(fā)器,觸發(fā)器會選擇一個新的曲目。新曲目在開始播放之前,如果需要,會迅速淡出當前正在播放的曲目。曲目的選擇涉及到觸發(fā)器提供的上下文和隨機因素,并且會盡量避免在至少播放了其他八個曲目之后重復播放任何曲目的情況。
mod可以提供自己的音樂文件夾,如果mod處于激活狀態(tài),其內(nèi)容將與主音樂文件夾中的內(nèi)容完全相同。mod應通過謹慎選擇文件名來控制其曲目的使用。mod開發(fā)人員可以監(jiān)視控制臺輸出,以查看與觸發(fā)器參數(shù)或加載錯誤相關(guān)的曲目選擇信息。
有一個特殊的曲目:"The Thatched Villagers"(也在credits.md中提到)。如果音樂文件夾為空,游戲可以下載該曲目。當使用音樂音量滑塊時,它會播放,并且在出現(xiàn)某些問題時作為備選曲目(但如果文件損壞,將關(guān)閉播放器直到發(fā)生另一個觸發(fā)器)。
通過按照這些準則,你可以將自己的音樂添加到游戲中,提升玩家的整體音頻體驗。
關(guān)聯(lián)上下文的音樂-觸發(fā)器列表
觸發(fā)器通過可選地提供前綴和后綴來指示上下文。還有一些標志也會影響選擇?- 其中一個標志的功能要求前綴或后綴必須存在,這意味著如果沒有可用的文件與軌道選擇器匹配,它將不執(zhí)行任何操作。否則,下一個曲目將始終從可用列表中選擇,并按照優(yōu)先順序進行排序,然后選擇第一個條目。排序按照以下順序進行:前綴匹配、后綴匹配、最近播放和隨機數(shù)。因此,目前沒有觸發(fā)器具有空前綴,除非滿足請求的前綴的文件少于八個,否則不會播放與任何前綴都不匹配的文件。
觸發(fā)器列表如下:

說明:
[^N]:未實現(xiàn)
[^M]:前綴必須匹配。如果未找到匹配的文件,觸發(fā)器將不執(zhí)行任何操作。
[^X]:后綴必須匹配。如果未找到匹配的文件,觸發(fā)器將不執(zhí)行任何操作。
[^S]:播放結(jié)束后停止。沒有自動跳到下一個的能力。
[^F]:替換音軌的慢淡出。
[^D]:總是播放默認文件。
[^0]:每當音軌結(jié)束并且已配置的靜音時間已過時,將選擇一個沒有任何上下文的“Ambient”(環(huán)境音)音軌。也可以通過“resume”(恢復)觸發(fā),例如在Android上切換到另一個應用然后返回到當前應用。
[^1]:主菜單(或初始語言選擇器)首次打開。
[^2]:當前玩家是否與任何人處于戰(zhàn)爭狀態(tài)。
[^3]:根據(jù)你選定玩家的關(guān)系。
[^4]:不包括城邦。
[^5]:當另一個玩家向你宣戰(zhàn)時發(fā)出警報以及在外交屏幕上自己宣戰(zhàn)時。