Skip to content
This repository has been archived by the owner on Oct 31, 2022. It is now read-only.

Explode Pack CN

楓 edited this page Jul 28, 2022 · 1 revision

爆炸包标准第零版

结构

爆炸包是用于储存和转移谱面、音乐等相关资料的标准格式,在原有的 Rena 格式上修改而来。

explode-pack.json

explode-pack.json 是描述该曲包的元文件,以下是示例。

{
	// 曲包ID,可空字符串,暂无使用
	"id": null,
	// 作者名称,可空字符串,暂无使用
	"author": null,
	// 曲包内容,曲目信息,数组
	"sets": [
		{
			// 曲目(ChartSet)ID,可空字符串
			"id": "5ca0d7f52f72ed50b22f8aa7",
			// 音乐名称,非空字符串
			"musicName": "Confession (MUSYNC edit)",
			// 音乐作者,非空字符串
			"composerName": "Haloweak & G.K",
			// 谱师名称,非空字符串
			"noterName": "TangScend",
			// 曲目介绍,可空字符串
			"introduction": "谱面设计: Sandy Tong(TangScend)",
			// 音乐路径,非空字符串
			"musicPath": "Confession (MUSYNC edit)(TangScend)/Confession (MUSYNC edit).mp3.rnx",
			// 预览音乐路径,非空字符串
			"previewMusicPath": "Confession (MUSYNC edit)(TangScend)/Confession (MUSYNC edit)_preview.mp3.rnx",
			// 曲绘路径,非空字符串
			"coverPicturePath": "Confession (MUSYNC edit)(TangScend)/Confession (MUSYNC edit).jpg.rnx",
			// 商店预览图,可空字符串
			"storePreviewPicturePath": null,
			// 谱面,数据
			"charts": [
				{
					// 谱面ID,可空字符串
					"id": null,
					// 谱面难度类型,整数;1-6=Casual-Tera,0=Unknown
					"difficultyClass": 3,
					// 谱面难度等级,整数
					"difficultyValue": 9,
					// 谱面定值,可空浮点型
					"DValue": null,
					// 谱面文件路径,非空字符串
					"chartPath": "Confession (MUSYNC edit)(TangScend)/Confession (MUSYNC edit)_Hard.xml.rnx"
				}
			]
		},
		{
			"id": "5c967257ec41aa750fc85877",
			"musicName": "D̵̤͗ḛ̷̇a̷̫̓d̶͉́ ̵̜͐S̷̲̋o̵̤̒ǔ̵̠l̶̰͌",
			"composerName": "Sound Souler",
			"noterName": "TangScend",
			"introduction": "谱面设计: TangScend\\n一稿2018 Feb.\\n二稿2018 Sept.\\n自己写的也很捞((",
			"musicPath": "D̵̤͗ḛ̷̇a̷̫̓d̶͉́ ̵̜͐S̷̲̋o̵̤̒ǔ̵̠l̶̰͌(TangScend)/D̵̤͗ḛ̷̇a̷̫̓d̶͉́ ̵̜͐S̷̲̋o̵̤̒ǔ̵̠l̶̰͌.mp3.rnx",
			"previewMusicPath": "D̵̤͗ḛ̷̇a̷̫̓d̶͉́ ̵̜͐S̷̲̋o̵̤̒ǔ̵̠l̶̰͌(TangScend)/D̵̤͗ḛ̷̇a̷̫̓d̶͉́ ̵̜͐S̷̲̋o̵̤̒ǔ̵̠l̶̰͌_preview.mp3.rnx",
			"coverPicturePath": "D̵̤͗ḛ̷̇a̷̫̓d̶͉́ ̵̜͐S̷̲̋o̵̤̒ǔ̵̠l̶̰͌(TangScend)/D̵̤͗ḛ̷̇a̷̫̓d̶͉́ ̵̜͐S̷̲̋o̵̤̒ǔ̵̠l̶̰͌.jpg.rnx",
			"storePreviewPicturePath": null,
			"charts": [
				{
					"id": null,
					"difficultyClass": 1,
					"difficultyValue": 1,
					"DValue": null,
					"chartPath": "D̵̤͗ḛ̷̇a̷̫̓d̶͉́ ̵̜͐S̷̲̋o̵̤̒ǔ̵̠l̶̰͌(TangScend)/D̵̤͗ḛ̷̇a̷̫̓d̶͉́ ̵̜͐S̷̲̋o̵̤̒ǔ̵̠l̶̰͌_Casual.xml.rnx"
				},
				{
					"id": null,
					"difficultyClass": 2,
					"difficultyValue": 5,
					"DValue": null,
					"chartPath": "D̵̤͗ḛ̷̇a̷̫̓d̶͉́ ̵̜͐S̷̲̋o̵̤̒ǔ̵̠l̶̰͌(TangScend)/D̵̤͗ḛ̷̇a̷̫̓d̶͉́ ̵̜͐S̷̲̋o̵̤̒ǔ̵̠l̶̰͌_Normal.xml.rnx"
				},
				{
					"id": null,
					"difficultyClass": 4,
					"difficultyValue": 11,
					"DValue": null,
					"chartPath": "D̵̤͗ḛ̷̇a̷̫̓d̶͉́ ̵̜͐S̷̲̋o̵̤̒ǔ̵̠l̶̰͌(TangScend)/D̵̤͗ḛ̷̇a̷̫̓d̶͉́ ̵̜͐S̷̲̋o̵̤̒ǔ̵̠l̶̰͌_Mega.xml.rnx"
				}
			]
		}
	],
	// 数据与元数据(此文件)的相对位置
	// 如果在同文件夹下则是 '.',本数据由 Rena 转换得到,相关数据均存储与 'Charts' 文件夹中,所以是这个值
	"relativeFolderPath": "Charts"
}

数据文件位置

所有文件路径均存储于元数据中,与元数据位置和元数据数据相对路径(relativeFolderPath)有关。

例如某音乐文件的 musicPathtestSet/testSet.mp3relativeFolderPathcharts,元数据(explode-pack.json)位置为 D:\dynamite-data\explode-pack.json,则目标音乐文件应该位于 D:\dynamite-data\charts\testSet\testSet.mp3

工具

已经在 graphql-server 中继承了相关的导入导出查看工具,分别使用以下指令启动。

导入到数据库

java -cp graphql-server.jar explode.dataprovider.provider.mongo.App import

从数据库导出到文件夹

java -cp graphql-server.jar explode.dataprovider.provider.mongo.App export

分析元数据

java -cp graphql-server.jar explode.dataprovider.provider.mongo.App inspect

将 Rena_index_list 转换为 explode-pack.json

java -cp graphql-server.jar explode.pack.App