音乐修改

本页介绍模组中使用的音乐。关于游戏内的音乐,请参见原声音乐。

前置要求

首先,模组作者需要一个可以添加到《欧陆风云4》中的音乐文件。可以从其他模组、作者自己的音乐库或其他 Paradox 游戏中获取。向《欧陆风云4》添加音乐不会改变游戏的校验和,因此仍然可以在铁人模式下游玩。添加音乐时请注意版权问题,并记得标明艺术家的署名!

音乐文件必须为 .ogg 格式(据推测还需使用 vorbis 编码),否则不会被播放。文件应为 32 位位深、44.1kHz 采样率和 192KB/s 比特率,否则可能无法在游戏中正常播放。一款可用于转换音乐格式的免费软件是 Audacity。所需的导出设置可以在设置菜单的“质量”选项卡下找到。

如果你希望自己的音乐模组能与其他音乐模组及原版音乐共同生效,就需要为 .ogg、.asset 和 .txt 文件起一个独一无二的名称。若要覆盖原版音乐,请将你的 .txt 文件命名为 songs.txt。

音乐文件夹与配套文件

注:Music Mod Creation Tool(音乐模组制作工具)可以自动生成向游戏添加音乐所需的基础代码。如果你想进一步定制模组的音频体验,则需要按下文所述手动添加修正。


在你的模组中必须创建一个名为“music”的文件夹。在该文件夹中,使用文本编辑器创建一个 .asset 文件和一个 .txt 文件。.asset 文件用于告诉游戏在哪里找到你的音轨,.txt 文件则用于告诉游戏何时播放它。请为每个文件起一个独一无二的名称。然后按照上文列出的文件属性要求,将你的 .ogg 音轨放入该文件夹。

.asset 文件

用你喜欢的文本编辑器打开 .asset 文件,为每首要添加的歌曲输入以下代码:

music = {
      name = song_name_id #歌曲的本地化 ID,长度不能超过 63 个字符
      file = "filename.ogg" #你的音乐文件的准确文件名
}

注意:

  • 如果直接在 .asset 文件中写 name = "Song Name",歌曲可以正常播放,但歌名中不能包含扩展拉丁字符(例如带重音符号的字母)。
  • # 表示注释,一行中 # 之后输入的所有内容都不会被代码执行。

.txt 文件

用你喜欢的文本编辑器打开 .txt 文件,为每首要添加的歌曲输入以下代码:

song = {
       name = song_name_id #你的歌曲名称,需与 .asset 文件中定义的一致
       chance = {
              modifier = {
                     factor = 1 #对所有人生效的基础播放几率
              }
              modifier = {
                     factor = <number> #此处填入的数值会与其他 factor 相乘,从而改变歌曲播放的几率
                     <triggers> #在此处添加触发条件。当触发条件满足时,该 factor 会作用于总的播放几率
              }
              #可按上述格式在下方按需添加更多修正
       }
}

歌曲的播放几率可以应用任意数量的修正,也可以使用任意数量的触发条件来应用它们。最需要注意的一点是,各个 factor 之间是相乘的。如果一首歌同时满足 factor 为 1.2 和 factor 为 0.5 的条件,那么该歌曲最终的播放几率为 。这意味着可以通过使用值为 0 的 factor 来阻止歌曲播放,最常见的做法是配合 is_at_war 触发条件,使歌曲在和平或战争期间不会播放。下文会给出此过程的一些示例。


完整的音乐模组制作视频教程可在 Youtube 上观看。

完成后,你的音乐文件夹中应包含你添加的所有 .ogg 格式音乐、一个独一无二的 music.asset 文件(例如 my_music.asset),以及一个独一无二的 .txt 文件(例如 my_song.txt),每首歌曲都写在其中。

音乐文件本身应为 32 位、44.1kHz 频率、192KB/s 比特率,且必须为 .ogg 格式。

音乐频道

音乐可以被组织成“频道”,这样就可以在游戏内音乐播放器中一次性启用或禁用一组曲目。音乐文件夹中的每个 txt 文件都会创建一个独立的频道。

频道需要在模组的本地化文件夹中进行本地化(见下文)。

本地化

另见:本地化

歌曲名称的本地化 ID 即 name= 行中的名称。频道的本地化键是 .txt 文件的名称(不含扩展名 .txt),并且必须加上前缀 CHANNEL_music_:

l_english:
 song_name_id: "在此填写你的歌曲名称"
 CHANNEL_music_<file_name>: "在此填写你的频道名称"

示例

下面这个来自原版《欧陆风云4》的示例展示了歌曲“theageofdiscovery”在你处于战争状态时播放几率为零,而在你至少拥有一名殖民者时播放几率提高到 1.5 倍。

song = {
	name = "theageofdiscovery"

	chance = {
		modifier = {
			factor = 0
			is_at_war = yes
		}
		modifier = {
			factor = 1.5
			num_of_colonists = 1
		}
	}
}


下面是一个歌曲条目示例,它让这首自定义歌曲在游戏起始日期 1444 年至 1527 年之间,对基督教宗教组播放,但东正教、科普特教、基督一性论和波各米勒教除外。

如 songs.txt 中所示
song = {
	name = "ain_spaniyelischer_hoff_dantz"

	chance = {
	    modifier = {
            factor = 0
            is_year = 1527
        }
		modifier = {
			factor = 0
			NOT = { is_year = 1444 }
		}
		modifier = {
			factor = 2
			is_year = 1444
		}
		modifier = {
            factor = 0
            OR { religion = orthodox religion = coptic religion = miaphysite religion = bogomilist_new }
        }
		modifier = {
            factor = 0
            NOT = { religion_group = christian }
        }
		modifier = {
			factor = 2
			religion_group = christian
		}
	}
}

#此外,上面的条目其实无需更复杂,因为已输入的修正已经足以让它完美运作。 下面是 songs.txt 中可以找到的一些条目示例:

 chance = { #这里是音乐在 EU4 中播放的“几率”,下面以希望让某个文化组更常听到的音乐为例。
   modifier = {
    factor = 1 #0 表示永远不会播放,1 表示对任何人都总会播放;除非你想让它只对下面的某些示例专属,否则文件中必须有这一项。
   }

   #从这里开始完全可选
   modifier = { #音乐永远不会对文化不属于不列颠文化组的国家播放。
    factor = 0
    NOT = { culture_group = british }
   }

   modifier = { #音乐会更频繁地对文化属于不列颠文化组的国家播放。
    factor = 2
    culture_group = british
   }

   modifier = { #游戏内日期到达 1527 年之后,音乐永远不会再播放。
    factor = 0
    is_year = 1527
   }

   modifier = { #1500 年之后,音乐会更频繁地播放。
    factor = 1.5
    is_year = 1444
   }

   modifier = { #处于战争中时不会播放音乐。
    factor = 0
    is_at_war = yes
   }
   #选项结束
  }
 }

#记得检查括号是否都已闭合,否则无法生效。


在 Themes of the Old World 音乐模组中可以找到一个使用修正和触发条件的更复杂的示例:

song = {
	name = "Land of Admiralty (War)"
	chance = {
		modifier = { factor = 1 }
		modifier = { factor = 0 is_at_war = no }
		modifier = {
			factor = 0
			NOT = {
				OR = {
					#拥有任意一块属于接受文化组的省份
					num_of_owned_provinces_with = {
						value = 1
						OR = {
							has_owner_accepted_culture = yes
							has_owner_culture = yes
						}
						OR = {
							culture_group = british
							culture_group = gaelic
						}
					}
					#拥有 10 块属于未接受文化组的省份
					num_of_owned_provinces_with = {
						value = 10
						OR = {
							culture_group = british
							culture_group = gaelic
						}
					}
					#战争参与者满足要求
					any_known_country = {
						is_in_war = {
							participants = ROOT
						}
						OR = {
							#1 块接受文化的省份
							num_of_owned_provinces_with = {
								value = 1
								OR = {
									has_owner_accepted_culture = yes
									has_owner_culture = yes
								}
								OR = {
									culture_group = british
									culture_group = gaelic
								}
							}
							#10 块该文化的省份
							num_of_owned_provinces_with = {
								value = 10
									OR = {
									culture_group = british
									culture_group = gaelic
								}
							}
						}
					}
				}
			}
		}
	}
}

在这个例子中,当你处于战争状态,并且满足以下任一条件时,这首音乐才有资格播放:

  • 你拥有一块不列颠/盖尔文化的省份,并且已接受该省份的文化。
  • 你拥有 10 块以上不列颠/盖尔文化的省份,并且没有接受这些省份的文化。
  • 你正与一个满足以上任一条件的国家交战。

已知可用的触发条件

如上例所示,你可以为音乐的播放几率添加一些修正。大多数标准的触发条件和作用域应该都可以使用。

目前并不清楚哪些触发条件能用于音乐、哪些不能,以下只是已知可用的触发条件列表。


以下是已知可用的触发条件的简要列表:

  • alliance_with(例如:alliance_with = DAN,让歌曲对与某个特定国家标签结盟的国家播放,如丹麦“据说并不存在,嘿嘿开玩笑的!”😏 你也可以按需使用 ROOT/root 或 FROM)
  • has_institution(例如:has_institution = feudalism,让音乐对已拥有某个思潮的国家播放)
  • primary_culture(例如:primary_culture = english,让歌曲对所有以某一文化为主体文化的国家播放)
  • culture(例如:culture = dutch,让歌曲对某一特定文化而非整个文化组播放)
  • culture_group(例如:culture_group = iberian,让歌曲对某一特定文化组播放)
  • exists(例如:exists = BUR,让歌曲在某个特定国家标签存在时播放。你也可以按需使用 NOT = { exists = BUR})
  • knows_country(例如:knows_country = CSU,让歌曲对认识某个特定国家标签(如示例中的标签)的国家播放。你也可以按需使用 ROOT 或 PREV/prev)
  • religion_group(例如:religion_group = christian,让歌曲对某一特定宗教组播放)
  • religion(例如:religion = confucianism,让歌曲对某一特定宗教而非整个宗教组播放)
  • is_great_power(例如:is_great_power = yes,让歌曲对任何被列为列强的国家标签播放。你也可以按需使用 is_great_power = no)
  • is_year(例如:is_year = 1444,让歌曲从某个特定日期开始播放)
  • is_at_war(例如:is_at_war = yes,让歌曲对任何处于战争中的国家播放。你也可以按需使用 is_at_war = no)
  • is_in_war(例如:is_in_war = { participants = TUR },让歌曲对与某个特定国家/标签(此例中为奥斯曼)处于同一场战争中的任何国家播放——与下文的 war_with 类似,但也包括与其处于战争同一阵营的国家)
  • is_part_of_hre(例如:is_part_of_hre = yes,让歌曲对神圣罗马帝国境内的国家标签播放。你也可以按需使用 is_part_of_hre = no)
  • num_of_colonists(例如:num_of_colonists = 2,让歌曲对拥有 2 名或更多殖民者的国家播放)
  • num_of_owned_provinces_with(例如:num_of_owned_provinces_with = { value = 12 culture = french },让歌曲在你拥有一定数量某一文化的省份时播放)
  • real_month_of_year (0 至 11,0 代表一月)指现实世界的时间,而非游戏内时间。在原版中,它用于圣诞音乐 DLC。
  • has_country_modifier(例如:has_country_modifier = eng_court_star_chamber,让歌曲对拥有下列国家修正的国家标签播放)
  • has_discovered(例如:has_discovered = 28,让歌曲对任何已发现(地图可见)ID 为 28 的省份(赫尔辛基)的国家播放)
  • has_regency(例如:has_regency = yes,让歌曲对处于摄政状态的国家播放。你也可以按需使用 has_regency = no)
  • any_owned_province(例如:any_owned_province = { continent = north_america },让歌曲对在北美洲拥有省份的国家播放)
    • is overseas(例如:is_overseas = yes,让歌曲对在本土区域之外(如殖民区域)拥有省份的国家播放。你也可以按需使用 is_overseas = no)
  • government(例如:government = monarchy,让歌曲对某一特定政体播放)
  • government_rank(例如:government_rank = 3,让歌曲对具有某一政府等级的国家播放(1 = 公国,2 = 王国,3 = 帝国))
  • tag(例如:tag = FRA,让歌曲对某个特定国家标签(如法国)播放)
  • war_with(例如:war_with = ENG,让歌曲对与英格兰处于战争中的某个特定国家标签播放)
  • owns(例如:owns = 1,让歌曲在拥有某个特定省份(如斯德哥尔摩)时播放)
    • owns_core_province 还会检查你是否拥有该省份的核心
    • owns_or_non_sovereign_subject_of 还会检查你的附属国是否拥有该省份
  • technology_group(例如:technology_group = western,让歌曲对科技组为西方的国家标签播放)
  • total_development(例如:total_development = 1000,让歌曲对发展度达到 1000 或更高的国家播放)
  • capital_scope(例如:capital_scope = { superregion = europe_superregion },让歌曲对首都位于欧洲的任何国家标签播放)
    • region(例如:region = austria_region,让歌曲在首都位于奥地利地区内时播放)
    • superregion(例如:superregion = china_superregion,让歌曲在首都位于中国超级地区内时播放)
    • continent(例如:continent = asia,让歌曲在首都位于亚洲大陆内时播放)

主题曲加载音乐

若要更改启动游戏时的加载音乐,只需将你的 .ogg 音轨重命名为“maintheme.ogg”。它会在加载游戏时自动替换原版 EU4 的主题曲,而且无需在 .asset 或 .txt 文件中定义该曲目。请注意,主题曲默认不会出现在游戏内音乐播放器中。

文档 效果 • 触发条件 • 修正列表 • 作用域 • 变量 • 本地化 • 可自定义本地化 • 运行文件 • 事件图片列表
脚本 脚本函数 • 顾问 • 时代 • 开局设定 • 建筑 • 宣战理由 • 殖民区域 • 国家创建 • 文化 • 决议 • Defines • 外交行动 • 灾难 • 中华帝国 • 阶层 • 事件 • 派系 • 政府 • 政府互动 • 伟大工程 • 历史 • 神圣罗马帝国 • 理念组 • 思潮 • 佣兵 • 任务树 • 修正 • On Actions • 议会 • 和约 • 君主性格 • 政策 • 叛军类型 • 宗教 • 附属国类型 • 科技 • 贸易公司 • 商品 • 单位
地图 地图 • 地图修改速查 • 随机新世界 • 贸易节点
图形 模型 • 界面 • 贴图库 • 字体 • 单位模型
音频 音乐 • 音效
其他 控制台命令 • 校验和 • 模组结构 • 故障排查 • 运行文件
工具 克劳塞维茨开局编辑器 • EU4模组编辑工具 • JoroDox模组制作工具 • The Validator
指南 省份 • 地图修改速查 • 存档编辑 • 脚本教程