story:修订间差异
跳转到导航
跳转到搜索
无编辑摘要 |
无编辑摘要 |
||
| 第59行: | 第59行: | ||
} | } | ||
*MinorID(integer):子剧情的ID,引用的基础。 | *MinorID(integer):子剧情的ID,引用的基础。 | ||
*requiredPackID(ansistring):该剧情所要求的曲包,请移步[[ | *requiredPackID(ansistring):该剧情所要求的曲包,请移步[[packlist]]。 | ||
*requiredMinorID(integer):解锁此子剧情所需通过的前置子剧情ID | *requiredMinorID(integer):解锁此子剧情所需通过的前置子剧情ID | ||
**如果子剧情需要多个前置子剧情,则代码如下 | **如果子剧情需要多个前置子剧情,则代码如下 | ||
| 第73行: | 第73行: | ||
*alternateChar(ansistring):如果剧情后面的编号不是MinorID时所采用的字符串。 | *alternateChar(ansistring):如果剧情后面的编号不是MinorID时所采用的字符串。 | ||
*requirementAnomalyID(ansistring):需要[[解歌系统#特殊解歌系统|迷之解锁]]的曲目ID | *requirementAnomalyID(ansistring):需要[[解歌系统#特殊解歌系统|迷之解锁]]的曲目ID | ||
*clearCharaId(integer):解锁时需要采用的[[搭档]],ID编号参见[[ | *clearCharaId(integer):解锁时需要采用的[[搭档]],ID编号参见[[packlist]] | ||
===vn文件(story文件夹下)=== | ===vn文件(story文件夹下)=== | ||
2020年9月8日 (二) 09:29的最新版本
总论
在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 一览