「Story文件格式」:修訂間差異
小 (→entries文件) |
小 (→vn文件夹: 看懂了) |
||
(未顯示由 3 位使用者於中間所作的 17 次修訂) | |||
行 10: | 行 10: | ||
在main和side文件夹下可以看见entries文件,vn文件和一个csb格式文件. | 在main和side文件夹下可以看见entries文件,vn文件和一个csb格式文件. | ||
===csb格式文件=== | ===csb格式文件=== | ||
*csb格式文件 | *csb格式 为cocos2dx的UI布局 文件 ,定义 了对应 分支的 界面 布局,比较难以 编 辑(参考:[FlatBuffer https://google.github.io/flatbuffers/]) | ||
===entries文件=== | ===entries文件=== | ||
entries文件为每个剧情的信息,包含解锁条件、需求曲包、前置分支关系等 | |||
格式 | 格式 | ||
{| class="wikitable" | {| class="wikitable" | ||
行 18: | 行 20: | ||
| <nowiki>{"entries": [{故事信息1},{故事信息2},……,{故事信息n}]}</nowiki> | | <nowiki>{"entries": [{故事信息1},{故事信息2},……,{故事信息n}]}</nowiki> | ||
|} | |} | ||
例子 | 例子 | ||
{ | { | ||
行 43: | 行 46: | ||
"clearCharaId": 0 | "clearCharaId": 0 | ||
}, | }, | ||
... | |||
] | ] | ||
} | } | ||
行 95: | 行 52: | ||
{ | { | ||
"entries": [{ | "entries": [{ | ||
"minor": | "minor": MinorID, | ||
"requiredPack": "requiredPackID", | "requiredPack": "requiredPackID", | ||
"requiredMinor": requiredMinorID, | |||
"storyType": "type", | "storyType": "type", | ||
"clearSongId": "clearSongID", | "clearSongId": "clearSongID", | ||
"alternateSuffix": "alternateChar", | |||
"requirementAnomalyId": "requirementAnomalyID", | "requirementAnomalyId": "requirementAnomalyID", | ||
"clearCharaId": clearCharaId | "clearCharaId": clearCharaId | ||
行 104: | 行 63: | ||
] | ] | ||
} | } | ||
*MinorID(integer):子剧情的ID,引用的基础。 | |||
*requiredPackID(ansistring):该剧情所要求的曲包,请移步[[曲包信息(packlist)格式]]。 | |||
*requiredMinorID(integer):解锁此子剧情所需通过的前置子剧情ID | |||
**如果子剧情需要多个前置子剧情,则代码如下 | |||
"additionalRequires": ["requiredentriesID-requiredMinorID", "requiredentriesID-requiredMinorID",……] | |||
:*requiredentriesID(integer):对应requiredMinorID所隶属的entries. | |||
*type(nvl,vn):本剧情的展现模式,如果为nvl则为普通文本剧情;如果为vn则为视觉小说模式。 | |||
…… | |||
"storyType": "vn", | |||
"storyData": "vnChar", | |||
…… | |||
:*vnChar(ansistring):当本剧情为vn时所调用的情景剧文件夹(\assets\app-data\story\vn)/资源(\assets\app-data\story\vn\res)的名称。 | |||
*clearSongID(ansistring):需要通过的曲目ID | |||
*alternateChar(ansistring):如果剧情后面的编号不是MinorID时所采用的字符串。 | |||
*requirementAnomalyID(ansistring):需要[[解歌系统#特殊解歌系统|迷之解锁]]的曲目ID | |||
*clearCharaId(integer):解锁时需要采用的[[搭档]],ID编号参见[[曲包信息(packlist)格式]] | |||
===vn文件(story文件夹下)=== | |||
格式 | |||
{| class="wikitable" | |||
|- | |||
| <nowiki>{"requiredentriesID-requiredMinorID": {对应故事1},"requiredentriesID-requiredMinorID": {对应故事2},……}</nowiki> | |||
|} | |||
例子 | |||
{ | |||
"3-1": { | |||
"en": "It’s early evening. Outside, ...”", | |||
"ja": "それは夕暮れ、黄昏のころ。\n野外にて、...", | |||
"ko": "이른 저녁이다. 바깥은 태양이 발하는 호박빛의 황혼이 쉼 없이 하늘을 물들이고 있지만,\n...\"", | |||
"zh-Hans": "夜色将至。屋外,太阳所溢出的琥珀色暮光马不停蹄地想要从天际溜走,...", | |||
"zh-Hant": "夜色將至。屋外,太陽所溢出的琥珀色暮光馬不停蹄地想要從天際溜走,..." | |||
}, | |||
"3-2": { | |||
... | |||
}, | |||
... | |||
} | |||
归纳 | |||
{ | |||
"requiredentriesID-requiredMinorID": { | |||
"en": "English story", | |||
"ja": "日本語の物語", | |||
"ko": "한국어 이야기", | |||
"zh-Hans": "简体中文的故事", | |||
"zh-Hant": "正體中文的故事" | |||
}, | |||
…… | |||
} | |||
由于变量名已经在先前阐明,故不再赘述。但需要注明的是: | |||
*换行符是\n | |||
*文本内容的英文双引号为\",避免json转义 | |||
*分页符为| | |||
==vn文件夹== | |||
vn文件夹下包含所有不同语言下对应视觉小说模式的剧情的脚本文件,以及res文件夹,对应所需资源。 | |||
===res文件夹=== | |||
res文件夹下包含当前V-1视觉小说所有所需文件,以及一个zettai文件夹,对应3-3视觉小说所需文件。 | |||
===vns文件=== | |||
vns为Arcaea中视觉小说模式的剧情的脚本文件,包含有以下指令 | |||
{| class="wikitable" | |||
|- | |||
|play <audio> <volume> <loop> | |||
|} | |||
*播放音频 | |||
*loop为循环至剧情结束(无法停止),可选 | |||
{| class="wikitable" | |||
|- | |||
|say <content> | |||
|} | |||
*显示剧情内容,每次say会清空屏幕已有剧情 | |||
{| class="wikitable" | |||
|- | |||
|show <pic> <posX>:<posY> <anchorX>:<anchorY> <scaleX>:<scaleY> <transition> normal | |||
|} | |||
*显示图片 | |||
*pos为图片锚点在图片上的位置,图片左下角为(0,0),右上角为(1,1) | |||
*anchor为图片锚点在屏幕上的位置,屏幕左下角为(0,0),右上角为(1,1) | |||
*scale为图片缩放比例,1为原始大小 | |||
**锚点为图片缩放过程中的原点 | |||
*transition为渐变效果 | |||
*结尾参数不明,现有vn全部为normal | |||
{| class="wikitable" | |||
|- | |||
|hide <pic> <transition> | |||
|} | |||
*隐藏图片 | |||
*transition为渐变效果,可选 | |||
{| class="wikitable" | |||
|- | |||
|move <pic> <dx>:<dy> <duration> <curve> | |||
|} | |||
*移动图片 | |||
*dx:dy为移动的距离,单位为像素 | |||
*duration为移动时长 | |||
*curve为移动过程使用的曲线 | |||
*transition:仅支持fade淡入淡出渐变,格式为fade(<duration>,<curve>) | |||
*curve:支持linear、sinein、sineout、sineinout,详见[https://easings.net easings 一览] |
於 2019年6月21日 (五) 07:43 的修訂
此頁面本頁面為技術型隱藏頁面 |
- 這只是對Story文件的格式分析,並不表示任何人可以曲解劇情。
- 本頁面將保持孤立狀態,嚴禁鏈入/引用!
總論
在apk包中,所有關於劇情的部分都在\assets\app-data\story中,包含多個文件。不同的文件(夾)包含不同的作用。 其中paths決定story界面圖像排布,entries記錄劇情關卡信息,vn記錄劇情文字/情景劇信息
文件夾/文件分析
在main和side文件夾下可以看見entries文件,vn文件和一個csb格式文件.
csb格式文件
- csb格式為cocos2dx的UI布局文件,定義了對應分支的界面布局,比較難以編輯(參考:[FlatBuffer https://google.github.io/flatbuffers/])
entries文件
entries文件為每個劇情的信息,包含解鎖條件、需求曲包、前置分支關係等
格式
{"entries": [{故事信息1},{故事信息2},……,{故事信息n}]} |
例子
{ "entries": [{ "minor": 1, "requiredPack": "core", "storyType": "nvl", "clearSongId": "lumia", "clearCharaId": 0 }, { "minor": 2, "requiredPack": "core", "requiredMinor": 1, "storyType": "nvl", "clearSongId": "memoryfactory", "clearCharaId": 0 }, { "minor": 3, "requiredPack": "core", "requiredMinor": 2, "storyType": "nvl", "clearSongId": "pragmatism", "clearCharaId": 0 }, ... ] }
歸納
{ "entries": [{ "minor": MinorID, "requiredPack": "requiredPackID", "requiredMinor": requiredMinorID, "storyType": "type", "clearSongId": "clearSongID", "alternateSuffix": "alternateChar", "requirementAnomalyId": "requirementAnomalyID", "clearCharaId": clearCharaId }, ] }
- MinorID(integer):子劇情的ID,引用的基礎。
- requiredPackID(ansistring):該劇情所要求的曲包,請移步曲包信息(packlist)格式。
- requiredMinorID(integer):解鎖此子劇情所需通過的前置子劇情ID
- 如果子劇情需要多個前置子劇情,則代碼如下
"additionalRequires": ["requiredentriesID-requiredMinorID", "requiredentriesID-requiredMinorID",……]
- requiredentriesID(integer):對應requiredMinorID所隸屬的entries.
- type(nvl,vn):本劇情的展現模式,如果為nvl則為普通文本劇情;如果為vn則為視覺小說模式。
…… "storyType": "vn", "storyData": "vnChar", ……
- vnChar(ansistring):當本劇情為vn時所調用的情景劇文件夾(\assets\app-data\story\vn)/資源(\assets\app-data\story\vn\res)的名稱。
- clearSongID(ansistring):需要通過的曲目ID
- alternateChar(ansistring):如果劇情後面的編號不是MinorID時所採用的字符串。
- requirementAnomalyID(ansistring):需要迷之解鎖的曲目ID
- clearCharaId(integer):解鎖時需要採用的搭檔,ID編號參見曲包信息(packlist)格式
vn文件(story文件夾下)
格式
{"requiredentriesID-requiredMinorID": {对应故事1},"requiredentriesID-requiredMinorID": {对应故事2},……} |
例子
{ "3-1": { "en": "It’s early evening. Outside, ...”", "ja": "それは夕暮れ、黄昏のころ。\n野外にて、...", "ko": "이른 저녁이다. 바깥은 태양이 발하는 호박빛의 황혼이 쉼 없이 하늘을 물들이고 있지만,\n...\"", "zh-Hans": "夜色将至。屋外,太阳所溢出的琥珀色暮光马不停蹄地想要从天际溜走,...", "zh-Hant": "夜色將至。屋外,太陽所溢出的琥珀色暮光馬不停蹄地想要從天際溜走,..." }, "3-2": { ... }, ... }
歸納
{ "requiredentriesID-requiredMinorID": { "en": "English story", "ja": "日本語の物語", "ko": "한국어 이야기", "zh-Hans": "简体中文的故事", "zh-Hant": "正體中文的故事" }, …… }
由於變量名已經在先前闡明,故不再贅述。但需要註明的是:
- 換行符是\n
- 文本內容的英文雙引號為\",避免json轉義
- 分頁符為|
vn文件夾
vn文件夾下包含所有不同語言下對應視覺小說模式的劇情的腳本文件,以及res文件夾,對應所需資源。
res文件夾
res文件夾下包含當前V-1視覺小說所有所需文件,以及一個zettai文件夾,對應3-3視覺小說所需文件。
vns文件
vns為Arcaea中視覺小說模式的劇情的腳本文件,包含有以下指令
play <audio> <volume> <loop> |
- 播放音頻
- loop為循環至劇情結束(無法停止),可選
say <content> |
- 顯示劇情內容,每次say會清空屏幕已有劇情
show <pic> <posX>:<posY> <anchorX>:<anchorY> <scaleX>:<scaleY> <transition> normal |
- 顯示圖片
- pos為圖片錨點在圖片上的位置,圖片左下角為(0,0),右上角為(1,1)
- anchor為圖片錨點在屏幕上的位置,屏幕左下角為(0,0),右上角為(1,1)
- scale為圖片縮放比例,1為原始大小
- 錨點為圖片縮放過程中的原點
- transition為漸變效果
- 結尾參數不明,現有vn全部為normal
hide <pic> <transition> |
- 隱藏圖片
- transition為漸變效果,可選
move <pic> <dx>:<dy> <duration> <curve> |
- 移動圖片
- dx:dy為移動的距離,單位為像素
- duration為移動時長
- curve為移動過程使用的曲線
- transition:僅支持fade淡入淡出漸變,格式為fade(<duration>,<curve>)
- curve:支持linear、sinein、sineout、sineinout,詳見easings 一覽