Files
blind/game/操作说明.md
T
2026-05-18 18:39:49 +08:00

238 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 《林夏》操作说明
---
## 一、游戏简介
全黑屏叙事游戏。玩家扮演 24 岁的林夏,用一部碎屏手机度过今晚 21:00–02:00 的 5 个小时。
- **没有视觉界面**,只有声音和触感
- **全程约 60 分钟**(5 小时游戏时间压缩)
- **16 条消息**5 种结局
- **不需要说话**,不需要麦克风
---
## 二、开始前准备
1. 手机和电脑连接**同一 Wi-Fi**
2. 打开手机浏览器,输入地址:
```
http://172.28.107.97:8765/game/
```
3. **关灯,戴上耳机**
4. 将手机音量调到适中(建议 60–80%)
5. 轻触屏幕任意位置开始游戏
> **iOS 用户注意**:Safari 不支持震动反馈,操作正常但无震感。建议使用 Android Chrome。
---
## 三、消息类型与接收方式
游戏中有三种消息形态:
### 来电
- 触发:手机长震 + 角色专属铃声
- 响 **2030 秒**后自动漏接
| 操作 | 效果 |
|------|------|
| **单点** | 接听 |
| **左滑** | 拒接 |
| **不动** | 漏接(对方挂断) |
### 微信语音 / 微信文字
- 触发:两短震 + 系统提示音(TTS 报出发件人)
| 操作 | 效果 |
|------|------|
| **单点** | 播放语音 / 念出文字 |
| **左滑** | 忽略(保持未读) |
| **不动** | 保持未读,晚些再听 |
---
## 四、回复消息
**听完语音 / 文字念完后**,进入等待回复状态:
| 操作 | 发送内容 |
|------|----------|
| **单点** | 发"嗯。"(最简单的回执) |
| **双点** | 发标准回复(针对该消息的一句话) |
| **长按 1 秒** | 进入**细回复**模式 |
| **左滑** | 已读不回 |
| **不动** | 维持"已读未回"状态 |
---
## 五、细回复(核心机制)
长按 1 秒后,震动确认进入细回复。系统会依次念出 **4 个候选回复**:
```
一…… "好,明天寄。"
二…… "你怎么不自己来拿。"
三…… "你那边……都好吗。"
四…… (什么都不说)
```
**在听到目标选项时,朝对应方向滑动:**
| 滑动方向 | 对应选项 |
|----------|----------|
| **左滑** | 一 |
| **右滑** | 二 |
| **上滑** | 三 |
| **下滑** | 四 |
> **没听清?** 单点屏幕可重听所有选项,或长按 1 秒重新播放。
> 选错了也没关系——每条消息只影响行为画像,不会"game over"。
---
## 六、查看当前状态
**随时下滑**,系统会用语音告诉你当前在哪个页面,以及可以做什么操作。
例如:
- 主屏幕时下滑 → "主屏幕,3条未读。上滑查看收件箱。"
- 来电时下滑 → "妈妈来电中。单点接听,左滑拒接。"
- 听完消息后下滑 → "阿哲的消息已播完。单点回嗯,双点标准回复,长按细回复,左滑已读不回。"
> 不确定自己在哪?下滑就对了。
---
## 七、查看未读列表(收件箱)
在主屏幕**上滑**,进入收件箱模式。
系统会依次念出所有未读消息:
```
"收件箱:4条未读。妈妈,来电。阿哲,语音。周南,语音。……"
```
- **单点** → 跳转至列表第一条
- **左滑** → 返回主屏幕
- **等待 8 秒** → 自动关闭收件箱,返回游戏
---
## 八、游戏内时间
游戏将现实的 21:0002:00(5 小时)压缩为 **60 分钟**真实时间。
| 游戏时间 | 真实等待 |
|----------|----------|
| 21:03 | 约 36 秒 |
| 21:30 | 约 6 分钟 |
| 22:30 | 约 18 分钟 |
| 23:45 | 约 33 分钟 |
| 02:00 | 约 60 分钟 |
消息到来时间固定,**漏接 / 不听是合法选择**,但漏掉的内容不会重发。
---
## 九、结局说明(不含剧透)
共 **5 种结局**,由以下 5 个变量决定:
| 变量 | 触发条件 |
|------|----------|
| 与妈妈的连接 | 是否接了妈妈的电话 / 回了文字 |
| 阿哲是否回来 | 23:15 那通电话的选择 |
| 群里是否发言 | 寝室群消息的回应 |
| 与周南的深度 | 回应周南的次数与方式 |
| 是否听自己 | 00:30 时光胶囊是否播放 |
另有一个**隐藏结局 E**,需要与某位角色深度互动才能触发。
---
## 十、行为画像
游戏全程追踪三个维度(玩家不可见):
| 维度 | 含义 | 触发行为 |
|------|------|----------|
| **avoidance**(回避) | 林夏今晚想一个人待着 | 漏接、不回、已读不回 |
| **engagement**(投入) | 林夏在认真面对每一个人 | 细回复、主动追问 |
| **nostalgia**(怀旧) | 林夏在这一夜反复回望 | 重听同一条消息、分享自己 |
画像决定 **00:30 时光胶囊**播放哪个版本(明朗 / 迷茫 / 温柔)。
---
## 十一、彩蛋
- **夜间启动**(现实时间 22:00–04:00 之间打开游戏):开场多一句话
- **消息09**:小美醉语音结束后会有一个撤回事件
- **消息04**:如果一直不回阿哲,会听到一个小细节
---
## 十二、开发者 / 测试模式
在 URL 末尾加 `?dev` 可开启**10倍速**模式:
```
http://172.28.107.97:8765/game/?dev
```
- 所有消息的触发时间缩短为原来的 1/10
- 全程约 **6 分钟**可打通
- 适合测试结局分支
---
## 十三、启动服务器
关机重启后需要重新启动 HTTP 服务器:
```bash
cd /home/xsl/blind
python3 -m http.server 8765 --bind 0.0.0.0 &
```
查看当前 IP
```bash
hostname -I | awk '{print $1}'
```
---
## 十四、文件结构
```
/home/xsl/blind/
├── game/
│ ├── index.html 主页面(黑屏)
│ ├── manifest.json PWA 配置
│ ├── 操作说明.md 本文件
│ └── js/
│ ├── utils.js 工具函数 + 浏览器 TTS
│ ├── haptics.js 震动反馈
│ ├── audio.js 音频管理器
│ ├── gestures.js 单指手势检测
│ ├── profile.js 行为画像评分
│ ├── story.js 16条消息数据
│ ├── engine.js 游戏状态机
│ └── main.js 入口
└── audio/
└── 00_raw/
├── tts/ 角色语音(68条)
├── music/ BGM + 铃声
├── sfx/ 音效
└── ambience/ 环境底噪
```
---
*"屏幕坏了,但她的一夜还没结束。"*