# 魔女审判网页工坊
**Repository Path**: oxygennine/witch-trial-web-engine
## Basic Information
- **Project Name**: 魔女审判网页工坊
- **Description**: 魔审同人游戏制作工具。
- **Primary Language**: HTML
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-10-22
- **Last Updated**: 2025-10-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 魔女审判网页工坊
**当前版本:** Indev 1.1.0
## 更新描述
* 事件系统:新增特殊角色`event`,用于触发特殊事件,具体列表如下:
* `dead_body_found` - 尸体发现动画
* `exhibit_found` - 证物发现通知
* `screen_shock` - 屏幕抖动效果
* `witch_trial_start` - 魔女审判开庭动画
* `start_interrogation` - 审问开始动画
* `end_interrogation` - 审问结束动画
* `killer_execution` - 凶手处决界面
* 新增了一系列图片素材用于这些全屏动画,所有的动画都位于animation.css内。
* 游戏现在通过多个全局变量记录当前的案件、已访问过的剧情节点等信息。
* 新增了节点类型`exhibit_search`,用于搜证环节。每次搜证结束后,会弹出地图选择界面,全部搜证节点结束后则进入审判环节。
* 剧情数据结构现在包括一个新的`cases`对象,用于储存每个案件的相关信息。
* 现在对话记录会被实时更新到“回忆”弹窗。
* 新增了消息弹窗系统,用于在游戏中显示重要信息。
* 新增了热键栏,在桌面端可以折叠侧边栏并显示热键栏,阅读体验更佳。
* 剧情数据结构根对象现在有一个键`version`,用于标识当前数据结构的版本。现在的`version`为`1`。
## 项目概述
本项目最初作为《魔法少女的魔女审判》(魔审)的同人游戏开发,但随着功能趋于完善,我意识到将它作为一个“纯文本版本”的魔审编辑器是一个更好的选择。该工具采用扁平化数据结构,支持剧情编辑、角色管理、证物系统等核心功能。
index.html为游戏本体,默认调用data/data.json作为初始剧情数据。editor.html为剧情编辑器。
## 数据结构
所有数据均储存在一个JSON文件中,剧情节点扁平化处理。
### 基础结构
```json
{
"map": [], //定义地图图片和可用的房间
"rules": [], //定义监狱规则,纯文本
"characters": [], //定义出场角色
"exhibits": [], //定义剧情中出现的所有证物
"nodes": [], //定义剧情节点
"cases": [] //定义案件,以及案件涉及的角色、证物、节点等
}
```
### 场景节点类型
| 类型 | 描述 |
|------|------|
| `daily` | 无特殊事件的纯线性剧情 |
| `bad_end` | 单分支坏结局,结尾回溯到上一个daily节点 |
| `judge_start` | 审判场景起始节点 |
| `judge_wrong` | 错误选项分支,结尾回溯到父级judge节点 |
| `judge_continue` | 正确选项分支,继续推进审判流程 |
| `judge_end` | 审判结束后的案件复盘和处刑 |
| `exhibit_search` | 搜证环节节点 |
- 每个节点具有唯一且顺序增长的整数ID
- `judge_wrong`节点包含`parent`属性,指向对应的父级judge节点
## 核心功能详解
### 基础对话系统
```json
{
"id": 1,
"type": "daily",
"intro": "1-1简易长矛案",
"content": [
{"char": "sakuraba_ema", "text": "示例的对话内容"},
{"char": "sakuraba_ema", "text": "示例的对话内容2
下一段内容"},
{"char": "nikaido_hiro", "text": "进入下一节点", "clickToJump": true, "targetNode": 2}
]
}
```
### 分支选择机制
```json
{
"id": 2,
"type": "daily",
"intro": "1-2选择A或B",
"content": [
{"char": "narrator", "text": "你的选择是……"},
{"char": "choice", "text": "选择A", "clickToJump": true, "targetNode": 3},
{"char": "choice", "text": "选择B", "clickToJump": true, "targetNode": 4}
]
}
```
### 审判系统
#### 反驳、疑问与伪证
```json
{
"id": 10,
"type": "judge_start",
"intro": "1-3审判开始",
"content": [
{
"char": "sakuraba_ema",
"text": "可以反驳的地方这样标注:
这句话里面有
我认为balabala