欢迎光临散文网 会员登陆 & 注册

Unciv模组制作教程03-图像与声音

2023-09-24 15:46 作者:Autumn_Pizazz  | 我要投稿

永久可见的模组

这一小章节描述了在 Mod 处于加载状态(acitve)时 Unciv 的工作状态。

Mod 要么在游戏开始界面选中并在这个存档中永久加载(一旦开启,这个存档不能再取消这个模组的选用),若如此做,这个存档会使用这个模组的所有规则和图片/声音资源;要么再游戏开始界面不选中,而是在主菜单的模组管理器中标记勾选“永久可见”按钮,若如此做,这个模组的规则不会在存档中加载,但是它的图片/声音资源会持续加载到所有存档中。 

注意:Mod 作者可以(并且有义务)使用 ModOptions.json 来操控模组是否使用“永久可见”按钮。

“永久可见”按钮位置

覆盖已有图像资源

如果 mod 给出与基本规则集的图像具有相同名称和路径的图像(并且mod的图集是最新的),而且mod处于加载状态,那么Unciv将加载mod的图像而不是基本规则集的内置图像。

例如,如果在你的mod中包含一个名为“Images/OtherIcons/Link.png”的文件,那么它将覆盖Civilopedia(文明百科)中表示“Link”的小链接图标。路径的第一部分与是否覆盖无关,它控制一组atlas文件中的哪一个将承载该图像,但在游戏中选择时,只关注路径的其余部分。因此,要覆盖“Images.Tech/TechIcons/Archery.png”(箭术科技的图像),你可以将自己的图像放置为“Images/TechIcons/Archery.png”,这也会起作用,因为“TechIcons/Archery”部分是决定是否覆盖加载的关键。

注意:你新增的图像应该保证拥有和被替换图像一直的尺寸和颜色,不然大概率会出现异常情况。


添加非覆盖性的图像资源

你需要为你模组的新元素提供图像-就像你为新国家提供国徽一样。添加非覆盖性图像资源的规则如下:

  • 图片文件的路径和名称保证是这种格式:Image[.AtlasName]/Type-specific/Objectname.png ,例如game2/BuildingIcons/Building_Academy_of_Classical_Learning

    (Type-specific 被“xxxIcons”替换,比如 "TechIcons" 对应科技的图标, "NationIcons" 对应国徽。Objectname指这个元素在json文件中定义的确切唯一的在被翻译文件处理之前的名称)

  • 所有的路径部分区分大小写。

  • 单位和地块材质包集有特殊的规则。

  • 单位晋升(Promotion)可以命名为 "[Unitname] ability"。在这种情况下,如果存在 UnitIcons/Unitname.png,当 UnitPromotionIcons/Unitname ability.png 缺失时,将回退使用该单位图标。

  • 单位晋升可以命名为 "Something I"(或 "II" 或 "III")。后缀将被移除并作为小星星进行绘制,只加载基础的 UnitPromotionIcons/Something.png。

  • 单位晋升的特殊规则可以组合使用,例如 "[Warrior] ability III" 将回退到 Warrior 单位图标并在其上绘制 3 颗星星。

此外,还有一些类型的图像,游戏具有显示功能但不提供图形本身,见下文。

添加自定义字体

你可以向mod添加自定义的 .ttf 字体:将 .ttf 文件放置在你mod的 /fonts/ 目录中。你添加的字体将在选项-高级选项中作为 <fontname> (<modname>) 在字体列表顶部显示并可选。

默认情况下,所有字体以50像素大小渲染,稍后根据游戏需求进行缩放。在当前版本中(4.8.6),字体在缩小时不会进行 mipmapping(纹理映射)。

你可以参考Leader Mission,它添加了字体。

添加奇观专属的弹窗图像

你可以向mod添加奇观(Wonder)弹窗图像,当奇观建成时,将显示该图像而不是原奇观的小图标。这个弹窗图像必须是 .png 格式并且采用 2:1 的长宽比,例如 200x100 像素。

它的路径是 /Images/WonderImages/ 。它需要根据 Buildings.json 中的名称字段进行命名,例如 “Temple of Artemis.png” 或 “Stonehenge.png”。

注意:为了与Android兼容,需要生成一个新的 atlas(纹理集)以包含这些图像。

添加领袖肖像

原版规则集没有提供领袖肖像,但可以在见面弹窗、文明百科、外交屏幕或国家选择器中显示它。mod可以通过将图像添加到 /Images/LeaderIcons/ 目录中来提供这些肖像。文件名必须与 Nations.json 中定义的国家的领袖名称完全对应,否则将被忽略。

这些图像最好是正方形,大小在 100x100 和 256x256 像素之间,并在该区域内包括一些透明边框。

你可以参考CoeHarMod_LeaderPhotos,这是我为CoeHarMod写的专门拓展领袖肖像的子模组。

添加一般性肖像

原版Unciv使用带有彩色圆圈作为背景的平面图标(例如,用于与文明旗帜/国徽颜色相匹配的单位),来表示界面中的实体,如单位、建筑、科技、资源、改良、宗教、晋升、专属单位、单位行动(unit actions)和国家等。mod可以通过将图像添加到 /Images/<entityType>Portraits/ 目录(例如,/Images/BuildingPortraits/、/Images/ResourcesPortraits/ 等)来提供“肖像”(静态图像),这些肖像画将保持无色,并用于所有UI元素(除了世界地图上的单位图标)。文件名必须与在相应 JSON 中(例如 Units.json、Buildings.json、TileResources.json 等)定义的单位/建筑/科技/资源等的名称完全对应,或与它们要替换的文件名称相同,否则将被忽略。

如果 mod 提供 '/Images/Portraits/Background.png' 图像,它们将用作相应肖像画的背景,而不是默认的圆圈。

肖像画和背景画在 RGB 完全平方格式下效果最好,大小在 100x100 和 256x256 像素之间,并在该区域内包括一些透明边框。

你可以参考Civ 5 Icons模组,它添加了自定义的一般性肖像。

为单位类型添加图标

在UnitTypes.json中定义的单位类型在原版Unciv中没有图标,但是如果你提供名为'Images/UnitTypeIcons/.png'的图片,Civilopedia可以加载来装饰它们的条目。(在此过程中,你可以覆盖单位类型的母类型的默认图标-它位于同一文件夹中的'UnitTypes.png',或者覆盖用于领域的图标-'DomainLand'(领域-陆地),'DomainWater'(领域-水上),'DomainAir'(领域-空中))。

你可以参考CoeHarMod,我在最近几天的更新中应用了这个功能。

未添加单位类型图片(原版规则集)
添加单位类型的图片后(CoeHarMod)

添加胜利时的插图

你可以为每个胜利条件设置专属插图,以展示其进展情况。这可以是正在建造中的太空飞船,显示你已添加的部件,或者是文化进展,显示你完成的政策分支。它们将显示在胜利画面的一个新选项卡中。

为此,你需要创建一些图片。在下面的说明中,<>表示在VictoryTypes.json中未翻译的名称,这些文件名(与Unciv中的其他文件名一样)区分大小写。除了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文件夹,纹理打包程序需要它作为标志来完成任务)。

这基本上就是全部内容了-不需要json文件,并且可以作为“永久可见”模组使用。Background图片是触发器,如果存在该图片,则必须同时存在所有部件图片,否则你的太空飞船将在起飞前坠毁,并带走Unciv(你应该知道这是一个玩笑)。其他所有图片都是可选的,但如果省略了错误的图片,可能会很奇怪。

几乎所有图片都逐一叠加在Background图片上,因此它们必须具有相同的尺寸。除了Won和Lost-如果满足条件,它们将替换整个剩余部分,因此它们可以具有与背景不同的尺寸。部件图片以无保证的顺序叠加在背景图片上,因此它们应使用透明度以避免相互遮挡。

创建合集的方法是使用“最终”图像,选择所有应成为主题的部分而不是背景(可使用套索、魔术棒或类似工具,根据需要使用抗锯齿和羽化),复制并粘贴为新图层。然后在背景图层上对所选择的部分应用去饱和度和曲线调整,只留下如何完成胜利的一点提示。现在将主题分解 - 选择适合一个部分名称的区域,复制并粘贴为新图层(在原位),然后从原始主题图层中删除所选部分。重复这个过程,然后将每个图层分别导出为带有适当文件名的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格式(文件扩展名必须与所使用的编解码器匹配)。请记住,名称区分大小写。强烈建议使用较小的文件尺寸,Unciv自身的声音使用约为50-100kBps的24kHz联合立体声8位VBR。

覆盖内置声音

这与图形类似,但不涉及纹理集。例如,如果你添加了一个sounds/Click.mp3文件,Unciv将播放它而不是正常的点击声音。这些文件必须保持短小和小巧。未压缩时大小超过1MB的声音可能会在Android设备上无法播放或出现故障。Unciv试图标准化为24kHz采样率、联合立体声、低比特率VBR(-128kbps)的mp3格式。只有mp3和ogg格式将被识别(但可以使用ogg文件覆盖现有的mp3文件)。

添加新的声音资源

在一个mod的/music文件夹中,声音文件(mp3或ogg)将被识别并在mod激活(active)时使用。除了下面描述的特定上下文音乐之外,曲目将随机播放所有可用曲目(不是完全的随机,而是倾向于避免重复播放相似曲目)。如果没有覆盖 - mod中的"thatched-villagers.mp3"将与原版Unciv提供给你下载的文件以相同的可能性播放。在比特率或长度上没有严格的技术限制,但较大的带宽需求可能会导致卡顿(在世界地图更新之前,在下一个回合的结束时最容易出现卡顿,尤其是在非常大的地图上)。


关联上下文的音乐-概述

音乐控制器通常会播放一首曲目后,会有一段暂停时间(可以在选项中更改)。当"离开游戏?"确认对话框打开时,播放将淡出并暂停,关闭对话框后可以恢复播放。

游戏代码中有各种触发器,触发器会选择一个新的曲目。新曲目在开始播放之前,如果需要,会迅速淡出当前正在播放的曲目。曲目的选择涉及到触发器提供的上下文和随机因素,并且会尽量避免在至少播放了其他八个曲目之后重复播放任何曲目的情况。

mod可以提供自己的音乐文件夹,如果mod处于激活状态,其内容将与主音乐文件夹中的内容完全相同。mod应通过谨慎选择文件名来控制其曲目的使用。mod开发人员可以监视控制台输出,以查看与触发器参数或加载错误相关的曲目选择信息。

有一个特殊的曲目:"The Thatched Villagers"(也在credits.md中提到)。如果音乐文件夹为空,游戏可以下载该曲目。当使用音乐音量滑块时,它会播放,并且在出现某些问题时作为备选曲目(但如果文件损坏,将关闭播放器直到发生另一个触发器)。

通过按照这些准则,你可以将自己的音乐添加到游戏中,提升玩家的整体音频体验。

关联上下文的音乐-触发器列表

触发器通过可选地提供前缀和后缀来指示上下文。还有一些标志也会影响选择 - 其中一个标志的功能要求前缀或后缀必须存在,这意味着如果没有可用的文件与轨道选择器匹配,它将不执行任何操作。否则,下一个曲目将始终从可用列表中选择,并按照优先顺序进行排序,然后选择第一个条目。排序按照以下顺序进行:前缀匹配、后缀匹配、最近播放和随机数。因此,目前没有触发器具有空前缀,除非满足请求的前缀的文件少于八个,否则不会播放与任何前缀都不匹配的文件。

触发器列表如下:

音乐触发器表

说明:

[^N]:未实现
[^M]:前缀必须匹配。如果未找到匹配的文件,触发器将不执行任何操作。
[^X]:后缀必须匹配。如果未找到匹配的文件,触发器将不执行任何操作。
[^S]:播放结束后停止。没有自动跳到下一个的能力。
[^F]:替换音轨的慢淡出。
[^D]:总是播放默认文件。
[^0]:每当音轨结束并且已配置的静音时间已过时,将选择一个没有任何上下文的“Ambient”(环境音)音轨。也可以通过“resume”(恢复)触发,例如在Android上切换到另一个应用然后返回到当前应用。
[^1]:主菜单(或初始语言选择器)首次打开。
[^2]:当前玩家是否与任何人处于战争状态。
[^3]:根据你选定玩家的关系。
[^4]:不包括城邦。
[^5]:当另一个玩家向你宣战时发出警报以及在外交屏幕上自己宣战时。



Unciv模组制作教程03-图像与声音的评论 (共 条)

分享到微博请遵守国家法律