更新日志 (Changelog)

记录 Shiori 视觉小说引擎的每一次迭代与优化

← 返回主页
V1.2.3 (2026/4/16) - 文档优化与视频 BGM 控制
1. 文档全面更新
- 修正 README.md 中的场景数据结构示例代码,统一资源引用规范
- 推荐使用集中化配置文件(BG_CONFIG_SUB、BGM_CONFIG_SUB)替代硬编码路径
- 补充常见问题解答,新增视频播放控制、立绘动作指令、背景转场效果等问答

2. 视频播放与 BGM 控制优化
- 视频播放前会自动停止当前 BGM(暂停并重置到开头),避免音频冲突
- 视频结束后不会自动恢复 BGM,开发者需在后续剧情行中通过 bgm 属性手动指定

3. Bug 修复
- 修复了文本分段标签 [s] 与换行符 \n 组合使用时的显示问题
- 现在在分段文本中,换行符会正确渲染为 HTML <br> 标签,保持预期的排版效果
- 示例:text: "第一段第一行。\n第一段第二行。[s]第二段第一行。"
V1.2.2 (2026/4/16) - 调试系统增强与Bug修复
1. F1 调试面板增强
- 新增源码行号显示,便于快速定位剧情
- 优化状态追踪,确保刷新后信息准确同步

2. F12 开发者控制台日志
- 新增立绘指令解析日志,实时显示冲突检测、优先级处理和错误警告,辅助开发调试

3. Bug 修复
- 修复`[持续发抖]`状态无法正常停止的问题
V1.2.1 (2026/4/15) - 立绘动作系统增强与调试优化
1. 新增“点头”动画指令
- 支持 `[点头]` / `[nod]` 关键词
- 动画逻辑:执行一次完整的“上移 2% → 下移 4% → 回归原位”序列
- 严格只执行一次,不循环,动画结束后自动恢复到原始状态
- 可与其他修饰词组合使用,如 `[角色A 中 点头 lh15]`

2. F1 调试日志状态同步修复
- 修复页面刷新后状态残留问题:刷新页面后,调试面板现在能正确显示当前实际渲染的立绘状态,不再显示刷新前的旧 `chars` 信息
- 修复清除立绘后状态不同步问题:在全屏小说模式或执行 `[消失 all]` 等清除指令后,调试面板立即同步清空 `chars` 状态,解决了清除操作后面板仍显示旧立绘信息的问题

3. 立绘动作指令逻辑优化
- 修复连续动作指令累积效应问题:修复了连续调用相同动作指令(如连续两次 `[前进]`)时无法产生叠加效果的问题
- 现在每次动作都基于 DOM 元素的当前实际状态进行增量计算
- 确保了“前进/后退”等指令的数学计算正确性,支持真正的累积效应
V1.2.0 (2026/4/15) - 存档系统全面升级
1. 剧本文件菜单优化
- 在右键上下文菜单中新增"保存存档 (F5)"、"存档页面"选项
- 添加 F5 快捷键支持,可快速创建新存档(带防抖和 1 秒冷却机制,防止长按重复触发)
- 在 file:// 协议下自动屏蔽存档相关功能(菜单项、快捷键提示、F5 按键),避免本地文件模式下的功能异常

2. 进度管理页面优化
- 当玩家从剧情页进入时,显示"当前游玩页面"提示框和"返回当前页面"按钮
- 点击返回按钮可跳转回原场景并恢复到对应行号
- 高亮显示当前正在游玩的场景卡片(蓝色边框)
- 从主菜单进入时不显示提示框

3. 新增存档管理页面 archive.html
- 采用动态存档列表设计,支持无限数量的存档(受限于浏览器存储容量)
- 存档卡片显示:序号、自定义名称、场景名、保存时间、进度行数、文本预览
- 支持双击编辑存档名称、加载存档、删除存档等操作
- 顶部操作栏固定,存档列表支持垂直滚动
- 提供导出/导入所有存档功能(JSON 格式)
- 空状态时显示友好提示和引导信息
- 集成智能返回功能,从剧情页进入时显示返回按钮
V1.1.7 (2026/4/14) - 系统稳定性修复
1. 状态持久化优化
- 修复了音量控制状态及开发者调试窗口在页面切换时被重置的问题,提升了跨场景的连续性体验

2. 调试面板逻辑修正
- 修复了开发者调试窗口中背景图片(BG)属性在某些情况下无法实时更新的问题
V1.1.6 (2026/4/14) - 系统功能增强
1. 音量控制系统
- 新增键盘音量控制功能,支持通过 `+`/`↑` 增加音量,`-`/`↓` 减少音量
- 调整步进为 1%,提供精细的音量调节体验
- 实时显示音量百分比提示框,1.5秒后自动淡出
- 控制范围涵盖所有音频元素(BGM、SE、Voice)

2. 开发者调试模式
- 按 `F1` 可开关开发者调试面板,实时显示当前剧情状态
- 显示内容包括:场景文件名、剧情索引、BGM、背景图片、立绘列表
V1.1.5 (2026/4/14) - 角色名称标识符
1. 角色名称标识符 (Role Name Identifier)
- 新增立绘指令中的“角色名称标识符”功能,支持基于角色的自动替换与状态继承
- 语法格式[标识符 修饰词 资源ID],标识符必须紧挨着左方括号 [
- 互斥显示:当使用相同标识符时,新立绘会自动替换旧立绘,保持屏幕整洁
- 属性继承:若新指令未指定位置或缩放,新立绘将自动继承旧立绘的当前状态
- 示例[角色A 左 lh3], [角色A lh4], [消失 角色A]
- 详见 illustration.md 第1.1章或本教学网页内的教程
V1.1.4 (2026/4/13) - 渐入渐出与背景转场
1. 立绘渐入与渐出指令
- 新增 `[渐入]` / `[fadeIn]` 和 `[渐出]` / `[fadeOut]` 指令,支持立绘以平滑的淡入淡出效果出现或消失
- 替代了原本生硬的瞬间刷新,使画面过渡更加自然
- 注意:使用 `[渐出]` 时建议保持指令纯净(如 `[渐出 lh1]`),避免添加位置修饰词导致先闪动再消失
- 详见 illustration.md 第8章及 chars.html 教程

2. 背景转场系统
- 新增多种背景切换动画,包括淡入淡出(Fade)、滑动(Slide)及扫描(Scan)效果
- 支持中英文指令,例如:trans bg_01左滑 bg_02scanR bg_03
- 详细用法请参考本项目官方GitHub仓库内 background.md 文档或本教学网页内的教程
V1.1.3 (2026/4/12) - 连续动作指令
1. 连续动作序列支持
- 新增使用逗号 , 分隔的多状态帧指令,实现立绘的顺序动画与中断跳转
- 示例:[左,中,右 lh01](依次经过左侧、中间、右侧)

2. 统一化状态帧与属性继承
- 每个片段均为完整的立绘指令,支持属性继承(未指定的属性保持上一帧状态)
- 示例:[左 前,右 lh01](Step 1 只指定了“右”,因此继承了 Step 0 的“前”层级)

3. 片段内瞬移
- 支持在片段内使用 /instant 实现无过渡动画的状态切换,并保证标准停留时长
- 示例:[左,右 上 后 瞬,中 lh01](依次经过左侧、瞬间移动到右侧上方底层、平滑回到中间)
V1.1.2 (2026/4/11) - 立绘动作指令系统
1. 完整动作指令支持
- 新增6种立绘动作指令,支持中英文别名
- 后退/retreat:Y轴向上+10%,缩放-10%,层级强制变为"后"(zIndex=9)
- 前进/forward:Y轴向下-10%,缩放+10%(上限2.0),层级强制变为"前"(zIndex=11)
- 吓一跳/scare:先放大7%再缩小7%,重复2次,总时长约1秒
- 发抖/shake:X轴左右偏移±2%,重复3次,总时长约480ms
- 持续发抖/cshake:持续左右抖动,需手动停止
- 结束发抖/sshake:停止持续发抖,恢复原位
- 示例:[中 retreat lh01], [中 forward lh01], [中 scare lh01]
- 详见 illustration.md 第11章

2. 动作指令优先级规则
- 屏蔽瞬移:使用动作指令时,/instant 会被自动忽略,确保动画正常播放
- 多动作取第一个:同时指定多个动作时,只执行第一个,忽略后续动作
- 与其他修饰词组合:动作可与位置、缩放、层级等修饰词自由组合
- 示例:[瞬 retreat lh01]('瞬'被忽略,后退动画正常播放)

3. 批量清除所有立绘
- 新增 [消失 all][消失 全部] 指令,一键清除屏幕上所有立绘
- 支持英文指令:[hide all][remove all]
- 自动清理所有动画状态(如持续发抖的定时器)
- 空状态时调用不会报错,完全兼容原有的单立绘清除功能
- 示例:[消失 全部], [hide all], [remove all]
- 详见 illustration.md 第10.2节
V1.1.1 (2026/4/11) - 立绘指令系统全面增强
1. 中英文混合指令支持
- 所有立绘修饰词支持中英文别名,可在同一指令中自由混合使用
- 示例:[中 front lh01], [left down 前 lh02]
- 详见 illustration.md 第2章

2. 精确坐标控制系统
- 新增基于百分比的精确坐标控制:x:(水平)和 y:(垂直)
- X轴以屏幕中心为0%,Y轴以屏幕底部为0%
- 精确坐标优先于文字指令:[x:10% 左 lh01] 使用 x:10%,忽略“左”
- 示例:[x:10% y:-5% lh01], [瞬 x:-20% y:15% lh02]
- 详见 illustration.md 第3章

3. 简化立绘指令
- 支持仅包含角色ID的简化写法,自动应用默认值(居中、底部对齐)
- 示例:[lh01] 等同于 [中 lh01]
- 详见 illustration.md 第1章基本语法

4. 向上偏移关键词
- 新增垂直位置的向上偏移指令,与向下偏移对应
- 向上:上/up (25%), 中上/upm (50%), 上上/upu/top (65%)
- 向下:下/down (-25%), 中下/downm (-50%), 下下/downd/bottom (-65%)
- 示例:[中 上 lh01], [middle upm front lh02]
- 详见 illustration.md 第5章
V1.1.0 (2026/4/11) - 立绘指令系统增强
- 新增了详细的人物立绘差分控制指令,支持更丰富的位置、层级和动画效果
- 完整使用说明请参考项目中的 illustration.md 文档
- 教学网页正式上线,提供了系统化的在线教程与代码示例
V1.0.13 (2026/4/10) - 背景资源集中化管理
- 将原本混淆的CG与背景图片(BG)进行明确区分
- 无需再手动在assets文件夹中逐个创建文件
- 新增 `bg_config.js` 文件统一管理背景图片资源,这些背景图片不会出现在CG鉴赏页面中
- 注意:由于同一页面只能显示一张背景图,因此背景图片(BG)与CG图片共享同一个background属性
V1.0.12 (2026/4/10) - 全屏小说模式优化
- 优化了引擎核心代码`engine.js`的注释内容,提升代码可读性和维护性
- 改进了全屏小说模式下的文本选择功能,禁用鼠标选中文本以提升交互体验
- 调整了全屏小说模式下文本的对齐方式,从居中改为左对齐,避免打字效果时文本滚动,提升阅读体验
- 修复了全屏小说模式下快速点击导致文本显示异常的问题
V1.0.11 (2026/4/9) - novel/normal 标签修复与小剧场
- 修复了 `[novel]` 和 `[normal]` 标签的显示问题(全屏小说模式)。使用时请合理搭配 `\n` 和 `[s]` 标签,使文本分段展示效果更佳。

使用示例:
{
    text: "",
    command: "[novel]" //开始全屏小说模式
},
{
    text: "这是一大段文本\n[s]这是一大段文本\n[s]这是一大段文本",
},
{
    text: "",
    command: "[normal]" //结束全屏小说模式
}
- 新增“小剧场”页面,该页面属性与`saves.html`大致相同,但该页面内所有的剧本内容将不调用API,会直接显示所有的剧本文件。可用于番外小剧场使用。
V1.0.10 (2026/4/8) - BGM鉴赏页面兼容性修复
- 修复了在Firefox浏览器中,BGM鉴赏页面进度条已播放部分css特效丢失问题
- 已知问题:在Edge浏览器中,BGM鉴赏页面的进度条在拖拽后部分环境下可能无法正确播放至指定位置,松开鼠标后会跳转至00:00播放。建议使用时尽量使用Firefox浏览器。
V1.0.9 (2026/4/8) - POV指令修复与规范
- 修复了使用`pov`指令时,bgm无法播放的问题
- 重要提示:所有 `command` 指令应当单独占用一个故事行对象,且该对象的 `text` 字段应为空字符串 (`""`) 或 `null`。详细规范请参考 [COMMAND_USAGE_GUIDELINES.md](COMMAND_USAGE_GUIDELINES.md)
V1.0.8 (2026/4/8) - POV 叙事视角
- 新增 `pov` 标签,支持叙事视角显示功能
- 语法格式:`command: "[pov 角色名]"` 或 `command: "[pov stop]"`
- 功能说明:在屏幕右上角显示当前叙事视角,帮助玩家理解故事视角
- 视觉样式:金色文字 (#FFD700),24px加粗,位置固定在右边缘10px、上边缘100px
- 行为特性:显示后持续存在,直到遇到 `[pov stop]` 指令或场景切换时自动清除
- 示例代码:
{
    text: "切换到主角视角",
    speaker: "系统",
    command: "[pov 主角]" // 显示"当前叙事视角 主角"
},
{
    text: "停止显示视角",
    speaker: "系统",
    command: "[pov stop]" // 隐藏视角指示器
}
- 默认字体与样式修改: - POV 指示器默认继承全局字体设置(`body` 中定义的 `'Microsoft YaHei'`) - 如需全局修改字体,编辑 `style.css` 中的 `body` 或 `*` 选择器的 `font-family` 属性 - 如仅需修改 POV 指示器样式,直接编辑 `style.css` 中的 `.pov-indicator` 类(可调整 `font-family`、`font-size`、`color` 等属性) - `engine.js` 负责逻辑控制(显示/隐藏),不直接定义样式;如需动态修改样式,可通过扩展引擎代码实现 - 默认显示格式为"当前叙事视角 [角色名]",如需修改前缀文字或显示格式,需编辑 `engine.js` 中 `showPovIndicator` 函数的模板字符串
V1.0.7 (2026/4/8) - BGM 淡出与音频同步
- 新增 `bgm wait` 标签,支持 BGM 淡出切换功能
- 语法格式:`bgm: "bgm wait <新BGM标识符>"`
- 功能说明:等待当前 BGM 淡出完成后播放新的 BGM,实现平滑过渡效果
- 示例代码:
{
    text: "场景转换中...",
    speaker: "旁白",
    bgm: "bgm wait bgm21", // 淡出当前 BGM,播放 bgm21
    background: "bg5"
}
- 新增 `[a]` 音频同步标签,支持多段音频与文本片段同步播放
- 语法格式:`audio: "音频1[a]音频2[a]音频3"`
- 功能说明:按顺序播放多个音频片段,每个音频对应一个文本片段(使用 `[s]` 分隔)
- 示例代码:
{
    text: "第一段文字[s]第二段文字[s]第三段文字",
    speaker: "角色名",
    audio: "voice1[a]voice2[a]voice3" // 依次播放三个音频文件
}
- 效果说明:显示"第一段文字"时播放 voice1,点击后显示"第二段文字"并切换到 voice2,以此类推 - 特殊情况:当 `[s]` 标签数量大于 `[a]` 标签数量时,后续文本片段将继续播放最后一个音频,不会切换
V1.0.6 (2026/4/7)
- 重构了CG配置文件,采用集中化管理方式。此后不再需要在其他文件中多次重复的进行硬编码存储。
V1.0.5 (2026/3/28)
- 重构了BGM配置文件,采用集中化管理方式。此后不再需要在其他文件中多次重复的进行硬编码存储。
V1.0.4 (2026/3/9)
- 变更了一些编译逻辑,以适配不同的环境。如果使用V1.0.2版启动器文件无法编译的情况下可以尝试使用V1.0.3版本启动器文件进行编译。
- 项目主要版本号与启动器版本号相互独立,请根据readme、release的版本号进行区分
V1.0.3 (2026/3/6)
- 优化了编译逻辑,使编译后的可执行文件由之前的约60mb减少至约30mb(请使用V1.0.2文件夹内的内容)
- 现在你可以在icon文件夹里存放图片来修改你的浏览器图标了(默认命名为icon-32.png)
V1.0.2 (2026/3/4)
- 修复了剧本中,若点击过快会导致好几句对白乱序混在一起的问题
- 添加了长按ctrl可以快进剧本的快捷键功能
V1.0.1 (2026/3/3)
- 现在,你可以通过release中下载已经编译好的exe文件以脱离python环境运行。或可在编译前修改 `GalgameLauncher.csproj` 中的相关信息(如版权署名,默认版权署名为bilibili@月が綺麗ですね_)。以运行完整功能
- 编译部署流程:下载 `galgame-engine-launcher` 文件夹的全部内容,直接双击运行 `build_and_deploy.bat` 进行自动编译。该编译过程无需额外环境配置,甚至无需打开Visual Studio(仅需系统中安装任意版本的Visual Studio即可)。
- 部署方式:将生成的可执行文件(默认名称: GalgameLauncher.exe ,约60MB)放置于与 index.html 同级目录中,终端用户通过双击该启动器运行引擎。预编译版本作为Release附件分发。