歌曲信息(songlist)格式:修订间差异

来自Arcaea中文维基
无编辑摘要
(未显示5个用户的46个中间版本)
第1行: 第1行:
*<s>等一下你们先让我看一下apk</s>
{{技术型}}


*'''本页保持孤立!'''
*'''本页保持孤立!'''
第5行: 第5行:
==在开始阅读之前==
==在开始阅读之前==
===总论===
===总论===
 歌曲信息都包含在一个叫做songlist的文件里. 位置为\assets\songs
 歌曲信息都包含在一个叫做songlist的文件里 。在安卓apk安装包里的 位置为 \assets\songs\songlist.


 这个文件是关于更改歌曲信息的,如果想更改谱面本身,请移步[[谱面格式]]
 这个文件是关于更改歌曲信息的,如果想更改谱面本身,请移步[[谱面格式]]
第14行: 第14行:


===阅读总论===
===阅读总论===
songlist 是按照<s>类似Java语言</s>编写的,有大量花括号与中括号,中间的回车与制表符除了整理版面之外没有任何意义.'''总之不该你改 东西你不要 就行 '''.
songlist 使用json格式,有大量花括号与中括号, 格式要求较为严格。 中间的回车与制表符除了整理版面之外没有任何意义
 
<s>任何对本文件 都会游戏程序崩溃,这是因为程序中对这几个信息文件做 哈希校验。</s>


==代码解析==
==代码解析==
第20行: 第22行:
 歌曲信息在文件里总体排列成这样
 歌曲信息在文件里总体排列成这样


{| class="wikitable"
{
|-
  "songs": [
| <nowiki>{"songs": [{歌曲信息1},{歌曲信息2},……,{歌曲信息n}]}</nowiki>
   {
|}
     歌曲信息1
 
   },
  可见歌曲信息之间的互不干扰性,而且它告诉我们'''加入自制谱(不是替换官谱)'''是可能的
   {
     歌曲信息2
   },……,
   {
     歌曲信息n
   }
  ]
  }


可见歌曲信息之间的互不干扰性。
===细节解析===
===细节解析===


以一个最复杂的为例(笑)
{| class="wikitable"
|-
|
   {
   {
     "id": "grievouslady",
     "id": "id",
     "title_localized": {
     "title_localized": {
      "en": "Grievous Lady"
      "en": "title"
     "ja": "日本語の表記"
     },
     },
     "artist": "Team Grimoire vs Laur",
     "artist": "artist",
     "bpm": "210",
     "bpm": "BPM",
     "bpm_base": 210,
     "bpm_base": BPM_Base,
     "set": "yugamu",
     "set": "setpack",
     "purchase": "yugamu",
     "purchase": "purchasemethod",
     "audioPreview": 0,
     "audioPreview": Preview1,
     "audioPreviewEnd": 18285,
     "audioPreviewEnd": Preview2,
     "side": 1,
     "side": side,
     "bg": "grievouslady",
    "world_unlock": worldBoolean,
     "date": 1509667208,
    "no_pp": ppBoolean,
     "bg": "setBG",
     "date": time,
    "remote_dl": remoteDLBoolean,
    "byd_local_unlock": bydBoolean,
    "version": version,
    "songlist_hidden": hiddenBoolean,
    "source_localized": {
     "en": "source"
    },
    "source_copyright": "©copyright",
     "difficulties": [
     "difficulties": [
      {
      {
       "ratingClass": 0,
       "ratingClass": 0(ratingClass),
       "chartDesigner": " 迷路第一層",
       "chartDesigner": "chartDesigner",
       "jacketDesigner": " シエラ",
       "jacketDesigner": "illustrator",
       "rating": 6,
       "rating": rating,
       "plusFingers": 0,
       "plusFingers": plusFingersBoolean,
      "story": {
       "en": "Perhaps she should have worried, because her heart was suddenly in pain.\n\nShe drew back, covered her mouth, and her eyes went wide in confusion. She had been standing on the floor of a gigantic and bitter maze that doubled as a tower, but she now began to fall to her knees. Before she hit the ground, the structure began to break and fall first.\n\nThe memories of sorrowful days that she had gathered came around her like a cloak, the tower's memories turned from a falling slow rain into a downpour. She and the maze fell like stones, and although she should have been terrified to drop so far and so fast, all she could feel was confusion.\n\nShe splashed down into a sea of the fragmented happiness of other worlds. The waves she and the crashing labyrinth caused were immense. Glass pushed against glass in a way that could be described as both ugly and beautiful, and she knelt at the center of that storm.|She was confused because she was hurting. Everything hurt. Her heart was bursting. The cloak of memories that she'd collected turned into a grotesque sphere and surrounded her. The world of white disappeared from her vision, leaving only horrible things. Heaving, sweating, and trembling, she looked into the glass, into the Arcaea, deeply. And as she came to realize that her heart was breaking,\n\nThat her sanity was breaking,\n\nThe memory of the end of the world that she'd seen earlier slowly drifted into view.",
       "ja": "予測できたことだったのかもしれない。彼女の胸は突然痛みだした。\n\n彼女は後ずさりして、口を覆い、その目は混乱に大きく見開かれていた。\n彼女は重なり塔となった巨大な苦しみの迷路の中に立っていた。\nしかし彼女は今にも膝から崩れ落ちようとしていた。\n膝が地面へと着く前に、その構造物は壊れて崩れ始めた。\n\n彼女が集めてきた悲しい日々の記憶がマントのように彼女を覆い、\n塔の記憶はゆっくりと降る雨から豪雨へと変わった。\n彼女とその迷路は石のように落ちた。\nそれには恐ろしい高さと速さが伴っていたが、\nその時彼女が感じることのできたものは混乱だけだった。|彼女は何処かの幸せの欠片で溢れる海へと飛び込んだ。\n彼女と崩れ落ちた迷宮が引き起こした波は計り知れないものだった。\nガラスとガラスが醜いとも美しいとも形容できる様子でぶつかり合い、\n彼女はその嵐の中心にひざまずいていた。\n\n彼女は自らの痛みに混乱していた。全てが痛い。心臓が破裂しそうだった。\n彼女が集めた記憶のマントは、不気味な球体となって彼女を囲んだ。\n白の世界は彼女の視界から姿を消し、ここに残っているのは恐ろしいものだけだ。\n呼吸は荒くなり、汗が滲み、体は震えていた。\n彼女はガラスの中を、アーケアの中を、深く覗き込んだ。\nそして彼女は気が付いた。自分の心が壊れていたこと。\n\n自分の正気が失われていたこと。\n\nさっき見た世界の終わりの記憶が、ゆっくりと視界を漂った。\n"
      }
      },
      },
      {
      {
       "ratingClass": 1,
       "ratingClass": 1(ratingClass),
       "chartDesigner": " 迷路第二層",
       "chartDesigner": "chartDesigner",
       "jacketDesigner": " シエラ",
       "jacketDesigner": "illustrator",
       "rating": 9,
       "rating": rating,
       "plusFingers": 1,
       "plusFingers": plusFingersBoolean,
      "story": {
       "en": "The girl had felt many emotions since her waking into the white and ruined world. Mostly, she'd felt anger, but she'd been able to turn that anger into a strange sort of hope. True, she didn't have much of a plan. In fact, she was only walking forward because she believed at the end of her steps there would be something good. She had hope. She was certain that this chaos was leading into light. She was certain that the torments she was facing, that the horrors she was holding, could be completely shattered.\n\nYes, she was emotional. She felt so strongly that when faced with the idea that no, in fact, nothing had a purpose...she began to suffer.\n\nThe cruelest fate is to have hope and see it crushed before your eyes. And so the girl sat on her knees in a malformed circle of death, looking at a world coming to its end. This was the first time she had felt the emotion of sadness, and it was quickly turning into despair.The world of Arcaea was a pointless world. It was the manifestation of worlds gone. It had no substance, only the reflections of such. Even the glowing and joyful memories she had sometimes encountered on her way were still only memories of the past. Like night comes after day, they had to have led into the end she now saw spinning slowly in the air before her. Her eyes welled with tears.\n\nShe had felt so much since waking up.|She'd felt joy. Joy left her.\n\nShe'd felt felt fear. Fear left her.\n\nAnger left her.\n\nHope left her.\n\nEven sadness and despair now left her.\n\nHer eyes went dark and she could feel resonance with the glass. The shell of memories around her began to crack and split open. She emerged from it and stood in the blinding light, and couldn't feel anything at all.",
       "ja": "彼女はこの白い退廃した世界に足を踏み入れてからというもの、沢山の感情を覚えてきた。\n怒りを覚えても、彼女はその怒りを少し変わった希望のようなものに変えることができた。\n確かに、彼女にはあまり計画がなかった。\n実際、彼女はただ前へと歩き進んでいただけに過ぎなかった。\nきっとその終わりには何か良いものがあると信じていたのだ。\n彼女には希望があった。この混沌の先には光があると信じていた。\n遭遇した苦痛も、抱える恐怖も、きっと粉々にできる。\n\n確かに、彼女は感情的だった。そう、本当は、どれにも目的なんて無い・・・\nその考えが頭をよぎった時、彼女は強い苦しみを覚え始めた。\n\nもっとも残酷な運命とは、希望を持ち、それを目の前で潰されることだ。\nそして奇妙な形をした死の環の中でひざまずく少女は、世界が終わりを迎えるのを見ていた。\nこれは初めて彼女が悲しみという感情を覚えた瞬間だった。\nそしてそれは、一瞬にして絶望へと変わった。|アーケアの世界に、意味などなかったのだ。ここは、死んだ世界の姿だったのだ。\nここには物質はなく、あるのは回想のようなものだけ。\nここに来るまでに時々見かけた、光り輝く楽しい記憶も、過去の記憶に過ぎなかったのだ。\n昼の次に夜が来るように、そんな記憶も終わりへと向かう。\n彼女は今、目の前でそれが宙でゆっくりと回るのを見ていた。\n彼女の目は涙で溢れていた。\n\n目覚めてから、沢山のことを感じてきた。\n楽しさ。今はもうない。\n恐怖。今はもうない。\n怒りももうない。\n希望もない。\n悲しみや絶望でさえ何処かへ行ってしまった。\n\n目は暗くなり、彼女はガラスと心が共鳴するのを感じた。\n彼女を囲む記憶の殻にひびが入り割れ始めた。\n彼女はそこから抜け出し眩い光の中に立った。しかし何も感じられなかった。\n"
      }
      },
      },
      {
      {
       "ratingClass": 2,
       "ratingClass": 2(ratingClass),
       "chartDesigner": " 迷路深層",
       "chartDesigner": "chartDesigner",
       "jacketDesigner": " シエラ",
       "jacketDesigner": "illustrator",
       "rating": 11,
       "rating": rating,
       "plusFingers": 1,
       "plusFingers": plusFingersBoolean,
      "story": {
       "en": "Like an ocean stained with oil, the memories of a cursed labyrinth and the memories she had brought with her all fell and muddled into the soothing glass around her. Most of them churned into a gray mass, some would suddenly jut up from the ground like spikes. She went still, and slowly looked over every shard, just...counting them. Even when memories came shooting up sharply near her eyes, she continued to count.\n\nEventually she lifted a finger, beckoning some of the shards toward her. And, with a simple thought, the fragments came together in the shape of a fragile butterfly. She commanded it into the sky, to reflect the world of white, and when it came down again to tell her what it had seen, with a simple thought she slowly tore off each of its wings, and let it fall into nothing. Then, she walked forward from the corrupted sea, willing each pillar of lost time that entered her path to explode and shatter.|---\n\nTime passed. She changed.\n\nShe no longer sought to collect memories. She walked through the world mostly absently. She discovered things about it and about herself, but she had no ambitions.\n\nNow she walked beside an old and crumbling building, twirling a parasol she had found in the ruins some day. Silently, a creature formed of glass reflecting bitter days glided down toward her from the sky. It resembled a glistening and jagged crow, and it was something she considered no more than a tool. After that day at the now-fallen tower, she'd become more in-tune with the chaotic Arcaea and was able call upon things like this. In its own way, it whispered to her of places beyond her reach in the blinding white world. Glaring at it, she had it burst and fall apart, and she moved on.|These crows of hers sickened her with news. The world was empty, that's all they said. That she knew. She'd never find anyone else here.\n\nShe wanted to. She needed to. But, it was not because she hoped to have someone to share her fate with.\n\nShe needed to let this frustration out on something alive. She needed someone to hurt.",
       "ja": "\n油に汚れた海のように、呪われた迷宮の記憶と彼女が連れてきた記憶は、\n地に落ち溶け合い、穏やかなガラスとなって辺りに散らばっていた。\nほとんどは灰色の塊となり、突然地面から針のように突き出るものもあった。\n彼女はただ静かに、ゆっくりとその欠片達を見渡した。ただ…数えていた。\n記憶が彼女の目の近くまで針を突き刺してきても、数えることをやめなかった。\n\nしばらくすると彼女は手を少し上げ、破片をいくつか彼女のもとへと招き寄せた。\nすると、単純な考え一つでその破片達は一つになり、もろい蝶の形となった。\n彼女はそれに空へと向かい、白の世界を映すようにと命じた。\nそしてそれが見てきたものを伝えるため彼女のもとへ戻ってくると、\n彼女の考え一つでそれはゆっくりと羽を落とし、無へと崩れ落ちた。\nそうして彼女は崩壊した海へ向かって歩き出した。\n失われた時間の柱が道を阻もうものなら、爆破して粉々にするつもりでいた。|---|時は流れた。彼女は変わった。\n\n彼女はもう記憶を集めてはいなかった。ほとんど空虚な心で、世界を歩いていた。\n物事や自分についても分かったことがあった。しかし彼女には意思がなかったのだ。\n\n彼女は古くて崩れかかった建物の傍を歩き、ある日廃墟で見つけた傘を回している。\n静かに、苦しい日々を映すガラスで形作られた生き物が空から彼女に向かって滑り落ちてきた。\nそれはキラキラとした、歪な形のカラスのようだった。彼女にとっては、道具以上の何でもなかったが。\nあの崩れ行く塔での一日以来、彼女はこの混沌のアーケアとうまく調和できるようになっていた。\nだからこういったものも呼び寄せることができるのだ。\nそうしてそれは独自の方法で、眩く白い世界の、彼女の手の届かない場所について告げた。\n彼女が睨むと、それは爆発してバラバラになった。彼女は歩き続けた。|カラスの知らせにうんざりしていた。この世界は空だ。\n皆そう言うのだ。彼女も知っていた。ここで他の誰かを見つけたことがなかった。\n\n見つけたかった。見つける必要があった。運命を共有する誰かが必要なのではない。\n\nこの葛藤を生きている何かにぶつける必要があったのだ。彼女には、傷つける相手が必要だった。\n"
      }
      }
      }
     ]
     ]
    }
    }
====文件头====
  {
    "id": "id",
    "title_localized": {
     "en": "title"
     "ja": "日本語の表記"
    },
    "artist": "artist",
    "bpm": "BPM",
    "bpm_base": BPM_Base,
    "set": "setpack",
    "purchase": "purchasemethod",
    "audioPreview": Preview1,
    "audioPreviewEnd": Preview2,
    "side": side,
    "world_unlock": worldBoolean,
    "no_pp": ppBoolean,
    "bg": "setBG",
    "date": time,
    "byd_local_unlock": bydBoolean,
    "version": version,
    "songlist_hidden": hiddenBoolean,
    "remote_dl": remoteDLBoolean,
    "source_localized": {
     "en": "source"
    },
    "source_copyright": "©copyright",
    "difficulties": [……
     ]
   }
*id(ansistring):歌曲ID名,'''至关重要''',像解锁条件等引用歌曲的时候是引用id的,并且对应谱面文件夹也必须是id名,如果是远程下载的曲子,在preview文件夹里放预览音频时,文件名也必须和id一样,'''不能出现非ASCII字符'''
*title_localized(ansistring):长这样
{| class="wikitable"
|-
|
  "title_localized": {
     "en": "title",
     "ja": "タイトル"
    },
|}
|}
:*其中title是你要填的曲名,"en"是英文,"ja"是日文,"ko"是韩文(从来没出现),"zh-Hans"为简中,"zh-Hant"为繁中,默认语言为英文,'''可以填任何字符''',当出现多个语言时用逗号隔开.
:**jacket_localized类似,不过是关于封面
*artist(ansistring):曲作者名,没有语言区别,'''可以填任何字符'''.
*BPM(ansistring):向玩家显示本曲的BPM,'''可以填任何字符''',<s>这意味着我填"0-∞"是可以的了</s>.
*BPM_Base:这个要注意一下,'''它表示Hi-Speed最大时用于计算的BPM''',与谱面BPM毫无关联.<s>游玩时,谱面的Hi-Speed不会大于该数值*你的Hi-Speed设置倍数</s>.(AC出现了99999.00的BPM但Base依然170)'''真正的Hi-Speed依然由谱面内的Timing语句决定.'''
**当你的谱面有瞬间出现这样的设计时,'''建议将该数值写成三个谱面文件里出现的最普遍的BPM''',<s>不过当基准BPM≥180时请想想这样做谱面猎奇的可能性</s>.
***<s>以及这个数值就不要傻到填0或负数了,读也许能读,但……</s>
*setpack(ansistring):该曲目所隶属的曲包,请移步[[曲包信息(packlist)格式]]
*purchasemethod(ansistring):该曲的购买方式,如果为曲包名即为购买相应曲包(前提是你已经设定该曲包是要购买的),如为歌曲'''ID'''名即为单曲购买,<s>相信你们都知道该干什么</s>,可留空.
*Preview1,Preview2(ms):预览时间的开始与结束,数字为整数
*side(0,1):歌曲属性是光(0)还是对立(1),<s>别想了其他的只是背景</s>.
*worldBoolean(false,true):该曲是否需要在world里解锁,true为是,false为不是,<s>相信你们都知道该干什么</s>,'''可删除'''.
*ppBoolean(false,true):在游戏内没有差异性,但只有lowiro没有拿到全部版权的曲目该选项为true,'''可删除'''
*setBG(ansistring):本曲的背景,'''背景文件必须能在\assets\img\bg里找到,不能出现非ASCII字符'''.''可留空''后,游戏自动安排默认。
**附属属性有bg_daynight,
*date(Time):加入时的系统时间戳,参考[http://tool.chinaz.com/Tools/unixtime.aspx 转换成Unix时间戳]
*remoteDLBoolean(false,true):该曲目是否需要远程下载,true为是,false为否.'''如果为true,预览音频在对应文件夹里,相应谱面文件夹里也没有音频文件''',<s>相信你们都知道该干什么</s>,'''可删除'''.
*bydBoolean(false,true):该曲目的Beyond难度是否能在本地解锁。(实际不起作用)'''可删除'''
*version(ansistring):本曲加入游戏的版本,用于折叠歌曲显示。
*hiddenBoolean(false,true):标识该曲目是否在歌曲界面中隐藏,通常用于魔王曲解锁'''可删除'''
*source(ansistring):本曲的来源,'''一般只填en以让所有语言看见'''。在显示时由中文书名号(《》)括起。'''可删除'''。
*©copyright(ansistring):本曲所属版权。在显示时在中文书名号(《》)后面。'''可删除'''。
====难度文件解析====
难度谱面信息框架如下
{| class="wikitable"
|-
| "difficulties": [{PST信息},{PRS信息},{FTR信息}]
|}
各难度代码结构如下
{| class="wikitable"
|-
|
    {
     "ratingClass": ratingClass,
     "chartDesigner": "chartDesigner",
     "jacketDesigner": "illustrator",
     "rating": rating,
     "ratingPlus": ratingBoolean,
     "plusFingers": plusFingersBoolean,
     "jacketOverride": jacketOverrideBoolean,
     "hidden_until_unlocked": hiddenBoolean
    }
|}
*ratingClass(0,1,2,3):本段代码对应的难度,0=PST,1=PRS,2=FTR,3=BYD
*chartDesigner(ansistring):谱师名,'''可以填任何字符'''
*illustrator(ansistring):封面图作者,'''可以填任何字符''',可留空
*rating(int):本谱难度,其中0对应''?''。
*ratingBoolean(false,true):本谱难度是否为“+”,'''可删除'''
*plusFingersBoolean(0,1):<s>加一根手指</s>,目前尚不清楚该参数含义,据猜测可能是多点触控开关,0为关,1为开.尚不清楚之间的差别.
*jacketOverrideBoolean(false,true):标识本难度是否独占封面图,是true否false,'''可删除'''
*hiddenBoolean(false,true):标识本谱子是否在解锁前隐藏,'''可删除'''
==综合==
如果你在做完自制谱之后,采取的是替换原信息(不改ID)的方式导入的话,你也许还能登录游玩.
'''如果你采取了添加的方式,那么你的arc绝对不能登录''',因为arc登录后会校验歌单.'''进而导致封号风险'''.
从这里开始就会涉及到危险操作了,'''请为自己的行为负责!'''

2020年6月10日 (三) 17:06的版本

  • 本页保持孤立!

在开始阅读之前

总论

歌曲信息都包含在一个叫做songlist的文件里。在安卓apk安装包里的位置为 \assets\songs\songlist.

这个文件是关于更改歌曲信息的,如果想更改谱面本身,请移步谱面格式

如果想更改关于解歌条件的部分,请移步解锁条件(unlocks)格式

如果想更改曲包相关内容请移步曲包信息(packlist)格式

阅读总论

songlist使用json格式,有大量花括号与中括号,格式要求较为严格。中间的回车与制表符除了整理版面之外没有任何意义。

任何对本文件的修改都会游戏程序崩溃,这是因为程序中对这几个信息文件做了哈希校验。

代码解析

框架

歌曲信息在文件里总体排列成这样

{
  "songs": [
    {
      歌曲信息1
    },
    {
      歌曲信息2
    },……,
    {
      歌曲信息n
    }
  ]
}

可见歌曲信息之间的互不干扰性。

细节解析

 {
     "id": "id",
     "title_localized": {
       "en": "title"
       "ja": "日本語の表記"
     },
     "artist": "artist",
     "bpm": "BPM",
     "bpm_base": BPM_Base,
     "set": "setpack",
     "purchase": "purchasemethod",
     "audioPreview": Preview1,
     "audioPreviewEnd": Preview2,
     "side": side,
     "world_unlock": worldBoolean,
     "no_pp": ppBoolean,
     "bg": "setBG",
     "date": time,
     "remote_dl": remoteDLBoolean,
     "byd_local_unlock": bydBoolean,
     "version": version,
     "songlist_hidden": hiddenBoolean,
     "source_localized": {
       "en": "source"
     },
     "source_copyright": "©copyright",
     "difficulties": [
       {
         "ratingClass": 0(ratingClass),
         "chartDesigner": "chartDesigner",
         "jacketDesigner": "illustrator",
         "rating": rating,
         "plusFingers": plusFingersBoolean,
       },
       {
         "ratingClass": 1(ratingClass),
         "chartDesigner": "chartDesigner",
         "jacketDesigner": "illustrator",
         "rating": rating,
         "plusFingers": plusFingersBoolean,
       },
       {
         "ratingClass": 2(ratingClass),
         "chartDesigner": "chartDesigner",
         "jacketDesigner": "illustrator",
         "rating": rating,
         "plusFingers": plusFingersBoolean,
       }
     ]
   }


文件头

 {
     "id": "id",
     "title_localized": {
       "en": "title"
       "ja": "日本語の表記"
     },
     "artist": "artist",
     "bpm": "BPM",
     "bpm_base": BPM_Base,
     "set": "setpack",
     "purchase": "purchasemethod",
     "audioPreview": Preview1,
     "audioPreviewEnd": Preview2,
     "side": side,
     "world_unlock": worldBoolean,
     "no_pp": ppBoolean,
     "bg": "setBG",
     "date": time,
     "byd_local_unlock": bydBoolean,
     "version": version,
     "songlist_hidden": hiddenBoolean,
     "remote_dl": remoteDLBoolean,
     "source_localized": {
       "en": "source"
     },
     "source_copyright": "©copyright",
     "difficulties": [……
       ]
   }
  • id(ansistring):歌曲ID名,至关重要,像解锁条件等引用歌曲的时候是引用id的,并且对应谱面文件夹也必须是id名,如果是远程下载的曲子,在preview文件夹里放预览音频时,文件名也必须和id一样,不能出现非ASCII字符
  • title_localized(ansistring):长这样
 "title_localized": {
       "en": "title",
       "ja": "タイトル"
     },
  • 其中title是你要填的曲名,"en"是英文,"ja"是日文,"ko"是韩文(从来没出现),"zh-Hans"为简中,"zh-Hant"为繁中,默认语言为英文,可以填任何字符,当出现多个语言时用逗号隔开.
    • jacket_localized类似,不过是关于封面
  • artist(ansistring):曲作者名,没有语言区别,可以填任何字符.
  • BPM(ansistring):向玩家显示本曲的BPM,可以填任何字符,这意味着我填"0-∞"是可以的了.
  • BPM_Base:这个要注意一下,它表示Hi-Speed最大时用于计算的BPM,与谱面BPM毫无关联.游玩时,谱面的Hi-Speed不会大于该数值*你的Hi-Speed设置倍数.(AC出现了99999.00的BPM但Base依然170)真正的Hi-Speed依然由谱面内的Timing语句决定.
    • 当你的谱面有瞬间出现这样的设计时,建议将该数值写成三个谱面文件里出现的最普遍的BPM,不过当基准BPM≥180时请想想这样做谱面猎奇的可能性.
      • 以及这个数值就不要傻到填0或负数了,读也许能读,但……
  • setpack(ansistring):该曲目所隶属的曲包,请移步曲包信息(packlist)格式
  • purchasemethod(ansistring):该曲的购买方式,如果为曲包名即为购买相应曲包(前提是你已经设定该曲包是要购买的),如为歌曲ID名即为单曲购买,相信你们都知道该干什么,可留空.
  • Preview1,Preview2(ms):预览时间的开始与结束,数字为整数
  • side(0,1):歌曲属性是光(0)还是对立(1),别想了其他的只是背景.
  • worldBoolean(false,true):该曲是否需要在world里解锁,true为是,false为不是,相信你们都知道该干什么,可删除.
  • ppBoolean(false,true):在游戏内没有差异性,但只有lowiro没有拿到全部版权的曲目该选项为true,可删除
  • setBG(ansistring):本曲的背景,背景文件必须能在\assets\img\bg里找到,不能出现非ASCII字符.可留空后,游戏自动安排默认。
    • 附属属性有bg_daynight,
  • date(Time):加入时的系统时间戳,参考转换成Unix时间戳
  • remoteDLBoolean(false,true):该曲目是否需要远程下载,true为是,false为否.如果为true,预览音频在对应文件夹里,相应谱面文件夹里也没有音频文件,相信你们都知道该干什么,可删除.
  • bydBoolean(false,true):该曲目的Beyond难度是否能在本地解锁。(实际不起作用)可删除
  • version(ansistring):本曲加入游戏的版本,用于折叠歌曲显示。
  • hiddenBoolean(false,true):标识该曲目是否在歌曲界面中隐藏,通常用于魔王曲解锁可删除
  • source(ansistring):本曲的来源,一般只填en以让所有语言看见。在显示时由中文书名号(《》)括起。可删除
  • ©copyright(ansistring):本曲所属版权。在显示时在中文书名号(《》)后面。可删除

难度文件解析

难度谱面信息框架如下

"difficulties": [{PST信息},{PRS信息},{FTR信息}]

各难度代码结构如下

     {
        "ratingClass": ratingClass,
        "chartDesigner": "chartDesigner",
        "jacketDesigner": "illustrator",
        "rating": rating,
        "ratingPlus": ratingBoolean,
        "plusFingers": plusFingersBoolean,
        "jacketOverride": jacketOverrideBoolean,
        "hidden_until_unlocked": hiddenBoolean
      }
  • ratingClass(0,1,2,3):本段代码对应的难度,0=PST,1=PRS,2=FTR,3=BYD
  • chartDesigner(ansistring):谱师名,可以填任何字符
  • illustrator(ansistring):封面图作者,可以填任何字符,可留空
  • rating(int):本谱难度,其中0对应?
  • ratingBoolean(false,true):本谱难度是否为“+”,可删除
  • plusFingersBoolean(0,1):加一根手指,目前尚不清楚该参数含义,据猜测可能是多点触控开关,0为关,1为开.尚不清楚之间的差别.
  • jacketOverrideBoolean(false,true):标识本难度是否独占封面图,是true否false,可删除
  • hiddenBoolean(false,true):标识本谱子是否在解锁前隐藏,可删除


综合

如果你在做完自制谱之后,采取的是替换原信息(不改ID)的方式导入的话,你也许还能登录游玩.

如果你采取了添加的方式,那么你的arc绝对不能登录,因为arc登录后会校验歌单.进而导致封号风险.

从这里开始就会涉及到危险操作了,请为自己的行为负责!