fix(space): 盲航刺耳音效重制 + 状态/反馈盲区修复(玩家代理取证迭代)
- F1 程序合成重制5件刺耳音效(alarm≥3kHz能量82%→0,全件≤-3.4dBFS)+新增挥空音 - F2 P0:撞击方位语音防顶断补播(保护期结束死亡窗 hit_* 零毫秒被杀根因) - F3 保护期教学句7连互截去重;F4 新句 protect_soon 50s预告;F5 boost_not_ready 冷却拒绝回音;F6 激活补CONFIRM震;F7 whiff - 验证:playtest 172/172 + guide 122 + 终检全绿 + 14游戏回归零回退 + live两轮复跑坐实 - 档案 research/space-polish/round1-2(取证+修复证据);04号文档追加R5修订记录
This commit is contained in:
@@ -60,3 +60,5 @@ web/detective/gen/staging/
|
||||
tools/bgm_post_wav/
|
||||
__pycache__/
|
||||
web/teahouse/gen/staging/
|
||||
tools/gen_rhythm_syn_wav/
|
||||
tools/gen_space_syn_wav/
|
||||
|
||||
@@ -110,3 +110,48 @@
|
||||
6. 语音全部整句重录:演练 8 句、保护期 3 句、单击/双击引入 4 句、归因 5 句、结算 10 句(时间段 4 + 躲避段 4 + 新纪录 + 重开)、里程碑 5 句 ≈ 35 句 × 2 音色。删除全部 num 拼接件。
|
||||
7. 教学语音与 whoosh 的时序:语音 onComplete 后再 spawn 演练陨石,保证不叠放。
|
||||
8. 更新 `web/space/README.md` 手势表(同向闪避是玩家可见的最大变化,README 必须同步)。
|
||||
|
||||
---
|
||||
|
||||
## 修订记录 R5(space polish:刺耳 + 状态/动作反馈盲区,research/space-polish/)
|
||||
|
||||
取证(round1):live 两会话(research/space-polish/round1/live-{A,B}-transcript.md)+
|
||||
4 人设评审(同目录 p1-blind/p2-student/p3-office/p4-worker)+ 全 sfx 客观频谱
|
||||
(同目录 sfx-spectrum-analysis.txt)。核心事实:
|
||||
|
||||
1. **刺耳(客观)**:alarm 每颗陨石响两遍且 ≥3kHz 能量 82.3%/≥5kHz 63.9%/峰值 16kHz;
|
||||
dodge 真峰值 -2.30dBFS + 63.6%≥3kHz;shield_block -2.60+52.2%;boost -2.70+53.0%;
|
||||
shield -2.90 超标。四件最高暴露音效全部违反 one-shot 标准(≤-3dBFS)。
|
||||
2. **保护期结束死亡窗(P0,live A t+151-163 与 t+300-310 两轮复现)**:裸飞期逼近 4.0s
|
||||
= 刷怪 4.0s,每颗撞击与下一颗 spawn 同窗——呼喊维持生存优先(顶断归因)的代价是
|
||||
hit_left/hit_down **零毫秒被杀**,玩家 8 秒三连撞至死不知方位;protect_end 亦被顶得
|
||||
只剩 0.5-3.5s。
|
||||
3. **保护期 protect_* 七连截断**:6.96s 教学句对 4.0s 刷怪间隔,每句播 4.0s 就被
|
||||
下一句顶断(live A 7 连 TRUNCATED),信息重复又残缺。
|
||||
4. **动作反馈盲区**:加速冷却中单击全静默(护盾拒绝有回音、加速没有——归因真话不均);
|
||||
挥空/滑错方向与成功闪避同静默(dodge 音只在判定时才响);boost/shield 激活无
|
||||
CONFIRM 震(§5 承诺未兑现)。
|
||||
|
||||
R5 裁定与实现(逐条对应 playtest.mjs 新断言):
|
||||
|
||||
- **R5-1 刺耳重合成**:alarm/dodge/shield_block/boost/shield 五件程序合成重制
|
||||
(`tools/gen_space_syn.py`,低谐波设计:alarm 双音 700/560Hz、dodge 中频气声扫频,
|
||||
真峰值 ≤-3.4dBFS、编码后 ≥3kHz 能量 0%,解码回读校验)。SA3 非必需,程序合成达标。
|
||||
新增 `sfx/whiff`(挥空轻叹,0.55 音量)。
|
||||
- **R5-2 归因真话·防顶断 replay**:呼喊生存优先裁定**不变**(呼喊照常同窗直出、照常
|
||||
顶断归因);但 hit_<dir>/protect_end 起播经 `_defendVoice` 登记,被顶断时登记残留,
|
||||
呼喊播完的 onComplete 走 `_replayDefended` queue 接 replay(不顶新威胁信息),
|
||||
保证每句归因/保护结束宣告完整送达至少一次;归因 replay 播完仍接 hit_last(先因后果)。
|
||||
- **R5-3 protect_* 去重**:上一句 protect_<dir> 在播时新吸收只发 shield_block 音 +
|
||||
WARNING 震、跳过语音,每句教学完整播完(不再 7 连截断同一句开头)。
|
||||
- **R5-4 加速冷却拒绝**:`_deny(now, voiceId)` 共用 4s 去抖(护盾拒绝同路径、原句
|
||||
feat_shield_done 不变);加速冷却单击 → HEARTBEAT 震 + 新句 `boost_not_ready`
|
||||
「引擎还在冷却,稍等一下。」。
|
||||
- **R5-5 protect_soon**:开局第 50s 播报「训练护盾还剩十秒。」(queue 不顶句;
|
||||
菜单/分批引入打断由 _rearmRunTimers 补播),给反应慢的玩家 10s 提前量。
|
||||
- **R5-6 激活确认**:boost/shield 激活(对局期与 feature 期)补 CONFIRM 震(兑现 §5)。
|
||||
- **R5-7 挥空反馈**:playing 期滑向无悬置陨石的方向 → `sfx/whiff` 轻叹(引擎 swipe
|
||||
震动已有"收到",whiff 补"无用"),与 dodge 成功音形成对偶。
|
||||
- **状态查询手势**:维持 00 §5 豁免表裁定(四向滑=闪避,space 无对局期 status key;
|
||||
坠毁结算后上滑=重听教学要点)。状态透明全部由事件反馈句承担(本 R5 已补齐
|
||||
保护期倒计时/冷却拒绝/归因可达性),不新增手势。
|
||||
|
||||
@@ -145,3 +145,16 @@ web/engine/gesture.js inputMode())时,引擎 voice 候选链前置加载
|
||||
| `help_recap` | 左边来按左方向键,右边来按右方向键,上面来按上方向键,下面来按下方向键。按空格加速,按回车护盾。 |
|
||||
| `skip_hint` | 按空格可跳过旁白。 |
|
||||
| `gd_hit_hint` | 被撞了。听方位,按对应方向键就能拨开。 |
|
||||
|
||||
---
|
||||
|
||||
## R5 追加 · space polish 轮新增(2 句 × 2 性别 = 4 条;取证依据 research/space-polish/round1/)
|
||||
|
||||
> 本轮(R5)只追加,不改上方任何旧表。instruct 沿用全表 `_SPC` 常量(两性别同游戏同 instruct,00 文档 §3.2)。
|
||||
> 台词已同步 `tools/gen_voice_dual.py` 的 SPACE_LINES(两表一致铁律)与 `web/harness/voice_text.json` 的 space 键。
|
||||
> 无键盘变体:两句均不含操作词(space 键盘变体表 24 句不增)。
|
||||
|
||||
| id | 台词全文 | 触发 |
|
||||
|---|---|---|
|
||||
| `protect_soon` | 训练护盾还剩十秒。 | 开局第 50s(保护期剩 10s 预告;queue 不顶句,被菜单/分批引入打断由 _rearmRunTimers 补播) |
|
||||
| `boost_not_ready` | 引擎还在冷却,稍等一下。 | 加速冷却中单击(R5 归因真话:拒绝必须有回音,此前冷却单击全静默);与护盾拒绝共用 4s 去抖 |
|
||||
|
||||
@@ -9,7 +9,8 @@ t+ 2.1s ▶ 语音:「单击可跳过旁白。」
|
||||
t+ 4.2s ▶ 语音:「陨石来了,会有声音告诉你方位。」
|
||||
t+ 6.4s ▶ 语音:「听,左边有陨石。向左滑,把它拨开!」
|
||||
t+ 8.5s ♪ 音效 sfx/whoosh_left
|
||||
t+ 8.5s 【状态】演练 1/4:左侧有陨石 演练:左边有陨石在逼近,左边滑把它拨开(无 BGM,语速1)
|
||||
t+ 8.5s ▶ 语音:「左!」
|
||||
t+ 8.5s 【状态】演练 1/4:左侧有陨石 演练:左边有陨石在逼近,左边滑把它拨开(语音播放中,语速1)
|
||||
|
||||
#### 【玩家动作】逼近音一响,同向滑开
|
||||
|
||||
@@ -17,20 +18,23 @@ t+ 8.5s ♪ 音效 sfx/dodge
|
||||
t+ 8.5s ▶ 语音:「漂亮。」
|
||||
t+ 10.6s ▶ 语音:「这次在右边。向右滑!」
|
||||
t+ 12.7s ♪ 音效 sfx/whoosh_right
|
||||
t+ 12.7s 【状态】演练 2/4:右侧有陨石 演练:右边有陨石在逼近,右边滑把它拨开(无 BGM,语速1)
|
||||
t+ 12.7s ▶ 语音:「右!」
|
||||
t+ 12.7s 【状态】演练 2/4:右侧有陨石 演练:右边有陨石在逼近,右边滑把它拨开(语音播放中,语速1)
|
||||
|
||||
#### 【玩家动作】这颗犹豫了,没拨开——听当场重教
|
||||
|
||||
t+ 17.2s ▶ 语音:「那是右边来的,向右滑。」
|
||||
t+ 17.2s 〰 震动:error(做错了:两连短震)
|
||||
t+ 19.3s ♪ 音效 sfx/whoosh_right
|
||||
t+ 19.3s ▶ 语音:「右!」
|
||||
|
||||
#### 【玩家动作】重教听完,这回马上同向滑
|
||||
|
||||
t+ 19.3s ♪ 音效 sfx/dodge
|
||||
t+ 19.3s ▶ 语音:「上面有东西,声音又尖又高。向上滑!」
|
||||
t+ 21.5s ♪ 音效 sfx/whoosh_up
|
||||
t+ 21.5s 【状态】演练 3/4:上侧有陨石 演练:上面有陨石在逼近,上面滑把它拨开(无 BGM,语速1)
|
||||
t+ 21.5s ▶ 语音:「上!」
|
||||
t+ 21.5s 【状态】演练 3/4:上侧有陨石 演练:上面有陨石在逼近,上面滑把它拨开(语音播放中,语速1)
|
||||
|
||||
#### 【玩家动作】逼近音一响,同向滑开
|
||||
|
||||
@@ -38,7 +42,8 @@ t+ 21.5s ♪ 音效 sfx/dodge
|
||||
t+ 21.5s ▶ 语音:「漂亮。」
|
||||
t+ 23.6s ▶ 语音:「下面是低沉的轰隆。向下滑!」
|
||||
t+ 25.7s ♪ 音效 sfx/whoosh_down
|
||||
t+ 25.7s 【状态】演练 4/4:下侧有陨石 演练:下面有陨石在逼近,下面滑把它拨开(无 BGM,语速1)
|
||||
t+ 25.7s ▶ 语音:「下!」
|
||||
t+ 25.7s 【状态】演练 4/4:下侧有陨石 演练:下面有陨石在逼近,下面滑把它拨开(语音播放中,语速1)
|
||||
|
||||
#### 【玩家动作】逼近音一响,同向滑开
|
||||
|
||||
@@ -48,20 +53,18 @@ t+ 25.7s 【状态】演练做完了,要出发了 演练旁白在播,先
|
||||
t+ 27.8s ♫ BGM 切换 → bgm/engine
|
||||
t+ 27.8s ♪ 向导音:battle(战斗/对抗)
|
||||
t+ 27.8s 【状态】出发。引擎声起来了,保护期里先练手 对局中:引擎声平稳,等下一颗(保护期)(BGM=bgm/engine,语速1)
|
||||
t+ 29.3s ♪ 音效 sfx/whoosh_up
|
||||
t+ 29.3s ♪ 音效 sfx/whoosh_right
|
||||
t+ 32.3s ♪ 音效 sfx/alarm
|
||||
t+ 32.8s ♪ 音效 sfx/alarm
|
||||
t+ 32.8s ▶ 语音:「上!」
|
||||
t+ 32.3s 〰 震动:danger(危险逼近)
|
||||
t+ 32.8s 〰 震动:danger(危险逼近)
|
||||
|
||||
#### 【玩家动作】听到第二段警报和方向呼喊,同向滑开
|
||||
|
||||
t+ 33.3s ♪ 音效 sfx/dodge
|
||||
t+ 33.3s ♪ 音效 sfx/whoosh_left
|
||||
t+ 33.3s ♪ 音效 sfx/whoosh_up
|
||||
t+ 36.3s ♪ 音效 sfx/alarm
|
||||
t+ 36.8s ♪ 音效 sfx/alarm
|
||||
t+ 36.8s ▶ 语音:「左!」
|
||||
t+ 36.3s 〰 震动:danger(危险逼近)
|
||||
t+ 36.8s 〰 震动:danger(危险逼近)
|
||||
|
||||
@@ -71,24 +74,22 @@ t+ 37.3s ♪ 音效 sfx/dodge
|
||||
t+ 37.3s ♪ 音效 sfx/whoosh_up
|
||||
t+ 40.3s ♪ 音效 sfx/alarm
|
||||
t+ 40.8s ♪ 音效 sfx/alarm
|
||||
t+ 40.8s ▶ 语音:「上!」
|
||||
t+ 40.3s 〰 震动:danger(危险逼近)
|
||||
t+ 40.8s 〰 震动:danger(危险逼近)
|
||||
|
||||
#### 【玩家动作】听到第二段警报和方向呼喊,同向滑开
|
||||
|
||||
t+ 41.3s ♪ 音效 sfx/dodge
|
||||
t+ 41.3s ♪ 音效 sfx/whoosh_left
|
||||
t+ 41.3s ♪ 音效 sfx/whoosh_down
|
||||
t+ 44.3s ♪ 音效 sfx/alarm
|
||||
t+ 44.8s ♪ 音效 sfx/alarm
|
||||
t+ 44.8s ▶ 语音:「左!」
|
||||
t+ 44.3s 〰 震动:danger(危险逼近)
|
||||
t+ 44.8s 〰 震动:danger(危险逼近)
|
||||
|
||||
#### 【玩家动作】听到第二段警报和方向呼喊,同向滑开
|
||||
|
||||
t+ 45.3s ♪ 音效 sfx/dodge
|
||||
t+ 45.3s ♪ 音效 sfx/whoosh_down
|
||||
t+ 45.3s ♪ 音效 sfx/whoosh_right
|
||||
t+ 47.8s ▶ 语音:「试试单击,引擎会短促加速,直接冲过空隙。」
|
||||
t+ 47.8s 【状态】游戏停下来教新功能 暂停了刷怪教新功能:单击试试加速(语音播放中,语速1)
|
||||
|
||||
@@ -96,57 +97,52 @@ t+ 47.8s 【状态】游戏停下来教新功能 暂停了刷怪教新功能
|
||||
|
||||
t+ 49.9s ♪ 音效 sfx/boost
|
||||
t+ 49.9s ▶ 语音:「感觉到了吗?加速的时候,陨石撞不上你。」
|
||||
t+ 52.4s ♪ 音效 sfx/whoosh_right
|
||||
t+ 52.4s ♪ 音效 sfx/whoosh_down
|
||||
t+ 55.4s ♪ 音效 sfx/alarm
|
||||
t+ 55.9s ♪ 音效 sfx/alarm
|
||||
t+ 55.9s ▶ 语音:「右!」
|
||||
t+ 55.4s 〰 震动:danger(危险逼近)
|
||||
t+ 55.9s 〰 震动:danger(危险逼近)
|
||||
|
||||
#### 【玩家动作】听到第二段警报和方向呼喊,同向滑开
|
||||
|
||||
t+ 56.4s ♪ 音效 sfx/dodge
|
||||
t+ 56.4s ♪ 音效 sfx/whoosh_up
|
||||
t+ 56.4s ♪ 音效 sfx/whoosh_left
|
||||
t+ 59.4s ♪ 音效 sfx/alarm
|
||||
t+ 59.9s ♪ 音效 sfx/alarm
|
||||
t+ 59.9s ▶ 语音:「上!」
|
||||
t+ 59.4s 〰 震动:danger(危险逼近)
|
||||
t+ 59.9s 〰 震动:danger(危险逼近)
|
||||
|
||||
#### 【玩家动作】听到第二段警报和方向呼喊,同向滑开
|
||||
|
||||
t+ 60.4s ♪ 音效 sfx/dodge
|
||||
t+ 60.4s ♪ 音效 sfx/whoosh_right
|
||||
t+ 60.4s ♪ 音效 sfx/whoosh_up
|
||||
t+ 63.4s ♪ 音效 sfx/alarm
|
||||
t+ 63.9s ♪ 音效 sfx/alarm
|
||||
t+ 63.9s ▶ 语音:「右!」
|
||||
t+ 63.4s 〰 震动:danger(危险逼近)
|
||||
t+ 63.9s 〰 震动:danger(危险逼近)
|
||||
|
||||
#### 【玩家动作】听到第二段警报和方向呼喊,同向滑开
|
||||
|
||||
t+ 64.4s ♪ 音效 sfx/dodge
|
||||
t+ 64.4s ♪ 音效 sfx/whoosh_down
|
||||
t+ 64.4s ♪ 音效 sfx/whoosh_right
|
||||
t+ 67.4s ♪ 音效 sfx/alarm
|
||||
t+ 67.9s ♪ 音效 sfx/alarm
|
||||
t+ 67.9s ▶ 语音:「下!」
|
||||
t+ 67.4s 〰 震动:danger(危险逼近)
|
||||
t+ 67.9s 〰 震动:danger(危险逼近)
|
||||
|
||||
#### 【玩家动作】听到第二段警报和方向呼喊,同向滑开
|
||||
|
||||
t+ 68.4s ♪ 音效 sfx/dodge
|
||||
t+ 68.4s ♪ 音效 sfx/whoosh_left
|
||||
t+ 68.4s ♪ 音效 sfx/whoosh_right
|
||||
t+ 71.4s ♪ 音效 sfx/alarm
|
||||
t+ 71.9s ♪ 音效 sfx/alarm
|
||||
t+ 71.9s ▶ 语音:「左!」
|
||||
t+ 71.4s 〰 震动:danger(危险逼近)
|
||||
t+ 71.9s 〰 震动:danger(危险逼近)
|
||||
|
||||
#### 【玩家动作】听到第二段警报和方向呼喊,同向滑开
|
||||
|
||||
t+ 72.4s ♪ 音效 sfx/dodge
|
||||
t+ 72.4s ♪ 音效 sfx/whoosh_left
|
||||
t+ 72.4s ♪ 音效 sfx/whoosh_right
|
||||
t+ 72.8s ▶ 语音:「双击展开护盾,能挡下一次撞击。」
|
||||
t+ 72.8s 【状态】游戏停下来教新功能 暂停了刷怪教新功能:双击展开护盾(语音播放中,语速1)
|
||||
|
||||
@@ -154,10 +150,9 @@ t+ 72.8s 【状态】游戏停下来教新功能 暂停了刷怪教新功能
|
||||
|
||||
t+ 74.9s ♪ 音效 sfx/shield
|
||||
t+ 74.9s ▶ 语音:「护盾展开后会自动充能,好了我会告诉你。」
|
||||
t+ 77.4s ♪ 音效 sfx/whoosh_down
|
||||
t+ 77.4s ♪ 音效 sfx/whoosh_up
|
||||
t+ 80.4s ♪ 音效 sfx/alarm
|
||||
t+ 80.9s ♪ 音效 sfx/alarm
|
||||
t+ 80.9s ▶ 语音:「下!」
|
||||
t+ 80.4s 〰 震动:danger(危险逼近)
|
||||
t+ 80.9s 〰 震动:danger(危险逼近)
|
||||
|
||||
@@ -165,103 +160,101 @@ t+ 80.9s 〰 震动:danger(危险逼近)
|
||||
|
||||
t+ 81.4s ♪ 音效 sfx/dodge
|
||||
t+ 81.4s ▶ 语音:「十颗了,稳。」
|
||||
t+ 81.4s ♪ 音效 sfx/whoosh_down
|
||||
t+ 81.4s ♪ 音效 sfx/whoosh_up
|
||||
t+ 81.4s 〰 震动:confirm(轻点确认)
|
||||
t+ 84.4s ♪ 音效 sfx/alarm
|
||||
t+ 84.9s ♪ 音效 sfx/alarm
|
||||
t+ 84.9s ▶ 语音:「下!」
|
||||
t+ 84.4s 〰 震动:danger(危险逼近)
|
||||
t+ 84.9s 〰 震动:danger(危险逼近)
|
||||
|
||||
#### 【玩家动作】听到第二段警报和方向呼喊,同向滑开
|
||||
|
||||
t+ 85.4s ♪ 音效 sfx/dodge
|
||||
t+ 85.4s ♪ 音效 sfx/whoosh_down
|
||||
t+ 85.4s ♪ 音效 sfx/whoosh_right
|
||||
t+ 85.4s ▶ 语音:「右!」
|
||||
t+ 87.8s ▶ 语音:「训练护盾关闭。接下来,靠你自己了。」
|
||||
t+ 87.8s 〰 震动:warning(警告三连震)
|
||||
t+ 88.4s ♪ 音效 sfx/alarm
|
||||
t+ 88.9s ♪ 音效 sfx/alarm
|
||||
t+ 88.9s ▶ 语音:「下!」
|
||||
t+ 88.4s 〰 震动:danger(危险逼近)
|
||||
t+ 88.9s 〰 震动:danger(危险逼近)
|
||||
t+ 88.9s 【状态】保护期结束了,这颗我故意没动 对局中:1 颗陨石在逼近,听方位同向滑开(语音播放中,语速1)
|
||||
t+ 89.4s ♪ 音效 sfx/hit
|
||||
t+ 89.4s ▶ 语音:「下面撞上的。听到低沉的轰隆,向下滑。」
|
||||
t+ 89.4s ▶ 语音:「右边撞上的。听到右边的呼啸,向右滑。」
|
||||
t+ 89.4s 〰 震动:hit(受击重震)
|
||||
|
||||
#### 【玩家动作】被撞了。先听到方位归因,又听到「同向滑动就能拨开」
|
||||
|
||||
t+ 89.4s ♪ 音效 sfx/whoosh_left
|
||||
t+ 91.2s ♪ 音效 sfx/alarm
|
||||
t+ 91.6s ▶ 向导语音:「被撞了。听方位,同向滑动就能拨开。」
|
||||
t+ 91.7s ♪ 音效 sfx/alarm
|
||||
t+ 91.7s ▶ 语音:「左!」
|
||||
t+ 91.2s 〰 震动:danger(危险逼近)
|
||||
t+ 91.7s 〰 震动:danger(危险逼近)
|
||||
t+ 91.7s 【状态】又有一颗,也故意不躲——想听听第二次被撞会说什么 对局中:1 颗陨石在逼近,听方位同向滑开(语音播放中,语速1)
|
||||
t+ 92.2s ♪ 音效 sfx/hit
|
||||
t+ 92.2s ▶ 语音:「左边撞上的。听到左边的呼啸,向左滑。」
|
||||
t+ 92.2s 〰 震动:hit(受击重震)
|
||||
t+ 89.4s ♪ 音效 sfx/whoosh_up
|
||||
t+ 89.4s ▶ 语音:「上!」
|
||||
t+ 89.9s ▶ 语音:「护盾充能完毕。」
|
||||
t+ 89.9s 〰 震动:pickup(获得)
|
||||
t+ 92.4s ♪ 音效 sfx/alarm
|
||||
t+ 92.9s ♪ 音效 sfx/alarm
|
||||
t+ 92.4s 〰 震动:danger(危险逼近)
|
||||
t+ 92.9s 〰 震动:danger(危险逼近)
|
||||
t+ 92.9s 【状态】又有一颗,也故意不躲——想听听第二次被撞会说什么 对局中:1 颗陨石在逼近,听方位同向滑开(语音播放中,语速1)
|
||||
t+ 93.4s ♪ 音效 sfx/hit
|
||||
t+ 93.4s ▶ 语音:「上面撞上的。听到高高的呼啸,向上滑。」
|
||||
t+ 93.4s 〰 震动:hit(受击重震)
|
||||
|
||||
#### 【玩家动作】第二次被撞:先听方位归因,又听到「这是最后一次机会,撑住」——这就是全部家底了
|
||||
|
||||
t+ 92.6s ♪ 音效 sfx/whoosh_right
|
||||
t+ 94.3s ▶ 语音:「船体只剩最后一次了,小心!」
|
||||
t+ 94.4s ♪ 音效 sfx/alarm
|
||||
t+ 94.9s ♪ 音效 sfx/alarm
|
||||
t+ 94.9s ▶ 语音:「右!」
|
||||
t+ 94.4s 〰 震动:danger(危险逼近)
|
||||
t+ 94.9s 〰 震动:danger(危险逼近)
|
||||
t+ 93.4s ♪ 音效 sfx/whoosh_down
|
||||
t+ 93.4s ▶ 语音:「下!」
|
||||
t+ 95.6s ▶ 语音:「船体只剩最后一次了,小心!」
|
||||
t+ 96.4s ♪ 音效 sfx/alarm
|
||||
t+ 96.9s ♪ 音效 sfx/alarm
|
||||
t+ 96.4s 〰 震动:danger(危险逼近)
|
||||
t+ 96.9s 〰 震动:danger(危险逼近)
|
||||
|
||||
#### 【玩家动作】听到第二段警报和方向呼喊,同向滑开
|
||||
|
||||
t+ 95.4s ♪ 音效 sfx/dodge
|
||||
t+ 95.7s ♪ 音效 sfx/whoosh_down
|
||||
t+ 97.5s ♪ 音效 sfx/alarm
|
||||
t+ 97.5s 〰 震动:danger(危险逼近)
|
||||
t+ 98.0s ♪ 音效 sfx/alarm
|
||||
t+ 98.0s ▶ 语音:「下!」
|
||||
t+ 98.0s 〰 震动:danger(危险逼近)
|
||||
t+ 97.4s ♪ 音效 sfx/dodge
|
||||
t+ 97.4s ♪ 音效 sfx/whoosh_up
|
||||
t+ 97.7s ▶ 向导语音:「这是最后一次机会,撑住。」
|
||||
t+ 100.4s ♪ 音效 sfx/alarm
|
||||
t+ 100.5s ♪ 音效 sfx/whoosh_up
|
||||
t+ 100.5s ▶ 语音:「上!」
|
||||
t+ 100.9s ♪ 音效 sfx/alarm
|
||||
t+ 100.4s 〰 震动:danger(危险逼近)
|
||||
t+ 100.9s 〰 震动:danger(危险逼近)
|
||||
|
||||
#### 【玩家动作】听到第二段警报和方向呼喊,同向滑开
|
||||
|
||||
t+ 98.5s ♪ 音效 sfx/dodge
|
||||
t+ 98.8s ♪ 音效 sfx/whoosh_down
|
||||
t+ 100.5s ♪ 音效 sfx/alarm
|
||||
t+ 100.5s 〰 震动:danger(危险逼近)
|
||||
t+ 101.0s ♪ 音效 sfx/alarm
|
||||
t+ 101.0s ▶ 语音:「下!」
|
||||
t+ 101.0s 〰 震动:danger(危险逼近)
|
||||
t+ 101.4s ♪ 音效 sfx/dodge
|
||||
t+ 102.2s ♪ 音效 sfx/alarm
|
||||
t+ 102.7s ♪ 音效 sfx/alarm
|
||||
t+ 102.2s 〰 震动:danger(危险逼近)
|
||||
t+ 102.7s 〰 震动:danger(危险逼近)
|
||||
|
||||
#### 【玩家动作】听到第二段警报和方向呼喊,同向滑开
|
||||
|
||||
t+ 101.5s ♪ 音效 sfx/dodge
|
||||
t+ 101.8s ♪ 音效 sfx/whoosh_left
|
||||
t+ 103.5s ♪ 音效 sfx/alarm
|
||||
t+ 103.5s 〰 震动:danger(危险逼近)
|
||||
t+ 104.0s ♪ 音效 sfx/alarm
|
||||
t+ 104.0s ▶ 语音:「左!」
|
||||
t+ 104.0s 〰 震动:danger(危险逼近)
|
||||
t+ 103.2s ♪ 音效 sfx/dodge
|
||||
t+ 103.5s ♪ 音效 sfx/whoosh_down
|
||||
t+ 103.5s ▶ 语音:「下!」
|
||||
t+ 105.1s ♪ 音效 sfx/alarm
|
||||
t+ 105.6s ♪ 音效 sfx/alarm
|
||||
t+ 105.1s 〰 震动:danger(危险逼近)
|
||||
t+ 105.6s 〰 震动:danger(危险逼近)
|
||||
|
||||
#### 【玩家动作】听到第二段警报和方向呼喊,同向滑开
|
||||
|
||||
t+ 104.5s ♪ 音效 sfx/dodge
|
||||
t+ 104.8s ♪ 音效 sfx/whoosh_up
|
||||
t+ 104.9s ▶ 语音:「护盾充能完毕。」
|
||||
t+ 104.9s 〰 震动:pickup(获得)
|
||||
t+ 106.4s ♪ 音效 sfx/alarm
|
||||
t+ 106.9s ♪ 音效 sfx/alarm
|
||||
t+ 106.9s ▶ 语音:「上!」
|
||||
t+ 106.4s 〰 震动:danger(危险逼近)
|
||||
t+ 106.9s 〰 震动:danger(危险逼近)
|
||||
t+ 106.1s ♪ 音效 sfx/dodge
|
||||
t+ 106.4s ♪ 音效 sfx/whoosh_left
|
||||
t+ 106.4s ▶ 语音:「左!」
|
||||
t+ 108.1s ♪ 音效 sfx/alarm
|
||||
t+ 108.6s ♪ 音效 sfx/alarm
|
||||
t+ 108.1s 〰 震动:danger(危险逼近)
|
||||
t+ 108.6s 〰 震动:danger(危险逼近)
|
||||
|
||||
#### 【玩家动作】听到第二段警报和方向呼喊,同向滑开
|
||||
|
||||
t+ 107.4s ♪ 音效 sfx/dodge
|
||||
t+ 107.7s ♪ 音效 sfx/whoosh_left
|
||||
t+ 109.3s ♪ 音效 sfx/alarm
|
||||
t+ 109.8s ♪ 音效 sfx/alarm
|
||||
t+ 109.8s ▶ 语音:「左!」
|
||||
t+ 109.3s 〰 震动:danger(危险逼近)
|
||||
t+ 109.8s 〰 震动:danger(危险逼近)
|
||||
t+ 109.8s 【状态】保护期结束后撑了 22 秒、挨了两下还活着;每回撞击前半秒都能听到方向呼喊,先到这 对局中:1 颗陨石在逼近,听方位同向滑开(语音播放中,语速1)
|
||||
t+ 109.1s ♪ 音效 sfx/dodge
|
||||
t+ 109.3s ♪ 音效 sfx/whoosh_right
|
||||
t+ 109.3s ▶ 语音:「右!」
|
||||
t+ 110.9s ♪ 音效 sfx/alarm
|
||||
t+ 110.9s 〰 震动:danger(危险逼近)
|
||||
t+ 111.4s ♪ 音效 sfx/alarm
|
||||
t+ 111.4s 〰 震动:danger(危险逼近)
|
||||
t+ 111.4s 【状态】保护期结束后撑了 24 秒、挨了两下还活着;每回撞击前半秒都能听到方向呼喊,先到这 对局中:1 颗陨石在逼近,听方位同向滑开(BGM=bgm/engine,语速1)
|
||||
|
||||
@@ -0,0 +1,747 @@
|
||||
# space 实时会话 transcript
|
||||
|
||||
- `[ -0.14s]` **GESTURE** tap @(195,422)
|
||||
- `[ 0.00s]` REC 开始 (audio/webm;codecs=opus)
|
||||
- `[ 0.11s]` VOICE ▶ drill_welcome (dur 3.68s)
|
||||
- `[ 4.03s]` VOICE ■ drill_welcome (kill)
|
||||
- `[ 4.03s]` VERDICT drill_welcome: **OK** sim=1
|
||||
- 期望: 欢迎登上盲航。你只有一双耳朵。
|
||||
- 听到: 欢迎登上盲航,你只有一双耳朵。。
|
||||
- `[ 4.03s]` VOICE ▶ skip_hint (dur 1.92s)
|
||||
- `[ 5.91s]` VOICE ■ skip_hint (kill)
|
||||
- `[ 5.91s]` VERDICT skip_hint: **OK** sim=0.7143
|
||||
- 期望: 单击可跳过旁白。
|
||||
- 听到: 单击可跳过磅榜。
|
||||
- `[ 5.91s]` VOICE ▶ drill_rule (dur 3.6s)
|
||||
- `[ 9.74s]` VOICE ■ drill_rule (kill)
|
||||
- `[ 9.74s]` VERDICT drill_rule: **OK** sim=0.963
|
||||
- 期望: 陨石来了,会有声音告诉你方位。
|
||||
- 听到: 陨石来了,会有声音告诉你方位停。
|
||||
- `[ 9.75s]` VOICE ▶ drill_left (dur 4.96s)
|
||||
- `[ 14.96s]` VOICE ■ drill_left (kill)
|
||||
- `[ 14.96s]` SFX ♪ whoosh_left
|
||||
- `[ 14.96s]` VOICE ▶ dir_left (dur 0.5570975056689342s)
|
||||
- `[ 14.96s]` VERDICT drill_left: **OK** sim=0.8889
|
||||
- 期望: 听,左边有陨石。向左滑,把它拨开!
|
||||
- 听到: 停左边有陨石向左滑,把它拨开走。
|
||||
- `[ 15.73s]` VOICE ■ dir_left (kill)
|
||||
- `[ 15.73s]` VERDICT dir_left: **MISMATCH** sim=0
|
||||
- 期望: 左!
|
||||
- 听到: 走。
|
||||
- `[ 19.46s]` VIBRATE [60,40,60]
|
||||
- `[ 19.47s]` VOICE ▶ drill_retry_left (dur 3.36s)
|
||||
- `[ 19.47s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 22.93s]` VOICE ■ drill_retry_left (kill)
|
||||
- `[ 22.93s]` SFX ♪ whoosh_left
|
||||
- `[ 22.93s]` VOICE ▶ dir_left (dur 0.5570975056689342s)
|
||||
- `[ 22.93s]` VERDICT drill_retry_left: **OK** sim=0.9474
|
||||
- 期望: 那是左边来的,向左滑。
|
||||
- 听到: 那是左边来的,向左滑左。
|
||||
- `[ 23.69s]` VOICE ■ dir_left (kill)
|
||||
- `[ 23.69s]` VERDICT dir_left: **MISMATCH** sim=0
|
||||
- 期望: 左!
|
||||
- 听到: 走。
|
||||
- `[ 27.43s]` VIBRATE [60,40,60]
|
||||
- `[ 27.43s]` VOICE ▶ drill_moveon (dur 3.84s)
|
||||
- `[ 27.43s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 28.33s]` **GESTURE** swipeleft @(195,422)
|
||||
- `[ 28.68s]` VIBRATE [10]
|
||||
- `[ 31.54s]` VOICE ■ drill_moveon (kill)
|
||||
- `[ 31.54s]` VERDICT drill_moveon: **OK** sim=1
|
||||
- 期望: 没关系,跟着我,我们继续。
|
||||
- 听到: 没关系,跟着我,我们继续。
|
||||
- `[ 31.55s]` VOICE ▶ drill_right (dur 2.64s)
|
||||
- `[ 34.26s]` VOICE ■ drill_right (kill)
|
||||
- `[ 34.26s]` SFX ♪ whoosh_right
|
||||
- `[ 34.26s]` VOICE ▶ dir_right (dur 0.39909297052154197s)
|
||||
- `[ 34.26s]` VERDICT drill_right: **OK** sim=0.9412
|
||||
- 期望: 这次在右边。向右滑!
|
||||
- 听到: 这次在右边向右滑右。
|
||||
- `[ 34.74s]` VOICE ■ dir_right (kill)
|
||||
- `[ 34.74s]` VERDICT dir_right: **MISMATCH** sim=0
|
||||
- 期望: 右!
|
||||
- 听到: 救。
|
||||
- `[ 38.76s]` VIBRATE [60,40,60]
|
||||
- `[ 38.76s]` VOICE ▶ drill_retry_right (dur 3.2s)
|
||||
- `[ 38.76s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 42.22s]` VOICE ■ drill_retry_right (kill)
|
||||
- `[ 42.22s]` VERDICT drill_retry_right: **OK** sim=0.9474
|
||||
- 期望: 那是右边来的,向右滑。
|
||||
- 听到: 那是右边来的,向右滑右。
|
||||
- `[ 42.22s]` SFX ♪ whoosh_right
|
||||
- `[ 42.22s]` VOICE ▶ dir_right (dur 0.39909297052154197s)
|
||||
- `[ 42.71s]` VOICE ■ dir_right (kill)
|
||||
- `[ 42.71s]` VERDICT dir_right: **MISMATCH** sim=0
|
||||
- 期望: 右!
|
||||
- 听到: 救。
|
||||
- `[ 46.72s]` VIBRATE [60,40,60]
|
||||
- `[ 46.72s]` VOICE ▶ drill_moveon (dur 3.84s)
|
||||
- `[ 46.72s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 50.83s]` VOICE ■ drill_moveon (kill)
|
||||
- `[ 50.83s]` VERDICT drill_moveon: **OK** sim=1
|
||||
- 期望: 没关系,跟着我,我们继续。
|
||||
- 听到: 没关系,跟着我,我们继续。
|
||||
- `[ 50.84s]` VOICE ▶ drill_up (dur 4.24s)
|
||||
- `[ 55.41s]` VOICE ■ drill_up (kill)
|
||||
- `[ 55.41s]` SFX ♪ whoosh_up
|
||||
- `[ 55.41s]` VOICE ▶ dir_up (dur 0.39909297052154197s)
|
||||
- `[ 55.41s]` VERDICT drill_up: **OK** sim=1
|
||||
- 期望: 上面有东西,声音又尖又高。向上滑!
|
||||
- 听到: 上面有东西,声音又尖又高,向上滑。
|
||||
- `[ 55.90s]` VOICE ■ dir_up (kill)
|
||||
- `[ 55.90s]` VERDICT dir_up: **OK** sim=1
|
||||
- 期望: 上!
|
||||
- 听到: 上。
|
||||
- `[ 59.91s]` VIBRATE [60,40,60]
|
||||
- `[ 59.92s]` VOICE ▶ drill_retry_up (dur 4.08s)
|
||||
- `[ 59.92s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 64.02s]` VOICE ■ drill_retry_up (kill)
|
||||
- `[ 64.02s]` SFX ♪ whoosh_up
|
||||
- `[ 64.02s]` VOICE ▶ dir_up (dur 0.39909297052154197s)
|
||||
- `[ 64.02s]` VERDICT drill_retry_up: **OK** sim=0.96
|
||||
- 期望: 声音又高又尖,是上面,向上滑。
|
||||
- 听到: 声音又高又尖,是上面向上滑上。
|
||||
- `[ 64.51s]` VOICE ■ dir_up (kill)
|
||||
- `[ 64.51s]` VERDICT dir_up: **OK** sim=1
|
||||
- 期望: 上!
|
||||
- 听到: 上。
|
||||
- `[ 66.26s]` **GESTURE** swipeup @(195,422)
|
||||
- `[ 66.61s]` VIBRATE [10]
|
||||
- `[ 66.61s]` SFX ♪ dodge
|
||||
- `[ 66.62s]` VOICE ▶ drill_good (dur 0.7970975056689342s)
|
||||
- `[ 66.62s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 67.39s]` VOICE ■ drill_good (kill)
|
||||
- `[ 67.39s]` VERDICT drill_good: **MISMATCH** sim=0
|
||||
- 期望: 漂亮。
|
||||
- 听到: 你好。
|
||||
- `[ 67.39s]` VOICE ▶ drill_down (dur 3.28s)
|
||||
- `[ 70.85s]` VOICE ■ drill_down (kill)
|
||||
- `[ 70.85s]` SFX ♪ whoosh_down
|
||||
- `[ 70.85s]` VOICE ▶ dir_down (dur 0.5570975056689342s)
|
||||
- `[ 70.85s]` VERDICT drill_down: **OK** sim=0.9091
|
||||
- 期望: 下面是低沉的轰隆。向下滑!
|
||||
- 听到: 下面是低沉的轰龙向下滑。
|
||||
- `[ 71.61s]` VOICE ■ dir_down (kill)
|
||||
- `[ 71.61s]` VERDICT dir_down: **MISMATCH** sim=0
|
||||
- 期望: 下!
|
||||
- 听到: 上。
|
||||
- `[ 75.35s]` VIBRATE [60,40,60]
|
||||
- `[ 75.36s]` VOICE ▶ drill_retry_down (dur 2.72s)
|
||||
- `[ 75.36s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 78.07s]` VOICE ■ drill_retry_down (kill)
|
||||
- `[ 78.07s]` SFX ♪ whoosh_down
|
||||
- `[ 78.07s]` VOICE ▶ dir_down (dur 0.5570975056689342s)
|
||||
- `[ 78.07s]` VERDICT drill_retry_down: **OK** sim=0.7778
|
||||
- 期望: 轰隆声在下面,向下滑。
|
||||
- 听到: 轰龙声在下面向下火。
|
||||
- `[ 78.83s]` VOICE ■ dir_down (kill)
|
||||
- `[ 78.83s]` VERDICT dir_down: **MISMATCH** sim=0
|
||||
- 期望: 下!
|
||||
- 听到: 上。
|
||||
- `[ 82.57s]` VIBRATE [60,40,60]
|
||||
- `[ 82.57s]` VOICE ▶ drill_moveon (dur 3.84s)
|
||||
- `[ 82.57s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 86.68s]` VOICE ■ drill_moveon (kill)
|
||||
- `[ 86.68s]` VERDICT drill_moveon: **OK** sim=1
|
||||
- 期望: 没关系,跟着我,我们继续。
|
||||
- 听到: 没关系,跟着我,我们继续。
|
||||
- `[ 86.69s]` VOICE ▶ drill_done (dur 4.72s)
|
||||
- `[ 91.63s]` VOICE ■ drill_done (kill)
|
||||
- `[ 91.63s]` VERDICT drill_done: **OK** sim=0.9231
|
||||
- 期望: 四个方向你都会了。引擎点火,出发!
|
||||
- 听到: 四个方向你都会了,引擎点火。
|
||||
- `[ 91.81s]` BGM ♪ engine (loop)
|
||||
- `[ 93.13s]` SFX ♪ whoosh_left
|
||||
- `[ 96.13s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 96.13s]` SFX ♪ alarm
|
||||
- `[ 96.63s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 96.63s]` SFX ♪ alarm
|
||||
- `[ 97.13s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 97.13s]` SFX ♪ shield_block
|
||||
- `[ 97.13s]` VOICE ▶ protect_left (dur 7.76s)
|
||||
- `[ 97.13s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 97.13s]` SFX ♪ whoosh_right
|
||||
- `[ 100.13s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 100.13s]` SFX ♪ alarm
|
||||
- `[ 100.63s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 100.63s]` SFX ♪ alarm
|
||||
- `[ 101.13s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 101.13s]` SFX ♪ shield_block
|
||||
- `[ 101.13s]` VOICE ■ protect_left (kill)
|
||||
- `[ 101.13s]` VOICE ▶ protect_right (dur 7.2s)
|
||||
- `[ 101.13s]` VERDICT protect_left: **TRUNCATED** sim=0.5625
|
||||
- 期望: 训练护盾接住了。那颗在左边,听到左边的呼啸,向左滑。
|
||||
- 听到: 训练护盾接住了那颗训。
|
||||
- `[ 101.13s]` SFX ♪ whoosh_down
|
||||
- `[ 104.13s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 104.13s]` SFX ♪ alarm
|
||||
- `[ 104.63s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 104.63s]` SFX ♪ alarm
|
||||
- `[ 105.13s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 105.13s]` SFX ♪ shield_block
|
||||
- `[ 105.13s]` VOICE ■ protect_right (kill)
|
||||
- `[ 105.13s]` VOICE ▶ protect_down (dur 6.08s)
|
||||
- `[ 105.13s]` SFX ♪ whoosh_up
|
||||
- `[ 105.13s]` VERDICT protect_right: **TRUNCATED** sim=0.7059
|
||||
- 期望: 训练护盾接住了。那颗在右边,听到右边的呼啸,向右滑。
|
||||
- 听到: 训练护盾接住了,那颗在右边。
|
||||
- `[ 108.14s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 108.14s]` SFX ♪ alarm
|
||||
- `[ 108.64s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 108.64s]` SFX ♪ alarm
|
||||
- `[ 109.14s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 109.14s]` SFX ♪ shield_block
|
||||
- `[ 109.14s]` VOICE ■ protect_down (kill)
|
||||
- `[ 109.14s]` VOICE ▶ protect_up (dur 6.96s)
|
||||
- `[ 109.14s]` VERDICT protect_down: **TRUNCATED** sim=0.3429
|
||||
- 期望: 训练护盾接住了。那颗在下面,听到低沉的轰隆,向下滑。
|
||||
- 听到: 训练互动接着,每刻在下面请训。
|
||||
- `[ 109.14s]` SFX ♪ whoosh_right
|
||||
- `[ 111.63s]` VOICE ■ protect_up (kill)
|
||||
- `[ 111.63s]` VOICE ▶ feat_boost (dur 6.48s)
|
||||
- `[ 111.63s]` VERDICT protect_up: **TRUNCATED** sim=0.3333
|
||||
- 期望: 训练护盾接住了。那颗在上面,听到高高的呼啸,向上滑。
|
||||
- 听到: 训练互动接住了是。
|
||||
- `[ 118.42s]` VOICE ■ feat_boost (kill)
|
||||
- `[ 118.42s]` VERDICT feat_boost: **OK** sim=1
|
||||
- 期望: 试试单击,引擎会短促加速,直接冲过空隙。
|
||||
- 听到: 试试单击,引擎会短促加速,直接冲过空隙。
|
||||
- `[ 122.13s]` SFX ♪ whoosh_up
|
||||
- `[ 125.13s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 125.13s]` SFX ♪ alarm
|
||||
- `[ 125.63s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 125.63s]` SFX ♪ alarm
|
||||
- `[ 126.13s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 126.13s]` SFX ♪ shield_block
|
||||
- `[ 126.13s]` VOICE ▶ protect_up (dur 6.96s)
|
||||
- `[ 126.13s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 126.13s]` SFX ♪ whoosh_up
|
||||
- `[ 129.13s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 129.13s]` SFX ♪ alarm
|
||||
- `[ 129.63s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 129.63s]` SFX ♪ alarm
|
||||
- `[ 130.13s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 130.13s]` SFX ♪ shield_block
|
||||
- `[ 130.13s]` VOICE ■ protect_up (kill)
|
||||
- `[ 130.13s]` VOICE ▶ protect_up (dur 6.96s)
|
||||
- `[ 130.13s]` VERDICT protect_up: **TRUNCATED** sim=0.6286
|
||||
- 期望: 训练护盾接住了。那颗在上面,听到高高的呼啸,向上滑。
|
||||
- 听到: 训练护刃接住了,那颗在上面训。
|
||||
- `[ 130.13s]` SFX ♪ whoosh_right
|
||||
- `[ 133.13s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 133.13s]` SFX ♪ alarm
|
||||
- `[ 133.63s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 133.63s]` SFX ♪ alarm
|
||||
- `[ 134.13s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 134.13s]` SFX ♪ shield_block
|
||||
- `[ 134.13s]` VOICE ■ protect_up (kill)
|
||||
- `[ 134.13s]` VOICE ▶ protect_right (dur 7.2s)
|
||||
- `[ 134.13s]` VERDICT protect_up: **TRUNCATED** sim=0.5882
|
||||
- 期望: 训练护盾接住了。那颗在上面,听到高高的呼啸,向上滑。
|
||||
- 听到: 训练互动接住了,那颗在上面。
|
||||
- `[ 134.13s]` SFX ♪ whoosh_down
|
||||
- `[ 136.63s]` VOICE ■ protect_right (kill)
|
||||
- `[ 136.63s]` VOICE ▶ feat_shield (dur 4.4s)
|
||||
- `[ 136.63s]` VERDICT protect_right: **TRUNCATED** sim=0.4667
|
||||
- 期望: 训练护盾接住了。那颗在右边,听到右边的呼啸,向右滑。
|
||||
- 听到: 训练护盾接住了说。
|
||||
- `[ 139.46s]` **GESTURE** tap @(195,422)
|
||||
- `[ 139.82s]` VIBRATE [20]
|
||||
- `[ 139.82s]` VOICE ■ feat_shield (kill)
|
||||
- `[ 139.82s]` VERDICT feat_shield: **TRUNCATED** sim=0.6667
|
||||
- 期望: 双击展开护盾,能挡下一次撞击。
|
||||
- 听到: 双击展开护盾能等。
|
||||
- `[ 147.13s]` SFX ♪ whoosh_up
|
||||
- `[ 150.13s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 150.13s]` SFX ♪ alarm
|
||||
- `[ 150.63s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 150.63s]` SFX ♪ alarm
|
||||
- `[ 151.13s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 151.13s]` SFX ♪ shield_block
|
||||
- `[ 151.13s]` VOICE ▶ protect_up (dur 6.96s)
|
||||
- `[ 151.13s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 151.13s]` SFX ♪ whoosh_left
|
||||
- `[ 151.13s]` VOICE ■ protect_up (kill)
|
||||
- `[ 151.13s]` VOICE ▶ dir_left (dur 0.5570975056689342s)
|
||||
- `[ 151.13s]` VERDICT protect_up: **TRUNCATED** sim=0
|
||||
- 期望: 训练护盾接住了。那颗在上面,听到高高的呼啸,向上滑。
|
||||
- 听到: 哦。
|
||||
- `[ 151.63s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 151.63s]` VOICE ■ dir_left (kill)
|
||||
- `[ 151.63s]` VOICE ▶ protect_end (dur 5.36s)
|
||||
- `[ 151.63s]` VERDICT dir_left: **MISMATCH** sim=0
|
||||
- 期望: 左!
|
||||
- 听到: 哦。
|
||||
- `[ 154.13s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 154.13s]` SFX ♪ alarm
|
||||
- `[ 154.63s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 154.63s]` SFX ♪ alarm
|
||||
- `[ 155.13s]` VIBRATE [80]
|
||||
- `[ 155.13s]` SFX ♪ hit
|
||||
- `[ 155.13s]` VOICE ■ protect_end (kill)
|
||||
- `[ 155.13s]` VOICE ▶ hit_left (dur 4.64s)
|
||||
- `[ 155.13s]` VERDICT protect_end: **TRUNCATED** sim=0.5217
|
||||
- 期望: 训练护盾关闭。接下来,靠你自己了。
|
||||
- 听到: 哼训练护盾关闭有效。
|
||||
- `[ 155.13s]` SFX ♪ whoosh_down
|
||||
- `[ 155.13s]` VOICE ■ hit_left (kill)
|
||||
- `[ 155.13s]` VOICE ▶ dir_down (dur 0.5570975056689342s)
|
||||
- `[ 155.13s]` VERDICT hit_left: **TRUNCATED** sim=0
|
||||
- 期望: 左边撞上的。听到左边的呼啸,向左滑。
|
||||
- 听到: 让。
|
||||
- `[ 155.90s]` VOICE ■ dir_down (kill)
|
||||
- `[ 155.90s]` VERDICT dir_down: **MISMATCH** sim=0
|
||||
- 期望: 下!
|
||||
- 听到: 跳。
|
||||
- `[ 158.13s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 158.13s]` SFX ♪ alarm
|
||||
- `[ 158.63s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 158.63s]` SFX ♪ alarm
|
||||
- `[ 159.13s]` VIBRATE [80]
|
||||
- `[ 159.13s]` SFX ♪ hit
|
||||
- `[ 159.13s]` VOICE ▶ hit_down (dur 4.32s)
|
||||
- `[ 159.13s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 159.13s]` SFX ♪ whoosh_left
|
||||
- `[ 159.13s]` VOICE ■ hit_down (kill)
|
||||
- `[ 159.13s]` VOICE ▶ dir_left (dur 0.5570975056689342s)
|
||||
- `[ 159.13s]` VERDICT hit_down: **TRUNCATED** sim=0
|
||||
- 期望: 下面撞上的。听到低沉的轰隆,向下滑。
|
||||
- 听到: 哦。
|
||||
- `[ 159.89s]` VOICE ■ dir_left (kill)
|
||||
- `[ 159.89s]` VOICE ▶ hit_last (dur 2.72s)
|
||||
- `[ 159.89s]` VERDICT dir_left: **MISMATCH** sim=0
|
||||
- 期望: 左!
|
||||
- 听到: 哦,你传。
|
||||
- `[ 162.13s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 162.13s]` SFX ♪ alarm
|
||||
- `[ 162.60s]` VOICE ■ hit_last (kill)
|
||||
- `[ 162.60s]` VOICE ▶ gd_last_life (dur 2.8s)
|
||||
- `[ 162.60s]` VERDICT hit_last: **OK** sim=0.8696
|
||||
- 期望: 船体只剩最后一次了,小心!
|
||||
- 听到: 团体只剩最后一次了,小心这。
|
||||
- `[ 162.63s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 162.63s]` SFX ♪ alarm
|
||||
- `[ 163.13s]` VIBRATE [80]
|
||||
- `[ 163.13s]` VOICE ■ gd_last_life (kill)
|
||||
- `[ 163.13s]` VIBRATE [60,40,60]
|
||||
- `[ 163.13s]` VERDICT gd_last_life: **TRUNCATED** sim=0.3333
|
||||
- 期望: 这是最后一次机会,撑住。
|
||||
- 听到: 这是。
|
||||
- `[ 163.13s]` SFX ♪ hit
|
||||
- `[ 163.13s]` SFX ♪ crash
|
||||
- `[ 163.43s]` VIBRATE [80]
|
||||
- `[ 164.33s]` VIBRATE [100]
|
||||
- `[ 164.34s]` VOICE ▶ time_3 (dur 3.2s)
|
||||
- `[ 167.81s]` VOICE ■ time_3 (kill)
|
||||
- `[ 167.81s]` VERDICT time_3: **OK** sim=0.9091
|
||||
- 期望: 超过一分钟,合格的飞行员。
|
||||
- 听到: 超过1分钟,合格的飞行员。
|
||||
- `[ 167.81s]` VOICE ▶ new_record (dur 1.28s)
|
||||
- `[ 169.41s]` VOICE ■ new_record (kill)
|
||||
- `[ 169.41s]` VERDICT new_record: **MISMATCH** sim=0.5714
|
||||
- 期望: 新纪录!
|
||||
- 听到: 新记录只。
|
||||
- `[ 169.41s]` VOICE ▶ dodge_1 (dur 1.36s)
|
||||
- `[ 171.01s]` VOICE ■ dodge_1 (kill)
|
||||
- `[ 171.01s]` VERDICT dodge_1: **MISMATCH** sim=0.4
|
||||
- 期望: 只拨开几颗。
|
||||
- 听到: 只剥开即可。。
|
||||
- `[ 171.02s]` VOICE ▶ restart_hint (dur 3.68s)
|
||||
- `[ 174.48s]` BGM ♪ menu (loop)
|
||||
- `[ 174.84s]` VOICE ■ restart_hint (kill)
|
||||
- `[ 174.84s]` VERDICT restart_hint: **OK** sim=0.9091
|
||||
- 期望: 单击再飞一次,下滑回大厅。
|
||||
- 听到: 单机再飞一次,下滑回大厅。
|
||||
- `[ 176.01s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 176.26s]` VIBRATE [20]
|
||||
- `[ 240.43s]` **GESTURE** tap @(195,422)
|
||||
- `[ 240.80s]` VIBRATE [20]
|
||||
- `[ 240.80s]` BGM ♪ engine (loop)
|
||||
- `[ 242.30s]` SFX ♪ whoosh_up
|
||||
- `[ 245.30s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 245.30s]` SFX ♪ alarm
|
||||
- `[ 245.80s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 245.80s]` SFX ♪ alarm
|
||||
- `[ 246.30s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 246.30s]` SFX ♪ shield_block
|
||||
- `[ 246.30s]` VOICE ▶ protect_up (dur 6.96s)
|
||||
- `[ 246.30s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 246.30s]` SFX ♪ whoosh_down
|
||||
- `[ 249.30s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 249.30s]` SFX ♪ alarm
|
||||
- `[ 249.80s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 249.80s]` SFX ♪ alarm
|
||||
- `[ 250.30s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 250.30s]` SFX ♪ shield_block
|
||||
- `[ 250.30s]` VOICE ■ protect_up (kill)
|
||||
- `[ 250.30s]` VOICE ▶ protect_down (dur 6.08s)
|
||||
- `[ 250.30s]` VERDICT protect_up: **TRUNCATED** sim=0.5882
|
||||
- 期望: 训练护盾接住了。那颗在上面,听到高高的呼啸,向上滑。
|
||||
- 听到: 训练互动接住了,那颗在上面。
|
||||
- `[ 250.30s]` SFX ♪ whoosh_right
|
||||
- `[ 253.30s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 253.30s]` SFX ♪ alarm
|
||||
- `[ 253.80s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 253.80s]` SFX ♪ alarm
|
||||
- `[ 254.30s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 254.30s]` SFX ♪ shield_block
|
||||
- `[ 254.30s]` VOICE ■ protect_down (kill)
|
||||
- `[ 254.30s]` VOICE ▶ protect_right (dur 7.2s)
|
||||
- `[ 254.30s]` VERDICT protect_down: **TRUNCATED** sim=0.5405
|
||||
- 期望: 训练护盾接住了。那颗在下面,听到低沉的轰隆,向下滑。
|
||||
- 听到: 训练互动接住了,那颗在下面心奋训。
|
||||
- `[ 254.30s]` SFX ♪ whoosh_down
|
||||
- `[ 257.30s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 257.30s]` SFX ♪ alarm
|
||||
- `[ 257.80s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 257.80s]` SFX ♪ alarm
|
||||
- `[ 258.30s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 258.30s]` SFX ♪ shield_block
|
||||
- `[ 258.30s]` VOICE ■ protect_right (kill)
|
||||
- `[ 258.30s]` VERDICT protect_right: **TRUNCATED** sim=0.7059
|
||||
- 期望: 训练护盾接住了。那颗在右边,听到右边的呼啸,向右滑。
|
||||
- 听到: 训练护盾接住了,那颗在右边。
|
||||
- `[ 258.30s]` VOICE ▶ protect_down (dur 6.08s)
|
||||
- `[ 258.30s]` SFX ♪ whoosh_right
|
||||
- `[ 261.30s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 261.30s]` SFX ♪ alarm
|
||||
- `[ 261.80s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 261.80s]` SFX ♪ alarm
|
||||
- `[ 262.30s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 262.30s]` SFX ♪ shield_block
|
||||
- `[ 262.30s]` VOICE ■ protect_down (kill)
|
||||
- `[ 262.30s]` VOICE ▶ protect_right (dur 7.2s)
|
||||
- `[ 262.30s]` VERDICT protect_down: **TRUNCATED** sim=0.5405
|
||||
- 期望: 训练护盾接住了。那颗在下面,听到低沉的轰隆,向下滑。
|
||||
- 听到: 训练互动接住了,那颗在下面经动训。
|
||||
- `[ 262.30s]` SFX ♪ whoosh_down
|
||||
- `[ 265.30s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 265.30s]` SFX ♪ alarm
|
||||
- `[ 265.80s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 265.80s]` SFX ♪ alarm
|
||||
- `[ 266.30s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 266.30s]` SFX ♪ shield_block
|
||||
- `[ 266.30s]` VOICE ■ protect_right (kill)
|
||||
- `[ 266.30s]` VOICE ▶ protect_down (dur 6.08s)
|
||||
- `[ 266.30s]` VERDICT protect_right: **TRUNCATED** sim=0.7059
|
||||
- 期望: 训练护盾接住了。那颗在右边,听到右边的呼啸,向右滑。
|
||||
- 听到: 训练护盾接住了,那颗在右边。
|
||||
- `[ 266.30s]` SFX ♪ whoosh_down
|
||||
- `[ 269.30s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 269.30s]` SFX ♪ alarm
|
||||
- `[ 269.80s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 269.80s]` SFX ♪ alarm
|
||||
- `[ 270.30s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 270.30s]` SFX ♪ shield_block
|
||||
- `[ 270.30s]` VOICE ■ protect_down (kill)
|
||||
- `[ 270.30s]` VOICE ▶ protect_down (dur 6.08s)
|
||||
- `[ 270.30s]` VERDICT protect_down: **TRUNCATED** sim=0.5
|
||||
- 期望: 训练护盾接住了。那颗在下面,听到低沉的轰隆,向下滑。
|
||||
- 听到: 训练互动接住了,那刻在下面拼成。
|
||||
- `[ 270.31s]` SFX ♪ whoosh_down
|
||||
- `[ 273.31s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 273.31s]` SFX ♪ alarm
|
||||
- `[ 273.81s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 273.81s]` SFX ♪ alarm
|
||||
- `[ 274.31s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 274.31s]` SFX ♪ shield_block
|
||||
- `[ 274.31s]` VOICE ■ protect_down (kill)
|
||||
- `[ 274.31s]` VOICE ▶ protect_down (dur 6.08s)
|
||||
- `[ 274.31s]` VERDICT protect_down: **TRUNCATED** sim=0.4865
|
||||
- 期望: 训练护盾接住了。那颗在下面,听到低沉的轰隆,向下滑。
|
||||
- 听到: 训练互动接住了,那刻在下面形成训。
|
||||
- `[ 274.31s]` SFX ♪ whoosh_right
|
||||
- `[ 277.31s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 277.31s]` SFX ♪ alarm
|
||||
- `[ 277.81s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 277.81s]` SFX ♪ alarm
|
||||
- `[ 278.31s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 278.31s]` SFX ♪ shield_block
|
||||
- `[ 278.31s]` VOICE ■ protect_down (kill)
|
||||
- `[ 278.31s]` VOICE ▶ protect_right (dur 7.2s)
|
||||
- `[ 278.31s]` VERDICT protect_down: **TRUNCATED** sim=0.5946
|
||||
- 期望: 训练护盾接住了。那颗在下面,听到低沉的轰隆,向下滑。
|
||||
- 听到: 训练互动接住了,那刻在下面听到训。
|
||||
- `[ 278.31s]` SFX ♪ whoosh_up
|
||||
- `[ 281.31s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 281.31s]` SFX ♪ alarm
|
||||
- `[ 281.81s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 281.81s]` SFX ♪ alarm
|
||||
- `[ 282.31s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 282.31s]` SFX ♪ shield_block
|
||||
- `[ 282.31s]` VOICE ■ protect_right (kill)
|
||||
- `[ 282.31s]` VOICE ▶ protect_up (dur 6.96s)
|
||||
- `[ 282.31s]` VERDICT protect_right: **TRUNCATED** sim=0.6471
|
||||
- 期望: 训练护盾接住了。那颗在右边,听到右边的呼啸,向右滑。
|
||||
- 听到: 训练护关接住了,那颗在右边。
|
||||
- `[ 282.31s]` SFX ♪ whoosh_right
|
||||
- `[ 282.56s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 282.81s]` VIBRATE [20]
|
||||
- `[ 282.81s]` SFX ♪ shield
|
||||
- `[ 285.22s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 285.31s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 285.31s]` SFX ♪ alarm
|
||||
- `[ 285.47s]` VIBRATE [20]
|
||||
- `[ 285.47s]` VIBRATE [40,100,40]
|
||||
- `[ 285.47s]` VOICE ■ protect_up (kill)
|
||||
- `[ 285.47s]` VOICE ▶ feat_shield_done (dur 4.88s)
|
||||
- `[ 285.47s]` VERDICT protect_up: **TRUNCATED** sim=0.4848
|
||||
- 期望: 训练护盾接住了。那颗在上面,听到高高的呼啸,向上滑。
|
||||
- 听到: 训练死定接住了那刻在上。
|
||||
- `[ 285.81s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 285.81s]` SFX ♪ alarm
|
||||
- `[ 286.31s]` VIBRATE [100]
|
||||
- `[ 286.31s]` SFX ♪ shield_block
|
||||
- `[ 286.31s]` SFX ♪ whoosh_down
|
||||
- `[ 289.31s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 289.31s]` SFX ♪ alarm
|
||||
- `[ 289.81s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 289.81s]` SFX ♪ alarm
|
||||
- `[ 290.31s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 290.31s]` SFX ♪ shield_block
|
||||
- `[ 290.31s]` VOICE ■ feat_shield_done (kill)
|
||||
- `[ 290.31s]` VOICE ▶ protect_down (dur 6.08s)
|
||||
- `[ 290.31s]` VERDICT feat_shield_done: **OK** sim=0.9697
|
||||
- 期望: 护盾展开后会自动充能,好了我会告诉你。
|
||||
- 听到: 护盾展开后,会自充能。好了,我会告诉你。
|
||||
- `[ 290.31s]` SFX ♪ whoosh_down
|
||||
- `[ 293.31s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 293.31s]` SFX ♪ alarm
|
||||
- `[ 293.81s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 293.81s]` SFX ♪ alarm
|
||||
- `[ 294.31s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 294.31s]` SFX ♪ shield_block
|
||||
- `[ 294.31s]` VOICE ■ protect_down (kill)
|
||||
- `[ 294.31s]` VOICE ▶ protect_down (dur 6.08s)
|
||||
- `[ 294.31s]` VERDICT protect_down: **TRUNCATED** sim=0.5
|
||||
- 期望: 训练护盾接住了。那颗在下面,听到低沉的轰隆,向下滑。
|
||||
- 听到: 训练互动接住了,那刻在下面请训。
|
||||
- `[ 294.31s]` SFX ♪ whoosh_left
|
||||
- `[ 297.31s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 297.31s]` SFX ♪ alarm
|
||||
- `[ 297.81s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 297.81s]` SFX ♪ alarm
|
||||
- `[ 297.81s]` VIBRATE [15]
|
||||
- `[ 298.31s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 298.31s]` SFX ♪ shield_block
|
||||
- `[ 298.31s]` VOICE ■ protect_down (kill)
|
||||
- `[ 298.31s]` VOICE ▶ protect_left (dur 7.76s)
|
||||
- `[ 298.31s]` VERDICT protect_down: **TRUNCATED** sim=0.5
|
||||
- 期望: 训练护盾接住了。那颗在下面,听到低沉的轰隆,向下滑。
|
||||
- 听到: 训念互动接住了,那刻在下面请下。
|
||||
- `[ 298.31s]` SFX ♪ whoosh_down
|
||||
- `[ 298.31s]` VOICE ■ protect_left (kill)
|
||||
- `[ 298.31s]` VOICE ▶ dir_down (dur 0.5570975056689342s)
|
||||
- `[ 298.31s]` VERDICT protect_left: **TRUNCATED** sim=0
|
||||
- 期望: 训练护盾接住了。那颗在左边,听到左边的呼啸,向左滑。
|
||||
- 听到: 这。
|
||||
- `[ 299.08s]` VOICE ■ dir_down (kill)
|
||||
- `[ 299.08s]` VOICE ▶ shield_block (dur 1.6s)
|
||||
- `[ 299.08s]` VERDICT dir_down: **MISMATCH** sim=0
|
||||
- 期望: 下!
|
||||
- 听到: 跳。
|
||||
- `[ 299.82s]` **GESTURE** tap @(195,422)
|
||||
- `[ 300.19s]` VIBRATE [20]
|
||||
- `[ 300.19s]` VOICE ■ shield_block (kill)
|
||||
- `[ 300.19s]` VOICE ▶ shield_ready (dur 1.6s)
|
||||
- `[ 300.19s]` VERDICT shield_block: **TRUNCATED** sim=0.7273
|
||||
- 期望: 护盾挡下了撞击。
|
||||
- 听到: 护盾挡下。
|
||||
- `[ 300.80s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 300.80s]` VOICE ■ shield_ready (kill)
|
||||
- `[ 300.80s]` VOICE ▶ protect_end (dur 5.36s)
|
||||
- `[ 300.80s]` VERDICT shield_ready: **TRUNCATED** sim=0
|
||||
- 期望: 护盾充能完毕。
|
||||
- 听到: 虎。
|
||||
- `[ 301.31s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 301.31s]` SFX ♪ alarm
|
||||
- `[ 301.50s]` **GESTURE** tap @(195,422)
|
||||
- `[ 301.81s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 301.81s]` SFX ♪ alarm
|
||||
- `[ 301.86s]` VIBRATE [20]
|
||||
- `[ 301.86s]` VOICE ■ protect_end (kill)
|
||||
- `[ 301.86s]` VERDICT protect_end: **TRUNCATED** sim=0
|
||||
- 期望: 训练护盾关闭。接下来,靠你自己了。
|
||||
- 听到: 哼。
|
||||
- `[ 302.31s]` VIBRATE [80]
|
||||
- `[ 302.31s]` SFX ♪ hit
|
||||
- `[ 302.31s]` VOICE ▶ hit_down (dur 4.32s)
|
||||
- `[ 302.31s]` SFX ♪ whoosh_down
|
||||
- `[ 302.31s]` VOICE ■ hit_down (kill)
|
||||
- `[ 302.31s]` VOICE ▶ dir_down (dur 0.5570975056689342s)
|
||||
- `[ 302.31s]` VERDICT hit_down: **TRUNCATED** sim=0
|
||||
- 期望: 下面撞上的。听到低沉的轰隆,向下滑。
|
||||
- 听到: 让。
|
||||
- `[ 303.07s]` VOICE ■ dir_down (kill)
|
||||
- `[ 303.07s]` VERDICT dir_down: **MISMATCH** sim=0
|
||||
- 期望: 下!
|
||||
- 听到: 上。
|
||||
- `[ 305.31s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 305.31s]` SFX ♪ alarm
|
||||
- `[ 305.81s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 305.81s]` SFX ♪ alarm
|
||||
- `[ 306.31s]` VIBRATE [80]
|
||||
- `[ 306.31s]` SFX ♪ hit
|
||||
- `[ 306.31s]` VOICE ▶ hit_down (dur 4.32s)
|
||||
- `[ 306.31s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 306.31s]` SFX ♪ whoosh_up
|
||||
- `[ 306.31s]` VOICE ■ hit_down (kill)
|
||||
- `[ 306.31s]` VOICE ▶ dir_up (dur 0.39909297052154197s)
|
||||
- `[ 306.31s]` VERDICT hit_down: **TRUNCATED** sim=0.125
|
||||
- 期望: 下面撞上的。听到低沉的轰隆,向下滑。
|
||||
- 听到: 上。
|
||||
- `[ 306.79s]` VOICE ■ dir_up (kill)
|
||||
- `[ 306.79s]` VOICE ▶ hit_last (dur 2.72s)
|
||||
- `[ 306.79s]` VERDICT dir_up: **MISMATCH** sim=0
|
||||
- 期望: 上!
|
||||
- 听到: 张。
|
||||
- `[ 309.31s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 309.31s]` SFX ♪ alarm
|
||||
- `[ 309.50s]` VOICE ■ hit_last (kill)
|
||||
- `[ 309.50s]` VOICE ▶ gd_last_life (dur 2.8s)
|
||||
- `[ 309.50s]` VERDICT hit_last: **OK** sim=0.8696
|
||||
- 期望: 船体只剩最后一次了,小心!
|
||||
- 听到: 团体只剩最后一次了,小心这。
|
||||
- `[ 309.81s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 309.81s]` SFX ♪ alarm
|
||||
- `[ 310.31s]` VIBRATE [80]
|
||||
- `[ 310.31s]` VOICE ■ gd_last_life (kill)
|
||||
- `[ 310.31s]` VIBRATE [60,40,60]
|
||||
- `[ 310.31s]` SFX ♪ hit
|
||||
- `[ 310.31s]` SFX ♪ crash
|
||||
- `[ 310.31s]` VERDICT gd_last_life: **TRUNCATED** sim=0.4286
|
||||
- 期望: 这是最后一次机会,撑住。
|
||||
- 听到: 这是最美。
|
||||
- `[ 310.62s]` VIBRATE [80]
|
||||
- `[ 311.52s]` VOICE ▶ time_3 (dur 3.2s)
|
||||
- `[ 314.96s]` VOICE ■ time_3 (kill)
|
||||
- `[ 314.96s]` VOICE ▶ dodge_1 (dur 1.36s)
|
||||
- `[ 314.96s]` VERDICT time_3: **OK** sim=0.8696
|
||||
- 期望: 超过一分钟,合格的飞行员。
|
||||
- 听到: 超过一分钟,苛格的飞行员只。
|
||||
- `[ 316.56s]` VOICE ■ dodge_1 (kill)
|
||||
- `[ 316.56s]` VOICE ▶ restart_hint (dur 3.68s)
|
||||
- `[ 316.56s]` VERDICT dodge_1: **MISMATCH** sim=0.4
|
||||
- 期望: 只拨开几颗。
|
||||
- 听到: 只剥开即可。。
|
||||
- `[ 320.39s]` VOICE ■ restart_hint (kill)
|
||||
- `[ 320.39s]` BGM ♪ menu (loop)
|
||||
- `[ 320.39s]` VERDICT restart_hint: **OK** sim=0.9091
|
||||
- 期望: 单击再飞一次,下滑回大厅。
|
||||
- 听到: 单机再飞一次,下滑回大厅。
|
||||
- `[ 339.82s]` **GESTURE** tap @(195,422)
|
||||
- `[ 340.19s]` VIBRATE [20]
|
||||
- `[ 340.19s]` BGM ♪ engine (loop)
|
||||
- `[ 341.69s]` SFX ♪ whoosh_down
|
||||
- `[ 344.30s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 344.65s]` VIBRATE [10]
|
||||
- `[ 344.69s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 344.69s]` SFX ♪ alarm
|
||||
- `[ 345.19s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 345.19s]` SFX ♪ alarm
|
||||
- `[ 345.69s]` SFX ♪ dodge
|
||||
- `[ 345.69s]` SFX ♪ whoosh_up
|
||||
- `[ 348.69s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 348.69s]` SFX ♪ alarm
|
||||
- `[ 349.19s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 349.19s]` SFX ♪ alarm
|
||||
- `[ 349.69s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 349.69s]` SFX ♪ shield_block
|
||||
- `[ 349.69s]` VOICE ▶ protect_up (dur 6.96s)
|
||||
- `[ 349.69s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 349.69s]` SFX ♪ whoosh_up
|
||||
- `[ 352.69s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 352.69s]` SFX ♪ alarm
|
||||
- `[ 353.19s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 353.19s]` SFX ♪ alarm
|
||||
- `[ 353.69s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 353.69s]` SFX ♪ shield_block
|
||||
- `[ 353.69s]` VOICE ■ protect_up (kill)
|
||||
- `[ 353.69s]` VERDICT protect_up: **TRUNCATED** sim=0.6471
|
||||
- 期望: 训练护盾接住了。那颗在上面,听到高高的呼啸,向上滑。
|
||||
- 听到: 训练护令接住了,那颗在上面。
|
||||
- `[ 353.69s]` VOICE ▶ protect_up (dur 6.96s)
|
||||
- `[ 353.69s]` SFX ♪ whoosh_right
|
||||
- `[ 356.69s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 356.69s]` SFX ♪ alarm
|
||||
- `[ 357.19s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 357.19s]` SFX ♪ alarm
|
||||
- `[ 357.69s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 357.69s]` SFX ♪ shield_block
|
||||
- `[ 357.69s]` VOICE ■ protect_up (kill)
|
||||
- `[ 357.69s]` VOICE ▶ protect_right (dur 7.2s)
|
||||
- `[ 357.69s]` VERDICT protect_up: **TRUNCATED** sim=0.5882
|
||||
- 期望: 训练护盾接住了。那颗在上面,听到高高的呼啸,向上滑。
|
||||
- 听到: 训练互动接住了,那颗在上面。
|
||||
- `[ 357.69s]` SFX ♪ whoosh_left
|
||||
- `[ 360.69s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 360.69s]` SFX ♪ alarm
|
||||
- `[ 361.19s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 361.19s]` SFX ♪ alarm
|
||||
- `[ 361.69s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 361.69s]` SFX ♪ shield_block
|
||||
- `[ 361.69s]` VOICE ■ protect_right (kill)
|
||||
- `[ 361.69s]` VOICE ▶ protect_left (dur 7.76s)
|
||||
- `[ 361.69s]` VERDICT protect_right: **TRUNCATED** sim=0.7059
|
||||
- 期望: 训练护盾接住了。那颗在右边,听到右边的呼啸,向右滑。
|
||||
- 听到: 训练护盾接住了,那颗在右边。
|
||||
- `[ 361.69s]` SFX ♪ whoosh_left
|
||||
- `[ 364.69s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 364.69s]` SFX ♪ alarm
|
||||
- `[ 365.19s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 365.19s]` SFX ♪ alarm
|
||||
- `[ 365.69s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 365.69s]` SFX ♪ shield_block
|
||||
- `[ 365.69s]` VOICE ■ protect_left (kill)
|
||||
- `[ 365.69s]` VOICE ▶ protect_left (dur 7.76s)
|
||||
- `[ 365.69s]` VERDICT protect_left: **TRUNCATED** sim=0.4516
|
||||
- 期望: 训练护盾接住了。那颗在左边,听到左边的呼啸,向左滑。
|
||||
- 听到: 训练不遁接住了那颗。
|
||||
- `[ 365.69s]` SFX ♪ whoosh_right
|
||||
- `[ 368.70s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 368.70s]` SFX ♪ alarm
|
||||
- `[ 369.20s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 369.20s]` SFX ♪ alarm
|
||||
- `[ 369.70s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 369.70s]` SFX ♪ shield_block
|
||||
- `[ 369.70s]` VOICE ■ protect_left (kill)
|
||||
- `[ 369.70s]` VOICE ▶ protect_right (dur 7.2s)
|
||||
- `[ 369.70s]` VERDICT protect_left: **TRUNCATED** sim=0.5625
|
||||
- 期望: 训练护盾接住了。那颗在左边,听到左边的呼啸,向左滑。
|
||||
- 听到: 训练护盾接住了那颗训。
|
||||
- `[ 369.70s]` SFX ♪ whoosh_right
|
||||
- `[ 371.43s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 371.79s]` VIBRATE [10]
|
||||
- `[ 371.79s]` BGM ♪ menu (loop)
|
||||
- `[ 371.79s]` VOICE ■ protect_right (kill)
|
||||
- `[ 371.79s]` VOICE ▶ paused (dur 1.12s)
|
||||
- `[ 371.79s]` VERDICT protect_right: **TRUNCATED** sim=0.4828
|
||||
- 期望: 训练护盾接住了。那颗在右边,听到右边的呼啸,向右滑。
|
||||
- 听到: 训练护盾接住了。
|
||||
- `[ 372.91s]` VOICE ■ paused (kill)
|
||||
- `[ 372.91s]` VOICE ▶ menu_main (dur 4.16s)
|
||||
- `[ 372.91s]` VERDICT paused: **OK** sim=0.6667
|
||||
- 期望: 已暂停。
|
||||
- 听到: 你暂停。
|
||||
- `[ 377.02s]` VOICE ■ menu_main (kill)
|
||||
- `[ 377.02s]` VOICE ▶ menu_resume (dur 1.12s)
|
||||
- `[ 377.02s]` VERDICT menu_main: **OK** sim=0.9565
|
||||
- 期望: 菜单。单击切换选项,双击确认。
|
||||
- 听到: 菜单单击切换选项,双击确。
|
||||
- `[ 378.16s]` VOICE ■ menu_resume (kill)
|
||||
- `[ 378.16s]` VERDICT menu_resume: **OK** sim=1
|
||||
- 期望: 继续飞行。
|
||||
- 听到: 继续飞行。
|
||||
- `[ 404.95s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 405.20s]` VIBRATE [20]
|
||||
- `[ 405.20s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 405.20s]` BGM ♪ engine (loop)
|
||||
- `[ 405.20s]` VOICE ▶ protect_end (dur 5.36s)
|
||||
- `[ 406.00s]` SFX ♪ whoosh_down
|
||||
- `[ 406.00s]` VOICE ■ protect_end (kill)
|
||||
- `[ 406.00s]` VOICE ▶ dir_down (dur 0.5570975056689342s)
|
||||
- `[ 406.76s]` VOICE ■ dir_down (kill)
|
||||
- `[ 409.00s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 409.00s]` SFX ♪ alarm
|
||||
- `[ 409.50s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 409.50s]` SFX ♪ alarm
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,617 @@
|
||||
# space 实时会话 transcript
|
||||
|
||||
- `[ -0.08s]` **GESTURE** tap @(195,422)
|
||||
- `[ 0.00s]` REC 开始 (audio/webm;codecs=opus)
|
||||
- `[ 0.10s]` VOICE ▶ second_run_ask (dur 3.04s)
|
||||
- `[ 2.35s]` VOICE ■ second_run_ask (kill)
|
||||
- `[ 2.35s]` VERDICT second_run_ask: **OK** sim=0.96
|
||||
- 期望: 上滑重新听演练,单击直接出发。
|
||||
- 听到: 上滑重新听演练,单击直接出。
|
||||
- `[ 2.41s]` **GESTURE** tap @(195,422)
|
||||
- `[ 2.78s]` VIBRATE [20]
|
||||
- `[ 2.97s]` BGM ♪ engine (loop)
|
||||
- `[ 3.59s]` **GESTURE** tap @(195,422)
|
||||
- `[ 3.95s]` VIBRATE [20]
|
||||
- `[ 4.28s]` SFX ♪ whoosh_up
|
||||
- `[ 4.76s]` **GESTURE** tap @(195,422)
|
||||
- `[ 5.12s]` VIBRATE [20]
|
||||
- `[ 5.93s]` **GESTURE** swipeleft @(195,422)
|
||||
- `[ 6.30s]` VIBRATE [10]
|
||||
- `[ 7.28s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 7.28s]` SFX ♪ alarm
|
||||
- `[ 7.71s]` **GESTURE** swiperight @(195,422)
|
||||
- `[ 7.78s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 7.78s]` SFX ♪ alarm
|
||||
- `[ 8.06s]` VIBRATE [10]
|
||||
- `[ 8.28s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 8.28s]` SFX ♪ shield_block
|
||||
- `[ 8.28s]` VOICE ▶ protect_up (dur 4.8s)
|
||||
- `[ 8.28s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 8.28s]` SFX ♪ whoosh_down
|
||||
- `[ 11.28s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 11.28s]` SFX ♪ alarm
|
||||
- `[ 11.78s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 11.78s]` SFX ♪ alarm
|
||||
- `[ 11.94s]` VOICE ■ protect_up (kill)
|
||||
- `[ 11.94s]` VERDICT protect_up: **OK** sim=0.6977
|
||||
- 期望: 训练护盾接住了。那颗在上面,听到高高的呼啸,向上滑。
|
||||
- 听到: 训练护动接住,那裤子上面听到高高的呼啸,肖哨话。
|
||||
- `[ 12.28s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 12.28s]` SFX ♪ shield_block
|
||||
- `[ 12.28s]` VOICE ▶ protect_down (dur 5.04s)
|
||||
- `[ 12.29s]` SFX ♪ whoosh_down
|
||||
- `[ 15.29s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 15.29s]` SFX ♪ alarm
|
||||
- `[ 15.79s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 15.79s]` SFX ♪ alarm
|
||||
- `[ 16.21s]` VOICE ■ protect_down (kill)
|
||||
- `[ 16.21s]` VERDICT protect_down: **OK** sim=0.8837
|
||||
- 期望: 训练护盾接住了。那颗在下面,听到低沉的轰隆,向下滑。
|
||||
- 听到: 训练护盾切住,那刻在下面听到低沉的轰隆向下滑。
|
||||
- `[ 16.29s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 16.29s]` SFX ♪ shield_block
|
||||
- `[ 16.29s]` VOICE ▶ protect_down (dur 5.04s)
|
||||
- `[ 16.29s]` SFX ♪ whoosh_up
|
||||
- `[ 19.29s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 19.29s]` SFX ♪ alarm
|
||||
- `[ 19.79s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 19.79s]` SFX ♪ alarm
|
||||
- `[ 20.20s]` VOICE ■ protect_down (kill)
|
||||
- `[ 20.20s]` VERDICT protect_down: **OK** sim=0.7442
|
||||
- 期望: 训练护盾接住了。那颗在下面,听到低沉的轰隆,向下滑。
|
||||
- 听到: 训疗后段接轨,那刻在下面听到低沉的轰隆向下滑。
|
||||
- `[ 20.29s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 20.29s]` SFX ♪ shield_block
|
||||
- `[ 20.29s]` VOICE ▶ protect_up (dur 4.8s)
|
||||
- `[ 20.29s]` SFX ♪ whoosh_left
|
||||
- `[ 22.78s]` VOICE ■ protect_up (kill)
|
||||
- `[ 22.78s]` VOICE ▶ feat_boost (dur 3.84s)
|
||||
- `[ 22.78s]` VERDICT protect_up: **TRUNCATED** sim=0.5143
|
||||
- 期望: 训练护盾接住了。那颗在上面,听到高高的呼啸,向上滑。
|
||||
- 听到: 训练互动接住,那刻子上面听到。
|
||||
- `[ 25.87s]` VOICE ■ feat_boost (kill)
|
||||
- `[ 25.87s]` VERDICT feat_boost: **OK** sim=0.8235
|
||||
- 期望: 试试单击,引擎会短促加速,直接冲过空隙。
|
||||
- 听到: 试试单机,引擎或短途加速,直接冲过空隙。
|
||||
- `[ 27.43s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 27.68s]` VIBRATE [20]
|
||||
- `[ 29.35s]` **GESTURE** tap @(195,422)
|
||||
- `[ 29.71s]` VIBRATE [20]
|
||||
- `[ 29.71s]` SFX ♪ boost
|
||||
- `[ 29.71s]` VOICE ▶ feat_boost_done (dur 3.44s)
|
||||
- `[ 29.71s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 31.14s]` **GESTURE** swiperight @(195,422)
|
||||
- `[ 31.49s]` VIBRATE [10]
|
||||
- `[ 32.21s]` SFX ♪ whoosh_left
|
||||
- `[ 32.23s]` VOICE ■ feat_boost_done (kill)
|
||||
- `[ 32.23s]` VERDICT feat_boost_done: **OK** sim=0.8387
|
||||
- 期望: 感觉到了吗?加速的时候,陨石撞不上你。
|
||||
- 听到: 感觉到了吗?下死的时候陨石撞不上。
|
||||
- `[ 32.95s]` **GESTURE** tap @(195,422)
|
||||
- `[ 33.31s]` VIBRATE [20]
|
||||
- `[ 33.31s]` SFX ♪ boost
|
||||
- `[ 34.09s]` **GESTURE** tap @(195,422)
|
||||
- `[ 34.45s]` VIBRATE [20]
|
||||
- `[ 35.21s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 35.21s]` SFX ♪ alarm
|
||||
- `[ 35.60s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 35.71s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 35.71s]` SFX ♪ alarm
|
||||
- `[ 35.85s]` VIBRATE [20]
|
||||
- `[ 35.85s]` VIBRATE [40,100,40]
|
||||
- `[ 35.85s]` VOICE ▶ feat_shield_done (dur 4.64s)
|
||||
- `[ 35.85s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 36.21s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 36.21s]` SFX ♪ shield_block
|
||||
- `[ 36.21s]` VOICE ■ feat_shield_done (kill)
|
||||
- `[ 36.21s]` VOICE ▶ protect_left (dur 6.32s)
|
||||
- `[ 36.21s]` VERDICT feat_shield_done: **TRUNCATED** sim=0
|
||||
- 期望: 护盾展开后会自动充能,好了我会告诉你。
|
||||
- 听到: 。
|
||||
- `[ 36.21s]` SFX ♪ whoosh_right
|
||||
- `[ 37.12s]` **GESTURE** swipeleft @(195,422)
|
||||
- `[ 37.48s]` VIBRATE [10]
|
||||
- `[ 38.47s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 38.83s]` VIBRATE [10]
|
||||
- `[ 38.83s]` VOICE ■ protect_left (kill)
|
||||
- `[ 38.83s]` VOICE ▶ paused (dur 0.9570975056689343s)
|
||||
- `[ 38.83s]` VERDICT protect_left: **TRUNCATED** sim=0.5455
|
||||
- 期望: 训练护盾接住了。那颗在左边,听到左边的呼啸,向左滑。
|
||||
- 听到: 训练护臀接住,内颗在左边。
|
||||
- `[ 38.97s]` BGM ♪ menu (loop)
|
||||
- `[ 39.77s]` VOICE ■ paused (kill)
|
||||
- `[ 39.77s]` VOICE ▶ menu_main (dur 3.92s)
|
||||
- `[ 39.77s]` VERDICT paused: **OK** sim=1
|
||||
- 期望: 已暂停。
|
||||
- 听到: 已暂停。
|
||||
- `[ 40.64s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 40.99s]` VIBRATE [10]
|
||||
- `[ 40.99s]` BGM ♪ engine (loop)
|
||||
- `[ 41.79s]` SFX ♪ whoosh_up
|
||||
- `[ 42.44s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 42.79s]` VIBRATE [10]
|
||||
- `[ 42.79s]` BGM ♪ menu (loop)
|
||||
- `[ 42.79s]` VOICE ■ menu_main (kill)
|
||||
- `[ 42.79s]` VOICE ▶ paused (dur 0.9570975056689343s)
|
||||
- `[ 42.79s]` VERDICT menu_main: **OK** sim=1
|
||||
- 期望: 菜单。单击切换选项,双击确认。
|
||||
- 听到: 菜单单击切换选项,双击确认。
|
||||
- `[ 43.74s]` VOICE ■ paused (kill)
|
||||
- `[ 43.74s]` VOICE ▶ menu_main (dur 3.92s)
|
||||
- `[ 43.74s]` VERDICT paused: **OK** sim=1
|
||||
- 期望: 已暂停。
|
||||
- 听到: 已暂停。
|
||||
- `[ 44.55s]` **GESTURE** swipeup @(195,422)
|
||||
- `[ 44.91s]` VIBRATE [10]
|
||||
- `[ 44.91s]` VOICE ■ menu_main (kill)
|
||||
- `[ 44.91s]` VOICE ▶ help_recap (dur 8.4s)
|
||||
- `[ 44.91s]` VERDICT menu_main: **TRUNCATED** sim=0.2857
|
||||
- 期望: 菜单。单击切换选项,双击确认。
|
||||
- 听到: 菜单。
|
||||
- `[ 45.89s]` **GESTURE** tap @(195,422)
|
||||
- `[ 46.26s]` VIBRATE [20]
|
||||
- `[ 46.26s]` VOICE ■ help_recap (kill)
|
||||
- `[ 46.26s]` VOICE ▶ menu_lobby (dur 1.04s)
|
||||
- `[ 46.26s]` VERDICT help_recap: **TRUNCATED** sim=0.359
|
||||
- 期望: 左边来向左滑,右边来向右滑,上面来向上滑,下面来向下滑。单击加速,双击护盾。
|
||||
- 听到: 左边来向左滑右。
|
||||
- `[ 47.20s]` VOICE ■ menu_lobby (kill)
|
||||
- `[ 47.20s]` VERDICT menu_lobby: **OK** sim=1
|
||||
- 期望: 回大厅。
|
||||
- 听到: 回大厅。
|
||||
- `[ 47.39s]` **GESTURE** swipeup @(195,422)
|
||||
- `[ 47.74s]` VIBRATE [10]
|
||||
- `[ 47.74s]` VOICE ▶ help_recap (dur 8.4s)
|
||||
- `[ 48.88s]` **GESTURE** tap @(195,422)
|
||||
- `[ 49.25s]` VIBRATE [20]
|
||||
- `[ 49.25s]` VOICE ■ help_recap (kill)
|
||||
- `[ 49.25s]` VERDICT help_recap: **TRUNCATED** sim=0.4
|
||||
- 期望: 左边来向左滑,右边来向右滑,上面来向上滑,下面来向下滑。单击加速,双击护盾。
|
||||
- 听到: 左边来向左滑,右边。
|
||||
- `[ 49.25s]` VOICE ▶ menu_help (dur 1.6s)
|
||||
- `[ 50.46s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 50.48s]` VOICE ■ menu_help (kill)
|
||||
- `[ 50.48s]` VERDICT menu_help: **OK** sim=0.875
|
||||
- 期望: 重新听教学要点。
|
||||
- 听到: 右边重新听教学要点。
|
||||
- `[ 50.71s]` VIBRATE [20]
|
||||
- `[ 50.71s]` VOICE ▶ help_recap (dur 8.4s)
|
||||
- `[ 51.70s]` **GESTURE** swipeleft @(195,422)
|
||||
- `[ 52.06s]` VIBRATE [10]
|
||||
- `[ 53.26s]` **GESTURE** tap @(195,422)
|
||||
- `[ 53.62s]` VIBRATE [20]
|
||||
- `[ 53.62s]` VOICE ■ help_recap (kill)
|
||||
- `[ 53.62s]` VOICE ▶ menu_resume (dur 1.12s)
|
||||
- `[ 53.62s]` VERDICT help_recap: **TRUNCATED** sim=0.6383
|
||||
- 期望: 左边来向左滑,右边来向右滑,上面来向上滑,下面来向下滑。单击加速,双击护盾。
|
||||
- 听到: 左边来向左滑,右边来向右滑,上面来。
|
||||
- `[ 54.56s]` VOICE ■ menu_resume (kill)
|
||||
- `[ 54.56s]` VERDICT menu_resume: **OK** sim=0.8889
|
||||
- 期望: 继续飞行。
|
||||
- 听到: 来继续飞行。
|
||||
- `[ 55.26s]` **GESTURE** swipeup @(195,422)
|
||||
- `[ 55.63s]` VIBRATE [10]
|
||||
- `[ 55.63s]` VOICE ▶ help_recap (dur 8.4s)
|
||||
- `[ 56.97s]` **GESTURE** tap @(195,422)
|
||||
- `[ 57.33s]` VIBRATE [20]
|
||||
- `[ 57.33s]` VOICE ■ help_recap (kill)
|
||||
- `[ 57.33s]` VOICE ▶ menu_lobby (dur 1.04s)
|
||||
- `[ 57.33s]` VERDICT help_recap: **TRUNCATED** sim=0.439
|
||||
- 期望: 左边来向左滑,右边来向右滑,上面来向上滑,下面来向下滑。单击加速,双击护盾。
|
||||
- 听到: 左边来向左滑,右边来。
|
||||
- `[ 58.28s]` VOICE ■ menu_lobby (kill)
|
||||
- `[ 58.28s]` VERDICT menu_lobby: **OK** sim=0.8571
|
||||
- 期望: 回大厅。
|
||||
- 听到: 来回大厅。
|
||||
- `[ 58.63s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 58.99s]` VIBRATE [10]
|
||||
- `[ 58.99s]` BGM ♪ engine (loop)
|
||||
- `[ 58.99s]` VOICE ▶ feat_shield (dur 2.8s)
|
||||
- `[ 61.00s]` **GESTURE** swipeup @(195,422)
|
||||
- `[ 61.25s]` VOICE ■ feat_shield (kill)
|
||||
- `[ 61.25s]` VERDICT feat_shield: **OK** sim=1
|
||||
- 期望: 双击展开护盾,能挡下一次撞击。
|
||||
- 听到: 双击展开护盾,能挡下一次撞击。
|
||||
- `[ 61.36s]` VIBRATE [10]
|
||||
- `[ 63.06s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 63.43s]` VIBRATE [10]
|
||||
- `[ 64.37s]` **GESTURE** swipeup @(195,422)
|
||||
- `[ 64.73s]` VIBRATE [10]
|
||||
- `[ 66.60s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 66.84s]` VIBRATE [20]
|
||||
- `[ 66.84s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 66.84s]` SFX ♪ shield
|
||||
- `[ 66.84s]` VOICE ▶ feat_shield_done (dur 4.64s)
|
||||
- `[ 66.84s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 66.84s]` VOICE ■ feat_shield_done (kill)
|
||||
- `[ 66.84s]` VOICE ▶ protect_end (dur 3.6s)
|
||||
- `[ 66.84s]` VERDICT feat_shield_done: **TRUNCATED** sim=0
|
||||
- 期望: 护盾展开后会自动充能,好了我会告诉你。
|
||||
- 听到: 不是。
|
||||
- `[ 68.72s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 69.08s]` VIBRATE [10]
|
||||
- `[ 69.08s]` BGM ♪ menu (loop)
|
||||
- `[ 69.08s]` VOICE ■ protect_end (kill)
|
||||
- `[ 69.08s]` VOICE ▶ paused (dur 0.9570975056689343s)
|
||||
- `[ 69.08s]` VERDICT protect_end: **TRUNCATED** sim=0.6087
|
||||
- 期望: 训练护盾关闭。接下来,靠你自己了。
|
||||
- 听到: 训练部动关闭,接下来。
|
||||
- `[ 70.03s]` VOICE ■ paused (kill)
|
||||
- `[ 70.03s]` VOICE ▶ menu_main (dur 3.92s)
|
||||
- `[ 70.03s]` VERDICT paused: **OK** sim=1
|
||||
- 期望: 已暂停。
|
||||
- 听到: 已暂停。
|
||||
- `[ 71.05s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 71.30s]` VIBRATE [20]
|
||||
- `[ 71.30s]` BGM ♪ engine (loop)
|
||||
- `[ 72.10s]` SFX ♪ whoosh_left
|
||||
- `[ 72.10s]` VOICE ■ menu_main (kill)
|
||||
- `[ 72.10s]` VOICE ▶ dir_left (dur 0.39909297052154197s)
|
||||
- `[ 72.10s]` VERDICT menu_main: **TRUNCATED** sim=0.8
|
||||
- 期望: 菜单。单击切换选项,双击确认。
|
||||
- 听到: 菜单单击切换选项。
|
||||
- `[ 72.49s]` VOICE ■ dir_left (kill)
|
||||
- `[ 72.49s]` VERDICT dir_left: **MISMATCH** sim=0
|
||||
- 期望: 左!
|
||||
- 听到: 走。
|
||||
- `[ 72.75s]` **GESTURE** swiperight @(195,422)
|
||||
- `[ 73.11s]` VIBRATE [10]
|
||||
- `[ 74.97s]` **GESTURE** swipeup @(195,422)
|
||||
- `[ 75.10s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 75.10s]` SFX ♪ alarm
|
||||
- `[ 75.33s]` VIBRATE [10]
|
||||
- `[ 75.60s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 75.60s]` SFX ♪ alarm
|
||||
- `[ 76.10s]` VIBRATE [80]
|
||||
- `[ 76.10s]` SFX ♪ hit
|
||||
- `[ 76.10s]` VOICE ▶ hit_left (dur 3.52s)
|
||||
- `[ 76.10s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 76.10s]` SFX ♪ whoosh_down
|
||||
- `[ 76.10s]` VOICE ■ hit_left (kill)
|
||||
- `[ 76.10s]` VOICE ▶ dir_down (dur 0.39909297052154197s)
|
||||
- `[ 76.10s]` VERDICT hit_left: **TRUNCATED** sim=0
|
||||
- 期望: 左边撞上的。听到左边的呼啸,向左滑。
|
||||
- 听到: 嗯。
|
||||
- `[ 76.50s]` VOICE ■ dir_down (kill)
|
||||
- `[ 76.50s]` VERDICT dir_down: **MISMATCH** sim=0
|
||||
- 期望: 下!
|
||||
- 听到: 回这。
|
||||
- `[ 77.18s]` **GESTURE** tap @(195,422)
|
||||
- `[ 77.54s]` VIBRATE [20]
|
||||
- `[ 77.54s]` SFX ♪ boost
|
||||
- `[ 79.10s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 79.10s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 79.10s]` SFX ♪ alarm
|
||||
- `[ 79.46s]` VIBRATE [10]
|
||||
- `[ 79.60s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 79.60s]` SFX ♪ alarm
|
||||
- `[ 80.10s]` SFX ♪ dodge
|
||||
- `[ 80.10s]` SFX ♪ whoosh_down
|
||||
- `[ 80.10s]` VOICE ▶ dir_down (dur 0.39909297052154197s)
|
||||
- `[ 80.10s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 80.50s]` VOICE ■ dir_down (kill)
|
||||
- `[ 80.50s]` VERDICT dir_down: **OK** sim=0.6667
|
||||
- 期望: 下!
|
||||
- 听到: 下你。
|
||||
- `[ 80.74s]` **GESTURE** swipeleft @(195,422)
|
||||
- `[ 81.09s]` VIBRATE [10]
|
||||
- `[ 81.84s]` VIBRATE [15]
|
||||
- `[ 81.84s]` VOICE ▶ shield_ready (dur 1.28s)
|
||||
- `[ 82.27s]` **GESTURE** tap @(195,422)
|
||||
- `[ 82.64s]` VIBRATE [20]
|
||||
- `[ 82.64s]` VOICE ■ shield_ready (kill)
|
||||
- `[ 82.64s]` VERDICT shield_ready: **TRUNCATED** sim=0
|
||||
- 期望: 护盾充能完毕。
|
||||
- 听到: 不段冲动。
|
||||
- `[ 83.01s]` SFX ♪ whoosh_down
|
||||
- `[ 83.01s]` VOICE ▶ dir_down (dur 0.39909297052154197s)
|
||||
- `[ 83.10s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 83.10s]` SFX ♪ alarm
|
||||
- `[ 83.40s]` VOICE ■ dir_down (kill)
|
||||
- `[ 83.40s]` VERDICT dir_down: **MISMATCH** sim=0
|
||||
- 期望: 下!
|
||||
- 听到: 这。
|
||||
- `[ 83.60s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 83.60s]` SFX ♪ alarm
|
||||
- `[ 84.10s]` VIBRATE [80]
|
||||
- `[ 84.10s]` SFX ♪ hit
|
||||
- `[ 84.10s]` VOICE ▶ hit_down (dur 5.28s)
|
||||
- `[ 84.25s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 84.61s]` VIBRATE [10]
|
||||
- `[ 84.64s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 84.64s]` SFX ♪ alarm
|
||||
- `[ 85.14s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 85.14s]` SFX ♪ alarm
|
||||
- `[ 85.64s]` SFX ♪ dodge
|
||||
- `[ 85.88s]` SFX ♪ whoosh_right
|
||||
- `[ 85.88s]` VOICE ■ hit_down (kill)
|
||||
- `[ 85.88s]` VOICE ▶ dir_right (dur 0.7170975056689343s)
|
||||
- `[ 85.88s]` VERDICT hit_down: **TRUNCATED** sim=0.2105
|
||||
- 期望: 下面撞上的。听到低沉的轰隆,向下滑。
|
||||
- 听到: 向你撞上。
|
||||
- `[ 86.30s]` **GESTURE** tap @(195,422)
|
||||
- `[ 86.53s]` VOICE ■ dir_right (kill)
|
||||
- `[ 86.53s]` VOICE ▶ hit_last (dur 2.88s)
|
||||
- `[ 86.53s]` VERDICT dir_right: **MISMATCH** sim=0
|
||||
- 期望: 右!
|
||||
- 听到: 娘。
|
||||
- `[ 86.66s]` VIBRATE [20]
|
||||
- `[ 86.66s]` VOICE ■ hit_last (kill)
|
||||
- `[ 86.66s]` VERDICT hit_last: **TRUNCATED** sim=0
|
||||
- 期望: 船体只剩最后一次了,小心!
|
||||
- 听到: 啊。
|
||||
- `[ 87.48s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 87.48s]` SFX ♪ alarm
|
||||
- `[ 87.94s]` **GESTURE** tap @(195,422)
|
||||
- `[ 87.98s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 87.98s]` SFX ♪ alarm
|
||||
- `[ 88.30s]` VIBRATE [20]
|
||||
- `[ 88.30s]` SFX ♪ boost
|
||||
- `[ 88.48s]` SFX ♪ dodge
|
||||
- `[ 88.69s]` SFX ♪ whoosh_left
|
||||
- `[ 88.69s]` VOICE ▶ dir_left (dur 0.39909297052154197s)
|
||||
- `[ 88.69s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 89.09s]` VOICE ■ dir_left (kill)
|
||||
- `[ 89.09s]` VERDICT dir_left: **MISMATCH** sim=0
|
||||
- 期望: 左!
|
||||
- 听到: 我。
|
||||
- `[ 89.46s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 89.70s]` VIBRATE [20]
|
||||
- `[ 89.70s]` SFX ♪ shield
|
||||
- `[ 90.28s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 90.28s]` SFX ♪ alarm
|
||||
- `[ 90.78s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 90.78s]` SFX ♪ alarm
|
||||
- `[ 90.96s]` **GESTURE** swipeup @(195,422)
|
||||
- `[ 91.28s]` VIBRATE [100]
|
||||
- `[ 91.28s]` SFX ♪ shield_block
|
||||
- `[ 91.28s]` VOICE ▶ shield_block (dur 1.44s)
|
||||
- `[ 91.28s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 91.31s]` VIBRATE [10]
|
||||
- `[ 91.46s]` SFX ♪ whoosh_down
|
||||
- `[ 91.46s]` VOICE ■ shield_block (kill)
|
||||
- `[ 91.46s]` VOICE ▶ dir_down (dur 0.39909297052154197s)
|
||||
- `[ 91.46s]` VERDICT shield_block: **TRUNCATED** sim=0
|
||||
- 期望: 护盾挡下了撞击。
|
||||
- 听到: 。
|
||||
- `[ 91.85s]` VOICE ■ dir_down (kill)
|
||||
- `[ 91.85s]` VERDICT dir_down: **MISMATCH** sim=0
|
||||
- 期望: 下!
|
||||
- 听到: 这。
|
||||
- `[ 92.44s]` **GESTURE** tap @(195,422)
|
||||
- `[ 92.81s]` VIBRATE [20]
|
||||
- `[ 92.81s]` SFX ♪ boost
|
||||
- `[ 93.02s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 93.02s]` SFX ♪ alarm
|
||||
- `[ 93.52s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 93.52s]` SFX ♪ alarm
|
||||
- `[ 94.02s]` SFX ♪ dodge
|
||||
- `[ 94.18s]` SFX ♪ whoosh_left
|
||||
- `[ 94.18s]` VOICE ▶ dir_left (dur 0.39909297052154197s)
|
||||
- `[ 94.18s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 94.25s]` **GESTURE** swipeleft @(195,422)
|
||||
- `[ 94.57s]` VOICE ■ dir_left (kill)
|
||||
- `[ 94.57s]` VERDICT dir_left: **MISMATCH** sim=0
|
||||
- 期望: 左!
|
||||
- 听到: 说。
|
||||
- `[ 94.61s]` VIBRATE [10]
|
||||
- `[ 95.72s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 95.72s]` SFX ♪ alarm
|
||||
- `[ 95.95s]` **GESTURE** tap @(195,422)
|
||||
- `[ 96.22s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 96.22s]` SFX ♪ alarm
|
||||
- `[ 96.31s]` VIBRATE [20]
|
||||
- `[ 96.31s]` SFX ♪ boost
|
||||
- `[ 96.72s]` SFX ♪ dodge
|
||||
- `[ 96.86s]` SFX ♪ whoosh_down
|
||||
- `[ 96.86s]` VOICE ▶ dir_down (dur 0.39909297052154197s)
|
||||
- `[ 96.86s]` VERDICT (无语音区间): **SFX_BGM_ONLY**
|
||||
- `[ 97.24s]` VOICE ■ dir_down (kill)
|
||||
- `[ 97.24s]` VERDICT dir_down: **MISMATCH** sim=0
|
||||
- 期望: 下!
|
||||
- 听到: 在。
|
||||
- `[ 98.37s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 98.37s]` SFX ♪ alarm
|
||||
- `[ 98.87s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 98.87s]` SFX ♪ alarm
|
||||
- `[ 99.37s]` VIBRATE [80]
|
||||
- `[ 99.38s]` VIBRATE [60,40,60]
|
||||
- `[ 99.38s]` SFX ♪ hit
|
||||
- `[ 99.38s]` SFX ♪ crash
|
||||
- `[ 99.67s]` VIBRATE [80]
|
||||
- `[ 100.58s]` VIBRATE [100]
|
||||
- `[ 100.58s]` VOICE ▶ time_3 (dur 2.56s)
|
||||
- `[ 102.65s]` VOICE ■ time_3 (kill)
|
||||
- `[ 102.65s]` VOICE ▶ new_record (dur 0.9570975056689343s)
|
||||
- `[ 103.60s]` VOICE ■ new_record (kill)
|
||||
- `[ 103.61s]` VOICE ▶ dodge_2 (dur 1.28s)
|
||||
- `[ 104.83s]` VOICE ■ dodge_2 (kill)
|
||||
- `[ 104.84s]` VOICE ▶ restart_hint (dur 3.12s)
|
||||
- `[ 107.36s]` VOICE ■ restart_hint (kill)
|
||||
- `[ 107.36s]` BGM ♪ menu (loop)
|
||||
- `[ 112.22s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 112.47s]` VIBRATE [20]
|
||||
- `[ 113.32s]` **GESTURE** tap @(195,422)
|
||||
- `[ 113.69s]` VIBRATE [20]
|
||||
- `[ 113.69s]` BGM ♪ engine (loop)
|
||||
- `[ 114.72s]` **GESTURE** swiperight @(195,422)
|
||||
- `[ 115.07s]` VIBRATE [10]
|
||||
- `[ 115.19s]` SFX ♪ whoosh_up
|
||||
- `[ 116.46s]` **GESTURE** swipeleft @(195,422)
|
||||
- `[ 116.82s]` VIBRATE [10]
|
||||
- `[ 118.19s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 118.19s]` SFX ♪ alarm
|
||||
- `[ 118.27s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 118.62s]` VIBRATE [10]
|
||||
- `[ 118.63s]` BGM ♪ menu (loop)
|
||||
- `[ 118.63s]` VOICE ▶ paused (dur 0.9570975056689343s)
|
||||
- `[ 119.57s]` VOICE ■ paused (kill)
|
||||
- `[ 119.57s]` VOICE ▶ menu_main (dur 3.92s)
|
||||
- `[ 119.82s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 120.06s]` VIBRATE [20]
|
||||
- `[ 120.06s]` BGM ♪ engine (loop)
|
||||
- `[ 120.86s]` SFX ♪ whoosh_down
|
||||
- `[ 121.64s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 121.89s]` VIBRATE [20]
|
||||
- `[ 121.89s]` SFX ♪ shield
|
||||
- `[ 122.66s]` VOICE ■ menu_main (kill)
|
||||
- `[ 122.66s]` VOICE ▶ menu_resume (dur 1.12s)
|
||||
- `[ 123.52s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 123.61s]` VOICE ■ menu_resume (kill)
|
||||
- `[ 123.76s]` VIBRATE [20]
|
||||
- `[ 123.76s]` VIBRATE [40,100,40]
|
||||
- `[ 123.76s]` VOICE ▶ feat_shield_done (dur 4.64s)
|
||||
- `[ 123.86s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 123.86s]` SFX ♪ alarm
|
||||
- `[ 124.36s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 124.36s]` SFX ♪ alarm
|
||||
- `[ 124.58s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 124.83s]` VIBRATE [20]
|
||||
- `[ 124.86s]` VIBRATE [100]
|
||||
- `[ 124.86s]` SFX ♪ shield_block
|
||||
- `[ 124.86s]` SFX ♪ whoosh_down
|
||||
- `[ 125.80s]` **GESTURE** swipeleft @(195,422)
|
||||
- `[ 126.16s]` VIBRATE [10]
|
||||
- `[ 126.99s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 127.24s]` VIBRATE [20]
|
||||
- `[ 127.40s]` VOICE ■ feat_shield_done (kill)
|
||||
- `[ 127.40s]` VOICE ▶ shield_block (dur 1.44s)
|
||||
- `[ 127.86s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 127.86s]` SFX ♪ alarm
|
||||
- `[ 128.37s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 128.37s]` SFX ♪ alarm
|
||||
- `[ 128.63s]` VOICE ■ shield_block (kill)
|
||||
- `[ 128.70s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 128.87s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 128.87s]` SFX ♪ shield_block
|
||||
- `[ 128.87s]` VOICE ▶ protect_down (dur 5.04s)
|
||||
- `[ 128.87s]` SFX ♪ whoosh_up
|
||||
- `[ 129.06s]` VIBRATE [10]
|
||||
- `[ 130.52s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 130.87s]` VIBRATE [10]
|
||||
- `[ 130.87s]` BGM ♪ menu (loop)
|
||||
- `[ 130.87s]` VOICE ■ protect_down (kill)
|
||||
- `[ 130.87s]` VOICE ▶ paused (dur 0.9570975056689343s)
|
||||
- `[ 131.83s]` VOICE ■ paused (kill)
|
||||
- `[ 131.83s]` VOICE ▶ menu_main (dur 3.92s)
|
||||
- `[ 131.85s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 132.21s]` VIBRATE [10]
|
||||
- `[ 132.21s]` BGM ♪ engine (loop)
|
||||
- `[ 132.95s]` **GESTURE** swiperight @(195,422)
|
||||
- `[ 133.01s]` SFX ♪ whoosh_down
|
||||
- `[ 133.31s]` VIBRATE [10]
|
||||
- `[ 134.70s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 134.92s]` VOICE ■ menu_main (kill)
|
||||
- `[ 134.92s]` VOICE ▶ menu_resume (dur 1.12s)
|
||||
- `[ 135.06s]` VIBRATE [10]
|
||||
- `[ 135.87s]` VOICE ■ menu_resume (kill)
|
||||
- `[ 136.01s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 136.01s]` SFX ♪ alarm
|
||||
- `[ 136.51s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 136.51s]` SFX ♪ alarm
|
||||
- `[ 136.61s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 136.86s]` VIBRATE [20]
|
||||
- `[ 136.86s]` VIBRATE [40,100,40]
|
||||
- `[ 136.86s]` VOICE ▶ feat_shield_done (dur 4.64s)
|
||||
- `[ 136.89s]` VIBRATE [15]
|
||||
- `[ 137.01s]` SFX ♪ dodge
|
||||
- `[ 137.01s]` SFX ♪ whoosh_left
|
||||
- `[ 137.70s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 137.94s]` VIBRATE [20]
|
||||
- `[ 137.94s]` SFX ♪ shield
|
||||
- `[ 139.43s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 139.79s]` VIBRATE [10]
|
||||
- `[ 139.79s]` BGM ♪ menu (loop)
|
||||
- `[ 139.79s]` VOICE ■ feat_shield_done (kill)
|
||||
- `[ 139.79s]` VOICE ▶ paused (dur 0.9570975056689343s)
|
||||
- `[ 140.53s]` **GESTURE** tap @(195,422)
|
||||
- `[ 140.75s]` VOICE ■ paused (kill)
|
||||
- `[ 140.75s]` VOICE ▶ shield_ready (dur 1.28s)
|
||||
- `[ 140.75s]` VOICE ■ shield_ready (kill)
|
||||
- `[ 140.75s]` VOICE ▶ menu_main (dur 3.92s)
|
||||
- `[ 140.89s]` VIBRATE [20]
|
||||
- `[ 140.89s]` VOICE ■ menu_main (kill)
|
||||
- `[ 140.89s]` VOICE ▶ menu_lobby (dur 1.04s)
|
||||
- `[ 141.79s]` **GESTURE** swiperight @(195,422)
|
||||
- `[ 141.84s]` VOICE ■ menu_lobby (kill)
|
||||
- `[ 142.16s]` VIBRATE [10]
|
||||
- `[ 143.15s]` **GESTURE** tap @(195,422)
|
||||
- `[ 143.51s]` VIBRATE [20]
|
||||
- `[ 143.51s]` VOICE ▶ menu_help (dur 1.6s)
|
||||
- `[ 144.19s]` **GESTURE** swiperight @(195,422)
|
||||
- `[ 144.56s]` VIBRATE [10]
|
||||
- `[ 144.74s]` VOICE ■ menu_help (kill)
|
||||
- `[ 145.48s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 145.84s]` VIBRATE [10]
|
||||
- `[ 145.84s]` BGM ♪ engine (loop)
|
||||
- `[ 146.64s]` SFX ♪ whoosh_down
|
||||
- `[ 147.09s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 147.34s]` VIBRATE [20]
|
||||
- `[ 147.34s]` VIBRATE [40,100,40]
|
||||
- `[ 147.34s]` VOICE ▶ feat_shield_done (dur 4.64s)
|
||||
- `[ 148.45s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 148.81s]` VIBRATE [10]
|
||||
- `[ 149.64s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 149.64s]` SFX ♪ alarm
|
||||
- `[ 149.99s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 150.14s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 150.14s]` SFX ♪ alarm
|
||||
- `[ 150.34s]` VIBRATE [10]
|
||||
- `[ 150.64s]` SFX ♪ dodge
|
||||
- `[ 150.64s]` SFX ♪ whoosh_right
|
||||
- `[ 150.99s]` VOICE ■ feat_shield_done (kill)
|
||||
- `[ 151.23s]` **GESTURE** swipeleft @(195,422)
|
||||
- `[ 151.59s]` VIBRATE [10]
|
||||
- `[ 152.94s]` VIBRATE [15]
|
||||
- `[ 152.94s]` VOICE ▶ shield_ready (dur 1.28s)
|
||||
- `[ 153.12s]` **GESTURE** swipeup @(195,422)
|
||||
- `[ 153.47s]` VIBRATE [10]
|
||||
- `[ 153.64s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 153.64s]` SFX ♪ alarm
|
||||
- `[ 154.14s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 154.14s]` SFX ♪ alarm
|
||||
- `[ 154.17s]` VOICE ■ shield_ready (kill)
|
||||
- `[ 154.64s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 154.64s]` SFX ♪ shield_block
|
||||
- `[ 154.64s]` VOICE ▶ protect_right (dur 5.2s)
|
||||
- `[ 154.64s]` SFX ♪ whoosh_right
|
||||
- `[ 155.09s]` **GESTURE** tap @(195,422)
|
||||
- `[ 155.46s]` VIBRATE [20]
|
||||
- `[ 155.46s]` VOICE ■ protect_right (kill)
|
||||
- `[ 156.29s]` **GESTURE** swipeup @(195,422)
|
||||
- `[ 156.64s]` VIBRATE [10]
|
||||
- `[ 157.64s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 157.64s]` SFX ♪ alarm
|
||||
- `[ 157.87s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 158.12s]` VIBRATE [20]
|
||||
- `[ 158.12s]` SFX ♪ shield
|
||||
- `[ 158.14s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 158.14s]` SFX ♪ alarm
|
||||
- `[ 158.64s]` VIBRATE [100]
|
||||
- `[ 158.64s]` SFX ♪ shield_block
|
||||
- `[ 158.64s]` VOICE ▶ shield_block (dur 1.44s)
|
||||
- `[ 158.64s]` SFX ♪ whoosh_down
|
||||
- `[ 159.50s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 159.75s]` VIBRATE [20]
|
||||
- `[ 159.75s]` VIBRATE [40,100,40]
|
||||
- `[ 159.75s]` VOICE ■ shield_block (kill)
|
||||
- `[ 159.75s]` VOICE ▶ feat_shield_done (dur 4.64s)
|
||||
- `[ 160.88s]` **GESTURE** tap @(195,422)
|
||||
- `[ 161.24s]` VIBRATE [20]
|
||||
- `[ 161.24s]` VOICE ■ feat_shield_done (kill)
|
||||
- `[ 161.64s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 161.64s]` SFX ♪ alarm
|
||||
- `[ 162.14s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 162.14s]` SFX ♪ alarm
|
||||
- `[ 162.22s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 162.59s]` VIBRATE [10]
|
||||
- `[ 162.64s]` SFX ♪ dodge
|
||||
- `[ 162.64s]` SFX ♪ whoosh_left
|
||||
- `[ 165.64s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 165.64s]` SFX ♪ alarm
|
||||
- `[ 166.14s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 166.14s]` SFX ♪ alarm
|
||||
- `[ 166.64s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 166.64s]` SFX ♪ shield_block
|
||||
- `[ 166.64s]` VOICE ▶ protect_left (dur 6.32s)
|
||||
- `[ 166.64s]` SFX ♪ whoosh_left
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,32 @@
|
||||
# P1 视障资深玩家评审:《盲航》(space polish 取证轮 R1)
|
||||
|
||||
> 评审依据:research/space-polish/round1/live-A-transcript.md(认真新手局,ta 0-380s)+ live-B-transcript.md(乱按压力局)+ sfx-spectrum-analysis.txt(客观频谱)。
|
||||
> 刺耳判定说明:我听不到混音文件,刺耳结论来自客观数据(能量分布/真峰值)+ 出现频率推算,并按"如果这声音在我 75 档耳朵里"代入;与三位玩家评审交叉对账后四席一致。
|
||||
|
||||
### 盲航
|
||||
- 状态感知:2/5 —— 保护期里我每秒都知道自己在哪(训练护盾接住必报方位,A 局 t+97-109),但两段时间我完全失聪:**①保护期结束前后**(A 局 t+151.13-163.13):protect_end 被前一颗的 protect_up 顶得只剩 3.5s/5.4s(sim 0.52,transcript 行 271-283),紧接着 hit_left、hit_down 两条归因**零毫秒被杀**(行 287-307,vstart 与 kill 同时间戳)——8 秒内挨满三撞坠毁,我至死不知道陨石从哪来,也不知道保护期什么时候没的(我自己 t+301.5 一个习惯单击还把 protect_end 掐在 1 秒处,行 552-563)。**②保护期内 protect_* 长句互杀**:6.96s 的句子对 4.0s 的刷怪间隔,每句都被下一颗截到 4.0s(行 367-378 等 7 连 TRUNCATED),听到的是同一句话的七个开头。护盾经济也是糊涂账:充能完毕(shield_ready)被我自己的单击跳过(t+300.2 行 548 附近)、护盾格挡句 shield_block 从未完整听过。
|
||||
- 下一步明确性:4/5 —— 演练一句一练、做错当场重教(A 局 t+19.5 drill_retry_left 及时),方向呼喊与呼啸同窗(round4 改口是对的);菜单口令规整(t+371.8 paused→menu_main→menu_resume 全 OK)。扣 1 分在:保护期结束后刷怪不给人喘息, attributions 听不全,"下一颗从哪来"全靠猜。
|
||||
- 愿意继续玩:是 —— 同向闪避的手感是我要的反射直达,但前提是把"刚出狱三秒连死还不知缘由"修了。
|
||||
- P0 问题:保护期结束窗口(**状态盲区**):protect_end 永远听不全 + 前 8 秒归因链被 spawn 呼喊零毫秒顶断(A 局 t+151-163、300-310 两轮复现),"我在哪/还剩几条命/为什么死"三连问无答案。这是纯听觉玩家的死线。
|
||||
- 刺耳清单(按暴露量排序,数据见 sfx-spectrum-analysis.txt):
|
||||
1. `sfx/alarm`:≥3kHz 能量 82.3%、≥5kHz 63.9%、质心 7580Hz、峰值 16kHz——每颗陨石响两遍、全程 4s 间隔连刷,是第一刺耳源;
|
||||
2. `sfx/dodge`:真峰值 -2.30dBFS(超 -3 标准)、≥3kHz 63.6%——每次闪避都响,高频嘶声贴耳;
|
||||
3. `sfx/shield_block`:真峰值 -2.60dBFS、≥3kHz 52.2%——保护期每 4s 一响(比 alarm 还密);
|
||||
4. `sfx/boost`:真峰值 -2.70dBFS、≥3kHz 53.0%。
|
||||
`whoosh_*`/`crash`/`shield`/`hit`/`whoosh_down` 频谱干净(质心 170-530Hz),不刺耳。
|
||||
- 建议(按对"我愿意玩下去"的影响排序):
|
||||
1. P0 修复归因链:保护期结束后前 N 秒,spawn 的 dir_* 呼喊不得零毫秒顶断 hit_*/protect_end(排队或让呼喊降级);至少保证"最后一命"前后的信息链完整。
|
||||
2. alarm/dodge/shield_block/boost 四件重合成或低通+降档:真峰值全部回到 ≤-3dBFS,≥5kHz 能量压到 15% 以下;alarm 是全程最高暴露,优先。
|
||||
3. 护盾/加速冷却与层数上状态键可查(space 目前没有任何 status key 手势,radio 的上滑锚这里缺席);拒绝已有回音(护盾冷却双击有 feat_shield_done,合格),加速冷却的拒绝是**全静默**(代码无 deny 路径),补上。
|
||||
|
||||
#### 听觉惯例符合度(逐条核对我的特别检查项)
|
||||
- 语音可打断:过但反噬。单击跳句机制本身干净,但对局期我单击的动机常是"加速",结果把 protect_end/shield_ready 这种状态句掐了(A 局 t+300-301)——可打断的语义需要区分"旁白可跳"与"状态句不可误杀"。
|
||||
- 语音可重听:半过。菜单 help_recap 可重听(B 局 t+44.9 起),但被顶断的 hit_* 归因没有任何途径重听。
|
||||
- 等待有无声:过。BGM engine 不断,无死寂。
|
||||
- 失败可归因:**不过**。三次撞击中只有一次 hit_last 完整听到(A 局 t+159.9 sim 0.87),两条方位归因零毫秒(行 287/305)——本项是本作死穴。
|
||||
- 菜单列表导航规整:过。口令一致(menu_main 勘误版)、循环三项都实测到(A 局 t+371-378),关菜单恢复有 800ms 冷静期兜底。
|
||||
- 提示永不逐字重复:不过。protect_* 在保护期每 4s 逐字重播同一句开头 7+ 次(行 367-473),既重复又截断,双重噪音。
|
||||
- 账目真实:半过。结算分档句(time_3/dodge_1)与我真实存活/躲避对得上,但"护盾挡了几次/还剩几条命"中途无法查证。
|
||||
- 语速上限/长按快进:未验证(会话内无长按)。
|
||||
- status key:**缺席**。上滑在对局期无任何查询语义,只有我这个人设最需要的那件锚没有。
|
||||
- 双击确认(菜单约定):过。菜单内双击确认 resume 实测 OK。
|
||||
@@ -0,0 +1,18 @@
|
||||
# P2 时间充裕的大学生评审:《盲航》(space polish 取证轮 R1)
|
||||
|
||||
> 评审依据:同 round1 三份材料(live-A / live-B / 频谱表)。我按"躺床戴耳机 23:30"代入,刺耳=物理刺激+精神刺激一起算。
|
||||
|
||||
### 盲航
|
||||
- 状态感知:2.5/5 —— 头 60 秒很踏实(演练四步全练过、保护期撞了也不掉血还有讲解),但**60 秒整那一刻我直接懵掉**:protect_end 刚起个头就被撞车语音冲掉(A 局 t+151.6 行 271-283),接下来 8 秒我连吃三下,"左边撞上的""下面撞上的"两条归因全是零毫秒残影(行 287-307),然后直接结算"超过一分钟,合格的飞行员"——我是合格了,可我连怎么死的都不知道,这夸奖听着像嘲讽。还有:我在保护期每次撞上来的讲解句(protect_*)都被下一颗陨石掐在同一个字上(6.9s 的句子永远只听 4s,行 367-378),像有人反复按掉我的弹幕。
|
||||
- 下一步明确性:4/5 —— 教学节奏好,一句一练、做错了当场重教不骂街(A 局 t+19.5);方向呼喊"左!/右!"跟呼啸同窗,反应窗口够。扣 1 分:加速/护盾教完之后没有任何"现在能用/还不能用"的即时信号,我双击没反应的时候(冷却中)要等 4 秒才有一句"护盾展开后会自动充能"——急性子的我早连按五次了,后四次全是无效手势零反馈(B 局 70+ 次乱按里大量此类静默)。
|
||||
- 愿意继续玩:勉强 —— 手感成立、结算有钩子("新纪录!"我破纪录那下确实爽,A 局 t+167.8),但每次死都死于"信息没送到"而不是"我菜",挫败感不对味。
|
||||
- P0 问题:死亡归因不可达(同 P1,A 局 t+151-163 与 t+300-310 两轮复现);加速冷却单击**全静默**(代码里没有 deny 路径,我的单击习惯=跳句或空气);挥空/滑错方向**全静默**(A 局 t+19.4 我滑慢半拍,什么声音都没有,还是靠下一句重教才知道刚才算失败)。
|
||||
- 刺耳清单(耳机党,按折磨度排序):
|
||||
1. `sfx/alarm`——16kHz 峰、63.9% 能量在 5kHz 以上,一颗陨石两遍、全程无休,10 分钟局等于几百次指甲刮板;
|
||||
2. `sfx/dodge`——每次成功闪避的"奖励音"却是 -2.30dBFS 真峰值+63.6% 高频的嘶啦声,奖励变惩罚;
|
||||
3. `sfx/shield_block`(保护期每 4s 一响,最密)与 `sfx/boost`(真峰值都超标)。
|
||||
whoosh 四件是舒服的,尤其 whoosh_up 跟教学说的"又尖又高"完全对得上号(频谱其实不刺,质心 528Hz,是"高"不是"刺")。
|
||||
- 建议:
|
||||
1. 保护期结束给 3 秒"交接仪式":刷怪暂停+protect_end 独占播完,这是整局的情绪转折点,现在被陨石轰隆隆直接碾过。
|
||||
2. alarm 换柔和一点的双音(保方位保警示但去 16kHz 毛刺),dodge 改成中频"咻-叮"而不是高频嘶声—— reward 声音要让人想再听一次。
|
||||
3. 所有无效手势(冷却中/滑错/挥空)给最小耳标或震动,别让我怀疑耳机坏了。
|
||||
@@ -0,0 +1,17 @@
|
||||
# P3 时间紧张的白领评审:《盲航》(space polish 取证轮 R1)
|
||||
|
||||
> 评审依据:同 round1 三份材料。我按"地铁 25 分钟、单手持机、随时被打断"代入;嘈杂环境是我的主场也是它的考场。
|
||||
|
||||
### 盲航
|
||||
- 状态感知:2/5 —— 单局 60-90 秒的长度对我刚刚好,但**打断恢复是零分**:这游戏没有任何"查状态"手势(上滑在菜单里是帮助、对局里什么都不是),我接个电话回来,护盾在不在、冷却几秒、还剩几条命、保护期过没过——全靠回忆。最坏的是保护期结束那 8 秒死亡窗(A 局 t+151-163):protect_end 听不全、两条归因零毫秒、直接结算,我如果正好在进站刷卡,回来就是一句"单击再飞一次",完全接不上。菜单倒是能暂停(A 局 t+371.8 口令规整),可我得**知道**要先暂停才行——没人告诉过我对局能暂停。
|
||||
- 下一步明确性:3.5/5 —— 单手四向滑+点按,盲操满分;方向呼喊与呼啸同窗,嘈杂车厢里 alarm 的高频反而帮我定位(刺耳但有功能)。但"现在能不能双击护盾"无从得知:冷却 15s 里没有计时线索,充能完毕的 shield_ready 会被我自己的单击跳过(A 局 t+300.2),或者被陨石讲解顶掉。
|
||||
- 愿意继续玩:是(当通勤小品)—— 但只敢在保护期里玩,保护期后"死得不明不白"让我不想在站立拥挤时开第二把。
|
||||
- P0 问题:无 status key(全局唯一没有查询锚的游戏,同 P1);保护期结束信息链断裂(同 P1,A 局 t+151-163);被打断回来零落位信息。
|
||||
- 刺耳清单(地铁=高噪环境,我的阈值比宿舍党宽容,但有两个顶不住):
|
||||
1. `sfx/alarm`——5kHz 以上 63.9% 的能量是它能在地铁里穿出来的原因,我不主张删,但 16kHz 毛刺在耳道里像针,建议低通到 8kHz 内;
|
||||
2. `sfx/dodge`——高频嘶声(-2.30dBFS)在广播报站声里会跟金属啸叫撞车,听着像耳机破音;
|
||||
3. `sfx/shield_block`/`sfx/boost` 真峰值超标,连着 BGM 容易糊成一团。
|
||||
- 建议(按"下周还玩不玩"排序):
|
||||
1. 给一个 status key(比如对局期上滑):播报"护盾就绪/充能中、保护期剩几秒、船体几条"三件套,打断恢复一句话接上。
|
||||
2. 保护期结束独占播完,别跟陨石抢麦——我 25 分钟里只有这一秒最需要听清。
|
||||
3. alarm 保穿透但削毛刺;无效手势(冷却拒绝/滑空)给短震动即可,语音免了(车厢里听不清反而乱)。
|
||||
@@ -0,0 +1,17 @@
|
||||
# P4 疲惫的工人评审:《盲航》(space polish 取证轮 R1)
|
||||
|
||||
> 评审依据:同 round1 三份材料。我按"收工 21 点、宿舍外放小音量、反应不快"代入。规则最好一遍懂,声音别太炸,做错了别骂我。
|
||||
|
||||
### 盲航
|
||||
- 状态感知:2.5/5 —— 演练够耐心,四个方向一个一个教、教完还让我亲手试(这点我谢它),保护期里撞了也有人马上告诉我"那颗在左边,向左滑"(A 局 t+97-109)——虽然这句话老被下一颗掐断(行 367-378,每 4 秒重新开头一遍,我跟不上这速度)。但 60 秒以后我就掉线了:那句"训练护盾关闭"永远听不完整(t+151.6 被顶得只剩半句),紧跟着挨两下、两句"从哪撞的"都是零毫秒(行 287-307),然后就听见"船体只剩最后一次了"——**我都不知道前两次是怎么没的**,它就告诉我最后一次了。这就像我们工地:出了事不先说哪块板子掉的,直接宣布罚款。
|
||||
- 下一步明确性:4/5 —— 每颗陨石来了有喊"左!右!上!下!",跟着滑就行,简单;做错重教也不骂人("没关系,跟着我,我们继续"A 局 t+27.4 我听了两遍,暖心)。扣 1 分:我双击开护盾如果没充好,要等一会儿才有回音(4 秒去抖),头几秒我以为手机卡了;单击加速没反应的时候(冷却中/话没说完)更是连回音都没有。
|
||||
- 愿意继续玩:是 —— 比刷视频强,头一分钟有人手把手教,输了也不会被骂。但夜里玩那个警报音太炸(见下),舍友会嫌。
|
||||
- P0 问题:死亡归因听不到(同 P1/P2,A 局两轮复现 t+151-163、t+300-310);保护期结束这个"要变天了"的信号传达失败——我这种反应慢的,最需要提前量,现在反而是信息最乱的时刻。
|
||||
- 刺耳清单(小音量外放+疲惫耳朵,最怕突然的尖声):
|
||||
1. `sfx/alarm`——16kHz 的尖峰,小音量外放下是"吱——"的电流感,每颗陨石两遍,整局没停过;
|
||||
2. `sfx/crash` 不刺(低频,行得通),但 `sfx/hit`(30.7% ≥3kHz)撞上那一下跟 alarm 连着来,惊得我心跳;
|
||||
3. `sfx/dodge`/`sfx/shield_block` 高频嘶声,音量开小了发"丝丝"的破音感(真峰值 -2.3/-2.6dBFS 超标的后果)。
|
||||
- 建议:
|
||||
1. 保护期结束前后,说话的时候别让陨石抢话——我耳朵慢,给我三秒清静听"接下来靠你自己了"。
|
||||
2. 警报音换闷一点的"嘟嘟",别用尖的,夜里吓人;撞上的动静也沉一点。
|
||||
3. 我手势做错了(滑错方向、滑晚了、按快了)的时候,给个轻轻的震动告诉我"收到了但没用",别一点动静没有,我会一直重复同一个错。
|
||||
@@ -0,0 +1,12 @@
|
||||
id dur TP dBFS DC %>3kHz %>5kHz centroid maxkHz flags
|
||||
alarm 1.00 -4.00 -0.00005 82.3 63.9 7580 16.02 5k+高 3k+高
|
||||
boost 1.80 -2.70 -0.00018 53.0 43.9 5637 0.17 TP>-3! 5k+高 3k+高
|
||||
crash 3.00 -3.00 0.00069 1.5 1.1 170 0.03
|
||||
dodge 1.20 -2.30 0.00040 63.6 50.2 6330 0.52 TP>-3! 5k+高 3k+高
|
||||
hit 1.50 -3.80 -0.00001 30.7 16.7 2351 0.50 5k+高
|
||||
shield 1.50 -2.90 0.00011 1.2 0.5 499 0.50 TP>-3!
|
||||
shield_block 1.50 -2.60 0.00014 52.2 40.2 4692 0.01 TP>-3! 5k+高 3k+高
|
||||
whoosh_down 2.50 -3.00 0.00016 0.2 0.1 211 0.25
|
||||
whoosh_left 2.50 -3.20 0.00004 0.1 0.0 188 0.16
|
||||
whoosh_right 2.50 -3.20 0.00004 0.1 0.0 188 0.16
|
||||
whoosh_up 2.50 -3.20 -0.00017 0.5 0.1 528 0.40
|
||||
@@ -0,0 +1,101 @@
|
||||
{
|
||||
"alarm": {
|
||||
"dur": 1.0,
|
||||
"tp": -4.0,
|
||||
"dc": -5e-05,
|
||||
"e3": 82.3,
|
||||
"e5": 63.9,
|
||||
"centroid": 7580,
|
||||
"maxkHz": 16.02
|
||||
},
|
||||
"boost": {
|
||||
"dur": 1.8,
|
||||
"tp": -2.7,
|
||||
"dc": -0.00018,
|
||||
"e3": 53.0,
|
||||
"e5": 43.9,
|
||||
"centroid": 5637,
|
||||
"maxkHz": 0.17
|
||||
},
|
||||
"crash": {
|
||||
"dur": 3.0,
|
||||
"tp": -3.0,
|
||||
"dc": 0.00069,
|
||||
"e3": 1.5,
|
||||
"e5": 1.1,
|
||||
"centroid": 170,
|
||||
"maxkHz": 0.03
|
||||
},
|
||||
"dodge": {
|
||||
"dur": 1.2,
|
||||
"tp": -2.3,
|
||||
"dc": 0.0004,
|
||||
"e3": 63.6,
|
||||
"e5": 50.2,
|
||||
"centroid": 6330,
|
||||
"maxkHz": 0.52
|
||||
},
|
||||
"hit": {
|
||||
"dur": 1.5,
|
||||
"tp": -3.8,
|
||||
"dc": -1e-05,
|
||||
"e3": 30.7,
|
||||
"e5": 16.7,
|
||||
"centroid": 2351,
|
||||
"maxkHz": 0.5
|
||||
},
|
||||
"shield": {
|
||||
"dur": 1.5,
|
||||
"tp": -2.9,
|
||||
"dc": 0.00011,
|
||||
"e3": 1.2,
|
||||
"e5": 0.5,
|
||||
"centroid": 499,
|
||||
"maxkHz": 0.5
|
||||
},
|
||||
"shield_block": {
|
||||
"dur": 1.5,
|
||||
"tp": -2.6,
|
||||
"dc": 0.00014,
|
||||
"e3": 52.2,
|
||||
"e5": 40.2,
|
||||
"centroid": 4692,
|
||||
"maxkHz": 0.01
|
||||
},
|
||||
"whoosh_down": {
|
||||
"dur": 2.5,
|
||||
"tp": -3.0,
|
||||
"dc": 0.00016,
|
||||
"e3": 0.2,
|
||||
"e5": 0.1,
|
||||
"centroid": 211,
|
||||
"maxkHz": 0.25
|
||||
},
|
||||
"whoosh_left": {
|
||||
"dur": 2.5,
|
||||
"tp": -3.2,
|
||||
"dc": 4e-05,
|
||||
"e3": 0.1,
|
||||
"e5": 0.0,
|
||||
"centroid": 188,
|
||||
"maxkHz": 0.16
|
||||
},
|
||||
"whoosh_right": {
|
||||
"dur": 2.5,
|
||||
"tp": -3.2,
|
||||
"dc": 4e-05,
|
||||
"e3": 0.1,
|
||||
"e5": 0.0,
|
||||
"centroid": 188,
|
||||
"maxkHz": 0.16
|
||||
},
|
||||
"whoosh_up": {
|
||||
"dur": 2.5,
|
||||
"tp": -3.2,
|
||||
"dc": -0.00017,
|
||||
"e3": 0.5,
|
||||
"e5": 0.1,
|
||||
"centroid": 528,
|
||||
"maxkHz": 0.4
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
# 修复清单与逐条证据(space polish R5,round2)
|
||||
|
||||
取证轮结论 → 编号修复 → 验证证据。设计依据全文见 docs/design/04-space-rebuild.md「修订记录 R5」节。
|
||||
|
||||
## F1 刺耳音效重合成(P0)
|
||||
|
||||
**嫌疑清单(round1 客观数据,research/space-polish/round1/sfx-spectrum-analysis.txt)**
|
||||
|
||||
| id | 前真峰值 | 前≥3kHz | 前≥5kHz | 前质心 | 暴露频率 |
|
||||
|---|---|---|---|---|---|
|
||||
| alarm | -4.00 | 82.3% | 63.9% | 7580Hz(峰 16kHz) | 每颗陨石 2 遍、全程 4s 间隔 |
|
||||
| dodge | **-2.30** | 63.6% | 50.2% | 6330Hz | 每次闪避 |
|
||||
| shield_block | **-2.60** | 52.2% | 40.2% | 4692Hz | 保护期每 4s(比 alarm 还密) |
|
||||
| boost | **-2.70** | 53.0% | 43.9% | 5637Hz | 每次加速 |
|
||||
| shield | **-2.90** | 1.2% | 0.5% | 499Hz | 峰值超标 |
|
||||
|
||||
**修复**:`tools/gen_space_syn.py`(新建,参照 gen_cipher_syn.py 先例)程序合成重制 5 件 + 新增 whiff。
|
||||
低谐波设计:alarm=700/560Hz 电子双音、dodge=500→2100Hz 气声扫频、shield_block=250-2300Hz 电涟、
|
||||
boost=55-93Hz 低哼+暗频推进、shield=320→980Hz shimmer。one-shot QC 全过(去直流+8ms cos²+
|
||||
编码后 ebur128 真峰值 ≤-3dBFS + 解码回读 ≥3kHz 能量)。
|
||||
|
||||
**修后数据(round2/sfx-spectrum-after.txt,与修前同口径)**
|
||||
|
||||
| id | 后真峰值 | 后≥3kHz | 后≥5kHz | 后质心 |
|
||||
|---|---|---|---|---|
|
||||
| alarm | -3.50 | 0.0% | 0.0% | 593Hz(前 7580) |
|
||||
| dodge | -3.90 | 0.0% | 0.0% | 1090Hz(前 6330) |
|
||||
| shield_block | -3.90 | 0.0% | 0.0% | 1271Hz(前 4692) |
|
||||
| boost | -3.60 | 0.0% | 0.0% | 114Hz |
|
||||
| shield | -3.40 | 0.0% | 0.0% | 784Hz |
|
||||
| whiff(新) | -4.80 | 0.0% | 0.0% | 461Hz |
|
||||
|
||||
四席人设评审刺耳清单(alarm/dodge/shield_block/boost)全部消除;whoosh_*/crash/hit 修前即干净,未动。
|
||||
|
||||
## F2 保护期结束死亡窗:归因防顶断 replay(P0)
|
||||
|
||||
**修前证据(round1 live-A transcript 行 261-331,ta 151.13-163.13)**:裸飞期逼近 4.0s=刷怪 4.0s,
|
||||
撞击与下一颗 spawn 同窗 → `hit_left`/`hit_down` vstart 与 kill 同时间戳(**零毫秒归因**),
|
||||
protect_end 被顶到 0.5-3.5s,8 秒三连撞至死不知方位。TRUNCATED 占比 39%(38/97)。
|
||||
|
||||
**修复**(web/space/game.js):呼喊生存优先裁定不变;`hit_<dir>`/`protect_end` 起播经 `_defendVoice`
|
||||
登记,被顶断时登记残留,呼喊播完 onComplete → `_replayDefended` queue 补 replay(hit_last 排其后,先因后果)。
|
||||
|
||||
**修后证据(round2 live-A events,live-A-voice-timeline.txt)**:同窗口复现两轮——
|
||||
- 轮 1(ta 160.3-168.3):hit_left 零毫秒被杀 → 160.79 **replay 完整播 3.5s**;
|
||||
hit_right 零毫秒被杀 → 164.78 **replay 完整播 3.5s**(两轮各自闭环)。
|
||||
- 轮 2(ta 253.9):hit_right 被杀 → 254.38 replay 播完 257.9。
|
||||
- protect_end 被顶断 → replay 补播(B 局 ta 64.69 第二轮 vstart)。
|
||||
- playtest.mjs 新增断言:登记残留→补 replay→replay 播完接 hit_last→4 条全绿(S1 172/172)。
|
||||
|
||||
## F3 保护期 protect_* 七连截断 → 去重
|
||||
|
||||
**修前**:6.96s 教学句对 4.0s 刷怪间隔,live-A 保护期 7 连 TRUNCATED(transcript 行 367-473),
|
||||
每句都截在同一位置、同一句话重复 7 遍。
|
||||
**修复**:上一句 protect_<dir> 在播时新吸收只发 shield_block 音 + WARNING 震(`_protectSaying` 去重)。
|
||||
**修后**:live-A' ta 102.3 protect_up **sim=1.0 完整播出**(修前同句 sim 0.33-0.63);
|
||||
110.3 第二次吸收在播句刚结束时正常起新句。playtest 去重断言 2 条绿。
|
||||
|
||||
## F4 状态盲区:protect_soon 50s 预告
|
||||
|
||||
**修前**:保护期结束无任何提前量,P4(反应慢)/P3(打断恢复)最受伤的时刻恰是信息最乱的时刻。
|
||||
**修复**:开局 50s 播报新句「训练护盾还剩十秒。」(`protect_soon`,queue 不顶句,打断由
|
||||
_rearmRunTimers 补播)。
|
||||
**修后**:live-A' ta 149.8 sim=1.0 OK(ASR 完整识别);live-B' ta 53.8 OK。
|
||||
playtest 断言绿。对局期 status key 维持 00 §5 豁免表裁定(不新增手势,见 04-space-rebuild R5 末条)。
|
||||
|
||||
## F5 动作反馈盲区:加速冷却拒绝
|
||||
|
||||
**修前**:冷却中单击全静默(护盾拒绝有回音、加速没有);P1/P2/P4 三席点名。
|
||||
**修复**:`_deny(now, voiceId)` 共用 4s 去抖(护盾拒绝同路径、原句不变);
|
||||
新句 `boost_not_ready`「引擎还在冷却,稍等一下。」+ HEARTBEAT 震。
|
||||
**修后**:playtest 4 条断言绿(拒绝播报/不重置加速/HEARTBEAT/去抖);live-B' 资产实测加载、
|
||||
护盾侧拒绝 echo 在乱按下反复兑现(feat_shield_done ×6 vstart)。
|
||||
|
||||
## F6 激活确认震动(兑现 04 §5 旧承诺)
|
||||
|
||||
**修前**:boost/shield 激活(对局期+feature 期)均无 CONFIRM 震,文档 §5 承诺未兑现。
|
||||
**修复**:4 处激活点补 `vibrate('confirm')`。playtest 断言 2 条绿(delta 计数)。
|
||||
|
||||
## F7 挥空/滑错方向反馈
|
||||
|
||||
**修前**:无效手势与成功闪避同静默(dodge 音只在判定时响),玩家怀疑输入失灵。
|
||||
**修复**:playing 期滑向无悬置陨石方向 → `sfx/whiff` 轻叹(0.55 音量;引擎 swipe 震动已有"收到")。
|
||||
**修后**:live-B' 乱按中 whiff 实测触发 3+ 次(events 28.9/33.5 等);playtest 断言绿。
|
||||
|
||||
## 验证数字汇总
|
||||
|
||||
- web/space/test/playtest.mjs:**172 通过 / 0 失败**(新增 R5 断言 15 条)
|
||||
- web/harness/guide.test.mjs:**122 通过 / 0 失败**
|
||||
- tools/check_all_assets.py:**全项目绿**(space 184 文件/各 61 id,新增 2 句 ×2 性别 ×2 格式)
|
||||
- 回归:其余 14 款游戏 playtest 全绿(abyss/bridge/cipher/detective/dungeon/escape/hunt/keeper/radio/rhythm/rpg/simon/storyline/teahouse)
|
||||
- 刺耳复测:F1 表(全部 ≤-3.4dBFS、≥3kHz 0%)
|
||||
- live 复跑(8141):A' 两轮保护期结束窗归因 replay 全闭环 + protect_soon OK ×2 局;
|
||||
B' 零 console.error,whiff/护盾拒绝/protect 链全部实测触发
|
||||
|
||||
## 遗留清单
|
||||
|
||||
1. `voice/shield_block`(格挡确认句)不在防顶断登记内,保护期吸收高峰时仍可能被呼喊顶断——
|
||||
有 shield_block 音效+WARNING 震落位,残损可接受;如后续投诉再纳入登记。
|
||||
2. live 复跑因 harness 手势派发延迟(峰值 46s,listen ASR 竞争)未能实机验证 boost_not_ready
|
||||
语音出声(资产加载、去抖路径、whiff 均实测;boost 拒绝语义由 playtest 覆盖)。建议真机人耳复测。
|
||||
3. gd_last_life(向导层"撑住"句)仍可能被后续呼喊顶断(guide.error 无 onComplete 钩子,
|
||||
引擎不可改);优先级低于归因句,未纳入本轮。
|
||||
4. `hit`(受击音)≥3kHz 30.7% 未重合成——四席评审均未点名(低频主导的撞击感成立),保留。
|
||||
5. gen_voice_dual.py --check 对本机缺旧 space staging wav 报「缺 male/female」59 条——
|
||||
环境存量问题(旧 wav 未随仓库保留),与本轮无关;新句两性时长健康(2.48/1.52s、3.28/3.04s)。
|
||||
@@ -0,0 +1,425 @@
|
||||
{"ev":"probe_ready","t":46.400000005960464,"ta":null}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":6049.199999988079,"ta":-0.147}
|
||||
{"ev":"recstart","mime":"audio/webm;codecs=opus","t":6195.9000000059605,"ta":0}
|
||||
{"ev":"fetch","url":"audio/sfx/whoosh_left.ogg","status":200,"ok":true,"ms":13,"t":6209,"ta":0.013}
|
||||
{"ev":"fetch","url":"audio/sfx/whoosh_right.ogg","status":200,"ok":true,"ms":12,"t":6209.199999988079,"ta":0.013}
|
||||
{"ev":"fetch","url":"audio/sfx/whoosh_up.ogg","status":200,"ok":true,"ms":14,"t":6210.9000000059605,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/sfx/alarm.ogg","status":200,"ok":true,"ms":16,"t":6213.199999988079,"ta":0.017}
|
||||
{"ev":"fetch","url":"audio/sfx/whoosh_down.ogg","status":200,"ok":true,"ms":19,"t":6215.699999988079,"ta":0.02}
|
||||
{"ev":"fetch","url":"audio/sfx/boost.ogg","status":200,"ok":true,"ms":21,"t":6217.9000000059605,"ta":0.022}
|
||||
{"ev":"fetch","url":"audio/sfx/shield.ogg","status":200,"ok":true,"ms":26,"t":6223.199999988079,"ta":0.027}
|
||||
{"ev":"fetch","url":"audio/sfx/shield_block.ogg","status":200,"ok":true,"ms":27,"t":6223.9000000059605,"ta":0.028}
|
||||
{"ev":"fetch","url":"audio/sfx/dodge.ogg","status":200,"ok":true,"ms":28,"t":6225.5,"ta":0.03}
|
||||
{"ev":"fetch","url":"audio/sfx/hit.ogg","status":200,"ok":true,"ms":29,"t":6226.199999988079,"ta":0.03}
|
||||
{"ev":"fetch","url":"audio/sfx/crash.ogg","status":200,"ok":true,"ms":30,"t":6227.199999988079,"ta":0.031}
|
||||
{"ev":"fetch","url":"audio/sfx/whiff.ogg","status":200,"ok":true,"ms":32,"t":6229.199999988079,"ta":0.033}
|
||||
{"ev":"fetch","url":"audio/voice/male/dir_left.ogg","status":200,"ok":true,"ms":34,"t":6231.9000000059605,"ta":0.036}
|
||||
{"ev":"fetch","url":"audio/voice/male/dir_right.ogg","status":200,"ok":true,"ms":37,"t":6234.5999999940395,"ta":0.039}
|
||||
{"ev":"fetch","url":"audio/voice/male/dir_up.ogg","status":200,"ok":true,"ms":37,"t":6235.199999988079,"ta":0.039}
|
||||
{"ev":"fetch","url":"audio/voice/male/dir_down.ogg","status":200,"ok":true,"ms":41,"t":6239.5999999940395,"ta":0.044}
|
||||
{"ev":"fetch","url":"audio/voice/male/hit_right.ogg","status":200,"ok":true,"ms":42,"t":6240.800000011921,"ta":0.045}
|
||||
{"ev":"fetch","url":"audio/voice/male/hit_left.ogg","status":200,"ok":true,"ms":46,"t":6244.300000011921,"ta":0.048}
|
||||
{"ev":"fetch","url":"audio/voice/male/hit_up.ogg","status":200,"ok":true,"ms":51,"t":6249.4000000059605,"ta":0.054}
|
||||
{"ev":"fetch","url":"audio/voice/male/hit_down.ogg","status":200,"ok":true,"ms":55,"t":6253.199999988079,"ta":0.057}
|
||||
{"ev":"fetch","url":"audio/voice/male/hit_last.ogg","status":200,"ok":true,"ms":56,"t":6254.4000000059605,"ta":0.059}
|
||||
{"ev":"fetch","url":"audio/voice/male/protect_left.ogg","status":200,"ok":true,"ms":57,"t":6255.5999999940395,"ta":0.06}
|
||||
{"ev":"fetch","url":"audio/voice/male/protect_right.ogg","status":200,"ok":true,"ms":57,"t":6256.0999999940395,"ta":0.06}
|
||||
{"ev":"fetch","url":"audio/voice/male/protect_up.ogg","status":200,"ok":true,"ms":59,"t":6257.9000000059605,"ta":0.062}
|
||||
{"ev":"fetch","url":"audio/voice/male/protect_down.ogg","status":200,"ok":true,"ms":62,"t":6260.699999988079,"ta":0.065}
|
||||
{"ev":"fetch","url":"audio/voice/male/protect_soon.ogg","status":200,"ok":true,"ms":64,"t":6262.800000011921,"ta":0.067}
|
||||
{"ev":"fetch","url":"audio/voice/male/protect_end.ogg","status":200,"ok":true,"ms":65,"t":6263.4000000059605,"ta":0.068}
|
||||
{"ev":"fetch","url":"audio/voice/male/shield_ready.ogg","status":200,"ok":true,"ms":70,"t":6268.9000000059605,"ta":0.073}
|
||||
{"ev":"fetch","url":"audio/voice/male/shield_block.ogg","status":200,"ok":true,"ms":74,"t":6273.199999988079,"ta":0.077}
|
||||
{"ev":"fetch","url":"audio/voice/male/feat_boost.ogg","status":200,"ok":true,"ms":79,"t":6278.4000000059605,"ta":0.083}
|
||||
{"ev":"fetch","url":"audio/voice/male/feat_boost_done.ogg","status":200,"ok":true,"ms":86,"t":6285,"ta":0.089}
|
||||
{"ev":"fetch","url":"audio/voice/male/feat_shield.ogg","status":200,"ok":true,"ms":87,"t":6286,"ta":0.09}
|
||||
{"ev":"fetch","url":"audio/voice/male/boost_not_ready.ogg","status":200,"ok":true,"ms":87,"t":6286.800000011921,"ta":0.091}
|
||||
{"ev":"fetch","url":"audio/voice/male/feat_shield_done.ogg","status":200,"ok":true,"ms":90,"t":6289.4000000059605,"ta":0.094}
|
||||
{"ev":"fetch","url":"audio/voice/male/ms_10.ogg","status":200,"ok":true,"ms":94,"t":6293.699999988079,"ta":0.098}
|
||||
{"ev":"fetch","url":"audio/voice/male/ms_25.ogg","status":200,"ok":true,"ms":104,"t":6303.5999999940395,"ta":0.108}
|
||||
{"ev":"fetch","url":"audio/voice/male/ms_50.ogg","status":200,"ok":true,"ms":107,"t":6306.5999999940395,"ta":0.111}
|
||||
{"ev":"fetch","url":"audio/voice/male/ms_100.ogg","status":200,"ok":true,"ms":107,"t":6306.5999999940395,"ta":0.111}
|
||||
{"ev":"fetch","url":"audio/voice/male/gd_hit_hint.ogg","status":200,"ok":true,"ms":107,"t":6306.699999988079,"ta":0.111}
|
||||
{"ev":"fetch","url":"audio/voice/male/gd_last_life.ogg","status":200,"ok":true,"ms":107,"t":6307.0999999940395,"ta":0.111}
|
||||
{"ev":"fetch","url":"audio/voice/male/paused.ogg","status":200,"ok":true,"ms":108,"t":6308.300000011921,"ta":0.112}
|
||||
{"ev":"fetch","url":"audio/voice/male/menu_main.ogg","status":200,"ok":true,"ms":109,"t":6309.0999999940395,"ta":0.113}
|
||||
{"ev":"fetch","url":"audio/voice/male/menu_resume.ogg","status":200,"ok":true,"ms":114,"t":6314.199999988079,"ta":0.118}
|
||||
{"ev":"fetch","url":"audio/voice/male/menu_lobby.ogg","status":200,"ok":true,"ms":115,"t":6314.9000000059605,"ta":0.119}
|
||||
{"ev":"fetch","url":"audio/voice/male/menu_help.ogg","status":200,"ok":true,"ms":116,"t":6315.699999988079,"ta":0.12}
|
||||
{"ev":"fetch","url":"audio/voice/male/help_recap.ogg","status":200,"ok":true,"ms":118,"t":6318.0999999940395,"ta":0.122}
|
||||
{"ev":"fetch","url":"audio/voice/male/settings_hint.ogg","status":200,"ok":true,"ms":119,"t":6319,"ta":0.123}
|
||||
{"ev":"fetch","url":"audio/voice/male/drill_welcome.ogg","status":200,"ok":true,"ms":119,"t":6319.300000011921,"ta":0.123}
|
||||
{"ev":"fetch","url":"audio/voice/male/second_run_ask.ogg","status":200,"ok":true,"ms":122,"t":6322.699999988079,"ta":0.127}
|
||||
{"ev":"fetch","url":"audio/voice/male/drill_rule.ogg","status":200,"ok":true,"ms":123,"t":6323.699999988079,"ta":0.128}
|
||||
{"ev":"fetch","url":"audio/voice/male/skip_hint.ogg","status":200,"ok":true,"ms":124,"t":6324.5999999940395,"ta":0.129}
|
||||
{"ev":"vstart","url":"audio/voice/male/drill_welcome.ogg","t":6327.199999988079,"dur":3.68,"ta":0.131}
|
||||
{"ev":"vend","url":"audio/voice/male/drill_welcome.ogg","t":10150.09999999404,"reason":"kill","ta":3.954}
|
||||
{"ev":"vstart","url":"audio/voice/male/skip_hint.ogg","t":10150.199999988079,"dur":1.92,"ta":3.954}
|
||||
{"ev":"vend","url":"audio/voice/male/skip_hint.ogg","t":12030.300000011921,"reason":"kill","ta":5.834}
|
||||
{"ev":"vstart","url":"audio/voice/male/drill_rule.ogg","t":12030.40000000596,"dur":3.6,"ta":5.835}
|
||||
{"ev":"vend","url":"audio/voice/male/drill_rule.ogg","t":15861.40000000596,"reason":"kill","ta":9.666}
|
||||
{"ev":"fetch","url":"audio/voice/male/drill_left.ogg","status":200,"ok":true,"ms":4,"t":15865.300000011921,"ta":9.669}
|
||||
{"ev":"vstart","url":"audio/voice/male/drill_left.ogg","t":15869.90000000596,"dur":4.96,"ta":9.674}
|
||||
{"ev":"vend","url":"audio/voice/male/drill_left.ogg","t":21085.30000001192,"reason":"kill","ta":14.889}
|
||||
{"ev":"start","t":21085.59999999404,"sid":1,"url":"audio/sfx/whoosh_left.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":14.89}
|
||||
{"ev":"vstart","url":"audio/voice/male/dir_left.ogg","t":21085.80000001192,"dur":0.5570975056689342,"ta":14.89}
|
||||
{"ev":"vend","url":"audio/voice/male/dir_left.ogg","t":21851.59999999404,"reason":"kill","ta":15.656}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":25586.09999999404,"ta":19.39}
|
||||
{"ev":"fetch","url":"audio/voice/male/drill_retry_left.ogg","status":200,"ok":true,"ms":3,"t":25589.19999998808,"ta":19.393}
|
||||
{"ev":"vstart","url":"audio/voice/male/drill_retry_left.ogg","t":25593,"dur":3.36,"ta":19.397}
|
||||
{"ev":"vend","url":"audio/voice/male/drill_retry_left.ogg","t":29049.09999999404,"reason":"kill","ta":22.853}
|
||||
{"ev":"start","t":29049.30000001192,"sid":2,"url":"audio/sfx/whoosh_left.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":22.853}
|
||||
{"ev":"vstart","url":"audio/voice/male/dir_left.ogg","t":29049.40000000596,"dur":0.5570975056689342,"ta":22.854}
|
||||
{"ev":"vend","url":"audio/voice/male/dir_left.ogg","t":29815.40000000596,"reason":"kill","ta":23.62}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":33549.40000000596,"ta":27.354}
|
||||
{"ev":"fetch","url":"audio/voice/male/drill_moveon.ogg","status":200,"ok":true,"ms":3,"t":33552.19999998808,"ta":27.356}
|
||||
{"ev":"vstart","url":"audio/voice/male/drill_moveon.ogg","t":33556.69999998808,"dur":3.84,"ta":27.361}
|
||||
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":37190.69999998808,"ta":30.995}
|
||||
{"ev":"vibrate","pattern":"[10]","t":37555.19999998808,"ta":31.359}
|
||||
{"ev":"vend","url":"audio/voice/male/drill_moveon.ogg","t":37663,"reason":"kill","ta":31.467}
|
||||
{"ev":"fetch","url":"audio/voice/male/drill_right.ogg","status":200,"ok":true,"ms":2,"t":37665.5,"ta":31.47}
|
||||
{"ev":"vstart","url":"audio/voice/male/drill_right.ogg","t":37668.40000000596,"dur":2.64,"ta":31.473}
|
||||
{"ev":"vend","url":"audio/voice/male/drill_right.ogg","t":40379.40000000596,"reason":"kill","ta":34.184}
|
||||
{"ev":"start","t":40379.5,"sid":3,"url":"audio/sfx/whoosh_right.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":34.184}
|
||||
{"ev":"vstart","url":"audio/voice/male/dir_right.ogg","t":40379.69999998808,"dur":0.39909297052154197,"ta":34.184}
|
||||
{"ev":"vend","url":"audio/voice/male/dir_right.ogg","t":40867.19999998808,"reason":"kill","ta":34.671}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":44879.69999998808,"ta":38.684}
|
||||
{"ev":"fetch","url":"audio/voice/male/drill_retry_right.ogg","status":200,"ok":true,"ms":3,"t":44882.69999998808,"ta":38.687}
|
||||
{"ev":"vstart","url":"audio/voice/male/drill_retry_right.ogg","t":44886.19999998808,"dur":3.2,"ta":38.69}
|
||||
{"ev":"vend","url":"audio/voice/male/drill_retry_right.ogg","t":48343.09999999404,"reason":"kill","ta":42.147}
|
||||
{"ev":"start","t":48343.19999998808,"sid":4,"url":"audio/sfx/whoosh_right.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":42.147}
|
||||
{"ev":"vstart","url":"audio/voice/male/dir_right.ogg","t":48343.30000001192,"dur":0.39909297052154197,"ta":42.147}
|
||||
{"ev":"vend","url":"audio/voice/male/dir_right.ogg","t":48830.69999998808,"reason":"kill","ta":42.635}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":52843.30000001192,"ta":46.647}
|
||||
{"ev":"vstart","url":"audio/voice/male/drill_moveon.ogg","t":52843.5,"dur":3.84,"ta":46.648}
|
||||
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":53960.80000001192,"ta":47.765}
|
||||
{"ev":"vibrate","pattern":"[10]","t":54320.59999999404,"ta":48.125}
|
||||
{"ev":"vend","url":"audio/voice/male/drill_moveon.ogg","t":56957.30000001192,"reason":"kill","ta":50.761}
|
||||
{"ev":"fetch","url":"audio/voice/male/drill_up.ogg","status":200,"ok":true,"ms":3,"t":56960.19999998808,"ta":50.764}
|
||||
{"ev":"vstart","url":"audio/voice/male/drill_up.ogg","t":56964.59999999404,"dur":4.24,"ta":50.769}
|
||||
{"ev":"vend","url":"audio/voice/male/drill_up.ogg","t":61531.09999999404,"reason":"kill","ta":55.335}
|
||||
{"ev":"start","t":61531.19999998808,"sid":5,"url":"audio/sfx/whoosh_up.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":55.335}
|
||||
{"ev":"vstart","url":"audio/voice/male/dir_up.ogg","t":61531.40000000596,"dur":0.39909297052154197,"ta":55.336}
|
||||
{"ev":"vend","url":"audio/voice/male/dir_up.ogg","t":62018.69999998808,"reason":"kill","ta":55.823}
|
||||
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":65727.19999998808,"ta":59.531}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":66031.30000001192,"ta":59.835}
|
||||
{"ev":"fetch","url":"audio/voice/male/drill_retry_up.ogg","status":200,"ok":true,"ms":3,"t":66034.90000000596,"ta":59.839}
|
||||
{"ev":"vstart","url":"audio/voice/male/drill_retry_up.ogg","t":66039.40000000596,"dur":4.08,"ta":59.844}
|
||||
{"ev":"vibrate","pattern":"[10]","t":66087.09999999404,"ta":59.891}
|
||||
{"ev":"vend","url":"audio/voice/male/drill_retry_up.ogg","t":70144.90000000596,"reason":"kill","ta":63.949}
|
||||
{"ev":"start","t":70145.09999999404,"sid":6,"url":"audio/sfx/whoosh_up.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":63.949}
|
||||
{"ev":"vstart","url":"audio/voice/male/dir_up.ogg","t":70145.19999998808,"dur":0.39909297052154197,"ta":63.949}
|
||||
{"ev":"vend","url":"audio/voice/male/dir_up.ogg","t":70632.40000000596,"reason":"kill","ta":64.436}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":74645.09999999404,"ta":68.449}
|
||||
{"ev":"vstart","url":"audio/voice/male/drill_moveon.ogg","t":74645.19999998808,"dur":3.84,"ta":68.449}
|
||||
{"ev":"vend","url":"audio/voice/male/drill_moveon.ogg","t":78758.90000000596,"reason":"kill","ta":72.563}
|
||||
{"ev":"fetch","url":"audio/voice/male/drill_down.ogg","status":200,"ok":true,"ms":3,"t":78761.80000001192,"ta":72.566}
|
||||
{"ev":"vstart","url":"audio/voice/male/drill_down.ogg","t":78766.30000001192,"dur":3.28,"ta":72.57}
|
||||
{"ev":"vend","url":"audio/voice/male/drill_down.ogg","t":82218.09999999404,"reason":"kill","ta":76.022}
|
||||
{"ev":"start","t":82218.30000001192,"sid":7,"url":"audio/sfx/whoosh_down.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":76.022}
|
||||
{"ev":"vstart","url":"audio/voice/male/dir_down.ogg","t":82218.30000001192,"dur":0.5570975056689342,"ta":76.022}
|
||||
{"ev":"vend","url":"audio/voice/male/dir_down.ogg","t":82984.30000001192,"reason":"kill","ta":76.788}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":86718.30000001192,"ta":80.522}
|
||||
{"ev":"fetch","url":"audio/voice/male/drill_retry_down.ogg","status":200,"ok":true,"ms":3,"t":86721.19999998808,"ta":80.525}
|
||||
{"ev":"vstart","url":"audio/voice/male/drill_retry_down.ogg","t":86725.40000000596,"dur":2.72,"ta":80.53}
|
||||
{"ev":"vend","url":"audio/voice/male/drill_retry_down.ogg","t":89439,"reason":"kill","ta":83.243}
|
||||
{"ev":"start","t":89439.09999999404,"sid":8,"url":"audio/sfx/whoosh_down.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":83.243}
|
||||
{"ev":"vstart","url":"audio/voice/male/dir_down.ogg","t":89439.19999998808,"dur":0.5570975056689342,"ta":83.243}
|
||||
{"ev":"vend","url":"audio/voice/male/dir_down.ogg","t":90205.40000000596,"reason":"kill","ta":84.01}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":93939.19999998808,"ta":87.743}
|
||||
{"ev":"vstart","url":"audio/voice/male/drill_moveon.ogg","t":93939.40000000596,"dur":3.84,"ta":87.744}
|
||||
{"ev":"vend","url":"audio/voice/male/drill_moveon.ogg","t":98052.90000000596,"reason":"kill","ta":91.857}
|
||||
{"ev":"fetch","url":"audio/voice/male/drill_done.ogg","status":200,"ok":true,"ms":3,"t":98055.80000001192,"ta":91.86}
|
||||
{"ev":"vstart","url":"audio/voice/male/drill_done.ogg","t":98061.09999999404,"dur":4.72,"ta":91.865}
|
||||
{"ev":"vend","url":"audio/voice/male/drill_done.ogg","t":102998.30000001192,"reason":"kill","ta":96.802}
|
||||
{"ev":"fetch","url":"audio/bgm/engine.ogg","status":200,"ok":true,"ms":3,"t":103001.59999999404,"ta":96.806}
|
||||
{"ev":"start","t":103186.30000001192,"sid":9,"url":"audio/bgm/engine.ogg","layer":"bgm","dur":117,"rate":1,"loop":true,"when":0,"ta":96.99}
|
||||
{"ev":"start","t":104501.19999998808,"sid":10,"url":"audio/sfx/whoosh_up.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":98.305}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":107501.40000000596,"ta":101.306}
|
||||
{"ev":"start","t":107501.5,"sid":11,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":101.306}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":108001.30000001192,"ta":101.805}
|
||||
{"ev":"start","t":108001.40000000596,"sid":12,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":101.806}
|
||||
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":108501.40000000596,"ta":102.306}
|
||||
{"ev":"start","t":108501.5,"sid":13,"url":"audio/sfx/shield_block.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":102.306}
|
||||
{"ev":"vstart","url":"audio/voice/male/protect_up.ogg","t":108501.59999999404,"dur":6.96,"ta":102.306}
|
||||
{"ev":"start","t":108502.5,"sid":14,"url":"audio/sfx/whoosh_down.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":102.307}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":111502.69999998808,"ta":105.307}
|
||||
{"ev":"start","t":111502.69999998808,"sid":15,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":105.307}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":112002.59999999404,"ta":105.807}
|
||||
{"ev":"start","t":112002.69999998808,"sid":16,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":105.807}
|
||||
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":112502.59999999404,"ta":106.307}
|
||||
{"ev":"start","t":112502.69999998808,"sid":17,"url":"audio/sfx/shield_block.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":106.307}
|
||||
{"ev":"start","t":112502.80000001192,"sid":18,"url":"audio/sfx/whoosh_up.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":106.307}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":115502.90000000596,"ta":109.307}
|
||||
{"ev":"start","t":115503,"sid":19,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":109.307}
|
||||
{"ev":"vend","url":"audio/voice/male/protect_up.ogg","t":115582.5,"reason":"kill","ta":109.387}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":116002.80000001192,"ta":109.807}
|
||||
{"ev":"start","t":116003,"sid":20,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":109.807}
|
||||
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":116502.90000000596,"ta":110.307}
|
||||
{"ev":"start","t":116503,"sid":21,"url":"audio/sfx/shield_block.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":110.307}
|
||||
{"ev":"vstart","url":"audio/voice/male/protect_up.ogg","t":116503,"dur":6.96,"ta":110.307}
|
||||
{"ev":"start","t":116503.90000000596,"sid":22,"url":"audio/sfx/whoosh_right.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":110.308}
|
||||
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":117236.40000000596,"ta":111.041}
|
||||
{"ev":"vibrate","pattern":"[10]","t":117601.40000000596,"ta":111.406}
|
||||
{"ev":"vend","url":"audio/voice/male/protect_up.ogg","t":117602,"reason":"kill","ta":111.406}
|
||||
{"ev":"vstart","url":"audio/voice/male/paused.ogg","t":117602.09999999404,"dur":1.12,"ta":111.406}
|
||||
{"ev":"fetch","url":"audio/bgm/menu.ogg","status":200,"ok":true,"ms":3,"t":117604.30000001192,"ta":111.408}
|
||||
{"ev":"start","t":117748.09999999404,"sid":23,"url":"audio/bgm/menu.ogg","layer":"bgm","dur":90,"rate":1,"loop":true,"when":0,"ta":111.552}
|
||||
{"ev":"stop","t":118108.30000001192,"sid":9,"when":0,"ta":111.912}
|
||||
{"ev":"vend","url":"audio/voice/male/paused.ogg","t":118740.09999999404,"reason":"kill","ta":112.544}
|
||||
{"ev":"vstart","url":"audio/voice/male/menu_main.ogg","t":118740.30000001192,"dur":4.16,"ta":112.544}
|
||||
{"ev":"vend","url":"audio/voice/male/menu_main.ogg","t":122849.69999998808,"reason":"kill","ta":116.654}
|
||||
{"ev":"vstart","url":"audio/voice/male/menu_resume.ogg","t":122849.80000001192,"dur":1.12,"ta":116.654}
|
||||
{"ev":"vend","url":"audio/voice/male/menu_resume.ogg","t":123987.5,"reason":"kill","ta":117.792}
|
||||
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":135595.59999999404,"ta":129.4}
|
||||
{"ev":"vibrate","pattern":"[20]","t":135844.80000001192,"ta":129.649}
|
||||
{"ev":"start","t":135845.19999998808,"sid":24,"url":"audio/bgm/engine.ogg","layer":"bgm","dur":117,"rate":1,"loop":true,"when":0,"ta":129.649}
|
||||
{"ev":"vstart","url":"audio/voice/male/feat_boost.ogg","t":135845.40000000596,"dur":6.48,"ta":129.649}
|
||||
{"ev":"stop","t":136405.30000001192,"sid":23,"when":0,"ta":130.209}
|
||||
{"ev":"vend","url":"audio/voice/male/feat_boost.ogg","t":142654.80000001192,"reason":"kill","ta":136.459}
|
||||
{"ev":"start","t":146345.80000001192,"sid":25,"url":"audio/sfx/whoosh_up.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":140.15}
|
||||
{"ev":"vstart","url":"audio/voice/male/feat_shield.ogg","t":147998.90000000596,"dur":4.4,"ta":141.803}
|
||||
{"ev":"vend","url":"audio/voice/male/feat_shield.ogg","t":152568.69999998808,"reason":"kill","ta":146.373}
|
||||
{"ev":"vstart","url":"audio/voice/male/protect_soon.ogg","t":155999,"dur":2.48,"ta":149.803}
|
||||
{"ev":"start","t":158499.19999998808,"sid":26,"url":"audio/sfx/whoosh_left.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":152.303}
|
||||
{"ev":"vend","url":"audio/voice/male/protect_soon.ogg","t":158721.69999998808,"reason":"kill","ta":152.526}
|
||||
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":159089.09999999404,"ta":152.893}
|
||||
{"ev":"vibrate","pattern":"[20]","t":159337.5,"ta":153.142}
|
||||
{"ev":"vibrate","pattern":"[20]","t":159337.5,"ta":153.142}
|
||||
{"ev":"start","t":159337.59999999404,"sid":27,"url":"audio/sfx/shield.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":153.142}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":161499.30000001192,"ta":155.303}
|
||||
{"ev":"start","t":161499.40000000596,"sid":28,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":155.304}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":161999.19999998808,"ta":155.803}
|
||||
{"ev":"start","t":161999.40000000596,"sid":29,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":155.804}
|
||||
{"ev":"vibrate","pattern":"[100]","t":162499.30000001192,"ta":156.303}
|
||||
{"ev":"start","t":162499.30000001192,"sid":30,"url":"audio/sfx/shield_block.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":156.303}
|
||||
{"ev":"vstart","url":"audio/voice/male/shield_block.ogg","t":162499.5,"dur":1.6,"ta":156.304}
|
||||
{"ev":"start","t":162499.80000001192,"sid":31,"url":"audio/sfx/whoosh_left.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":156.304}
|
||||
{"ev":"vend","url":"audio/voice/male/shield_block.ogg","t":162499.80000001192,"reason":"kill","ta":156.304}
|
||||
{"ev":"vstart","url":"audio/voice/male/dir_left.ogg","t":162499.80000001192,"dur":0.5570975056689342,"ta":156.304}
|
||||
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":162998.19999998808,"ta":156.802}
|
||||
{"ev":"vend","url":"audio/voice/male/dir_left.ogg","t":162998.19999998808,"reason":"kill","ta":156.802}
|
||||
{"ev":"vstart","url":"audio/voice/male/protect_end.ogg","t":162998.30000001192,"dur":5.36,"ta":156.802}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":165499.90000000596,"ta":159.304}
|
||||
{"ev":"start","t":165500,"sid":32,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":159.304}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":165999.90000000596,"ta":159.804}
|
||||
{"ev":"start","t":166000,"sid":33,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":159.804}
|
||||
{"ev":"vibrate","pattern":"[80]","t":166499.90000000596,"ta":160.304}
|
||||
{"ev":"start","t":166500,"sid":34,"url":"audio/sfx/hit.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":160.304}
|
||||
{"ev":"vend","url":"audio/voice/male/protect_end.ogg","t":166500.09999999404,"reason":"kill","ta":160.304}
|
||||
{"ev":"vstart","url":"audio/voice/male/hit_left.ogg","t":166500.09999999404,"dur":4.64,"ta":160.304}
|
||||
{"ev":"start","t":166500.90000000596,"sid":35,"url":"audio/sfx/whoosh_right.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":160.305}
|
||||
{"ev":"vend","url":"audio/voice/male/hit_left.ogg","t":166500.90000000596,"reason":"kill","ta":160.305}
|
||||
{"ev":"vstart","url":"audio/voice/male/dir_right.ogg","t":166500.90000000596,"dur":0.39909297052154197,"ta":160.305}
|
||||
{"ev":"vend","url":"audio/voice/male/dir_right.ogg","t":166987.09999999404,"reason":"kill","ta":160.791}
|
||||
{"ev":"vstart","url":"audio/voice/male/hit_left.ogg","t":166987.5,"dur":4.64,"ta":160.792}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":169501,"ta":163.305}
|
||||
{"ev":"start","t":169501.09999999404,"sid":36,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":163.305}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":170001,"ta":163.805}
|
||||
{"ev":"start","t":170001,"sid":37,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":163.805}
|
||||
{"ev":"vibrate","pattern":"[80]","t":170501,"ta":164.305}
|
||||
{"ev":"start","t":170501.19999998808,"sid":38,"url":"audio/sfx/hit.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":164.305}
|
||||
{"ev":"vend","url":"audio/voice/male/hit_left.ogg","t":170501.19999998808,"reason":"kill","ta":164.305}
|
||||
{"ev":"vstart","url":"audio/voice/male/hit_right.ogg","t":170501.30000001192,"dur":5.12,"ta":164.305}
|
||||
{"ev":"start","t":170502.09999999404,"sid":39,"url":"audio/sfx/whoosh_right.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":164.306}
|
||||
{"ev":"vend","url":"audio/voice/male/hit_right.ogg","t":170502.09999999404,"reason":"kill","ta":164.306}
|
||||
{"ev":"vstart","url":"audio/voice/male/dir_right.ogg","t":170502.09999999404,"dur":0.39909297052154197,"ta":164.306}
|
||||
{"ev":"vend","url":"audio/voice/male/dir_right.ogg","t":170980.59999999404,"reason":"kill","ta":164.785}
|
||||
{"ev":"vstart","url":"audio/voice/male/hit_right.ogg","t":170980.80000001192,"dur":5.12,"ta":164.785}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":173502.09999999404,"ta":167.306}
|
||||
{"ev":"start","t":173502.19999998808,"sid":40,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":167.306}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":174002.19999998808,"ta":167.806}
|
||||
{"ev":"start","t":174002.30000001192,"sid":41,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":167.806}
|
||||
{"ev":"vibrate","pattern":"[15]","t":174337.80000001192,"ta":168.142}
|
||||
{"ev":"vibrate","pattern":"[80]","t":174502.09999999404,"ta":168.306}
|
||||
{"ev":"vend","url":"audio/voice/male/hit_right.ogg","t":174502.5,"reason":"kill","ta":168.307}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":174502.5,"ta":168.307}
|
||||
{"ev":"start","t":174502.80000001192,"sid":42,"url":"audio/sfx/hit.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":168.307}
|
||||
{"ev":"start","t":174502.90000000596,"sid":43,"url":"audio/sfx/crash.ogg","layer":"sfx","dur":3,"rate":1,"loop":false,"when":0,"ta":168.307}
|
||||
{"ev":"vibrate","pattern":"[80]","t":174802.69999998808,"ta":168.607}
|
||||
{"ev":"stop","t":175162.69999998808,"sid":24,"when":0,"ta":168.967}
|
||||
{"ev":"vibrate","pattern":"[100]","t":175703,"ta":169.507}
|
||||
{"ev":"fetch","url":"audio/voice/male/time_3.ogg","status":200,"ok":true,"ms":3,"t":175705.90000000596,"ta":169.51}
|
||||
{"ev":"vstart","url":"audio/voice/male/time_3.ogg","t":175711.69999998808,"dur":3.2,"ta":169.516}
|
||||
{"ev":"vend","url":"audio/voice/male/time_3.ogg","t":179176.59999999404,"reason":"kill","ta":172.981}
|
||||
{"ev":"fetch","url":"audio/voice/male/new_record.ogg","status":200,"ok":true,"ms":3,"t":179179.19999998808,"ta":172.983}
|
||||
{"ev":"vstart","url":"audio/voice/male/new_record.ogg","t":179182.19999998808,"dur":1.28,"ta":172.986}
|
||||
{"ev":"vend","url":"audio/voice/male/new_record.ogg","t":180778.59999999404,"reason":"kill","ta":174.583}
|
||||
{"ev":"fetch","url":"audio/voice/male/dodge_1.ogg","status":200,"ok":true,"ms":3,"t":180781.30000001192,"ta":174.585}
|
||||
{"ev":"vstart","url":"audio/voice/male/dodge_1.ogg","t":180784.30000001192,"dur":1.36,"ta":174.588}
|
||||
{"ev":"vend","url":"audio/voice/male/dodge_1.ogg","t":182380.69999998808,"reason":"kill","ta":176.185}
|
||||
{"ev":"fetch","url":"audio/voice/male/restart_hint.ogg","status":200,"ok":true,"ms":3,"t":182383.69999998808,"ta":176.188}
|
||||
{"ev":"vstart","url":"audio/voice/male/restart_hint.ogg","t":182388.30000001192,"dur":3.68,"ta":176.192}
|
||||
{"ev":"start","t":185703.5,"sid":44,"url":"audio/bgm/menu.ogg","layer":"bgm","dur":90,"rate":1,"loop":true,"when":0,"ta":179.508}
|
||||
{"ev":"vend","url":"audio/voice/male/restart_hint.ogg","t":186211.69999998808,"reason":"kill","ta":180.016}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":194218.19999998808,"ta":188.022}
|
||||
{"ev":"vibrate","pattern":"[20]","t":194583.5,"ta":188.388}
|
||||
{"ev":"start","t":194583.80000001192,"sid":45,"url":"audio/bgm/engine.ogg","layer":"bgm","dur":117,"rate":1,"loop":true,"when":0,"ta":188.388}
|
||||
{"ev":"stop","t":195444,"sid":44,"when":0,"ta":189.248}
|
||||
{"ev":"start","t":196084.09999999404,"sid":46,"url":"audio/sfx/whoosh_down.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":189.888}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":196693.40000000596,"ta":190.498}
|
||||
{"ev":"vibrate","pattern":"[20]","t":197055.80000001192,"ta":190.86}
|
||||
{"ev":"vibrate","pattern":"[20]","t":197055.90000000596,"ta":190.86}
|
||||
{"ev":"start","t":197056.09999999404,"sid":47,"url":"audio/sfx/boost.ogg","layer":"sfx","dur":1.8,"rate":1,"loop":false,"when":0,"ta":190.86}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":199084.19999998808,"ta":192.888}
|
||||
{"ev":"start","t":199084.19999998808,"sid":48,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":192.888}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":199584.09999999404,"ta":193.388}
|
||||
{"ev":"start","t":199584.19999998808,"sid":49,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":193.388}
|
||||
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":200084.09999999404,"ta":193.888}
|
||||
{"ev":"start","t":200084.19999998808,"sid":50,"url":"audio/sfx/shield_block.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":193.888}
|
||||
{"ev":"vstart","url":"audio/voice/male/protect_down.ogg","t":200084.30000001192,"dur":6.08,"ta":193.888}
|
||||
{"ev":"start","t":200085.30000001192,"sid":51,"url":"audio/sfx/whoosh_down.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":193.889}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":203085.40000000596,"ta":196.89}
|
||||
{"ev":"start","t":203085.5,"sid":52,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":196.89}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":203585.40000000596,"ta":197.39}
|
||||
{"ev":"start","t":203585.5,"sid":53,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":197.39}
|
||||
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":204085.40000000596,"ta":197.89}
|
||||
{"ev":"start","t":204085.5,"sid":54,"url":"audio/sfx/shield_block.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":197.89}
|
||||
{"ev":"start","t":204085.59999999404,"sid":55,"url":"audio/sfx/whoosh_down.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":197.89}
|
||||
{"ev":"vend","url":"audio/voice/male/protect_down.ogg","t":206504.30000001192,"reason":"kill","ta":200.308}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":207085.69999998808,"ta":200.89}
|
||||
{"ev":"start","t":207085.80000001192,"sid":56,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":200.89}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":207585.69999998808,"ta":201.39}
|
||||
{"ev":"start","t":207585.80000001192,"sid":57,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":201.39}
|
||||
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":208085.69999998808,"ta":201.89}
|
||||
{"ev":"start","t":208085.90000000596,"sid":58,"url":"audio/sfx/shield_block.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":201.89}
|
||||
{"ev":"vstart","url":"audio/voice/male/protect_down.ogg","t":208085.90000000596,"dur":6.08,"ta":201.89}
|
||||
{"ev":"start","t":208086.80000001192,"sid":59,"url":"audio/sfx/whoosh_up.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":201.891}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":211087,"ta":204.891}
|
||||
{"ev":"start","t":211087.09999999404,"sid":60,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":204.891}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":211586.90000000596,"ta":205.391}
|
||||
{"ev":"start","t":211587,"sid":61,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":205.391}
|
||||
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":212087,"ta":205.891}
|
||||
{"ev":"start","t":212087,"sid":62,"url":"audio/sfx/shield_block.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":205.891}
|
||||
{"ev":"start","t":212087.09999999404,"sid":63,"url":"audio/sfx/whoosh_left.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":205.891}
|
||||
{"ev":"vend","url":"audio/voice/male/protect_down.ogg","t":214514.40000000596,"reason":"kill","ta":208.319}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":215087.19999998808,"ta":208.891}
|
||||
{"ev":"start","t":215087.30000001192,"sid":64,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":208.891}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":215587.19999998808,"ta":209.391}
|
||||
{"ev":"start","t":215587.30000001192,"sid":65,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":209.391}
|
||||
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":216087.19999998808,"ta":209.891}
|
||||
{"ev":"start","t":216087.30000001192,"sid":66,"url":"audio/sfx/shield_block.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":209.891}
|
||||
{"ev":"vstart","url":"audio/voice/male/protect_left.ogg","t":216087.40000000596,"dur":7.76,"ta":209.892}
|
||||
{"ev":"start","t":216088.40000000596,"sid":67,"url":"audio/sfx/whoosh_up.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":209.893}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":219088.5,"ta":212.893}
|
||||
{"ev":"start","t":219088.69999998808,"sid":68,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":212.893}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":219588.59999999404,"ta":213.393}
|
||||
{"ev":"start","t":219588.69999998808,"sid":69,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":213.393}
|
||||
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":220088.59999999404,"ta":213.893}
|
||||
{"ev":"start","t":220088.59999999404,"sid":70,"url":"audio/sfx/shield_block.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":213.893}
|
||||
{"ev":"start","t":220088.69999998808,"sid":71,"url":"audio/sfx/whoosh_left.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":213.893}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":223088.80000001192,"ta":216.893}
|
||||
{"ev":"start","t":223088.90000000596,"sid":72,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":216.893}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":223588.80000001192,"ta":217.393}
|
||||
{"ev":"start","t":223588.90000000596,"sid":73,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":217.393}
|
||||
{"ev":"vend","url":"audio/voice/male/protect_left.ogg","t":224010.59999999404,"reason":"kill","ta":217.815}
|
||||
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":224088.80000001192,"ta":217.893}
|
||||
{"ev":"start","t":224089,"sid":74,"url":"audio/sfx/shield_block.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":217.893}
|
||||
{"ev":"vstart","url":"audio/voice/male/protect_left.ogg","t":224089,"dur":7.76,"ta":217.893}
|
||||
{"ev":"start","t":224090.19999998808,"sid":75,"url":"audio/sfx/whoosh_up.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":217.894}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":227090.19999998808,"ta":220.894}
|
||||
{"ev":"start","t":227090.30000001192,"sid":76,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":220.894}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":227590.30000001192,"ta":221.394}
|
||||
{"ev":"start","t":227590.40000000596,"sid":77,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":221.395}
|
||||
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":228090.19999998808,"ta":221.894}
|
||||
{"ev":"start","t":228090.30000001192,"sid":78,"url":"audio/sfx/shield_block.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":221.894}
|
||||
{"ev":"start","t":228090.40000000596,"sid":79,"url":"audio/sfx/whoosh_down.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":221.895}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":231090.5,"ta":224.895}
|
||||
{"ev":"start","t":231090.59999999404,"sid":80,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":224.895}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":231590.5,"ta":225.395}
|
||||
{"ev":"start","t":231590.59999999404,"sid":81,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":225.395}
|
||||
{"ev":"vend","url":"audio/voice/male/protect_left.ogg","t":231997.59999999404,"reason":"kill","ta":225.802}
|
||||
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":232090.5,"ta":225.895}
|
||||
{"ev":"start","t":232090.59999999404,"sid":82,"url":"audio/sfx/shield_block.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":225.895}
|
||||
{"ev":"vstart","url":"audio/voice/male/protect_down.ogg","t":232090.69999998808,"dur":6.08,"ta":225.895}
|
||||
{"ev":"start","t":232091.5,"sid":83,"url":"audio/sfx/whoosh_up.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":225.896}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":235091.59999999404,"ta":228.896}
|
||||
{"ev":"start","t":235091.80000001192,"sid":84,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":228.896}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":235591.59999999404,"ta":229.396}
|
||||
{"ev":"start","t":235591.69999998808,"sid":85,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":229.396}
|
||||
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":236091.69999998808,"ta":229.896}
|
||||
{"ev":"start","t":236091.69999998808,"sid":86,"url":"audio/sfx/shield_block.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":229.896}
|
||||
{"ev":"start","t":236091.90000000596,"sid":87,"url":"audio/sfx/whoosh_right.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":229.896}
|
||||
{"ev":"vend","url":"audio/voice/male/protect_down.ogg","t":238521.69999998808,"reason":"kill","ta":232.326}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":239091.90000000596,"ta":232.896}
|
||||
{"ev":"start","t":239092,"sid":88,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":232.896}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":239591.90000000596,"ta":233.396}
|
||||
{"ev":"start","t":239592,"sid":89,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":233.396}
|
||||
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":240092,"ta":233.896}
|
||||
{"ev":"start","t":240092.09999999404,"sid":90,"url":"audio/sfx/shield_block.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":233.896}
|
||||
{"ev":"vstart","url":"audio/voice/male/protect_right.ogg","t":240092.19999998808,"dur":7.2,"ta":233.896}
|
||||
{"ev":"start","t":240093.30000001192,"sid":91,"url":"audio/sfx/whoosh_right.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":233.897}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":243093.40000000596,"ta":236.898}
|
||||
{"ev":"start","t":243093.40000000596,"sid":92,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":236.898}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":243593.40000000596,"ta":237.398}
|
||||
{"ev":"start","t":243593.5,"sid":93,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":237.398}
|
||||
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":244093.40000000596,"ta":237.898}
|
||||
{"ev":"start","t":244093.5,"sid":94,"url":"audio/sfx/shield_block.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":237.898}
|
||||
{"ev":"start","t":244093.59999999404,"sid":95,"url":"audio/sfx/whoosh_up.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":237.898}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":247093.69999998808,"ta":240.898}
|
||||
{"ev":"start","t":247093.80000001192,"sid":96,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":240.898}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":247593.59999999404,"ta":241.398}
|
||||
{"ev":"start","t":247593.69999998808,"sid":97,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":241.398}
|
||||
{"ev":"vend","url":"audio/voice/male/protect_right.ogg","t":247623.30000001192,"reason":"kill","ta":241.427}
|
||||
{"ev":"vstart","url":"audio/voice/male/protect_soon.ogg","t":247623.30000001192,"dur":2.48,"ta":241.427}
|
||||
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":248093.69999998808,"ta":241.898}
|
||||
{"ev":"start","t":248093.80000001192,"sid":98,"url":"audio/sfx/shield_block.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":241.898}
|
||||
{"ev":"vend","url":"audio/voice/male/protect_soon.ogg","t":248093.80000001192,"reason":"kill","ta":241.898}
|
||||
{"ev":"vstart","url":"audio/voice/male/protect_up.ogg","t":248093.80000001192,"dur":6.96,"ta":241.898}
|
||||
{"ev":"start","t":248094.80000001192,"sid":99,"url":"audio/sfx/whoosh_left.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":241.899}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":251094.90000000596,"ta":244.899}
|
||||
{"ev":"start","t":251094.90000000596,"sid":100,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":244.899}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":251594.80000001192,"ta":245.399}
|
||||
{"ev":"start","t":251594.90000000596,"sid":101,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":245.399}
|
||||
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":252094.90000000596,"ta":245.899}
|
||||
{"ev":"start","t":252095,"sid":102,"url":"audio/sfx/shield_block.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":245.899}
|
||||
{"ev":"start","t":252095.09999999404,"sid":103,"url":"audio/sfx/whoosh_up.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":245.899}
|
||||
{"ev":"vend","url":"audio/voice/male/protect_up.ogg","t":252095.09999999404,"reason":"kill","ta":245.899}
|
||||
{"ev":"vstart","url":"audio/voice/male/dir_up.ogg","t":252095.19999998808,"dur":0.39909297052154197,"ta":245.899}
|
||||
{"ev":"vend","url":"audio/voice/male/dir_up.ogg","t":252568.69999998808,"reason":"kill","ta":246.373}
|
||||
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":254584,"ta":248.388}
|
||||
{"ev":"vstart","url":"audio/voice/male/protect_end.ogg","t":254584.09999999404,"dur":5.36,"ta":248.388}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":255095.19999998808,"ta":248.899}
|
||||
{"ev":"start","t":255095.30000001192,"sid":104,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":248.899}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":255595.19999998808,"ta":249.399}
|
||||
{"ev":"start","t":255595.30000001192,"sid":105,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":249.399}
|
||||
{"ev":"vibrate","pattern":"[80]","t":256095.19999998808,"ta":249.899}
|
||||
{"ev":"start","t":256095.30000001192,"sid":106,"url":"audio/sfx/hit.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":249.899}
|
||||
{"ev":"vend","url":"audio/voice/male/protect_end.ogg","t":256095.30000001192,"reason":"kill","ta":249.899}
|
||||
{"ev":"vstart","url":"audio/voice/male/hit_up.ogg","t":256095.40000000596,"dur":5.44,"ta":249.9}
|
||||
{"ev":"start","t":256096.09999999404,"sid":107,"url":"audio/sfx/whoosh_right.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":249.9}
|
||||
{"ev":"vend","url":"audio/voice/male/hit_up.ogg","t":256096.09999999404,"reason":"kill","ta":249.9}
|
||||
{"ev":"vstart","url":"audio/voice/male/dir_right.ogg","t":256096.19999998808,"dur":0.39909297052154197,"ta":249.9}
|
||||
{"ev":"vend","url":"audio/voice/male/dir_right.ogg","t":256585.59999999404,"reason":"kill","ta":250.39}
|
||||
{"ev":"vstart","url":"audio/voice/male/hit_up.ogg","t":256585.69999998808,"dur":5.44,"ta":250.39}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":259096.19999998808,"ta":252.9}
|
||||
{"ev":"start","t":259096.40000000596,"sid":108,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":252.901}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":259596.30000001192,"ta":253.4}
|
||||
{"ev":"start","t":259596.40000000596,"sid":109,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":253.401}
|
||||
{"ev":"vibrate","pattern":"[80]","t":260096.30000001192,"ta":253.9}
|
||||
{"ev":"start","t":260096.40000000596,"sid":110,"url":"audio/sfx/hit.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":253.901}
|
||||
{"ev":"vend","url":"audio/voice/male/hit_up.ogg","t":260096.40000000596,"reason":"kill","ta":253.901}
|
||||
{"ev":"vstart","url":"audio/voice/male/hit_right.ogg","t":260096.40000000596,"dur":5.12,"ta":253.901}
|
||||
{"ev":"start","t":260097.19999998808,"sid":111,"url":"audio/sfx/whoosh_up.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":253.901}
|
||||
{"ev":"vend","url":"audio/voice/male/hit_right.ogg","t":260097.19999998808,"reason":"kill","ta":253.901}
|
||||
{"ev":"vstart","url":"audio/voice/male/dir_up.ogg","t":260097.30000001192,"dur":0.39909297052154197,"ta":253.901}
|
||||
{"ev":"vend","url":"audio/voice/male/dir_up.ogg","t":260578.80000001192,"reason":"kill","ta":254.383}
|
||||
{"ev":"vstart","url":"audio/voice/male/hit_right.ogg","t":260579,"dur":5.12,"ta":254.383}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":263097.3000000119,"ta":256.901}
|
||||
{"ev":"start","t":263097.5,"sid":112,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":256.902}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":263597.40000000596,"ta":257.402}
|
||||
{"ev":"start","t":263597.40000000596,"sid":113,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":257.402}
|
||||
{"ev":"vibrate","pattern":"[80]","t":264097.3000000119,"ta":257.901}
|
||||
{"ev":"vend","url":"audio/voice/male/hit_right.ogg","t":264097.59999999404,"reason":"kill","ta":257.902}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":264097.59999999404,"ta":257.902}
|
||||
{"ev":"start","t":264097.6999999881,"sid":114,"url":"audio/sfx/hit.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":257.902}
|
||||
{"ev":"start","t":264097.6999999881,"sid":115,"url":"audio/sfx/crash.ogg","layer":"sfx","dur":3,"rate":1,"loop":false,"when":0,"ta":257.902}
|
||||
{"ev":"vibrate","pattern":"[80]","t":264397.6999999881,"ta":258.202}
|
||||
{"ev":"stop","t":264757.6999999881,"sid":45,"when":0,"ta":258.562}
|
||||
{"ev":"vstart","url":"audio/voice/male/time_3.ogg","t":265298,"dur":3.2,"ta":259.102}
|
||||
{"ev":"vend","url":"audio/voice/male/time_3.ogg","t":268751.59999999404,"reason":"kill","ta":262.556}
|
||||
{"ev":"vstart","url":"audio/voice/male/dodge_1.ogg","t":268751.8000000119,"dur":1.36,"ta":262.556}
|
||||
{"ev":"vend","url":"audio/voice/male/dodge_1.ogg","t":270353.6999999881,"reason":"kill","ta":264.158}
|
||||
{"ev":"vstart","url":"audio/voice/male/restart_hint.ogg","t":270354,"dur":3.68,"ta":264.158}
|
||||
{"ev":"vend","url":"audio/voice/male/restart_hint.ogg","t":274184.59999999404,"reason":"kill","ta":267.989}
|
||||
{"ev":"start","t":274184.8000000119,"sid":116,"url":"audio/bgm/menu.ogg","layer":"bgm","dur":90,"rate":1,"loop":true,"when":0,"ta":267.989}
|
||||
@@ -0,0 +1,137 @@
|
||||
-0.15 gesture tap
|
||||
0.13 vstart drill_welcome.ogg
|
||||
3.95 vend drill_welcome.ogg
|
||||
3.95 vstart skip_hint.ogg
|
||||
5.83 vend skip_hint.ogg
|
||||
5.83 vstart drill_rule.ogg
|
||||
9.67 vend drill_rule.ogg
|
||||
9.67 vstart drill_left.ogg
|
||||
14.89 vend drill_left.ogg
|
||||
14.89 vstart dir_left.ogg
|
||||
15.66 vend dir_left.ogg
|
||||
19.40 vstart drill_retry_left.ogg
|
||||
22.85 vend drill_retry_left.ogg
|
||||
22.85 vstart dir_left.ogg
|
||||
23.62 vend dir_left.ogg
|
||||
27.36 vstart drill_moveon.ogg
|
||||
31.00 gesture swipeleft
|
||||
31.47 vend drill_moveon.ogg
|
||||
31.47 vstart drill_right.ogg
|
||||
34.18 vend drill_right.ogg
|
||||
34.18 vstart dir_right.ogg
|
||||
34.67 vend dir_right.ogg
|
||||
38.69 vstart drill_retry_right.ogg
|
||||
42.15 vend drill_retry_right.ogg
|
||||
42.15 vstart dir_right.ogg
|
||||
42.63 vend dir_right.ogg
|
||||
46.65 vstart drill_moveon.ogg
|
||||
47.77 gesture swiperight
|
||||
50.76 vend drill_moveon.ogg
|
||||
50.77 vstart drill_up.ogg
|
||||
55.34 vend drill_up.ogg
|
||||
55.34 vstart dir_up.ogg
|
||||
55.82 vend dir_up.ogg
|
||||
59.53 gesture swipeup
|
||||
59.84 vstart drill_retry_up.ogg
|
||||
63.95 vend drill_retry_up.ogg
|
||||
63.95 vstart dir_up.ogg
|
||||
64.44 vend dir_up.ogg
|
||||
68.45 vstart drill_moveon.ogg
|
||||
72.56 vend drill_moveon.ogg
|
||||
72.57 vstart drill_down.ogg
|
||||
76.02 vend drill_down.ogg
|
||||
76.02 vstart dir_down.ogg
|
||||
76.79 vend dir_down.ogg
|
||||
80.53 vstart drill_retry_down.ogg
|
||||
83.24 vend drill_retry_down.ogg
|
||||
83.24 vstart dir_down.ogg
|
||||
84.01 vend dir_down.ogg
|
||||
87.74 vstart drill_moveon.ogg
|
||||
91.86 vend drill_moveon.ogg
|
||||
91.86 vstart drill_done.ogg
|
||||
96.80 vend drill_done.ogg
|
||||
102.31 vstart protect_up.ogg
|
||||
109.39 vend protect_up.ogg
|
||||
110.31 vstart protect_up.ogg
|
||||
111.04 gesture swipedown
|
||||
111.41 vend protect_up.ogg
|
||||
111.41 vstart paused.ogg
|
||||
112.54 vend paused.ogg
|
||||
112.54 vstart menu_main.ogg
|
||||
116.65 vend menu_main.ogg
|
||||
116.65 vstart menu_resume.ogg
|
||||
117.79 vend menu_resume.ogg
|
||||
129.40 gesture doubletap
|
||||
129.65 vstart feat_boost.ogg
|
||||
136.46 vend feat_boost.ogg
|
||||
141.80 vstart feat_shield.ogg
|
||||
146.37 vend feat_shield.ogg
|
||||
149.80 vstart protect_soon.ogg
|
||||
152.53 vend protect_soon.ogg
|
||||
152.89 gesture doubletap
|
||||
156.30 vstart shield_block.ogg
|
||||
156.30 vend shield_block.ogg
|
||||
156.30 vstart dir_left.ogg
|
||||
156.80 vend dir_left.ogg
|
||||
156.80 vstart protect_end.ogg
|
||||
160.30 vend protect_end.ogg
|
||||
160.30 vstart hit_left.ogg
|
||||
160.31 vend hit_left.ogg
|
||||
160.31 vstart dir_right.ogg
|
||||
160.79 vend dir_right.ogg
|
||||
160.79 vstart hit_left.ogg
|
||||
164.31 vend hit_left.ogg
|
||||
164.31 vstart hit_right.ogg
|
||||
164.31 vend hit_right.ogg
|
||||
164.31 vstart dir_right.ogg
|
||||
164.78 vend dir_right.ogg
|
||||
164.78 vstart hit_right.ogg
|
||||
168.31 vend hit_right.ogg
|
||||
169.52 vstart time_3.ogg
|
||||
172.98 vend time_3.ogg
|
||||
172.99 vstart new_record.ogg
|
||||
174.58 vend new_record.ogg
|
||||
174.59 vstart dodge_1.ogg
|
||||
176.19 vend dodge_1.ogg
|
||||
176.19 vstart restart_hint.ogg
|
||||
180.02 vend restart_hint.ogg
|
||||
188.02 gesture tap
|
||||
190.50 gesture tap
|
||||
193.89 vstart protect_down.ogg
|
||||
200.31 vend protect_down.ogg
|
||||
201.89 vstart protect_down.ogg
|
||||
208.32 vend protect_down.ogg
|
||||
209.89 vstart protect_left.ogg
|
||||
217.81 vend protect_left.ogg
|
||||
217.89 vstart protect_left.ogg
|
||||
225.80 vend protect_left.ogg
|
||||
225.90 vstart protect_down.ogg
|
||||
232.33 vend protect_down.ogg
|
||||
233.90 vstart protect_right.ogg
|
||||
241.43 vend protect_right.ogg
|
||||
241.43 vstart protect_soon.ogg
|
||||
241.90 vend protect_soon.ogg
|
||||
241.90 vstart protect_up.ogg
|
||||
245.90 vend protect_up.ogg
|
||||
245.90 vstart dir_up.ogg
|
||||
246.37 vend dir_up.ogg
|
||||
248.39 vstart protect_end.ogg
|
||||
249.90 vend protect_end.ogg
|
||||
249.90 vstart hit_up.ogg
|
||||
249.90 vend hit_up.ogg
|
||||
249.90 vstart dir_right.ogg
|
||||
250.39 vend dir_right.ogg
|
||||
250.39 vstart hit_up.ogg
|
||||
253.90 vend hit_up.ogg
|
||||
253.90 vstart hit_right.ogg
|
||||
253.90 vend hit_right.ogg
|
||||
253.90 vstart dir_up.ogg
|
||||
254.38 vend dir_up.ogg
|
||||
254.38 vstart hit_right.ogg
|
||||
257.90 vend hit_right.ogg
|
||||
259.10 vstart time_3.ogg
|
||||
262.56 vend time_3.ogg
|
||||
262.56 vstart dodge_1.ogg
|
||||
264.16 vend dodge_1.ogg
|
||||
264.16 vstart restart_hint.ogg
|
||||
267.99 vend restart_hint.ogg
|
||||
@@ -0,0 +1,420 @@
|
||||
{"ev":"probe_ready","t":8.400000005960464,"ta":null}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":6011.4000000059605,"ta":-0.07}
|
||||
{"ev":"recstart","mime":"audio/webm;codecs=opus","t":6081.699999988079,"ta":0}
|
||||
{"ev":"fetch","url":"audio/sfx/whoosh_left.ogg","status":200,"ok":true,"ms":15,"t":6096.4000000059605,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/sfx/whoosh_right.ogg","status":200,"ok":true,"ms":14,"t":6096.5,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/sfx/whoosh_up.ogg","status":200,"ok":true,"ms":14,"t":6096.5999999940395,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/sfx/whoosh_down.ogg","status":200,"ok":true,"ms":14,"t":6096.699999988079,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/sfx/alarm.ogg","status":200,"ok":true,"ms":14,"t":6096.699999988079,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/sfx/boost.ogg","status":200,"ok":true,"ms":14,"t":6096.699999988079,"ta":0.015}
|
||||
{"ev":"fetch","url":"audio/sfx/shield.ogg","status":200,"ok":true,"ms":16,"t":6098.799999982119,"ta":0.017}
|
||||
{"ev":"fetch","url":"audio/sfx/shield_block.ogg","status":200,"ok":true,"ms":17,"t":6099,"ta":0.017}
|
||||
{"ev":"fetch","url":"audio/sfx/dodge.ogg","status":200,"ok":true,"ms":17,"t":6099.5,"ta":0.018}
|
||||
{"ev":"fetch","url":"audio/sfx/whiff.ogg","status":200,"ok":true,"ms":18,"t":6100.199999988079,"ta":0.019}
|
||||
{"ev":"fetch","url":"audio/sfx/hit.ogg","status":200,"ok":true,"ms":18,"t":6100.5,"ta":0.019}
|
||||
{"ev":"fetch","url":"audio/sfx/crash.ogg","status":200,"ok":true,"ms":19,"t":6101.199999988079,"ta":0.02}
|
||||
{"ev":"fetch","url":"audio/voice/female/dir_left.ogg","status":200,"ok":true,"ms":24,"t":6106.299999982119,"ta":0.025}
|
||||
{"ev":"fetch","url":"audio/voice/female/dir_right.ogg","status":200,"ok":true,"ms":24,"t":6106.4000000059605,"ta":0.025}
|
||||
{"ev":"fetch","url":"audio/voice/female/dir_up.ogg","status":200,"ok":true,"ms":24,"t":6106.4000000059605,"ta":0.025}
|
||||
{"ev":"fetch","url":"audio/voice/female/dir_down.ogg","status":200,"ok":true,"ms":24,"t":6107.4000000059605,"ta":0.026}
|
||||
{"ev":"fetch","url":"audio/voice/female/hit_left.ogg","status":200,"ok":true,"ms":25,"t":6108.0999999940395,"ta":0.026}
|
||||
{"ev":"fetch","url":"audio/voice/female/hit_right.ogg","status":200,"ok":true,"ms":26,"t":6109.4000000059605,"ta":0.028}
|
||||
{"ev":"fetch","url":"audio/voice/female/hit_up.ogg","status":200,"ok":true,"ms":29,"t":6112.5,"ta":0.031}
|
||||
{"ev":"fetch","url":"audio/voice/female/hit_down.ogg","status":200,"ok":true,"ms":31,"t":6114,"ta":0.032}
|
||||
{"ev":"fetch","url":"audio/voice/female/hit_last.ogg","status":200,"ok":true,"ms":35,"t":6118.4000000059605,"ta":0.037}
|
||||
{"ev":"fetch","url":"audio/voice/female/protect_left.ogg","status":200,"ok":true,"ms":37,"t":6120.799999982119,"ta":0.039}
|
||||
{"ev":"fetch","url":"audio/voice/female/protect_right.ogg","status":200,"ok":true,"ms":37,"t":6120.799999982119,"ta":0.039}
|
||||
{"ev":"fetch","url":"audio/voice/female/protect_up.ogg","status":200,"ok":true,"ms":37,"t":6120.9000000059605,"ta":0.039}
|
||||
{"ev":"fetch","url":"audio/voice/female/protect_down.ogg","status":200,"ok":true,"ms":39,"t":6122.5999999940395,"ta":0.041}
|
||||
{"ev":"fetch","url":"audio/voice/female/protect_end.ogg","status":200,"ok":true,"ms":39,"t":6122.799999982119,"ta":0.041}
|
||||
{"ev":"fetch","url":"audio/voice/female/protect_soon.ogg","status":200,"ok":true,"ms":39,"t":6123,"ta":0.041}
|
||||
{"ev":"fetch","url":"audio/voice/female/shield_ready.ogg","status":200,"ok":true,"ms":45,"t":6128.699999988079,"ta":0.047}
|
||||
{"ev":"fetch","url":"audio/voice/female/shield_block.ogg","status":200,"ok":true,"ms":45,"t":6128.699999988079,"ta":0.047}
|
||||
{"ev":"fetch","url":"audio/voice/female/feat_boost.ogg","status":200,"ok":true,"ms":45,"t":6128.799999982119,"ta":0.047}
|
||||
{"ev":"fetch","url":"audio/voice/female/feat_boost_done.ogg","status":200,"ok":true,"ms":46,"t":6130.5,"ta":0.049}
|
||||
{"ev":"fetch","url":"audio/voice/female/feat_shield.ogg","status":200,"ok":true,"ms":55,"t":6139.699999988079,"ta":0.058}
|
||||
{"ev":"fetch","url":"audio/voice/female/feat_shield_done.ogg","status":200,"ok":true,"ms":57,"t":6141.0999999940395,"ta":0.059}
|
||||
{"ev":"fetch","url":"audio/voice/female/boost_not_ready.ogg","status":200,"ok":true,"ms":57,"t":6141.0999999940395,"ta":0.059}
|
||||
{"ev":"fetch","url":"audio/voice/female/ms_10.ogg","status":200,"ok":true,"ms":57,"t":6141.199999988079,"ta":0.06}
|
||||
{"ev":"fetch","url":"audio/voice/female/ms_25.ogg","status":200,"ok":true,"ms":57,"t":6141.299999982119,"ta":0.06}
|
||||
{"ev":"fetch","url":"audio/voice/female/ms_50.ogg","status":200,"ok":true,"ms":58,"t":6142.0999999940395,"ta":0.06}
|
||||
{"ev":"fetch","url":"audio/voice/female/ms_100.ogg","status":200,"ok":true,"ms":58,"t":6142.299999982119,"ta":0.061}
|
||||
{"ev":"fetch","url":"audio/voice/female/gd_hit_hint.ogg","status":200,"ok":true,"ms":59,"t":6144.0999999940395,"ta":0.062}
|
||||
{"ev":"fetch","url":"audio/voice/female/gd_last_life.ogg","status":200,"ok":true,"ms":60,"t":6144.5,"ta":0.063}
|
||||
{"ev":"fetch","url":"audio/voice/female/paused.ogg","status":200,"ok":true,"ms":62,"t":6147,"ta":0.065}
|
||||
{"ev":"fetch","url":"audio/voice/female/menu_main.ogg","status":200,"ok":true,"ms":63,"t":6147.9000000059605,"ta":0.066}
|
||||
{"ev":"fetch","url":"audio/voice/female/menu_resume.ogg","status":200,"ok":true,"ms":71,"t":6155.5,"ta":0.074}
|
||||
{"ev":"fetch","url":"audio/voice/female/menu_lobby.ogg","status":200,"ok":true,"ms":77,"t":6162,"ta":0.08}
|
||||
{"ev":"fetch","url":"audio/voice/female/menu_help.ogg","status":200,"ok":true,"ms":77,"t":6162.0999999940395,"ta":0.08}
|
||||
{"ev":"fetch","url":"audio/voice/female/settings_hint.ogg","status":200,"ok":true,"ms":77,"t":6162.4000000059605,"ta":0.081}
|
||||
{"ev":"fetch","url":"audio/voice/female/help_recap.ogg","status":200,"ok":true,"ms":78,"t":6162.5,"ta":0.081}
|
||||
{"ev":"fetch","url":"audio/voice/female/drill_welcome.ogg","status":200,"ok":true,"ms":79,"t":6163.5999999940395,"ta":0.082}
|
||||
{"ev":"fetch","url":"audio/voice/female/drill_rule.ogg","status":200,"ok":true,"ms":79,"t":6163.799999982119,"ta":0.082}
|
||||
{"ev":"fetch","url":"audio/voice/female/second_run_ask.ogg","status":200,"ok":true,"ms":79,"t":6163.9000000059605,"ta":0.082}
|
||||
{"ev":"fetch","url":"audio/voice/female/skip_hint.ogg","status":200,"ok":true,"ms":80,"t":6165,"ta":0.083}
|
||||
{"ev":"vstart","url":"audio/voice/female/second_run_ask.ogg","t":6182,"dur":3.04,"ta":0.1}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":6510,"ta":0.428}
|
||||
{"ev":"vibrate","pattern":"[20]","t":6874.0999999940395,"ta":0.792}
|
||||
{"ev":"vend","url":"audio/voice/female/second_run_ask.ogg","t":6874.199999988079,"reason":"kill","ta":0.793}
|
||||
{"ev":"fetch","url":"audio/bgm/engine.ogg","status":200,"ok":true,"ms":3,"t":6877.0999999940395,"ta":0.795}
|
||||
{"ev":"start","t":7044,"sid":1,"url":"audio/bgm/engine.ogg","layer":"bgm","dur":117,"rate":1,"loop":true,"when":0,"ta":0.962}
|
||||
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":7843.4000000059605,"ta":1.762}
|
||||
{"ev":"vibrate","pattern":"[10]","t":8194,"ta":2.112}
|
||||
{"ev":"start","t":8194.5,"sid":2,"url":"audio/sfx/whiff.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":2.113}
|
||||
{"ev":"start","t":8376.799999982119,"sid":3,"url":"audio/sfx/whoosh_left.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":2.295}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":9423.699999988079,"ta":3.342}
|
||||
{"ev":"vibrate","pattern":"[20]","t":9786.90000000596,"ta":3.705}
|
||||
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":10254.299999982119,"ta":4.173}
|
||||
{"ev":"vibrate","pattern":"[10]","t":10609.799999982119,"ta":4.528}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":11376.90000000596,"ta":5.295}
|
||||
{"ev":"start","t":11377.09999999404,"sid":4,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":5.295}
|
||||
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":11794.5,"ta":5.713}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":11877,"ta":5.795}
|
||||
{"ev":"start","t":11877.09999999404,"sid":5,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":5.795}
|
||||
{"ev":"vibrate","pattern":"[20]","t":12042.299999982119,"ta":5.961}
|
||||
{"ev":"vibrate","pattern":"[40,100,40]","t":12042.5,"ta":5.961}
|
||||
{"ev":"vstart","url":"audio/voice/female/feat_shield_done.ogg","t":12043,"dur":4.64,"ta":5.961}
|
||||
{"ev":"start","t":12377.199999988079,"sid":6,"url":"audio/sfx/dodge.ogg","layer":"sfx","dur":1.2,"rate":1,"loop":false,"when":0,"ta":6.296}
|
||||
{"ev":"start","t":12377.40000000596,"sid":7,"url":"audio/sfx/whoosh_left.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":6.296}
|
||||
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":13313.799999982119,"ta":7.232}
|
||||
{"ev":"vibrate","pattern":"[10]","t":13677,"ta":7.595}
|
||||
{"ev":"vend","url":"audio/voice/female/feat_shield_done.ogg","t":13677.59999999404,"reason":"kill","ta":7.596}
|
||||
{"ev":"vstart","url":"audio/voice/female/paused.ogg","t":13677.699999988079,"dur":0.9570975056689343,"ta":7.596}
|
||||
{"ev":"fetch","url":"audio/bgm/menu.ogg","status":200,"ok":true,"ms":3,"t":13680,"ta":7.598}
|
||||
{"ev":"start","t":13807.40000000596,"sid":8,"url":"audio/bgm/menu.ogg","layer":"bgm","dur":90,"rate":1,"loop":true,"when":0,"ta":7.726}
|
||||
{"ev":"stop","t":14167.799999982119,"sid":1,"when":0,"ta":8.086}
|
||||
{"ev":"vend","url":"audio/voice/female/paused.ogg","t":14630.40000000596,"reason":"kill","ta":8.549}
|
||||
{"ev":"vstart","url":"audio/voice/female/menu_main.ogg","t":14630.59999999404,"dur":3.92,"ta":8.549}
|
||||
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":14681.5,"ta":8.6}
|
||||
{"ev":"vibrate","pattern":"[10]","t":15043.5,"ta":8.962}
|
||||
{"ev":"start","t":15043.90000000596,"sid":9,"url":"audio/bgm/engine.ogg","layer":"bgm","dur":117,"rate":1,"loop":true,"when":0,"ta":8.962}
|
||||
{"ev":"stop","t":15604.09999999404,"sid":8,"when":0,"ta":9.522}
|
||||
{"ev":"start","t":15844.09999999404,"sid":10,"url":"audio/sfx/whoosh_left.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":9.762}
|
||||
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":15942.09999999404,"ta":9.86}
|
||||
{"ev":"vibrate","pattern":"[20]","t":16190.299999982119,"ta":10.109}
|
||||
{"ev":"vibrate","pattern":"[40,100,40]","t":16190.299999982119,"ta":10.109}
|
||||
{"ev":"vend","url":"audio/voice/female/menu_main.ogg","t":16190.299999982119,"reason":"kill","ta":10.109}
|
||||
{"ev":"vstart","url":"audio/voice/female/feat_shield_done.ogg","t":16190.59999999404,"dur":4.64,"ta":10.109}
|
||||
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":17363,"ta":11.281}
|
||||
{"ev":"vibrate","pattern":"[10]","t":17726.79999998212,"ta":11.645}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":18844.29999998212,"ta":12.763}
|
||||
{"ev":"start","t":18844.40000000596,"sid":11,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":12.763}
|
||||
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":19151.79999998212,"ta":13.07}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":19344.09999999404,"ta":13.262}
|
||||
{"ev":"start","t":19344.19999998808,"sid":12,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":13.263}
|
||||
{"ev":"vibrate","pattern":"[10]","t":19509.5,"ta":13.428}
|
||||
{"ev":"vend","url":"audio/voice/female/feat_shield_done.ogg","t":19831.09999999404,"reason":"kill","ta":13.749}
|
||||
{"ev":"start","t":19844.29999998212,"sid":13,"url":"audio/sfx/dodge.ogg","layer":"sfx","dur":1.2,"rate":1,"loop":false,"when":0,"ta":13.763}
|
||||
{"ev":"start","t":19844.29999998212,"sid":14,"url":"audio/sfx/whoosh_down.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":13.763}
|
||||
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":20250.09999999404,"ta":14.168}
|
||||
{"ev":"vibrate","pattern":"[10]","t":20609.79999998212,"ta":14.528}
|
||||
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":21617.69999998808,"ta":15.536}
|
||||
{"ev":"vibrate","pattern":"[10]","t":21977,"ta":15.895}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":22844.40000000596,"ta":16.763}
|
||||
{"ev":"start","t":22844.5,"sid":15,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":16.763}
|
||||
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":23074.5,"ta":16.993}
|
||||
{"ev":"vibrate","pattern":"[20]","t":23321.90000000596,"ta":17.24}
|
||||
{"ev":"vibrate","pattern":"[40,100,40]","t":23321.90000000596,"ta":17.24}
|
||||
{"ev":"vstart","url":"audio/voice/female/feat_shield_done.ogg","t":23322,"dur":4.64,"ta":17.24}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":23344.40000000596,"ta":17.263}
|
||||
{"ev":"start","t":23344.5,"sid":16,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":17.263}
|
||||
{"ev":"start","t":23844.5,"sid":17,"url":"audio/sfx/dodge.ogg","layer":"sfx","dur":1.2,"rate":1,"loop":false,"when":0,"ta":17.763}
|
||||
{"ev":"start","t":23844.59999999404,"sid":18,"url":"audio/sfx/whoosh_up.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":17.763}
|
||||
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":24670.09999999404,"ta":18.588}
|
||||
{"ev":"vibrate","pattern":"[10]","t":25025.79999998212,"ta":18.944}
|
||||
{"ev":"start","t":25026.19999998808,"sid":19,"url":"audio/bgm/menu.ogg","layer":"bgm","dur":90,"rate":1,"loop":true,"when":0,"ta":18.945}
|
||||
{"ev":"vend","url":"audio/voice/female/feat_shield_done.ogg","t":25026.19999998808,"reason":"kill","ta":18.945}
|
||||
{"ev":"vstart","url":"audio/voice/female/paused.ogg","t":25026.19999998808,"dur":0.9570975056689343,"ta":18.945}
|
||||
{"ev":"stop","t":25386.29999998212,"sid":9,"when":0,"ta":19.305}
|
||||
{"ev":"vend","url":"audio/voice/female/paused.ogg","t":25983.90000000596,"reason":"kill","ta":19.902}
|
||||
{"ev":"vstart","url":"audio/voice/female/menu_main.ogg","t":25984,"dur":3.92,"ta":19.902}
|
||||
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":26249.40000000596,"ta":20.168}
|
||||
{"ev":"vibrate","pattern":"[20]","t":26496.79999998212,"ta":20.415}
|
||||
{"ev":"start","t":26497,"sid":20,"url":"audio/bgm/engine.ogg","layer":"bgm","dur":117,"rate":1,"loop":true,"when":0,"ta":20.415}
|
||||
{"ev":"vend","url":"audio/voice/female/menu_main.ogg","t":26874.40000000596,"reason":"kill","ta":20.793}
|
||||
{"ev":"vstart","url":"audio/voice/female/feat_boost.ogg","t":26874.40000000596,"dur":3.84,"ta":20.793}
|
||||
{"ev":"stop","t":27057.19999998808,"sid":19,"when":0,"ta":20.976}
|
||||
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":27521.09999999404,"ta":21.439}
|
||||
{"ev":"vibrate","pattern":"[10]","t":27876.29999998212,"ta":21.795}
|
||||
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":29189,"ta":23.107}
|
||||
{"ev":"vibrate","pattern":"[10]","t":29542.69999998808,"ta":23.461}
|
||||
{"ev":"vend","url":"audio/voice/female/feat_boost.ogg","t":29954.09999999404,"reason":"kill","ta":23.872}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":30371.09999999404,"ta":24.289}
|
||||
{"ev":"vibrate","pattern":"[20]","t":30734.69999998808,"ta":24.653}
|
||||
{"ev":"vibrate","pattern":"[20]","t":30734.90000000596,"ta":24.653}
|
||||
{"ev":"start","t":30735.09999999404,"sid":21,"url":"audio/sfx/boost.ogg","layer":"sfx","dur":1.8,"rate":1,"loop":false,"when":0,"ta":24.653}
|
||||
{"ev":"vstart","url":"audio/voice/female/feat_boost_done.ogg","t":30735.19999998808,"dur":3.44,"ta":24.654}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":31664.69999998808,"ta":25.583}
|
||||
{"ev":"vibrate","pattern":"[20]","t":32028.69999998808,"ta":25.947}
|
||||
{"ev":"vend","url":"audio/voice/female/feat_boost_done.ogg","t":32028.79999998212,"reason":"kill","ta":25.947}
|
||||
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":33126.79999998212,"ta":27.045}
|
||||
{"ev":"start","t":33235.29999998212,"sid":22,"url":"audio/sfx/whoosh_right.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":27.154}
|
||||
{"ev":"vibrate","pattern":"[20]","t":33374.90000000596,"ta":27.293}
|
||||
{"ev":"vibrate","pattern":"[40,100,40]","t":33374.90000000596,"ta":27.293}
|
||||
{"ev":"vstart","url":"audio/voice/female/feat_shield_done.ogg","t":33375.09999999404,"dur":4.64,"ta":27.293}
|
||||
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":34653.09999999404,"ta":28.571}
|
||||
{"ev":"vibrate","pattern":"[10]","t":35009.5,"ta":28.928}
|
||||
{"ev":"start","t":35009.59999999404,"sid":23,"url":"audio/sfx/whiff.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":28.928}
|
||||
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":36003.69999998808,"ta":29.922}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":36235.19999998808,"ta":30.154}
|
||||
{"ev":"start","t":36235.40000000596,"sid":24,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":30.154}
|
||||
{"ev":"vibrate","pattern":"[10]","t":36359.40000000596,"ta":30.278}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":36735.19999998808,"ta":30.654}
|
||||
{"ev":"start","t":36735.29999998212,"sid":25,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":30.654}
|
||||
{"ev":"vend","url":"audio/voice/female/feat_shield_done.ogg","t":37012.29999998212,"reason":"kill","ta":30.931}
|
||||
{"ev":"start","t":37235.40000000596,"sid":26,"url":"audio/sfx/dodge.ogg","layer":"sfx","dur":1.2,"rate":1,"loop":false,"when":0,"ta":31.154}
|
||||
{"ev":"start","t":37235.5,"sid":27,"url":"audio/sfx/whoosh_right.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":31.154}
|
||||
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":37739.5,"ta":31.658}
|
||||
{"ev":"vibrate","pattern":"[20]","t":37986.5,"ta":31.905}
|
||||
{"ev":"vibrate","pattern":"[40,100,40]","t":37986.5,"ta":31.905}
|
||||
{"ev":"vstart","url":"audio/voice/female/feat_shield_done.ogg","t":37986.59999999404,"dur":4.64,"ta":31.905}
|
||||
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":39226.69999998808,"ta":33.145}
|
||||
{"ev":"vibrate","pattern":"[10]","t":39592.40000000596,"ta":33.511}
|
||||
{"ev":"start","t":39592.5,"sid":28,"url":"audio/sfx/whiff.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":33.511}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":40235.5,"ta":34.154}
|
||||
{"ev":"start","t":40235.79999998212,"sid":29,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":34.154}
|
||||
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":40616.09999999404,"ta":34.534}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":40735.59999999404,"ta":34.654}
|
||||
{"ev":"start","t":40735.79999998212,"sid":30,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":34.654}
|
||||
{"ev":"vibrate","pattern":"[10]","t":40976.19999998808,"ta":34.895}
|
||||
{"ev":"start","t":40976.29999998212,"sid":31,"url":"audio/sfx/whiff.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":34.895}
|
||||
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":41235.5,"ta":35.154}
|
||||
{"ev":"start","t":41235.59999999404,"sid":32,"url":"audio/sfx/shield_block.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":35.154}
|
||||
{"ev":"vend","url":"audio/voice/female/feat_shield_done.ogg","t":41235.69999998808,"reason":"kill","ta":35.154}
|
||||
{"ev":"vstart","url":"audio/voice/female/protect_right.ogg","t":41235.79999998212,"dur":5.2,"ta":35.154}
|
||||
{"ev":"start","t":41236.59999999404,"sid":33,"url":"audio/sfx/whoosh_right.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":35.155}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":42125.19999998808,"ta":36.044}
|
||||
{"ev":"vibrate","pattern":"[20]","t":42488.79999998212,"ta":36.407}
|
||||
{"ev":"vend","url":"audio/voice/female/protect_right.ogg","t":42488.90000000596,"reason":"kill","ta":36.407}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":43472.40000000596,"ta":37.391}
|
||||
{"ev":"vibrate","pattern":"[20]","t":43834.69999998808,"ta":37.753}
|
||||
{"ev":"vibrate","pattern":"[20]","t":43834.79999998212,"ta":37.753}
|
||||
{"ev":"start","t":43834.90000000596,"sid":34,"url":"audio/sfx/boost.ogg","layer":"sfx","dur":1.8,"rate":1,"loop":false,"when":0,"ta":37.753}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":44236.69999998808,"ta":38.155}
|
||||
{"ev":"start","t":44236.90000000596,"sid":35,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":38.155}
|
||||
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":44669.5,"ta":38.588}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":44736.69999998808,"ta":38.655}
|
||||
{"ev":"start","t":44736.90000000596,"sid":36,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":38.655}
|
||||
{"ev":"vibrate","pattern":"[10]","t":45025.79999998212,"ta":38.944}
|
||||
{"ev":"start","t":45236.90000000596,"sid":37,"url":"audio/sfx/dodge.ogg","layer":"sfx","dur":1.2,"rate":1,"loop":false,"when":0,"ta":39.155}
|
||||
{"ev":"start","t":45237,"sid":38,"url":"audio/sfx/whoosh_left.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":39.155}
|
||||
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":46161.40000000596,"ta":40.08}
|
||||
{"ev":"vibrate","pattern":"[10]","t":46525.69999998808,"ta":40.444}
|
||||
{"ev":"start","t":46525.79999998212,"sid":39,"url":"audio/sfx/whiff.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":40.444}
|
||||
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":47891.19999998808,"ta":41.81}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":48237.09999999404,"ta":42.155}
|
||||
{"ev":"start","t":48237.19999998808,"sid":40,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":42.156}
|
||||
{"ev":"vibrate","pattern":"[10]","t":48242.09999999404,"ta":42.16}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":48737,"ta":42.655}
|
||||
{"ev":"start","t":48737.09999999404,"sid":41,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":42.655}
|
||||
{"ev":"start","t":49237.19999998808,"sid":42,"url":"audio/sfx/dodge.ogg","layer":"sfx","dur":1.2,"rate":1,"loop":false,"when":0,"ta":43.156}
|
||||
{"ev":"start","t":49237.29999998212,"sid":43,"url":"audio/sfx/whoosh_left.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":43.156}
|
||||
{"ev":"vstart","url":"audio/voice/female/feat_shield.ogg","t":51874.40000000596,"dur":2.8,"ta":45.793}
|
||||
{"ev":"vend","url":"audio/voice/female/feat_shield.ogg","t":54124.09999999404,"reason":"kill","ta":48.042}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":58678.29999998212,"ta":52.597}
|
||||
{"ev":"vibrate","pattern":"[20]","t":59046.5,"ta":52.965}
|
||||
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":59719.5,"ta":53.638}
|
||||
{"ev":"vstart","url":"audio/voice/female/protect_soon.ogg","t":59874.5,"dur":1.52,"ta":53.793}
|
||||
{"ev":"vibrate","pattern":"[10]","t":60075,"ta":53.993}
|
||||
{"ev":"start","t":60075.09999999404,"sid":44,"url":"audio/sfx/whiff.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":53.993}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":61060.79999998212,"ta":54.979}
|
||||
{"ev":"vend","url":"audio/voice/female/protect_soon.ogg","t":61112.5,"reason":"kill","ta":55.031}
|
||||
{"ev":"vibrate","pattern":"[20]","t":61424,"ta":55.342}
|
||||
{"ev":"vibrate","pattern":"[20]","t":61424,"ta":55.342}
|
||||
{"ev":"start","t":61424.19999998808,"sid":45,"url":"audio/sfx/boost.ogg","layer":"sfx","dur":1.8,"rate":1,"loop":false,"when":0,"ta":55.343}
|
||||
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":62278.69999998808,"ta":56.197}
|
||||
{"ev":"start","t":62374.69999998808,"sid":46,"url":"audio/sfx/whoosh_up.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":56.293}
|
||||
{"ev":"vibrate","pattern":"[10]","t":62641.5,"ta":56.56}
|
||||
{"ev":"start","t":62641.69999998808,"sid":47,"url":"audio/sfx/whiff.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":56.56}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":63901,"ta":57.819}
|
||||
{"ev":"vibrate","pattern":"[20]","t":64264.19999998808,"ta":58.183}
|
||||
{"ev":"vibrate","pattern":"[40,100,40]","t":64264.29999998212,"ta":58.183}
|
||||
{"ev":"vstart","url":"audio/voice/female/boost_not_ready.ogg","t":64264.40000000596,"dur":3.04,"ta":58.183}
|
||||
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":64947.40000000596,"ta":58.866}
|
||||
{"ev":"vibrate","pattern":"[20]","t":65194.19999998808,"ta":59.113}
|
||||
{"ev":"vibrate","pattern":"[20]","t":65194.19999998808,"ta":59.113}
|
||||
{"ev":"start","t":65194.40000000596,"sid":48,"url":"audio/sfx/shield.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":59.113}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":65374.69999998808,"ta":59.293}
|
||||
{"ev":"start","t":65374.90000000596,"sid":49,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":59.293}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":65874.69999998808,"ta":59.793}
|
||||
{"ev":"start","t":65874.79999998212,"sid":50,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":59.793}
|
||||
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":66068.69999998808,"ta":59.987}
|
||||
{"ev":"vibrate","pattern":"[100]","t":66374.69999998808,"ta":60.293}
|
||||
{"ev":"start","t":66374.90000000596,"sid":51,"url":"audio/sfx/shield_block.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":60.293}
|
||||
{"ev":"start","t":66374.90000000596,"sid":52,"url":"audio/sfx/whoosh_right.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":60.293}
|
||||
{"ev":"vend","url":"audio/voice/female/boost_not_ready.ogg","t":66374.90000000596,"reason":"kill","ta":60.293}
|
||||
{"ev":"vstart","url":"audio/voice/female/dir_right.ogg","t":66375,"dur":0.7170975056689343,"ta":60.293}
|
||||
{"ev":"vibrate","pattern":"[10]","t":66424.90000000596,"ta":60.343}
|
||||
{"ev":"vibrate","pattern":"[30,50,30,50,30]","t":66874.69999998808,"ta":60.793}
|
||||
{"ev":"vend","url":"audio/voice/female/dir_right.ogg","t":66874.79999998212,"reason":"kill","ta":60.793}
|
||||
{"ev":"vstart","url":"audio/voice/female/protect_end.ogg","t":66874.79999998212,"dur":3.6,"ta":60.793}
|
||||
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":67344.59999999404,"ta":61.263}
|
||||
{"ev":"vibrate","pattern":"[10]","t":67707.79999998212,"ta":61.626}
|
||||
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":68872.90000000596,"ta":62.791}
|
||||
{"ev":"vibrate","pattern":"[20]","t":69118.69999998808,"ta":63.037}
|
||||
{"ev":"vibrate","pattern":"[40,100,40]","t":69118.69999998808,"ta":63.037}
|
||||
{"ev":"vend","url":"audio/voice/female/protect_end.ogg","t":69118.79999998212,"reason":"kill","ta":63.037}
|
||||
{"ev":"vstart","url":"audio/voice/female/feat_shield_done.ogg","t":69118.79999998212,"dur":4.64,"ta":63.037}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":69375.09999999404,"ta":63.293}
|
||||
{"ev":"start","t":69375.19999998808,"sid":53,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":63.294}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":69875,"ta":63.793}
|
||||
{"ev":"start","t":69875.19999998808,"sid":54,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":63.794}
|
||||
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":69936.5,"ta":63.855}
|
||||
{"ev":"vibrate","pattern":"[10]","t":70291,"ta":64.209}
|
||||
{"ev":"start","t":70291.09999999404,"sid":55,"url":"audio/sfx/whiff.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":64.209}
|
||||
{"ev":"start","t":70375.09999999404,"sid":56,"url":"audio/sfx/dodge.ogg","layer":"sfx","dur":1.2,"rate":1,"loop":false,"when":0,"ta":64.293}
|
||||
{"ev":"start","t":70375.19999998808,"sid":57,"url":"audio/sfx/whoosh_left.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":64.293}
|
||||
{"ev":"vend","url":"audio/voice/female/feat_shield_done.ogg","t":70375.29999998212,"reason":"kill","ta":64.294}
|
||||
{"ev":"vstart","url":"audio/voice/female/dir_left.ogg","t":70375.40000000596,"dur":0.39909297052154197,"ta":64.294}
|
||||
{"ev":"vend","url":"audio/voice/female/dir_left.ogg","t":70771.19999998808,"reason":"kill","ta":64.689}
|
||||
{"ev":"vstart","url":"audio/voice/female/shield_block.ogg","t":70771.40000000596,"dur":1.44,"ta":64.69}
|
||||
{"ev":"vend","url":"audio/voice/female/shield_block.ogg","t":70771.69999998808,"reason":"kill","ta":64.69}
|
||||
{"ev":"vstart","url":"audio/voice/female/protect_end.ogg","t":70771.69999998808,"dur":3.6,"ta":64.69}
|
||||
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":71050.90000000596,"ta":64.969}
|
||||
{"ev":"vibrate","pattern":"[20]","t":71299.19999998808,"ta":65.218}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":72566.09999999404,"ta":66.484}
|
||||
{"ev":"vibrate","pattern":"[20]","t":72929.40000000596,"ta":66.848}
|
||||
{"ev":"vend","url":"audio/voice/female/protect_end.ogg","t":72929.40000000596,"reason":"kill","ta":66.848}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":73375.29999998212,"ta":67.294}
|
||||
{"ev":"start","t":73375.5,"sid":58,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":67.294}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":73875.29999998212,"ta":67.794}
|
||||
{"ev":"start","t":73875.5,"sid":59,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":67.794}
|
||||
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":73918.79999998212,"ta":67.837}
|
||||
{"ev":"vibrate","pattern":"[10]","t":74274,"ta":68.192}
|
||||
{"ev":"start","t":74274.09999999404,"sid":60,"url":"audio/sfx/whiff.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":68.192}
|
||||
{"ev":"start","t":74375.40000000596,"sid":61,"url":"audio/sfx/dodge.ogg","layer":"sfx","dur":1.2,"rate":1,"loop":false,"when":0,"ta":68.294}
|
||||
{"ev":"start","t":74375.59999999404,"sid":62,"url":"audio/sfx/whoosh_up.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":68.294}
|
||||
{"ev":"vstart","url":"audio/voice/female/dir_up.ogg","t":74375.59999999404,"dur":0.5570975056689342,"ta":68.294}
|
||||
{"ev":"vend","url":"audio/voice/female/dir_up.ogg","t":75043.40000000596,"reason":"kill","ta":68.962}
|
||||
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":75561,"ta":69.479}
|
||||
{"ev":"vibrate","pattern":"[10]","t":75924.40000000596,"ta":69.843}
|
||||
{"ev":"start","t":75924.40000000596,"sid":63,"url":"audio/sfx/whiff.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":69.843}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":76938.5,"ta":70.857}
|
||||
{"ev":"vibrate","pattern":"[20]","t":77301.90000000596,"ta":71.22}
|
||||
{"ev":"vibrate","pattern":"[20]","t":77301.90000000596,"ta":71.22}
|
||||
{"ev":"start","t":77302,"sid":64,"url":"audio/sfx/boost.ogg","layer":"sfx","dur":1.8,"rate":1,"loop":false,"when":0,"ta":71.22}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":77375.69999998808,"ta":71.294}
|
||||
{"ev":"start","t":77375.79999998212,"sid":65,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":71.294}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":77875.69999998808,"ta":71.794}
|
||||
{"ev":"start","t":77875.79999998212,"sid":66,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":71.794}
|
||||
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":77891.59999999404,"ta":71.81}
|
||||
{"ev":"vibrate","pattern":"[10]","t":78257.79999998212,"ta":72.176}
|
||||
{"ev":"start","t":78257.90000000596,"sid":67,"url":"audio/sfx/whiff.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":72.176}
|
||||
{"ev":"start","t":78375.69999998808,"sid":68,"url":"audio/sfx/dodge.ogg","layer":"sfx","dur":1.2,"rate":1,"loop":false,"when":0,"ta":72.294}
|
||||
{"ev":"start","t":78376,"sid":69,"url":"audio/sfx/whoosh_down.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":72.294}
|
||||
{"ev":"vstart","url":"audio/voice/female/dir_down.ogg","t":78376,"dur":0.39909297052154197,"ta":72.294}
|
||||
{"ev":"vend","url":"audio/voice/female/dir_down.ogg","t":78758.40000000596,"reason":"kill","ta":72.677}
|
||||
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":79566.59999999404,"ta":73.485}
|
||||
{"ev":"vibrate","pattern":"[10]","t":79924.40000000596,"ta":73.843}
|
||||
{"ev":"start","t":79924.59999999404,"sid":70,"url":"audio/sfx/whiff.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":73.843}
|
||||
{"ev":"vibrate","pattern":"[15]","t":80194.59999999404,"ta":74.113}
|
||||
{"ev":"vstart","url":"audio/voice/female/shield_ready.ogg","t":80194.59999999404,"dur":1.28,"ta":74.113}
|
||||
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":81067.79999998212,"ta":74.986}
|
||||
{"ev":"vibrate","pattern":"[20]","t":81314.5,"ta":75.233}
|
||||
{"ev":"vibrate","pattern":"[20]","t":81314.5,"ta":75.233}
|
||||
{"ev":"start","t":81314.5,"sid":71,"url":"audio/sfx/shield.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":75.233}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":81376,"ta":75.294}
|
||||
{"ev":"start","t":81376,"sid":72,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":75.294}
|
||||
{"ev":"start","t":81384.19999998808,"sid":73,"url":"audio/sfx/whoosh_down.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":75.303}
|
||||
{"ev":"vend","url":"audio/voice/female/shield_ready.ogg","t":81384.19999998808,"reason":"kill","ta":75.303}
|
||||
{"ev":"vstart","url":"audio/voice/female/dir_down.ogg","t":81384.19999998808,"dur":0.39909297052154197,"ta":75.303}
|
||||
{"ev":"vend","url":"audio/voice/female/dir_down.ogg","t":81776.5,"reason":"kill","ta":75.695}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":81875.90000000596,"ta":75.794}
|
||||
{"ev":"start","t":81876.09999999404,"sid":74,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":75.794}
|
||||
{"ev":"vibrate","pattern":"[100]","t":82376,"ta":76.294}
|
||||
{"ev":"start","t":82376,"sid":75,"url":"audio/sfx/shield_block.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":76.294}
|
||||
{"ev":"vstart","url":"audio/voice/female/shield_block.ogg","t":82376.09999999404,"dur":1.44,"ta":76.294}
|
||||
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":82525.29999998212,"ta":76.444}
|
||||
{"ev":"vibrate","pattern":"[10]","t":82890.40000000596,"ta":76.809}
|
||||
{"ev":"start","t":82890.40000000596,"sid":76,"url":"audio/sfx/whiff.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":76.809}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":83063.19999998808,"ta":76.982}
|
||||
{"ev":"start","t":83063.29999998212,"sid":77,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":76.982}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":83563.19999998808,"ta":77.482}
|
||||
{"ev":"start","t":83563.29999998212,"sid":78,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":77.482}
|
||||
{"ev":"vend","url":"audio/voice/female/shield_block.ogg","t":83610.79999998212,"reason":"kill","ta":77.529}
|
||||
{"ev":"gesture","type":"tap","x":195,"y":422,"t":84001.40000000596,"ta":77.92}
|
||||
{"ev":"vibrate","pattern":"[80]","t":84063.19999998808,"ta":77.982}
|
||||
{"ev":"start","t":84063.29999998212,"sid":79,"url":"audio/sfx/hit.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":77.982}
|
||||
{"ev":"vstart","url":"audio/voice/female/hit_down.ogg","t":84063.40000000596,"dur":5.28,"ta":77.982}
|
||||
{"ev":"start","t":84342.40000000596,"sid":80,"url":"audio/sfx/whoosh_right.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":78.261}
|
||||
{"ev":"vend","url":"audio/voice/female/hit_down.ogg","t":84342.40000000596,"reason":"kill","ta":78.261}
|
||||
{"ev":"vstart","url":"audio/voice/female/dir_right.ogg","t":84342.40000000596,"dur":0.7170975056689343,"ta":78.261}
|
||||
{"ev":"vibrate","pattern":"[20]","t":84365.5,"ta":78.284}
|
||||
{"ev":"vend","url":"audio/voice/female/dir_right.ogg","t":84365.5,"reason":"kill","ta":78.284}
|
||||
{"ev":"vstart","url":"audio/voice/female/hit_down.ogg","t":84365.69999998808,"dur":5.28,"ta":78.284}
|
||||
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":85090.40000000596,"ta":79.009}
|
||||
{"ev":"vibrate","pattern":"[10]","t":85440.59999999404,"ta":79.359}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":85996.40000000596,"ta":79.915}
|
||||
{"ev":"start","t":85996.5,"sid":81,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":79.915}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":86496.40000000596,"ta":80.415}
|
||||
{"ev":"start","t":86496.5,"sid":82,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":80.415}
|
||||
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":86834.29999998212,"ta":80.753}
|
||||
{"ev":"vibrate","pattern":"[20]","t":86996.5,"ta":80.915}
|
||||
{"ev":"start","t":86996.59999999404,"sid":83,"url":"audio/sfx/dodge.ogg","layer":"sfx","dur":1.2,"rate":1,"loop":false,"when":0,"ta":80.915}
|
||||
{"ev":"vend","url":"audio/voice/female/hit_down.ogg","t":86996.59999999404,"reason":"kill","ta":80.915}
|
||||
{"ev":"vstart","url":"audio/voice/female/ms_10.ogg","t":86996.69999998808,"dur":1.12,"ta":80.915}
|
||||
{"ev":"vibrate","pattern":"[20]","t":87080.59999999404,"ta":80.999}
|
||||
{"ev":"vibrate","pattern":"[40,100,40]","t":87080.59999999404,"ta":80.999}
|
||||
{"ev":"vend","url":"audio/voice/female/ms_10.ogg","t":87080.59999999404,"reason":"kill","ta":80.999}
|
||||
{"ev":"vstart","url":"audio/voice/female/feat_shield_done.ogg","t":87080.69999998808,"dur":4.64,"ta":80.999}
|
||||
{"ev":"start","t":87250.5,"sid":84,"url":"audio/sfx/whoosh_right.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":81.169}
|
||||
{"ev":"vend","url":"audio/voice/female/feat_shield_done.ogg","t":87250.5,"reason":"kill","ta":81.169}
|
||||
{"ev":"vstart","url":"audio/voice/female/dir_right.ogg","t":87250.59999999404,"dur":0.7170975056689343,"ta":81.169}
|
||||
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":87824,"ta":81.742}
|
||||
{"ev":"vend","url":"audio/voice/female/dir_right.ogg","t":87929.5,"reason":"kill","ta":81.848}
|
||||
{"ev":"vibrate","pattern":"[10]","t":88173.40000000596,"ta":82.092}
|
||||
{"ev":"start","t":88173.69999998808,"sid":85,"url":"audio/bgm/menu.ogg","layer":"bgm","dur":90,"rate":1,"loop":true,"when":0,"ta":82.092}
|
||||
{"ev":"vstart","url":"audio/voice/female/paused.ogg","t":88173.79999998212,"dur":0.9570975056689343,"ta":82.092}
|
||||
{"ev":"stop","t":88533.79999998212,"sid":20,"when":0,"ta":82.452}
|
||||
{"ev":"vend","url":"audio/voice/female/paused.ogg","t":89113.5,"reason":"kill","ta":83.032}
|
||||
{"ev":"vstart","url":"audio/voice/female/menu_main.ogg","t":89113.79999998212,"dur":3.92,"ta":83.032}
|
||||
{"ev":"gesture","type":"doubletap","x":195,"y":422,"t":89310.79999998212,"ta":83.229}
|
||||
{"ev":"vibrate","pattern":"[20]","t":89558.09999999404,"ta":83.476}
|
||||
{"ev":"start","t":89558.29999998212,"sid":86,"url":"audio/bgm/engine.ogg","layer":"bgm","dur":117,"rate":1,"loop":true,"when":0,"ta":83.477}
|
||||
{"ev":"stop","t":90118.40000000596,"sid":85,"when":0,"ta":84.037}
|
||||
{"ev":"start","t":90358.59999999404,"sid":87,"url":"audio/sfx/whoosh_right.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":84.277}
|
||||
{"ev":"vend","url":"audio/voice/female/menu_main.ogg","t":90358.59999999404,"reason":"kill","ta":84.277}
|
||||
{"ev":"vstart","url":"audio/voice/female/dir_right.ogg","t":90358.59999999404,"dur":0.7170975056689343,"ta":84.277}
|
||||
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":90740.69999998808,"ta":84.659}
|
||||
{"ev":"vend","url":"audio/voice/female/dir_right.ogg","t":91017.19999998808,"reason":"kill","ta":84.936}
|
||||
{"ev":"vibrate","pattern":"[10]","t":91107,"ta":85.025}
|
||||
{"ev":"start","t":91107.09999999404,"sid":88,"url":"audio/sfx/whiff.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":85.025}
|
||||
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":92102.29999998212,"ta":86.021}
|
||||
{"ev":"vibrate","pattern":"[10]","t":92457,"ta":86.375}
|
||||
{"ev":"start","t":92457.09999999404,"sid":89,"url":"audio/sfx/whiff.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":86.375}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":93358.59999999404,"ta":87.277}
|
||||
{"ev":"start","t":93358.69999998808,"sid":90,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":87.277}
|
||||
{"ev":"gesture","type":"swipeleft","x":195,"y":422,"t":93647.29999998212,"ta":87.566}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":93858.59999999404,"ta":87.777}
|
||||
{"ev":"start","t":93858.69999998808,"sid":91,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":87.777}
|
||||
{"ev":"vibrate","pattern":"[10]","t":94006.79999998212,"ta":87.925}
|
||||
{"ev":"start","t":94006.90000000596,"sid":92,"url":"audio/sfx/whiff.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":87.925}
|
||||
{"ev":"vibrate","pattern":"[80]","t":94358.59999999404,"ta":88.277}
|
||||
{"ev":"start","t":94358.69999998808,"sid":93,"url":"audio/sfx/hit.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":88.277}
|
||||
{"ev":"vstart","url":"audio/voice/female/hit_right.ogg","t":94358.79999998212,"dur":4.8,"ta":88.277}
|
||||
{"ev":"start","t":94359.40000000596,"sid":94,"url":"audio/sfx/whoosh_down.ogg","layer":"sfx","dur":2.5,"rate":1,"loop":false,"when":0,"ta":88.278}
|
||||
{"ev":"vend","url":"audio/voice/female/hit_right.ogg","t":94359.5,"reason":"kill","ta":88.278}
|
||||
{"ev":"vstart","url":"audio/voice/female/dir_down.ogg","t":94359.5,"dur":0.39909297052154197,"ta":88.278}
|
||||
{"ev":"vend","url":"audio/voice/female/dir_down.ogg","t":94755.40000000596,"reason":"kill","ta":88.674}
|
||||
{"ev":"vstart","url":"audio/voice/female/hit_right.ogg","t":94755.69999998808,"dur":4.8,"ta":88.674}
|
||||
{"ev":"gesture","type":"swiperight","x":195,"y":422,"t":95390.29999998212,"ta":89.309}
|
||||
{"ev":"vibrate","pattern":"[10]","t":95740.29999998212,"ta":89.659}
|
||||
{"ev":"start","t":95740.29999998212,"sid":95,"url":"audio/sfx/whiff.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":89.659}
|
||||
{"ev":"vibrate","pattern":"[15]","t":96314.40000000596,"ta":90.233}
|
||||
{"ev":"gesture","type":"swipeup","x":195,"y":422,"t":96973.79999998212,"ta":90.892}
|
||||
{"ev":"vibrate","pattern":"[10]","t":97323.59999999404,"ta":91.242}
|
||||
{"ev":"start","t":97323.69999998808,"sid":96,"url":"audio/sfx/whiff.ogg","layer":"sfx","dur":0.39709750566893426,"rate":1,"loop":false,"when":0,"ta":91.242}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":97359.5,"ta":91.278}
|
||||
{"ev":"start","t":97359.59999999404,"sid":97,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":91.278}
|
||||
{"ev":"vibrate","pattern":"[25,40,25,40,25]","t":97859.5,"ta":91.778}
|
||||
{"ev":"start","t":97859.59999999404,"sid":98,"url":"audio/sfx/alarm.ogg","layer":"sfx","dur":0.9970975056689343,"rate":1,"loop":false,"when":0,"ta":91.778}
|
||||
{"ev":"gesture","type":"swipedown","x":195,"y":422,"t":98229,"ta":92.147}
|
||||
{"ev":"vibrate","pattern":"[80]","t":98359.5,"ta":92.278}
|
||||
{"ev":"vend","url":"audio/voice/female/hit_right.ogg","t":98359.90000000596,"reason":"kill","ta":92.278}
|
||||
{"ev":"vibrate","pattern":"[60,40,60]","t":98359.90000000596,"ta":92.278}
|
||||
{"ev":"start","t":98360.29999998212,"sid":99,"url":"audio/sfx/hit.ogg","layer":"sfx","dur":1.5,"rate":1,"loop":false,"when":0,"ta":92.279}
|
||||
{"ev":"start","t":98360.29999998212,"sid":100,"url":"audio/sfx/crash.ogg","layer":"sfx","dur":3,"rate":1,"loop":false,"when":0,"ta":92.279}
|
||||
{"ev":"vibrate","pattern":"[10]","t":98590.09999999404,"ta":92.508}
|
||||
{"ev":"vstart","url":"audio/voice/female/menu_lobby.ogg","t":98590.40000000596,"dur":1.04,"ta":92.509}
|
||||
{"ev":"stop","t":99020.09999999404,"sid":86,"when":0,"ta":92.938}
|
||||
{"ev":"probe_ready","t":9.700000017881393,"ta":-6.072}
|
||||
@@ -0,0 +1,360 @@
|
||||
# space 实时会话 transcript
|
||||
|
||||
- `[ -0.07s]` **GESTURE** tap @(195,422)
|
||||
- `[ 0.00s]` REC 开始 (audio/webm;codecs=opus)
|
||||
- `[ 0.10s]` VOICE ▶ second_run_ask (dur 3.04s)
|
||||
- `[ 0.43s]` **GESTURE** tap @(195,422)
|
||||
- `[ 0.79s]` VIBRATE [20]
|
||||
- `[ 0.79s]` VOICE ■ second_run_ask (kill)
|
||||
- `[ 0.96s]` BGM ♪ engine (loop)
|
||||
- `[ 1.76s]` **GESTURE** swipeleft @(195,422)
|
||||
- `[ 2.11s]` VIBRATE [10]
|
||||
- `[ 2.11s]` SFX ♪ whiff
|
||||
- `[ 2.29s]` SFX ♪ whoosh_left
|
||||
- `[ 3.34s]` **GESTURE** tap @(195,422)
|
||||
- `[ 3.71s]` VIBRATE [20]
|
||||
- `[ 4.17s]` **GESTURE** swipeleft @(195,422)
|
||||
- `[ 4.53s]` VIBRATE [10]
|
||||
- `[ 5.29s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 5.29s]` SFX ♪ alarm
|
||||
- `[ 5.71s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 5.79s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 5.79s]` SFX ♪ alarm
|
||||
- `[ 5.96s]` VIBRATE [20]
|
||||
- `[ 5.96s]` VIBRATE [40,100,40]
|
||||
- `[ 5.96s]` VOICE ▶ feat_shield_done (dur 4.64s)
|
||||
- `[ 6.30s]` SFX ♪ dodge
|
||||
- `[ 6.30s]` SFX ♪ whoosh_left
|
||||
- `[ 7.23s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 7.59s]` VIBRATE [10]
|
||||
- `[ 7.60s]` VOICE ■ feat_shield_done (kill)
|
||||
- `[ 7.60s]` VOICE ▶ paused (dur 0.9570975056689343s)
|
||||
- `[ 7.73s]` BGM ♪ menu (loop)
|
||||
- `[ 8.55s]` VOICE ■ paused (kill)
|
||||
- `[ 8.55s]` VOICE ▶ menu_main (dur 3.92s)
|
||||
- `[ 8.60s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 8.96s]` VIBRATE [10]
|
||||
- `[ 8.96s]` BGM ♪ engine (loop)
|
||||
- `[ 9.76s]` SFX ♪ whoosh_left
|
||||
- `[ 9.86s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 10.11s]` VIBRATE [20]
|
||||
- `[ 10.11s]` VIBRATE [40,100,40]
|
||||
- `[ 10.11s]` VOICE ■ menu_main (kill)
|
||||
- `[ 10.11s]` VOICE ▶ feat_shield_done (dur 4.64s)
|
||||
- `[ 11.28s]` **GESTURE** swipeleft @(195,422)
|
||||
- `[ 11.64s]` VIBRATE [10]
|
||||
- `[ 12.76s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 12.76s]` SFX ♪ alarm
|
||||
- `[ 13.07s]` **GESTURE** swipeleft @(195,422)
|
||||
- `[ 13.26s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 13.26s]` SFX ♪ alarm
|
||||
- `[ 13.43s]` VIBRATE [10]
|
||||
- `[ 13.75s]` VOICE ■ feat_shield_done (kill)
|
||||
- `[ 13.76s]` SFX ♪ dodge
|
||||
- `[ 13.76s]` SFX ♪ whoosh_down
|
||||
- `[ 14.17s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 14.53s]` VIBRATE [10]
|
||||
- `[ 15.54s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 15.89s]` VIBRATE [10]
|
||||
- `[ 16.76s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 16.76s]` SFX ♪ alarm
|
||||
- `[ 16.99s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 17.24s]` VIBRATE [20]
|
||||
- `[ 17.24s]` VIBRATE [40,100,40]
|
||||
- `[ 17.24s]` VOICE ▶ feat_shield_done (dur 4.64s)
|
||||
- `[ 17.26s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 17.26s]` SFX ♪ alarm
|
||||
- `[ 17.76s]` SFX ♪ dodge
|
||||
- `[ 17.76s]` SFX ♪ whoosh_up
|
||||
- `[ 18.59s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 18.94s]` VIBRATE [10]
|
||||
- `[ 18.95s]` BGM ♪ menu (loop)
|
||||
- `[ 18.95s]` VOICE ■ feat_shield_done (kill)
|
||||
- `[ 18.95s]` VOICE ▶ paused (dur 0.9570975056689343s)
|
||||
- `[ 19.90s]` VOICE ■ paused (kill)
|
||||
- `[ 19.90s]` VOICE ▶ menu_main (dur 3.92s)
|
||||
- `[ 20.17s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 20.41s]` VIBRATE [20]
|
||||
- `[ 20.41s]` BGM ♪ engine (loop)
|
||||
- `[ 20.79s]` VOICE ■ menu_main (kill)
|
||||
- `[ 20.79s]` VOICE ▶ feat_boost (dur 3.84s)
|
||||
- `[ 21.44s]` **GESTURE** swipeup @(195,422)
|
||||
- `[ 21.80s]` VIBRATE [10]
|
||||
- `[ 23.11s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 23.46s]` VIBRATE [10]
|
||||
- `[ 23.87s]` VOICE ■ feat_boost (kill)
|
||||
- `[ 24.29s]` **GESTURE** tap @(195,422)
|
||||
- `[ 24.65s]` VIBRATE [20]
|
||||
- `[ 24.65s]` VIBRATE [20]
|
||||
- `[ 24.65s]` SFX ♪ boost
|
||||
- `[ 24.65s]` VOICE ▶ feat_boost_done (dur 3.44s)
|
||||
- `[ 25.58s]` **GESTURE** tap @(195,422)
|
||||
- `[ 25.95s]` VIBRATE [20]
|
||||
- `[ 25.95s]` VOICE ■ feat_boost_done (kill)
|
||||
- `[ 27.05s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 27.15s]` SFX ♪ whoosh_right
|
||||
- `[ 27.29s]` VIBRATE [20]
|
||||
- `[ 27.29s]` VIBRATE [40,100,40]
|
||||
- `[ 27.29s]` VOICE ▶ feat_shield_done (dur 4.64s)
|
||||
- `[ 28.57s]` **GESTURE** swipeup @(195,422)
|
||||
- `[ 28.93s]` VIBRATE [10]
|
||||
- `[ 28.93s]` SFX ♪ whiff
|
||||
- `[ 29.92s]` **GESTURE** swiperight @(195,422)
|
||||
- `[ 30.15s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 30.15s]` SFX ♪ alarm
|
||||
- `[ 30.28s]` VIBRATE [10]
|
||||
- `[ 30.65s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 30.65s]` SFX ♪ alarm
|
||||
- `[ 30.93s]` VOICE ■ feat_shield_done (kill)
|
||||
- `[ 31.15s]` SFX ♪ dodge
|
||||
- `[ 31.15s]` SFX ♪ whoosh_right
|
||||
- `[ 31.66s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 31.91s]` VIBRATE [20]
|
||||
- `[ 31.91s]` VIBRATE [40,100,40]
|
||||
- `[ 31.91s]` VOICE ▶ feat_shield_done (dur 4.64s)
|
||||
- `[ 33.15s]` **GESTURE** swipeleft @(195,422)
|
||||
- `[ 33.51s]` VIBRATE [10]
|
||||
- `[ 33.51s]` SFX ♪ whiff
|
||||
- `[ 34.15s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 34.15s]` SFX ♪ alarm
|
||||
- `[ 34.53s]` **GESTURE** swipeleft @(195,422)
|
||||
- `[ 34.65s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 34.65s]` SFX ♪ alarm
|
||||
- `[ 34.90s]` VIBRATE [10]
|
||||
- `[ 34.90s]` SFX ♪ whiff
|
||||
- `[ 35.15s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 35.15s]` SFX ♪ shield_block
|
||||
- `[ 35.15s]` VOICE ■ feat_shield_done (kill)
|
||||
- `[ 35.15s]` VOICE ▶ protect_right (dur 5.2s)
|
||||
- `[ 35.16s]` SFX ♪ whoosh_right
|
||||
- `[ 36.04s]` **GESTURE** tap @(195,422)
|
||||
- `[ 36.41s]` VIBRATE [20]
|
||||
- `[ 36.41s]` VOICE ■ protect_right (kill)
|
||||
- `[ 37.39s]` **GESTURE** tap @(195,422)
|
||||
- `[ 37.75s]` VIBRATE [20]
|
||||
- `[ 37.75s]` VIBRATE [20]
|
||||
- `[ 37.75s]` SFX ♪ boost
|
||||
- `[ 38.16s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 38.16s]` SFX ♪ alarm
|
||||
- `[ 38.59s]` **GESTURE** swiperight @(195,422)
|
||||
- `[ 38.66s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 38.66s]` SFX ♪ alarm
|
||||
- `[ 38.94s]` VIBRATE [10]
|
||||
- `[ 39.16s]` SFX ♪ dodge
|
||||
- `[ 39.16s]` SFX ♪ whoosh_left
|
||||
- `[ 40.08s]` **GESTURE** swipeup @(195,422)
|
||||
- `[ 40.44s]` VIBRATE [10]
|
||||
- `[ 40.44s]` SFX ♪ whiff
|
||||
- `[ 41.81s]` **GESTURE** swipeleft @(195,422)
|
||||
- `[ 42.16s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 42.16s]` SFX ♪ alarm
|
||||
- `[ 42.16s]` VIBRATE [10]
|
||||
- `[ 42.66s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 42.66s]` SFX ♪ alarm
|
||||
- `[ 43.16s]` SFX ♪ dodge
|
||||
- `[ 43.16s]` SFX ♪ whoosh_left
|
||||
- `[ 45.79s]` VOICE ▶ feat_shield (dur 2.8s)
|
||||
- `[ 48.04s]` VOICE ■ feat_shield (kill)
|
||||
- `[ 52.60s]` **GESTURE** tap @(195,422)
|
||||
- `[ 52.97s]` VIBRATE [20]
|
||||
- `[ 53.64s]` **GESTURE** swipeup @(195,422)
|
||||
- `[ 53.79s]` VOICE ▶ protect_soon (dur 1.52s)
|
||||
- `[ 53.99s]` VIBRATE [10]
|
||||
- `[ 53.99s]` SFX ♪ whiff
|
||||
- `[ 54.98s]` **GESTURE** tap @(195,422)
|
||||
- `[ 55.03s]` VOICE ■ protect_soon (kill)
|
||||
- `[ 55.34s]` VIBRATE [20]
|
||||
- `[ 55.34s]` VIBRATE [20]
|
||||
- `[ 55.34s]` SFX ♪ boost
|
||||
- `[ 56.20s]` **GESTURE** swiperight @(195,422)
|
||||
- `[ 56.29s]` SFX ♪ whoosh_up
|
||||
- `[ 56.56s]` VIBRATE [10]
|
||||
- `[ 56.56s]` SFX ♪ whiff
|
||||
- `[ 57.82s]` **GESTURE** tap @(195,422)
|
||||
- `[ 58.18s]` VIBRATE [20]
|
||||
- `[ 58.18s]` VIBRATE [40,100,40]
|
||||
- `[ 58.18s]` VOICE ▶ boost_not_ready (dur 3.04s)
|
||||
- `[ 58.87s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 59.11s]` VIBRATE [20]
|
||||
- `[ 59.11s]` VIBRATE [20]
|
||||
- `[ 59.11s]` SFX ♪ shield
|
||||
- `[ 59.29s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 59.29s]` SFX ♪ alarm
|
||||
- `[ 59.79s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 59.79s]` SFX ♪ alarm
|
||||
- `[ 59.99s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 60.29s]` VIBRATE [100]
|
||||
- `[ 60.29s]` SFX ♪ shield_block
|
||||
- `[ 60.29s]` SFX ♪ whoosh_right
|
||||
- `[ 60.29s]` VOICE ■ boost_not_ready (kill)
|
||||
- `[ 60.29s]` VOICE ▶ dir_right (dur 0.7170975056689343s)
|
||||
- `[ 60.34s]` VIBRATE [10]
|
||||
- `[ 60.79s]` VIBRATE [30,50,30,50,30]
|
||||
- `[ 60.79s]` VOICE ■ dir_right (kill)
|
||||
- `[ 60.79s]` VOICE ▶ protect_end (dur 3.6s)
|
||||
- `[ 61.26s]` **GESTURE** swiperight @(195,422)
|
||||
- `[ 61.63s]` VIBRATE [10]
|
||||
- `[ 62.79s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 63.04s]` VIBRATE [20]
|
||||
- `[ 63.04s]` VIBRATE [40,100,40]
|
||||
- `[ 63.04s]` VOICE ■ protect_end (kill)
|
||||
- `[ 63.04s]` VOICE ▶ feat_shield_done (dur 4.64s)
|
||||
- `[ 63.29s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 63.29s]` SFX ♪ alarm
|
||||
- `[ 63.79s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 63.79s]` SFX ♪ alarm
|
||||
- `[ 63.85s]` **GESTURE** swipeleft @(195,422)
|
||||
- `[ 64.21s]` VIBRATE [10]
|
||||
- `[ 64.21s]` SFX ♪ whiff
|
||||
- `[ 64.29s]` SFX ♪ dodge
|
||||
- `[ 64.29s]` SFX ♪ whoosh_left
|
||||
- `[ 64.29s]` VOICE ■ feat_shield_done (kill)
|
||||
- `[ 64.29s]` VOICE ▶ dir_left (dur 0.39909297052154197s)
|
||||
- `[ 64.69s]` VOICE ■ dir_left (kill)
|
||||
- `[ 64.69s]` VOICE ▶ shield_block (dur 1.44s)
|
||||
- `[ 64.69s]` VOICE ■ shield_block (kill)
|
||||
- `[ 64.69s]` VOICE ▶ protect_end (dur 3.6s)
|
||||
- `[ 64.97s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 65.22s]` VIBRATE [20]
|
||||
- `[ 66.48s]` **GESTURE** tap @(195,422)
|
||||
- `[ 66.85s]` VIBRATE [20]
|
||||
- `[ 66.85s]` VOICE ■ protect_end (kill)
|
||||
- `[ 67.29s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 67.29s]` SFX ♪ alarm
|
||||
- `[ 67.79s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 67.79s]` SFX ♪ alarm
|
||||
- `[ 67.84s]` **GESTURE** swipeup @(195,422)
|
||||
- `[ 68.19s]` VIBRATE [10]
|
||||
- `[ 68.19s]` SFX ♪ whiff
|
||||
- `[ 68.29s]` SFX ♪ dodge
|
||||
- `[ 68.29s]` SFX ♪ whoosh_up
|
||||
- `[ 68.29s]` VOICE ▶ dir_up (dur 0.5570975056689342s)
|
||||
- `[ 68.96s]` VOICE ■ dir_up (kill)
|
||||
- `[ 69.48s]` **GESTURE** swiperight @(195,422)
|
||||
- `[ 69.84s]` VIBRATE [10]
|
||||
- `[ 69.84s]` SFX ♪ whiff
|
||||
- `[ 70.86s]` **GESTURE** tap @(195,422)
|
||||
- `[ 71.22s]` VIBRATE [20]
|
||||
- `[ 71.22s]` VIBRATE [20]
|
||||
- `[ 71.22s]` SFX ♪ boost
|
||||
- `[ 71.29s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 71.29s]` SFX ♪ alarm
|
||||
- `[ 71.79s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 71.79s]` SFX ♪ alarm
|
||||
- `[ 71.81s]` **GESTURE** swipeleft @(195,422)
|
||||
- `[ 72.18s]` VIBRATE [10]
|
||||
- `[ 72.18s]` SFX ♪ whiff
|
||||
- `[ 72.29s]` SFX ♪ dodge
|
||||
- `[ 72.29s]` SFX ♪ whoosh_down
|
||||
- `[ 72.29s]` VOICE ▶ dir_down (dur 0.39909297052154197s)
|
||||
- `[ 72.68s]` VOICE ■ dir_down (kill)
|
||||
- `[ 73.48s]` **GESTURE** swipeleft @(195,422)
|
||||
- `[ 73.84s]` VIBRATE [10]
|
||||
- `[ 73.84s]` SFX ♪ whiff
|
||||
- `[ 74.11s]` VIBRATE [15]
|
||||
- `[ 74.11s]` VOICE ▶ shield_ready (dur 1.28s)
|
||||
- `[ 74.99s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 75.23s]` VIBRATE [20]
|
||||
- `[ 75.23s]` VIBRATE [20]
|
||||
- `[ 75.23s]` SFX ♪ shield
|
||||
- `[ 75.29s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 75.29s]` SFX ♪ alarm
|
||||
- `[ 75.30s]` SFX ♪ whoosh_down
|
||||
- `[ 75.30s]` VOICE ■ shield_ready (kill)
|
||||
- `[ 75.30s]` VOICE ▶ dir_down (dur 0.39909297052154197s)
|
||||
- `[ 75.69s]` VOICE ■ dir_down (kill)
|
||||
- `[ 75.79s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 75.79s]` SFX ♪ alarm
|
||||
- `[ 76.29s]` VIBRATE [100]
|
||||
- `[ 76.29s]` SFX ♪ shield_block
|
||||
- `[ 76.29s]` VOICE ▶ shield_block (dur 1.44s)
|
||||
- `[ 76.44s]` **GESTURE** swiperight @(195,422)
|
||||
- `[ 76.81s]` VIBRATE [10]
|
||||
- `[ 76.81s]` SFX ♪ whiff
|
||||
- `[ 76.98s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 76.98s]` SFX ♪ alarm
|
||||
- `[ 77.48s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 77.48s]` SFX ♪ alarm
|
||||
- `[ 77.53s]` VOICE ■ shield_block (kill)
|
||||
- `[ 77.92s]` **GESTURE** tap @(195,422)
|
||||
- `[ 77.98s]` VIBRATE [80]
|
||||
- `[ 77.98s]` SFX ♪ hit
|
||||
- `[ 77.98s]` VOICE ▶ hit_down (dur 5.28s)
|
||||
- `[ 78.26s]` SFX ♪ whoosh_right
|
||||
- `[ 78.26s]` VOICE ■ hit_down (kill)
|
||||
- `[ 78.26s]` VOICE ▶ dir_right (dur 0.7170975056689343s)
|
||||
- `[ 78.28s]` VIBRATE [20]
|
||||
- `[ 78.28s]` VOICE ■ dir_right (kill)
|
||||
- `[ 78.28s]` VOICE ▶ hit_down (dur 5.28s)
|
||||
- `[ 79.01s]` **GESTURE** swiperight @(195,422)
|
||||
- `[ 79.36s]` VIBRATE [10]
|
||||
- `[ 79.92s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 79.92s]` SFX ♪ alarm
|
||||
- `[ 80.42s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 80.42s]` SFX ♪ alarm
|
||||
- `[ 80.75s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 80.92s]` VIBRATE [20]
|
||||
- `[ 80.92s]` SFX ♪ dodge
|
||||
- `[ 80.92s]` VOICE ■ hit_down (kill)
|
||||
- `[ 80.92s]` VOICE ▶ ms_10 (dur 1.12s)
|
||||
- `[ 81.00s]` VIBRATE [20]
|
||||
- `[ 81.00s]` VIBRATE [40,100,40]
|
||||
- `[ 81.00s]` VOICE ■ ms_10 (kill)
|
||||
- `[ 81.00s]` VOICE ▶ feat_shield_done (dur 4.64s)
|
||||
- `[ 81.17s]` SFX ♪ whoosh_right
|
||||
- `[ 81.17s]` VOICE ■ feat_shield_done (kill)
|
||||
- `[ 81.17s]` VOICE ▶ dir_right (dur 0.7170975056689343s)
|
||||
- `[ 81.74s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 81.85s]` VOICE ■ dir_right (kill)
|
||||
- `[ 82.09s]` VIBRATE [10]
|
||||
- `[ 82.09s]` BGM ♪ menu (loop)
|
||||
- `[ 82.09s]` VOICE ▶ paused (dur 0.9570975056689343s)
|
||||
- `[ 83.03s]` VOICE ■ paused (kill)
|
||||
- `[ 83.03s]` VOICE ▶ menu_main (dur 3.92s)
|
||||
- `[ 83.23s]` **GESTURE** doubletap @(195,422)
|
||||
- `[ 83.48s]` VIBRATE [20]
|
||||
- `[ 83.48s]` BGM ♪ engine (loop)
|
||||
- `[ 84.28s]` SFX ♪ whoosh_right
|
||||
- `[ 84.28s]` VOICE ■ menu_main (kill)
|
||||
- `[ 84.28s]` VOICE ▶ dir_right (dur 0.7170975056689343s)
|
||||
- `[ 84.66s]` **GESTURE** swipeleft @(195,422)
|
||||
- `[ 84.94s]` VOICE ■ dir_right (kill)
|
||||
- `[ 85.03s]` VIBRATE [10]
|
||||
- `[ 85.03s]` SFX ♪ whiff
|
||||
- `[ 86.02s]` **GESTURE** swipeup @(195,422)
|
||||
- `[ 86.38s]` VIBRATE [10]
|
||||
- `[ 86.38s]` SFX ♪ whiff
|
||||
- `[ 87.28s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 87.28s]` SFX ♪ alarm
|
||||
- `[ 87.57s]` **GESTURE** swipeleft @(195,422)
|
||||
- `[ 87.78s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 87.78s]` SFX ♪ alarm
|
||||
- `[ 87.92s]` VIBRATE [10]
|
||||
- `[ 87.92s]` SFX ♪ whiff
|
||||
- `[ 88.28s]` VIBRATE [80]
|
||||
- `[ 88.28s]` SFX ♪ hit
|
||||
- `[ 88.28s]` VOICE ▶ hit_right (dur 4.8s)
|
||||
- `[ 88.28s]` SFX ♪ whoosh_down
|
||||
- `[ 88.28s]` VOICE ■ hit_right (kill)
|
||||
- `[ 88.28s]` VOICE ▶ dir_down (dur 0.39909297052154197s)
|
||||
- `[ 88.67s]` VOICE ■ dir_down (kill)
|
||||
- `[ 88.67s]` VOICE ▶ hit_right (dur 4.8s)
|
||||
- `[ 89.31s]` **GESTURE** swiperight @(195,422)
|
||||
- `[ 89.66s]` VIBRATE [10]
|
||||
- `[ 89.66s]` SFX ♪ whiff
|
||||
- `[ 90.23s]` VIBRATE [15]
|
||||
- `[ 90.89s]` **GESTURE** swipeup @(195,422)
|
||||
- `[ 91.24s]` VIBRATE [10]
|
||||
- `[ 91.24s]` SFX ♪ whiff
|
||||
- `[ 91.28s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 91.28s]` SFX ♪ alarm
|
||||
- `[ 91.78s]` VIBRATE [25,40,25,40,25]
|
||||
- `[ 91.78s]` SFX ♪ alarm
|
||||
- `[ 92.15s]` **GESTURE** swipedown @(195,422)
|
||||
- `[ 92.28s]` VIBRATE [80]
|
||||
- `[ 92.28s]` VOICE ■ hit_right (kill)
|
||||
- `[ 92.28s]` VIBRATE [60,40,60]
|
||||
- `[ 92.28s]` SFX ♪ hit
|
||||
- `[ 92.28s]` SFX ♪ crash
|
||||
- `[ 92.51s]` VIBRATE [10]
|
||||
- `[ 92.51s]` VOICE ▶ menu_lobby (dur 1.04s)
|
||||
@@ -0,0 +1,533 @@
|
||||
{
|
||||
"game": "space",
|
||||
"settings": {
|
||||
"voice": "female",
|
||||
"guide": "standard",
|
||||
"speed": 1.35,
|
||||
"bgm": 1
|
||||
},
|
||||
"outdir": "/home/xsl/AutoVideo/SoundGame/web/harness/live/out/space-20260914063503",
|
||||
"segs": [
|
||||
{
|
||||
"idx": 0,
|
||||
"voiceId": "second_run_ask",
|
||||
"t0": 0.1,
|
||||
"t1": 0.793,
|
||||
"dur": 3.04,
|
||||
"expEnd": 2.352,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 1,
|
||||
"voiceId": "feat_shield_done",
|
||||
"t0": 5.961,
|
||||
"t1": 7.596,
|
||||
"dur": 4.64,
|
||||
"expEnd": 9.398,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"voiceId": "paused",
|
||||
"t0": 7.596,
|
||||
"t1": 8.549,
|
||||
"dur": 0.9570975056689343,
|
||||
"expEnd": 8.305,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"voiceId": "menu_main",
|
||||
"t0": 8.549,
|
||||
"t1": 10.109,
|
||||
"dur": 3.92,
|
||||
"expEnd": 11.453,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"voiceId": "feat_shield_done",
|
||||
"t0": 10.109,
|
||||
"t1": 13.749,
|
||||
"dur": 4.64,
|
||||
"expEnd": 13.546,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 5,
|
||||
"voiceId": "feat_shield_done",
|
||||
"t0": 17.24,
|
||||
"t1": 18.945,
|
||||
"dur": 4.64,
|
||||
"expEnd": 20.677,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"voiceId": "paused",
|
||||
"t0": 18.945,
|
||||
"t1": 19.902,
|
||||
"dur": 0.9570975056689343,
|
||||
"expEnd": 19.654,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 7,
|
||||
"voiceId": "menu_main",
|
||||
"t0": 19.902,
|
||||
"t1": 20.793,
|
||||
"dur": 3.92,
|
||||
"expEnd": 22.806,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 8,
|
||||
"voiceId": "feat_boost",
|
||||
"t0": 20.793,
|
||||
"t1": 23.872,
|
||||
"dur": 3.84,
|
||||
"expEnd": 23.637,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"voiceId": "feat_boost_done",
|
||||
"t0": 24.654,
|
||||
"t1": 25.947,
|
||||
"dur": 3.44,
|
||||
"expEnd": 27.202,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"voiceId": "feat_shield_done",
|
||||
"t0": 27.293,
|
||||
"t1": 30.931,
|
||||
"dur": 4.64,
|
||||
"expEnd": 30.73,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 11,
|
||||
"voiceId": "feat_shield_done",
|
||||
"t0": 31.905,
|
||||
"t1": 35.154,
|
||||
"dur": 4.64,
|
||||
"expEnd": 35.342,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 12,
|
||||
"voiceId": "protect_right",
|
||||
"t0": 35.154,
|
||||
"t1": 36.407,
|
||||
"dur": 5.2,
|
||||
"expEnd": 39.006,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 13,
|
||||
"voiceId": "feat_shield",
|
||||
"t0": 45.793,
|
||||
"t1": 48.042,
|
||||
"dur": 2.8,
|
||||
"expEnd": 47.867,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"voiceId": "protect_soon",
|
||||
"t0": 53.793,
|
||||
"t1": 55.031,
|
||||
"dur": 1.52,
|
||||
"expEnd": 54.919,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 15,
|
||||
"voiceId": "boost_not_ready",
|
||||
"t0": 58.183,
|
||||
"t1": 60.293,
|
||||
"dur": 3.04,
|
||||
"expEnd": 60.435,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 16,
|
||||
"voiceId": "dir_right",
|
||||
"t0": 60.293,
|
||||
"t1": 60.793,
|
||||
"dur": 0.7170975056689343,
|
||||
"expEnd": 60.824,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 17,
|
||||
"voiceId": "protect_end",
|
||||
"t0": 60.793,
|
||||
"t1": 63.037,
|
||||
"dur": 3.6,
|
||||
"expEnd": 63.46,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 18,
|
||||
"voiceId": "feat_shield_done",
|
||||
"t0": 63.037,
|
||||
"t1": 64.294,
|
||||
"dur": 4.64,
|
||||
"expEnd": 66.474,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 19,
|
||||
"voiceId": "dir_left",
|
||||
"t0": 64.294,
|
||||
"t1": 64.689,
|
||||
"dur": 0.39909297052154197,
|
||||
"expEnd": 64.59,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 20,
|
||||
"voiceId": "shield_block",
|
||||
"t0": 64.69,
|
||||
"t1": 64.69,
|
||||
"dur": 1.44,
|
||||
"expEnd": 65.757,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 21,
|
||||
"voiceId": "protect_end",
|
||||
"t0": 64.69,
|
||||
"t1": 66.848,
|
||||
"dur": 3.6,
|
||||
"expEnd": 67.357,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 22,
|
||||
"voiceId": "dir_up",
|
||||
"t0": 68.294,
|
||||
"t1": 68.962,
|
||||
"dur": 0.5570975056689342,
|
||||
"expEnd": 68.707,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 23,
|
||||
"voiceId": "dir_down",
|
||||
"t0": 72.294,
|
||||
"t1": 72.677,
|
||||
"dur": 0.39909297052154197,
|
||||
"expEnd": 72.59,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 24,
|
||||
"voiceId": "shield_ready",
|
||||
"t0": 74.113,
|
||||
"t1": 75.303,
|
||||
"dur": 1.28,
|
||||
"expEnd": 75.061,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 25,
|
||||
"voiceId": "dir_down",
|
||||
"t0": 75.303,
|
||||
"t1": 75.695,
|
||||
"dur": 0.39909297052154197,
|
||||
"expEnd": 75.599,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 26,
|
||||
"voiceId": "shield_block",
|
||||
"t0": 76.294,
|
||||
"t1": 77.529,
|
||||
"dur": 1.44,
|
||||
"expEnd": 77.361,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 27,
|
||||
"voiceId": "hit_down",
|
||||
"t0": 77.982,
|
||||
"t1": 78.261,
|
||||
"dur": 5.28,
|
||||
"expEnd": 81.893,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 28,
|
||||
"voiceId": "dir_right",
|
||||
"t0": 78.261,
|
||||
"t1": 78.284,
|
||||
"dur": 0.7170975056689343,
|
||||
"expEnd": 78.792,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 29,
|
||||
"voiceId": "hit_down",
|
||||
"t0": 78.284,
|
||||
"t1": 80.915,
|
||||
"dur": 5.28,
|
||||
"expEnd": 82.195,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 30,
|
||||
"voiceId": "ms_10",
|
||||
"t0": 80.915,
|
||||
"t1": 80.999,
|
||||
"dur": 1.12,
|
||||
"expEnd": 81.745,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 31,
|
||||
"voiceId": "feat_shield_done",
|
||||
"t0": 80.999,
|
||||
"t1": 81.169,
|
||||
"dur": 4.64,
|
||||
"expEnd": 84.436,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 32,
|
||||
"voiceId": "dir_right",
|
||||
"t0": 81.169,
|
||||
"t1": 81.848,
|
||||
"dur": 0.7170975056689343,
|
||||
"expEnd": 81.7,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 33,
|
||||
"voiceId": "paused",
|
||||
"t0": 82.092,
|
||||
"t1": 83.032,
|
||||
"dur": 0.9570975056689343,
|
||||
"expEnd": 82.801,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 34,
|
||||
"voiceId": "menu_main",
|
||||
"t0": 83.032,
|
||||
"t1": 84.277,
|
||||
"dur": 3.92,
|
||||
"expEnd": 85.936,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 35,
|
||||
"voiceId": "dir_right",
|
||||
"t0": 84.277,
|
||||
"t1": 84.936,
|
||||
"dur": 0.7170975056689343,
|
||||
"expEnd": 84.808,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 36,
|
||||
"voiceId": "hit_right",
|
||||
"t0": 88.277,
|
||||
"t1": 88.278,
|
||||
"dur": 4.8,
|
||||
"expEnd": 91.833,
|
||||
"truncated": true,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 37,
|
||||
"voiceId": "dir_down",
|
||||
"t0": 88.278,
|
||||
"t1": 88.674,
|
||||
"dur": 0.39909297052154197,
|
||||
"expEnd": 88.574,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 38,
|
||||
"voiceId": "hit_right",
|
||||
"t0": 88.674,
|
||||
"t1": 92.278,
|
||||
"dur": 4.8,
|
||||
"expEnd": 92.23,
|
||||
"truncated": false,
|
||||
"reason": "kill",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
},
|
||||
{
|
||||
"idx": 39,
|
||||
"voiceId": "menu_lobby",
|
||||
"t0": 92.509,
|
||||
"t1": 92.509,
|
||||
"dur": 1.04,
|
||||
"expEnd": 93.279,
|
||||
"truncated": true,
|
||||
"reason": "session-end",
|
||||
"verdict": null,
|
||||
"heard": null,
|
||||
"similarity": null
|
||||
}
|
||||
],
|
||||
"rows": []
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
# P1 视障资深玩家复审:《盲航》(space polish round2)
|
||||
|
||||
> 复审依据:round2/live-A-voice-timeline.txt(修后 live 事件时间轴,复跑两轮保护期结束窗)+
|
||||
> round2/sfx-spectrum-after.txt + round2/fix-evidence.md。对照 round1/p1-blind.md 的三问逐条结账。
|
||||
|
||||
### 盲航(R5 复审)
|
||||
- 状态感知:3.5/5(+1.5)——保护期结束窗仍是信息密度最高的时刻,但现在**每句都送到了**:
|
||||
50 秒预告「训练护盾还剩十秒」(ta 149.8,ASR sim=1.0,完整识别)给了提前量;
|
||||
protect_end 被顶断后补播完整(B 局 ta 64.69);两条被撞归因 hit_left/hit_right 被呼喊顶断后
|
||||
各自 replay 完整播 3.5s(ta 160.79/164.78)——round1 我判的死穴「至死不知方位」闭环。
|
||||
protect_* 教学句不再七连截断(ta 102.3 sim=1.0)。扣 1.5 分在:护盾格挡确认句
|
||||
(voice/shield_block)仍会被顶断无 replay(有音效+震动兜底);gd_last_life 同样;
|
||||
对局期依然没有 status key(宪法豁免,事件反馈句已补齐主要账目)。
|
||||
- 下一步明确性:4/5(不变)——演练/菜单/呼喊链未动,归因链完整后"下一颗从哪来"不再靠猜。
|
||||
- 愿意继续玩:是 —— 归因真话兑现后,这是少数把我当成年人、又把死因讲清楚的游戏。
|
||||
- 刺耳对账:round1 我列的 alarm/dodge/shield_block/boost 四件,修后真峰值 -3.4~-3.9dBFS、
|
||||
≥3kHz 能量全部 0%(alarm 质心 7580→593Hz)——客观清单全消;whoosh 方位提示音未动,对。
|
||||
- 动作反馈对账:加速冷却单击现在有「引擎还在冷却,稍等一下。」+ HEARTBEAT(playtest 验证,
|
||||
live 资产实测加载);滑错方向有 whiff 轻叹(B 局乱按实测 3 次);激活 CONFIRM 震补齐。
|
||||
我要求的"拒绝必须有回音"现在对加速/护盾一视同仁。
|
||||
- 遗留关注:真机人耳最后一课——alarm 换低谐波双音后,嘈杂环境的穿透力是否还够(P3 的主场),
|
||||
以及 replay 链在 1.7× 语速下的节奏是否拖脚。这两项转写给不了答案。
|
||||
@@ -0,0 +1,17 @@
|
||||
# P2 时间充裕的大学生复审:《盲航》(space polish round2)
|
||||
|
||||
> 复审依据同 round2 三件套。对照 round1/p2-student.md 逐条结账。
|
||||
|
||||
### 盲航(R5 复审)
|
||||
- 状态感知:4/5(+1.5)——60 秒整不再是"断崖":50 秒有人提前打招呼(protect_soon),
|
||||
保护结束的宣告被顶断会补播(B 局 64.69),两条死因归因各自完整 replay(A' 局 160.79/164.78)——
|
||||
round1 那句"合格飞行员听着像嘲讽"的账清了:现在我知道自己是怎么合格下来的。
|
||||
保护期里那句教学也终于一句是一句(102.3 完整 sim=1.0),不再是 7 遍半截复读。
|
||||
扣 1 分:护盾挡下时的确认句偶尔还是被顶断(有音效兜底,接受但可更好)。
|
||||
- 下一步明确性:4.5/5(+0.5)——冷却中单击有「引擎还在冷却,稍等一下。」回音,
|
||||
双击护盾冷却也有同款待遇;滑错方向有 whiff 轻叹,我不再怀疑耳机坏了。
|
||||
- 愿意继续玩:是 —— 死亡从"信息没送到"变回"我菜",挫败感对味了;结算钩子本来就成立。
|
||||
- 刺耳对账:alarm 不再是指甲刮板(16kHz 峰没了,质心 593Hz),dodge 的奖励音从嘶啦变成
|
||||
气声扫频——奖励终于像奖励。宿舍夜玩不会被舍友嫌了(P4 的诉求也顺带满足)。
|
||||
- 建议(留给下轮):护盾格挡句纳入 replay;加速生效时如果能有半句语音提示(现在只有音效+震动),
|
||||
二周目机制开局即用时的新手会更踏实。
|
||||
@@ -0,0 +1,16 @@
|
||||
# P3 时间紧张的白领复审:《盲航》(space polish round2)
|
||||
|
||||
> 复审依据同 round2 三件套。对照 round1/p3-office.md 逐条结账。
|
||||
|
||||
### 盲航(R5 复审)
|
||||
- 状态感知:3.5/5(+1.5)——被打断恢复的账还了一半:50 秒预告 + 保护结束宣告补播 +
|
||||
归因 replay,让我接个电话回来还能从语音流里拼出"保护期刚结束、我刚才被撞了两下、都撞在哪边"。
|
||||
但宪法豁免决定了对局期仍无 status key(上滑=闪避),打断后"护盾在不在/冷却几秒"还是要等
|
||||
系统开口。这是豁免表的裁定,我不越级要求,只记账。
|
||||
- 下一步明确性:4/5(+0.5)——冷却拒绝回音补齐后,"现在能不能按"不再有静默区。
|
||||
- 愿意继续玩:是 —— 单局 60-90 秒的通勤小品定位成立,保护期后敢开第二把了。
|
||||
- 刺耳对账:alarm 穿透力是我的命门——修后 0% ≥5kHz,我在地铁里直说:**这一点需要真机验证**。
|
||||
设计上的兜底是两档音量渐强(0.5/1.0)和 DANGER 震动同步保留,但 700/560Hz 双音在车厢底噪里
|
||||
够不够扎出来,转写回答不了。如果不够,建议给 alarm 保留 2-4kHz 一段过渡带(现在一刀切到 3k 以下)。
|
||||
dodge/whiff 的低频化在嘈杂环境反而更稳(不跟报站声撞车)。
|
||||
- 建议:真机第一课 = 地铁环境 alarm 可辨识度;其余闭环。
|
||||
@@ -0,0 +1,16 @@
|
||||
# P4 疲惫的工人复审:《盲航》(space polish round2)
|
||||
|
||||
> 复审依据同 round2 三件套。对照 round1/p4-worker.md 逐条结账。
|
||||
|
||||
### 盲航(R5 复审)
|
||||
- 状态感知:4/5(+1.5)——我现在能听明白"要变天了":50 秒先说「训练护盾还剩十秒」,
|
||||
到点了那句「训练护盾关闭,接下来靠你自己了」被别的声音打断了还会重新说一遍(B 局 64.69)。
|
||||
前两回被撞,「左边撞上的」「右边撞上的」都完整补给我了(A' 局 160.79/164.78)——
|
||||
不再是"直接宣布罚款",是先告诉我哪块板子掉的。教学句也一句是一句,不催我。
|
||||
- 下一步明确性:4.5/5(+0.5)——我按快了、滑错了,现在有轻轻一声叹告诉我"收到了但没用",
|
||||
还有冷却的时候单击会说「引擎还在冷却,稍等一下」,我不怕手机卡了。
|
||||
- 愿意继续玩:是 —— 头一分钟有人手把手教、输了讲清楚、夜里不炸耳,够我收工后玩两把。
|
||||
- 刺耳对账:警报换成了闷闷的"嘟嘟"(700/560Hz,以前 16kHz 的尖),小音量外放不刺耳了;
|
||||
撞上那下(hit)没动,还是低频的"咣",接受。舍友那边过关了。
|
||||
- 建议:就一条——护盾挡下来的那句话("护盾挡下了撞击")有时候还是会被新陨石的声音盖掉,
|
||||
虽然"咚"一声和震动还在,但那句话能补齐就更踏实(P1 也记了这条,留给下轮)。
|
||||
@@ -0,0 +1,13 @@
|
||||
id dur TP dBFS DC %>3kHz %>5kHz centroid maxkHz flags
|
||||
alarm 1.00 -3.50 -0.00001 0.0 0.0 593 0.56
|
||||
boost 1.80 -3.60 0.00058 0.0 0.0 114 0.06
|
||||
crash 3.00 -3.00 0.00069 1.5 1.1 170 0.03
|
||||
dodge 1.20 -3.90 0.00002 0.0 0.0 1090 0.66
|
||||
hit 1.50 -3.80 -0.00001 30.7 16.7 2351 0.50 5k+高
|
||||
shield 1.50 -3.40 0.00000 0.0 0.0 784 0.98
|
||||
shield_block 1.50 -3.90 -0.00010 0.0 0.0 1271 0.52
|
||||
whiff 0.40 -4.80 0.00001 0.0 0.0 461 0.20
|
||||
whoosh_down 2.50 -3.00 0.00016 0.2 0.1 211 0.25
|
||||
whoosh_left 2.50 -3.20 0.00004 0.1 0.0 188 0.16
|
||||
whoosh_right 2.50 -3.20 0.00004 0.1 0.0 188 0.16
|
||||
whoosh_up 2.50 -3.20 -0.00017 0.5 0.1 528 0.40
|
||||
@@ -0,0 +1,250 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""《盲航》程序合成音效重制(space polish R5,research/space-polish/round1 取证结论)。
|
||||
|
||||
重制 5 件 + 新增 1 件(落 web/space/audio/sfx/):
|
||||
alarm 全程最高暴露(每颗陨石两遍)→ 低谐波电子双音,5kHz 以上近零能量
|
||||
dodge 高频嘶声(-2.30dBFS / 63.6%≥3kHz)→ 中频气声扫频
|
||||
shield_block 保护期每 4s 一响 + 真峰值超标 → 柔和电涟波
|
||||
boost 真峰值 -2.70dBFS / 53%≥3kHz → 低频引擎冲刺
|
||||
shield 真峰值 -2.90dBFS 超标 → 上升 shimmer 重制
|
||||
whiff 新增:挥空/滑错方向的轻反馈(归因真话:无效手势有回音)
|
||||
|
||||
one-shot QC(同 gen_cipher_syn.py 标准):去直流 + 首尾 8ms cos² + 真峰值 ≤-3dBFS
|
||||
(编码后 ebur128 实测,MDCT 过冲超限自动降档重编)。
|
||||
|
||||
用法:.venv-tts/bin/python tools/gen_space_syn.py
|
||||
"""
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
import numpy as np
|
||||
import soundfile as sf
|
||||
|
||||
ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
FFMPEG = os.path.join(ROOT, "tools", "bin", "ffmpeg")
|
||||
OUT = os.path.join(ROOT, "tools", "gen_space_syn_wav")
|
||||
DST = os.path.join(ROOT, "web", "space", "audio", "sfx")
|
||||
os.makedirs(OUT, exist_ok=True)
|
||||
os.makedirs(DST, exist_ok=True)
|
||||
|
||||
sr = 44100
|
||||
ONE_SHOT_TP_CEIL = -3.0
|
||||
SAMPLE_PEAK = 0.66
|
||||
FADE_N = int(sr * 0.008)
|
||||
|
||||
_rng = np.random.default_rng(20260914)
|
||||
|
||||
|
||||
def dc(y):
|
||||
return y - np.mean(y)
|
||||
|
||||
|
||||
def fade(y):
|
||||
w = np.sin(np.linspace(0, np.pi / 2, FADE_N)) ** 2
|
||||
y = y.copy()
|
||||
y[:FADE_N] *= w
|
||||
y[-FADE_N:] *= w[::-1]
|
||||
return y
|
||||
|
||||
|
||||
def norm(y, peak=SAMPLE_PEAK):
|
||||
m = np.max(np.abs(y))
|
||||
return (y / m * peak) if m > 0 else y
|
||||
|
||||
|
||||
def stereo(y):
|
||||
return np.stack([y, y], axis=1).astype(np.float32)
|
||||
|
||||
|
||||
def bp_noise(n, lo, hi):
|
||||
x = _rng.standard_normal(n)
|
||||
X = np.fft.rfft(x)
|
||||
freqs = np.fft.rfftfreq(n, 1 / sr)
|
||||
mask = ((freqs >= lo) & (freqs <= hi)).astype(float)
|
||||
y = np.fft.irfft(X * mask, n)
|
||||
return y / (np.max(np.abs(y)) + 1e-9)
|
||||
|
||||
|
||||
def sweep_noise(n, f_lo, f_hi, bw=900):
|
||||
"""质心随时间线性扫动的带通噪声(气声/扫频体感,无离散高频谐波)。"""
|
||||
x = _rng.standard_normal(n)
|
||||
X = np.fft.rfft(x)
|
||||
freqs = np.fft.rfftfreq(n, 1 / sr)
|
||||
t = np.arange(n) / sr
|
||||
center = f_lo + (f_hi - f_lo) * np.minimum(t / (n / sr), 1.0)
|
||||
# 时变带通:按块扫中心频率
|
||||
y = np.zeros(n)
|
||||
blk = int(sr * 0.02)
|
||||
for s in range(0, n, blk):
|
||||
e = min(n, s + blk)
|
||||
c = center[s:e].mean()
|
||||
m = ((freqs >= max(20, c - bw)) & (freqs <= c + bw)).astype(float)
|
||||
seg = np.fft.irfft(X * m, n)
|
||||
y[s:e] = seg[s:e]
|
||||
m = np.max(np.abs(y))
|
||||
return y / m if m > 0 else y
|
||||
|
||||
|
||||
def tone(n, f, decay=0.0, harm=()):
|
||||
t = np.arange(n) / sr
|
||||
y = np.sin(2 * np.pi * f * t)
|
||||
for h, g in harm:
|
||||
y += g * np.sin(2 * np.pi * f * h * t)
|
||||
if decay:
|
||||
y *= np.exp(-t * decay)
|
||||
return y
|
||||
|
||||
|
||||
# ---------------------------------------------------------------- one-shot 渲染
|
||||
def r_alarm(): # 1.0s 电子双音警报:700/560Hz 圆角短促 beep×2,谐波收敛 <2.5kHz
|
||||
n = int(sr * 1.0)
|
||||
y = np.zeros(n)
|
||||
for st, f in [(0.05, 700), (0.42, 560)]:
|
||||
L = int(sr * 0.20)
|
||||
tt = np.arange(L) / sr
|
||||
beep = np.sin(2 * np.pi * f * tt) + 0.22 * np.sin(2 * np.pi * f * 2 * tt) \
|
||||
+ 0.06 * np.sin(2 * np.pi * f * 3 * tt)
|
||||
beep *= (1 - np.exp(-tt * 250)) * np.exp(-np.maximum(tt - 0.12, 0) * 60)
|
||||
beep += bp_noise(L, 300, 2200) * np.exp(-tt * 90) * 0.10 # 电子毛边,低带
|
||||
y[int(st * sr):int(st * sr) + L] += beep
|
||||
return dc(y)
|
||||
|
||||
|
||||
def r_dodge(): # 1.2s 闪避成功:500→2100Hz 气声扫 + 一记软木鱼中频确认
|
||||
n = int(sr * 1.2)
|
||||
t = np.arange(n) / sr
|
||||
y = sweep_noise(n, 500, 2100, bw=1000)
|
||||
env = (1 - np.exp(-t * 120)) * np.exp(-np.maximum(t - 0.55, 0) * 7)
|
||||
y = y * env * 0.8
|
||||
L = int(sr * 0.16)
|
||||
tt = np.arange(L) / sr
|
||||
knock = np.sin(2 * np.pi * 740 * tt) * np.exp(-tt * 45)
|
||||
knock += bp_noise(L, 400, 1800) * np.exp(-tt * 70) * 0.5
|
||||
y[int(0.06 * sr):int(0.06 * sr) + L] += knock * 0.5
|
||||
return dc(y)
|
||||
|
||||
|
||||
def r_shield_block(): # 1.5s 护盾吸收:250-2300 电涟噪声衰减 + 150Hz 低频顿 + 弱 520Hz 余振
|
||||
n = int(sr * 1.5)
|
||||
t = np.arange(n) / sr
|
||||
rip = bp_noise(n, 250, 2300) * np.exp(-t * 4.5)
|
||||
rip *= 1 + 0.5 * np.sin(2 * np.pi * 11 * t) * np.exp(-t * 3) # 涟波调制
|
||||
th = np.sin(2 * np.pi * 150 * t) * np.exp(-t * 18) * 0.6
|
||||
ring = np.sin(2 * np.pi * 520 * t) * np.exp(-t * 10) * 0.18
|
||||
y = (rip * 0.7 + th + ring) * (1 - np.exp(-t * 300))
|
||||
return dc(y)
|
||||
|
||||
|
||||
def r_boost(): # 1.8s 引擎冲刺:55-90Hz 低哼 + 150-850Hz 推进噪声渐强,暗频谱
|
||||
n = int(sr * 1.8)
|
||||
t = np.arange(n) / sr
|
||||
rum = np.sin(2 * np.pi * 62 * t) + 0.5 * np.sin(2 * np.pi * 93 * t)
|
||||
rum *= (1 - np.exp(-t * 30)) * np.exp(-np.maximum(t - 1.2, 0) * 4)
|
||||
thrust = sweep_noise(n, 180, 850, bw=500)
|
||||
env = np.minimum(1, t / 0.5) * np.exp(-np.maximum(t - 1.1, 0) * 5)
|
||||
growl = bp_noise(n, 100, 500) * 0.5 * env
|
||||
y = rum * 0.55 + (thrust * 0.55 + growl) * env
|
||||
return dc(y)
|
||||
|
||||
|
||||
def r_shield(): # 1.5s 护盾展开:320→980Hz 正弦爬升 + 轻 shimmer 噪声,谐波 <4kHz
|
||||
n = int(sr * 1.5)
|
||||
t = np.arange(n) / sr
|
||||
f0 = 320 + (980 - 320) * np.minimum(t / 1.0, 1.0) ** 1.4
|
||||
ph = 2 * np.pi * np.cumsum(f0) / sr
|
||||
y = np.sin(ph) * 0.7 + 0.15 * np.sin(2 * ph)
|
||||
shim = bp_noise(n, 900, 3600) * 0.10 * np.minimum(1, t / 0.3)
|
||||
env = (1 - np.exp(-t * 60)) * np.exp(-np.maximum(t - 1.05, 0) * 8)
|
||||
return dc((y + shim) * env)
|
||||
|
||||
|
||||
def r_whiff(): # 0.4s 挥空轻反馈:150-900Hz 低带噪声叹 + 200Hz 软顿(设计音量低,game 层 0.55)
|
||||
n = int(sr * 0.4)
|
||||
t = np.arange(n) / sr
|
||||
y = bp_noise(n, 150, 900) * np.exp(-t * 14) * 0.7
|
||||
y += np.sin(2 * np.pi * 200 * t) * np.exp(-t * 30) * 0.5
|
||||
return dc(y * (1 - np.exp(-t * 400)))
|
||||
|
||||
|
||||
ONE_SHOTS = {
|
||||
"alarm": r_alarm,
|
||||
"dodge": r_dodge,
|
||||
"shield_block": r_shield_block,
|
||||
"boost": r_boost,
|
||||
"shield": r_shield,
|
||||
"whiff": r_whiff,
|
||||
}
|
||||
|
||||
|
||||
# ---------------------------------------------------------------- 编码 + 真峰值校验
|
||||
def encode(wav_path, base):
|
||||
for args, ext in [(["-c:a", "libvorbis", "-q:a", "3"], ".ogg"),
|
||||
(["-c:a", "aac", "-b:a", "128k"], ".m4a")]:
|
||||
subprocess.run([FFMPEG, "-y", "-v", "error", "-i", wav_path,
|
||||
"-ar", "44100", *args, base + ext], check=True)
|
||||
|
||||
|
||||
def true_peak_db(path):
|
||||
r = subprocess.run([FFMPEG, "-i", path, "-af", "ebur128=peak=true", "-f", "null", "-"],
|
||||
capture_output=True, text=True)
|
||||
peaks = [float(line.split("Peak:")[1].strip().split()[0])
|
||||
for line in r.stderr.splitlines() if "Peak:" in line and "dBFS" in line]
|
||||
return max(peaks) if peaks else float("nan")
|
||||
|
||||
|
||||
def check_tp(base):
|
||||
return max(true_peak_db(base + ".ogg"), true_peak_db(base + ".m4a"))
|
||||
|
||||
|
||||
def spectral_report(base):
|
||||
"""编码后解码回读:≥3kHz/≥5kHz 能量占比(刺耳复测口径,与取证轮一致)。"""
|
||||
r = subprocess.run([FFMPEG, "-v", "error", "-i", base + ".ogg", "-f", "f32le", "-ac", "1", "-ar", "44100", "-"],
|
||||
capture_output=True)
|
||||
y = np.frombuffer(r.stdout, dtype=np.float32)
|
||||
Y = np.abs(np.fft.rfft(y * np.hanning(len(y))))
|
||||
fr = np.fft.rfftfreq(len(y), 1 / sr)
|
||||
e = Y ** 2
|
||||
tot = e.sum() + 1e-12
|
||||
return e[fr >= 3000].sum() / tot * 100, e[fr >= 5000].sum() / tot * 100, fr[np.argmax(Y)] / 1000
|
||||
|
||||
|
||||
def main():
|
||||
report = []
|
||||
problems = []
|
||||
for fid, fn in ONE_SHOTS.items():
|
||||
wav_path = os.path.join(OUT, fid + ".wav")
|
||||
base = os.path.join(DST, fid)
|
||||
y = fade(norm(dc(fn())))
|
||||
sf.write(wav_path, stereo(y), sr)
|
||||
encode(wav_path, base)
|
||||
tp = check_tp(base)
|
||||
if tp > ONE_SHOT_TP_CEIL:
|
||||
gain = 10 ** ((ONE_SHOT_TP_CEIL - tp) / 20) * 0.98
|
||||
sf.write(wav_path, stereo(y * gain), sr)
|
||||
encode(wav_path, base)
|
||||
tp2 = check_tp(base)
|
||||
report.append((fid, len(y) / sr, tp, f"降 {20 * np.log10(gain):.1f}dB 重编 -> {tp2:.2f}"))
|
||||
tp = tp2
|
||||
else:
|
||||
report.append((fid, len(y) / sr, tp, ""))
|
||||
if tp > ONE_SHOT_TP_CEIL:
|
||||
problems.append(f"{fid}: 真峰值 {tp:.2f} dBFS 仍超 {ONE_SHOT_TP_CEIL}")
|
||||
print(f"{'id':14s} {'dur(s)':>7s} {'TP(dBFS)':>9s} {'%>3k':>7s} {'%>5k':>7s} {'peakkHz':>8s} note")
|
||||
for fid, dur, tp, note in report:
|
||||
e3, e5, pk = spectral_report(os.path.join(DST, fid))
|
||||
print(f"{fid:14s} {dur:7.2f} {tp:9.2f} {e3:7.1f} {e5:7.1f} {pk:8.2f} {note}")
|
||||
if e5 > 15.0:
|
||||
problems.append(f"{fid}: 5kHz+ 能量 {e5:.1f}% 仍偏高")
|
||||
if problems:
|
||||
print("PROBLEMS:")
|
||||
for p in problems:
|
||||
print(" ", p)
|
||||
return 1
|
||||
print(f"ALL OK: {len(ONE_SHOTS)} one-shot -> {DST}")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
+44
-28
@@ -319,28 +319,55 @@ SIMON_LINES = [
|
||||
# H3:使用时如实报余量(替换主动重听路径的旧「用完了」绝对句)。
|
||||
("gd_chances_left1", _SIMON, "免费重听还剩一次。"),
|
||||
("gd_chances_left0", _SIMON, "免费重听用完了。之后重听会花一次机会,别怕,慢慢来。"),
|
||||
# ---- 状态查询(research/simon-polish round1,S1/S3/S4;input 阶段长按=问状态,
|
||||
# 13 句全部整句预生成、数字分档,禁运行时拼接;不加 guide 前缀——三档 guide 全可用,
|
||||
# 属玩家主动查询而非向导插播)----
|
||||
("status_len_short", _SIMON, "这一轮很短。"),
|
||||
("status_len_mid", _SIMON, "这一轮不长不短。"),
|
||||
("status_len_long", _SIMON, "这一轮挺长。"),
|
||||
("status_len_xlong", _SIMON, "这一轮很长,稳住。"),
|
||||
("status_prog_start", _SIMON, "刚开头,一个还没对。"),
|
||||
("status_prog_early", _SIMON, "刚答了个开头。"),
|
||||
("status_prog_half", _SIMON, "答了一半左右。"),
|
||||
("status_prog_late", _SIMON, "就剩最后几个了。"),
|
||||
("status_free2", _SIMON, "免费重听还有两次。"),
|
||||
("status_free1", _SIMON, "免费重听还有一次。"),
|
||||
("status_chance2", _SIMON, "免费用完,机会还剩两次。"),
|
||||
("status_chance1", _SIMON, "免费用完,机会还剩一次。"),
|
||||
("status_out", _SIMON, "免费和机会都用完了,答错就结束。"),
|
||||
|
||||
]
|
||||
|
||||
# ---------------------------------------------------------------- rhythm
|
||||
# R3 重构(docs/design/03-rhythm-voice-ids.md):31 句,全表同一 instruct 常量。
|
||||
# 鼓手模式重构(docs/design/24-rhythm-voice-ids.md):41 句,全表同一 instruct
|
||||
# 常量;向导层 9 句 gd_* 已在库沿用不重录(不在本表)。
|
||||
_RHY = _pair("低沉醇厚的男声,像节奏游戏主持人,平稳有力",
|
||||
"活力清晰的年轻女声,像节奏游戏主持人,情绪饱满但不夸张")
|
||||
|
||||
RHYTHM_LINES = [
|
||||
# ---- W 组 · 开场与流程 ----
|
||||
("welcome", _RHY, "欢迎来到节拍行者。跟着音乐,我奏一句,你跟一句。"),
|
||||
("welcome_back", _RHY, "欢迎回来。我奏一句,你跟一句。"),
|
||||
("tut_1", _RHY, "听,底鼓。在下一小节的同一个位置,单击。"),
|
||||
("tut_2", _RHY, "这次是左和右。跟着打,左滑,右滑。"),
|
||||
("tut_3", _RHY, "最后一句,三个音,中间是双击。"),
|
||||
("welcome", _RHY, "欢迎来到节拍行者。今天你是乐队的鼓手,整面屏幕都是你的鼓。"),
|
||||
("welcome_back", _RHY, "欢迎回来,鼓手。准备好了就开始。"),
|
||||
("tut_done", _RHY, "很好,演出开始。"),
|
||||
("tut_skip", _RHY, "跳过教学,直接开始。"),
|
||||
("mid_song", _RHY, "过半了,保持。"),
|
||||
# ---- Z 组 · 分区教学与区名 ----
|
||||
("tut_map", _RHY, "先认识你的鼓。屏幕横着分三列,左边、中间、右边;竖着分两行,上面清亮,下面低沉。随便摸一摸,听到哪面鼓,我就告诉你它在哪。"),
|
||||
("tut_probe", _RHY, "摸到三个不同的地方,我们就开始。"),
|
||||
("tut_z_kick", _RHY, "下面正中间,是底鼓,你的家。先听四下数拍,然后跟着我敲。"),
|
||||
("tut_z_sides", _RHY, "左下是军鼓,右下是低嗵。一左一右,跟着打。"),
|
||||
("tut_z_patt", _RHY, "上面一排更清亮。左上踩镲,上中高嗵,右上吊镲。听这一句,三个音。"),
|
||||
("tut_fill", _RHY, "最后有一段加花,跟着我连打。"),
|
||||
("zone_tl", _RHY, "左上,踩镲。"),
|
||||
("zone_tc", _RHY, "上中,高嗵。"),
|
||||
("zone_tr", _RHY, "右上,吊镲。"),
|
||||
("zone_bl", _RHY, "左下,军鼓。"),
|
||||
("zone_bc", _RHY, "下中,底鼓。"),
|
||||
("zone_br", _RHY, "右下,低嗵。"),
|
||||
# ---- C 组 · 教学纠正 ----
|
||||
("retry_early", _RHY, "早了,等鼓点再出手。"),
|
||||
("retry_late", _RHY, "晚了,跟着鼓点走。"),
|
||||
("retry_gesture", _RHY, "不是这个手势,再听一遍。"),
|
||||
("retry_wrong", _RHY, "敲错鼓了,再听一遍。"),
|
||||
("retry_listen", _RHY, "再听一遍,跟着来。"),
|
||||
("retry_skip", _RHY, "没关系,我们先走下一句。"),
|
||||
# ---- S 组 · 选曲与解锁 ----
|
||||
@@ -359,26 +386,12 @@ RHYTHM_LINES = [
|
||||
("new_best_combo", _RHY, "新连击纪录!"),
|
||||
("restart", _RHY, "单击再来一遍,右滑下一首,下滑回大厅。"),
|
||||
# ---- M 组 · 菜单与规则 ----
|
||||
("rules", _RHY, "规则:我奏一句,你在下一小节原样跟打。音要对,拍点也要对。"),
|
||||
("rules", _RHY, "规则:我敲一小节鼓,你在下一小节照着敲回来。鼓要选对,拍点也要对。"),
|
||||
("settings_hint", _RHY, "音色、语速、背景音乐,请回大厅修改。"),
|
||||
("menu_main", _RHY, "菜单。单击切换选项,双击确认。"),
|
||||
("menu_resume", _RHY, "继续演奏。"),
|
||||
("menu_lobby", _RHY, "回大厅。"),
|
||||
("skip_hint", _RHY, "单击可跳过旁白。"),
|
||||
# ---- 向导层(docs/design/14-guide-layer.md,schemes §1.5 定稿全文)----
|
||||
("gd_answer", _RHY, "现在跟着我打。"),
|
||||
("gd_miss", _RHY, "慢了半拍,下一小节跟上我就行。"),
|
||||
# ---- 向导层 round2(docs/design/14-guide-layer.md「round2 v1.1」,synthesis §3 定稿全文)----
|
||||
("gd_miss_early", _RHY, "抢拍了。等声音落下再滑。"),
|
||||
("gd_miss_late", _RHY, "慢了半拍。跟着节拍走。"),
|
||||
("gd_miss_wrong", _RHY, "方向不对。跟着音色滑。"),
|
||||
# ---- 向导层 round3(docs/design/14-guide-layer.md「round3 v1.2」,synthesis §3 定稿全文)----
|
||||
("gd_slow", _RHY, "我放慢一些,跟着试试。"),
|
||||
("gd_count", _RHY, "四拍之后,继续。"),
|
||||
# ---- 向导层 round4(docs/design/14-guide-layer.md「round4 v1.3」,synthesis §3 定稿全文)----
|
||||
# H5:归因真话律——应答窗口无任何尝试播此句(早/晚/错分档只留给真出手的情况)。
|
||||
("gd_miss_none", _RHY, "这拍没接。我停下的时候,就轮到你了。"),
|
||||
|
||||
]
|
||||
|
||||
# ---------------------------------------------------------------- space
|
||||
@@ -446,6 +459,9 @@ SPACE_LINES = [
|
||||
("settings_hint", _SPC, "音色、语速、背景音乐,请回大厅修改。"),
|
||||
("paused", _SPC, "已暂停。"),
|
||||
("skip_hint", _SPC, "单击可跳过旁白。"),
|
||||
# ---- R5 新增(space polish round1/round2,research/space-polish/,04-space-voice-ids.md 追加节)----
|
||||
("protect_soon", _SPC, "训练护盾还剩十秒。"),
|
||||
("boost_not_ready", _SPC, "引擎还在冷却,稍等一下。"),
|
||||
# ---- 向导层(docs/design/14-guide-layer.md,schemes §1.5 定稿全文)----
|
||||
("gd_hit_hint", _SPC, "被撞了。听方位,同向滑动就能拨开。"),
|
||||
# ---- 向导层 round2(docs/design/14-guide-layer.md「round2 v1.1」,synthesis §3 定稿全文)----
|
||||
@@ -2219,16 +2235,16 @@ KEY_LINES = {
|
||||
("gd_occ_dt", "这一轮,按回车是作答。"),
|
||||
("gd_occ_both", "这一轮,按上方向键和回车都是作答。"),
|
||||
],
|
||||
# rhythm:8 对(24-rhythm-voice-ids.md 键盘变体表,措辞含数字键/方向键/空格/回车)。
|
||||
"rhythm": [
|
||||
("tut_1", "听,底鼓。在下一小节的同一个位置,按空格。"),
|
||||
("tut_2", "这次是左和右。跟着打,按左方向键,按右方向键。"),
|
||||
("tut_3", "最后一句,三个音,中间是按回车。"),
|
||||
("tut_map", "先认识你的鼓。屏幕横着分三列,左边、中间、右边;竖着分两行,上面清亮,下面低沉。按数字一键到六键,听六面鼓。"),
|
||||
("tut_probe", "按出三个不同的键,我们就开始。"),
|
||||
("tut_z_kick", "数字五,是底鼓,你的家。先听四下数拍,然后跟着我敲。"),
|
||||
("tut_z_sides", "数字四,军鼓。数字六,低嗵。一左一右,跟着打。"),
|
||||
("tut_z_patt", "上面一排更清亮。数字一踩镲,数字二高嗵,数字三吊镲。听这一句,三个音。"),
|
||||
("select_hint", "左右方向键选曲目,按空格开始,按下方向键回大厅。"),
|
||||
("restart", "按空格再来一遍,按右方向键下一首,按下方向键回大厅。"),
|
||||
("menu_main", "菜单。按空格切换选项,按回车确认。"),
|
||||
("skip_hint", "按空格可跳过旁白。"),
|
||||
("gd_miss_early", "抢拍了。等声音落下再按。"),
|
||||
("gd_miss_wrong", "方向不对。跟着音色按方向键。"),
|
||||
],
|
||||
"space": [
|
||||
("drill_left", "听,左边有陨石。按左方向键,把它拨开!"),
|
||||
|
||||
+1933
-1910
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+128
-25
@@ -68,6 +68,24 @@
|
||||
* 第二个 play 漏杀前一个 → 双管线并播 + ScriptProcessor 节点永久泄漏(live 探针
|
||||
* 实录 dir_up/hit_down 交替抽读百余次)。本层 voice 播放全部经 _voicePlay 串行门
|
||||
* (等上次令牌落位再发下一次)+ 对局语音全量 prewarm 缓存热,引擎零改动。
|
||||
*
|
||||
* R5(space polish round1/round2,research/space-polish/):
|
||||
* - **刺耳重合成**:alarm/dodge/shield_block/boost/shield 五件程序合成重制
|
||||
* (tools/gen_space_syn.py,真峰值≤-3dBFS、≥3kHz 能量近零),新增 sfx/whiff。
|
||||
* - **归因真话·接力补 replay**(live A t+151-163:保护期结束 8 秒三连撞,
|
||||
* hit_left/hit_down 被 spawn 呼喊零毫秒顶断,玩家至死不知方位):呼喊维持
|
||||
* 生存优先裁定不变,但 hit_<dir>/protect_end 起播时登记 _defendedId,
|
||||
* 呼喊播完的 onComplete 发现登记未清除(=被顶断)→ queue 接 replay,
|
||||
* 保证每句归因/保护期结束宣告完整送达(含 hit_last 排队其后)。
|
||||
* - **保护期 protect_* 去重**:6.96s 教学句对 4.0s 刷怪间隔互相截到 4.0s
|
||||
* (live A 保护期 7 连 TRUNCATED),改为上一句在播即跳过(shield_block 音 +
|
||||
* WARNING 震不变),每句教学完整播完。
|
||||
* - **加速冷却拒绝**(P1/P2/P4:冷却中单击全静默):_deny 共用去抖
|
||||
* (heartbeat + voice/boost_not_ready 新句),护盾拒绝同路径(原句不变)。
|
||||
* - **protect_soon**:50s 预告"训练护盾还剩十秒"(queue 不顶句),保护期结束
|
||||
* 前给反应慢的玩家提前量;菜单/分批引入打断由 _rearmRunTimers 补播。
|
||||
* - **激活确认震动**:boost/shield 激活补 CONFIRM 震(04 §5 承诺,此前漏装);
|
||||
* 挥空/滑错方向补 sfx/whiff 轻叹(0.55 音量,引擎 swipe 震动已有)。
|
||||
*/
|
||||
import { Game } from '../engine/game.js';
|
||||
import { Guide } from '../engine/guide.js';
|
||||
@@ -88,7 +106,7 @@ const DODGE_GRACE_MS = 250; // 判定宽限:spawn 前/撞击点后各让 25
|
||||
const ALARM_LEAD_MS = 1000; // 撞击前多久开始警报(两档:1s / 0.5s)
|
||||
const SHIELD_DURATION_MS = 6000;
|
||||
const SHIELD_COOLDOWN_MS = 15000; // round4 R1:30s→15s(冷却过长 + 失败零反馈是 P1)
|
||||
const SHIELD_DENY_DEBOUNCE_MS = 4000; // 护盾不可用应答(语音+震动)去抖
|
||||
const DENY_DEBOUNCE_MS = 4000; // R5:护盾/加速不可用应答(语音+震动)共用去抖
|
||||
const BOOST_DURATION_MS = 1800;
|
||||
const BOOST_COOLDOWN_MS = 3000;
|
||||
const RAMP_MS = 120000; // 难度爬升到满所需时长(保护期后起算)
|
||||
@@ -98,6 +116,7 @@ const PROTECT_SPAWN_MS = 4000;
|
||||
const BARE_GRACE_METEORS = 3; // 保护期结束后前 N 颗裸飞陨石保持保护期节奏(round4 R1 不断崖)
|
||||
const MENU_CALM_MS = 800; // 下滑开菜单冷静期:最近判定后 N ms 内下滑=躲避意图(round2 R2 误暂停修复)
|
||||
const DRILL_APPROACH_MS = 4500; // 演练陨石逼近(慢速、无伤害)
|
||||
const PROTECT_SOON_MS = 50000; // R5:保护期还剩 10s 预告(protect_soon)
|
||||
const BOOST_INTRO_MS = 20000; // 单击引入时刻
|
||||
const SHIELD_INTRO_MS = 45000; // 双击引入时刻
|
||||
const FEATURE_WAIT_MS = 8000; // 分批引入等待玩家操作上限
|
||||
@@ -157,6 +176,7 @@ export class SpaceGame extends Game {
|
||||
this.runStart = 0;
|
||||
this.protectionUntil = 0;
|
||||
this._protectAnnounced = false;
|
||||
this._protectSoonAnnounced = false; // R5:50s 预告已播标记
|
||||
this.swipes = [];
|
||||
this.obstacles = new Set();
|
||||
this.drillOb = null;
|
||||
@@ -169,9 +189,11 @@ export class SpaceGame extends Game {
|
||||
this.featureKind = null;
|
||||
this._menuIdx = 0;
|
||||
this._bareCount = 0; // 保护期结束后已刷裸飞陨石数(断崖过渡用)
|
||||
this._shieldDenyAt = -Infinity; // 护盾不可用应答去抖时间戳
|
||||
this._denyAt = -Infinity; // 护盾/加速不可用应答共用去抖时间戳(R5)
|
||||
this._hitLastPending = false; // hits===2 时 hit_last 待接播标记(呼喊接力用)
|
||||
this._hitLastPlaying = false; // hit_last 在播标记(警告链呼喊抑制用,round2 R2)
|
||||
this._defendedId = null; // R5:归因/保护结束句防顶断 replay 登记
|
||||
this._protectSaying = false; // R5:protect_* 教学句在播标记(去重用)
|
||||
this._lastResolveAt = -Infinity; // 最近一次陨石判定时刻(下滑开菜单冷静期,round2 R2)
|
||||
// F6:警报去重 / danger 去抖时间戳(soft/loud 分档 + danger 全局)
|
||||
this._alarmSoftAt = -Infinity;
|
||||
@@ -185,14 +207,15 @@ export class SpaceGame extends Game {
|
||||
this.audio.prewarm([
|
||||
'sfx/whoosh_left', 'sfx/whoosh_right', 'sfx/whoosh_up', 'sfx/whoosh_down',
|
||||
'sfx/alarm', 'sfx/boost', 'sfx/shield', 'sfx/shield_block',
|
||||
'sfx/dodge', 'sfx/hit', 'sfx/crash',
|
||||
'sfx/dodge', 'sfx/hit', 'sfx/crash', 'sfx/whiff',
|
||||
// 对局期可能并发的语音全量预热(voice 播放安全门配套:缓存热 = 令牌落位
|
||||
// 只需数个 microtask,门内零等待):方向呼喊/归因/保护/护盾/引入/里程碑/向导
|
||||
'voice/dir_left', 'voice/dir_right', 'voice/dir_up', 'voice/dir_down',
|
||||
'voice/hit_left', 'voice/hit_right', 'voice/hit_up', 'voice/hit_down', 'voice/hit_last',
|
||||
'voice/protect_left', 'voice/protect_right', 'voice/protect_up', 'voice/protect_down',
|
||||
'voice/protect_end', 'voice/shield_ready', 'voice/shield_block',
|
||||
'voice/protect_end', 'voice/protect_soon', 'voice/shield_ready', 'voice/shield_block',
|
||||
'voice/feat_boost', 'voice/feat_boost_done', 'voice/feat_shield', 'voice/feat_shield_done',
|
||||
'voice/boost_not_ready',
|
||||
'voice/ms_10', 'voice/ms_25', 'voice/ms_50', 'voice/ms_100',
|
||||
'voice/gd_hit_hint', 'voice/gd_last_life',
|
||||
'voice/paused', 'voice/menu_main', 'voice/menu_resume', 'voice/menu_lobby',
|
||||
@@ -365,6 +388,7 @@ export class SpaceGame extends Game {
|
||||
// 单击/双击引入教学仅首局(标记在实例上,重开不再调度,第 2 局起机制开局即用)
|
||||
if (!this.boostIntroDone) this._after(BOOST_INTRO_MS, () => this._beginFeature('boost'));
|
||||
if (!this.shieldIntroDone) this._after(SHIELD_INTRO_MS, () => this._beginFeature('shield'));
|
||||
this._after(PROTECT_SOON_MS, () => this._announceProtectionSoon()); // R5:50s 预告
|
||||
this._after(PROTECTION_MS, () => this._announceProtectionEnd());
|
||||
}
|
||||
|
||||
@@ -378,6 +402,7 @@ export class SpaceGame extends Game {
|
||||
case 'up': case 'left': case 'right':
|
||||
this.swipes.push({ dir: g, t: now });
|
||||
this._trimSwipes(now);
|
||||
this._whiffIfUnmatched(g);
|
||||
break;
|
||||
case 'down':
|
||||
// 下滑冲突折中:有下方陨石悬置时是闪避,否则呼出菜单。
|
||||
@@ -388,6 +413,7 @@ export class SpaceGame extends Game {
|
||||
if ([...this.obstacles].some((ob) => ob.dir === 'down')) {
|
||||
this.swipes.push({ dir: g, t: now });
|
||||
this._trimSwipes(now);
|
||||
this._whiffIfUnmatched(g);
|
||||
} else if (now - this._lastResolveAt > MENU_CALM_MS) {
|
||||
this._openMenu();
|
||||
}
|
||||
@@ -401,6 +427,10 @@ export class SpaceGame extends Game {
|
||||
this.boostUntil = now + BOOST_DURATION_MS;
|
||||
this.boostReadyAt = now + BOOST_COOLDOWN_MS;
|
||||
this.audio.play('sfx/boost');
|
||||
vibrate('confirm'); // R5:激活确认(04 §5 承诺,此前漏装)
|
||||
} else if (this.boostIntroDone) {
|
||||
// R5:冷却中单击必须有回音(P1/P2/P4:冷却零反馈是动作盲区)
|
||||
this._deny(now, 'voice/boost_not_ready');
|
||||
}
|
||||
break;
|
||||
case 'doubletap':
|
||||
@@ -409,25 +439,38 @@ export class SpaceGame extends Game {
|
||||
this.shieldUpUntil = now + SHIELD_DURATION_MS;
|
||||
this.shieldReadyAt = now + SHIELD_COOLDOWN_MS;
|
||||
this.audio.play('sfx/shield');
|
||||
vibrate('confirm'); // R5:激活确认(04 §5 承诺,此前漏装)
|
||||
this._scheduleShieldReady();
|
||||
} else {
|
||||
this._shieldDeny(now); // 不可用必须有回音(round4 R1:panic 双击零反馈是 P1)
|
||||
this._deny(now, 'voice/feat_shield_done'); // 不可用必须有回音(round4 R1:panic 双击零反馈是 P1)
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 护盾不可用(未引入/充能中)的即时应答:现成句 feat_shield_done
|
||||
* ("会自动充能,好了我会告诉你"语义正合)+ HEARTBEAT 震,4s 去抖防连刷。
|
||||
* 注:voice_text.json 无"护盾还没好"专用句,复用此句属 round4 R1 裁定。
|
||||
* R5:无效手势轻反馈(归因真话)。滑向没有任何悬置陨石的方向 = 挥空——
|
||||
* 引擎 swipe 识别震动已有("收到了"),这里补一声轻叹("但这下没用"),
|
||||
* 与成功闪避的 dodge 音形成对偶,避免玩家怀疑输入失灵。音量压低不抢戏。
|
||||
*/
|
||||
_shieldDeny(now) {
|
||||
if (now - this._shieldDenyAt < SHIELD_DENY_DEBOUNCE_MS) return;
|
||||
this._shieldDenyAt = now;
|
||||
_whiffIfUnmatched(dir) {
|
||||
if (![...this.obstacles].some((ob) => ob.dir === dir)) {
|
||||
this.audio.play('sfx/whiff', { volume: 0.55 });
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 护盾/加速不可用(未引入/充能中)的即时应答:HEARTBEAT 震 + 语音提示,
|
||||
* 4s 共用去抖防连刷(R5 起护盾/加速同路径,仅语音 id 不同)。
|
||||
* 护盾句复用 feat_shield_done("会自动充能,好了我会告诉你"语义正合,round4 R1 裁定);
|
||||
* 加速句用新句 boost_not_ready("引擎还在冷却,稍等一下。",R5)。
|
||||
* 警告链在播时排队到链尾,不顶断"最后一命"(round2 R2)。
|
||||
*/
|
||||
_deny(now, voiceId) {
|
||||
if (now - this._denyAt < DENY_DEBOUNCE_MS) return;
|
||||
this._denyAt = now;
|
||||
vibrate('heartbeat');
|
||||
// 警告链在播时排队到链尾,不顶断"最后一命"(round2 R2)
|
||||
this.audio.play('voice/feat_shield_done', this._warnActive() ? { queue: true } : undefined);
|
||||
this.audio.play(voiceId, this._warnActive() ? { queue: true } : undefined);
|
||||
}
|
||||
|
||||
/** 护盾充能完毕播报 + PICKUP 震动(若仍在这一局)。语音排队播,不顶 protect_end/归因句。 */
|
||||
@@ -469,12 +512,14 @@ export class SpaceGame extends Game {
|
||||
this.boostUntil = now + BOOST_DURATION_MS;
|
||||
this.boostReadyAt = now + BOOST_COOLDOWN_MS;
|
||||
this.audio.play('sfx/boost');
|
||||
vibrate('confirm'); // R5:激活确认(04 §5)
|
||||
this._speak(['voice/feat_boost_done']);
|
||||
this._endFeature();
|
||||
} else {
|
||||
this.shieldUpUntil = now + SHIELD_DURATION_MS;
|
||||
this.shieldReadyAt = now + SHIELD_COOLDOWN_MS;
|
||||
this.audio.play('sfx/shield');
|
||||
vibrate('confirm'); // R5:激活确认(04 §5)
|
||||
this._speak(['voice/feat_shield_done']);
|
||||
this._endFeature(); // _endFeature → _rearmRunTimers 会按 shieldReadyAt 重排充能播报
|
||||
}
|
||||
@@ -506,6 +551,15 @@ export class SpaceGame extends Game {
|
||||
if (remain <= 0) this._announceProtectionEnd(); // 已过期,立即补播
|
||||
else this._after(remain, () => this._announceProtectionEnd());
|
||||
}
|
||||
// R5:50s 预告补播(菜单/分批引入打断后的恢复)
|
||||
if (!this._protectSoonAnnounced) {
|
||||
const soonRemain = this.runStart + PROTECT_SOON_MS - now;
|
||||
if (soonRemain <= 0) {
|
||||
if (this.protectionUntil > now) this._announceProtectionSoon();
|
||||
} else {
|
||||
this._after(soonRemain, () => this._announceProtectionSoon());
|
||||
}
|
||||
}
|
||||
if (this.shieldReadyAt > now) {
|
||||
this._scheduleShieldReady(this.shieldReadyAt - now);
|
||||
}
|
||||
@@ -515,12 +569,52 @@ export class SpaceGame extends Game {
|
||||
|
||||
// ---------------- 保护期 ----------------
|
||||
|
||||
/** R5:50s 预告(保护期还剩 10 秒)。queue 不顶在播教学句;被打断由 _rearmRunTimers 补播。 */
|
||||
_announceProtectionSoon() {
|
||||
if (this._protectSoonAnnounced) return;
|
||||
if (this.phase !== 'playing') return; // 菜单/分批引入中,恢复时补播
|
||||
this._protectSoonAnnounced = true;
|
||||
this.audio.play('voice/protect_soon', { queue: true });
|
||||
}
|
||||
|
||||
/** R5:保护结束宣告走防顶断登记(live A t+151.6:被 spawn 呼喊顶得只剩 0.5s)。 */
|
||||
_announceProtectionEnd() {
|
||||
if (this._protectAnnounced) return;
|
||||
if (this.phase !== 'playing') return; // 菜单/分批引入中,恢复时由 _rearmRunTimers 补播
|
||||
this._protectAnnounced = true;
|
||||
vibrate('warning');
|
||||
this.audio.play('voice/protect_end');
|
||||
this._defendVoice('voice/protect_end');
|
||||
}
|
||||
|
||||
/**
|
||||
* R5 防顶断登记:生存语义长句(hit_<dir>/protect_end)起播时登记 id;
|
||||
* 自然播完/被跳过 → onComplete 清除登记(= 完好送达);
|
||||
* 被 spawn 呼喊顶断 → 登记残留,呼喊播完的 onComplete 走 _replayDefended
|
||||
* queue 接 replay(呼喊生存优先裁定不变,句子保证完整送达一次)。
|
||||
*/
|
||||
_defendVoice(id, onDone) {
|
||||
this._defendedId = id;
|
||||
this.audio.play(id, {
|
||||
onComplete: () => {
|
||||
if (this._defendedId === id) this._defendedId = null;
|
||||
if (onDone) onDone();
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
/** R5:呼喊播完时发现登记残留(= 顶断了生存句)→ queue 接 replay,不顶新威胁信息。
|
||||
* @returns {boolean} 是否发生了 replay(发生了则 hit_last 由 replay 播完接力,不必此刻 drain) */
|
||||
_replayDefended() {
|
||||
const id = this._defendedId;
|
||||
if (!id) return false;
|
||||
this._defendedId = null;
|
||||
if (id.startsWith('voice/hit_')) {
|
||||
// 归因 replay 播完仍要接"最后一命"(语义链:先因后果)
|
||||
this.audio.play(id, { queue: true, onComplete: () => this._drainHitLast() });
|
||||
} else {
|
||||
this.audio.play(id, { queue: true });
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// ---------------- 陨石调度 ----------------
|
||||
@@ -562,7 +656,9 @@ export class SpaceGame extends Game {
|
||||
// 被下一颗的呼喊顶断(live B5:高速段警告刚起播就被顶没);归因在播期间呼喊
|
||||
// 保留生存优先级(顶断 → 接力,低延迟警告路径不变)。
|
||||
if (impactAt > this.protectionUntil && !this._hitLastPlaying) {
|
||||
this.audio.play(`voice/dir_${dir}`, { onComplete: () => this._drainHitLast() });
|
||||
// onComplete 双职责(R5):① 顶断了归因/保护结束句 → queue 接 replay(replay 播完
|
||||
// 自行接力 hit_last);② 呼喊接力(round4 R1):无 replay 时 hit_last 挂起直接接播。
|
||||
this.audio.play(`voice/dir_${dir}`, { onComplete: () => { if (!this._replayDefended()) this._drainHitLast(); } });
|
||||
}
|
||||
// 警报两档渐强,DANGER 震动同步叠加。
|
||||
// F6(round2):警报音效同 600ms 窗口去重(双陨石同时逼近只起一波警报,
|
||||
@@ -625,7 +721,13 @@ export class SpaceGame extends Game {
|
||||
if (this._inProtection()) {
|
||||
this.audio.play('sfx/shield_block');
|
||||
vibrate('warning');
|
||||
this.audio.play(`voice/protect_${ob.dir}`);
|
||||
// R5 去重:6.96s 教学句对 4.0s 刷怪间隔(live A 保护期 7 连 TRUNCATED,
|
||||
// 每句都截在同一个字上)——上一句在播即跳过,保证每句完整送达;
|
||||
// 被跳过的那次仍有 shield_block 音 + WARNING 震落位。
|
||||
if (!this._protectSaying) {
|
||||
this._protectSaying = true;
|
||||
this.audio.play(`voice/protect_${ob.dir}`, { onComplete: () => { this._protectSaying = false; } });
|
||||
}
|
||||
return;
|
||||
}
|
||||
// 5) 实打实撞上:HIT 震动 + 归因语音(第 2 次加"只剩最后一次")
|
||||
@@ -642,15 +744,16 @@ export class SpaceGame extends Game {
|
||||
// 顶断路径:归因被呼喊顶掉 → 呼喊播完的 onComplete(_spawnObstacle 挂的)
|
||||
// → _drainHitLast 接播。重开/回大厅由 _resetRunState 清挂起。
|
||||
if (this.hits === 2) this._hitLastPending = true;
|
||||
this.audio.play(`voice/hit_${ob.dir}`, {
|
||||
onComplete: () => {
|
||||
if (this.hits === 1) {
|
||||
// 第 1 次受击补指令式 gd_hit_hint(hit_<dir> 已归因方位,这句补
|
||||
// "该怎么拨",onceKey 同局一次)
|
||||
this.guide.error({ voice: 'gd_hit_hint', onceKey: 'space_hit_hint', skipHaptic: true });
|
||||
}
|
||||
this._drainHitLast();
|
||||
},
|
||||
// R5:归因句走防顶断登记(_defendVoice)——被 spawn 呼喊顶断时由呼喊
|
||||
// onComplete 走 _replayDefended 补 replay(live A t+155.13/159.13:
|
||||
// hit_left/hit_down 零毫秒被杀,玩家至死不知方位)。
|
||||
this._defendVoice(`voice/hit_${ob.dir}`, () => {
|
||||
if (this.hits === 1) {
|
||||
// 第 1 次受击补指令式 gd_hit_hint(hit_<dir> 已归因方位,这句补
|
||||
// "该怎么拨",onceKey 同局一次)
|
||||
this.guide.error({ voice: 'gd_hit_hint', onceKey: 'space_hit_hint', skipHaptic: true });
|
||||
}
|
||||
this._drainHitLast();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,9 @@
|
||||
* + 边界断言)与 §7(全局通用断言),以及本轮改动(状态 BGM / skipVoice / skip_hint)、
|
||||
* §11 round4-live 修复(方向呼喊提前到 spawn / 闪避窗口=呼啸全程 / 护盾 15s+不可用应答 /
|
||||
* 保护期断崖过渡 / hit_last 呼喊接力 / feat 教学仅首局),以及 round2 R2 修复
|
||||
* (下滑开菜单冷静期防误暂停 / 暂停恢复缓冲 / 回大厅收尾流程 / 警告链呼喊抑制+坠毁掐断)。
|
||||
* (下滑开菜单冷静期防误暂停 / 暂停恢复缓冲 / 回大厅收尾流程 / 警告链呼喊抑制+坠毁掐断),
|
||||
* 以及 R5 space polish 修复(research/space-polish/:归因防顶断 replay / protect_* 去重 /
|
||||
* protect_soon 50s 预告 / 加速冷却拒绝 boost_not_ready / 激活 CONFIRM 震 / whiff 挥空音)。
|
||||
*
|
||||
* 用法:tools/node/bin/node web/space/test/playtest.mjs
|
||||
*
|
||||
@@ -179,6 +181,7 @@ function makeHarness() {
|
||||
const voices = (plays) => plays.filter((p) => p.id.startsWith('voice/')).map((p) => p.id);
|
||||
const lastVoice = (plays) => voices(plays).at(-1);
|
||||
const vibrated = (pat) => vibrations.some((v) => Array.isArray(v) && v.join() === pat);
|
||||
const confirmCount = () => vibrations.filter((v) => Array.isArray(v) && v.join() === '20').length;
|
||||
|
||||
try {
|
||||
// ======================================================================
|
||||
@@ -267,6 +270,21 @@ try {
|
||||
assert(!plays.some((p) => p.t >= t0 && p.id.startsWith('voice/dir_')),
|
||||
'撞击点落在保护期内的陨石 spawn 不播 dir_<dir>(§11:protect 长句教学优先)');
|
||||
|
||||
// -- R5:protect_* 去重——上一句教学在播时新吸收只发 shield_block 音 + WARNING 震,
|
||||
// 不再互截(live A 保护期 7 连 TRUNCATED 修复) --
|
||||
const protectVoiceCount = voices(plays).filter((id) => id.startsWith('voice/protect_')).length;
|
||||
const shieldBlockCount = plays.filter((p) => p.id === 'sfx/shield_block').length;
|
||||
game.obstacles.clear();
|
||||
const obP2 = { dir: 'right', impactAt: clock.now + 100 };
|
||||
game.obstacles.add(obP2);
|
||||
game._after(100, () => game._resolve(obP2));
|
||||
await advance(150);
|
||||
assert(game.hits === 0, 'R5 去重吸收仍不掉血(训练护盾)');
|
||||
assert(voices(plays).filter((id) => id.startsWith('voice/protect_')).length === protectVoiceCount,
|
||||
'protect_* 在播时新吸收跳过语音(R5 去重,每句教学完整播完)');
|
||||
assert(plays.filter((p) => p.id === 'sfx/shield_block').length === shieldBlockCount + 1,
|
||||
'去重吸收仍有 shield_block 音落位');
|
||||
|
||||
// -- §5.3 第 20s 单击引入(feat_boost 可跳) --
|
||||
await advance(t0 + 20000 - clock.now);
|
||||
assert(game.phase === 'feature' && game.featureKind === 'boost', '第 20s 暂停刷怪教单击');
|
||||
@@ -279,6 +297,7 @@ try {
|
||||
assert(game.boostUntil > clock.now, '旁白已跳后单击 → boost 生效(§5.3)');
|
||||
assert(game.phase === 'playing', '分批引入结束恢复 playing');
|
||||
assert(lastVoice(plays) === 'voice/feat_boost_done', 'feat_boost_done 确认句');
|
||||
assert(confirmCount() >= 1, '加速激活 CONFIRM 震(R5 兑现 04 §5)');
|
||||
|
||||
// 加速增益期间的撞击算冲过空隙
|
||||
game.obstacles.clear();
|
||||
@@ -293,6 +312,7 @@ try {
|
||||
assert(game.phase === 'feature' && game.featureKind === 'shield', '第 45s 教双击护盾');
|
||||
game.onGesture('doubletap'); await tick();
|
||||
assert(game.shieldUpUntil > clock.now, '双击 → 护盾生效(§5.3)');
|
||||
assert(confirmCount() >= 2, '护盾激活 CONFIRM 震(R5 兑现 04 §5)');
|
||||
assert(game.shieldReadyAt === clock.now + 15000, '护盾充能 15s 锁定(§11 改口,原 30s)');
|
||||
assert(game.phase === 'playing', '护盾引入结束恢复 playing');
|
||||
|
||||
@@ -325,12 +345,37 @@ try {
|
||||
// -- §5.4 保护解除播报 --
|
||||
await advance(t0 + 60050 - clock.now);
|
||||
assert(game._protectAnnounced && voices(plays).includes('voice/protect_end'), '60s 保护解除播报');
|
||||
assert(game._protectSoonAnnounced && voices(plays).includes('voice/protect_soon'),
|
||||
'50s 保护期预告 protect_soon(R5:给反应慢的玩家 10s 提前量)');
|
||||
|
||||
// -- 边界:护盾充能完毕播报,且只播一次(回归:曾双重调度播两次) --
|
||||
await advance(game.shieldReadyAt - clock.now + 50);
|
||||
assert(voices(plays).filter((id) => id === 'voice/shield_ready').length === 1,
|
||||
'shield_ready 充能完毕播报恰好一次');
|
||||
assert(vibrated('15'), '护盾就绪 PICKUP 震动');
|
||||
await advance(2000); // 静场起点
|
||||
{ // 排队的 protect_soon/protect_end/shield_ready 串行播完(虚拟时钟下语音门有落位延迟,
|
||||
// 轮询等待而非固定 advance——拒绝用例需要 voice 真正空闲)
|
||||
let guard = 0;
|
||||
while (audio.isVoicePlaying() && guard++ < 20) await advance(300);
|
||||
}
|
||||
assert(!audio.isVoicePlaying(), '静场:排队的状态句播完,拒绝用例需 voice 空闲');
|
||||
|
||||
// -- R5:加速冷却拒绝(归因真话:冷却单击必须有回音,此前全静默) --
|
||||
const notReadyCount = () => voices(plays).filter((id) => id === 'voice/boost_not_ready').length;
|
||||
const denyVoiceBefore = notReadyCount();
|
||||
const confirmBefore = confirmCount();
|
||||
game.onGesture('tap'); await tick(); // voice 空闲 → 加速直接生效
|
||||
assert(game.boostUntil > clock.now, 'R5 用例前置:加速激活');
|
||||
assert(confirmCount() === confirmBefore + 1, '对局期加速激活 CONFIRM 震(R5)');
|
||||
const boostUntilLocked = game.boostUntil;
|
||||
game.onGesture('tap'); await tick(); // 冷却中(3s)→ 拒绝
|
||||
assert(game.boostUntil === boostUntilLocked, '冷却中单击不重置加速');
|
||||
assert(notReadyCount() === denyVoiceBefore + 1, '加速冷却拒绝播报 boost_not_ready(R5)');
|
||||
assert(vibrated('40,100,40'), '加速冷却拒绝 HEARTBEAT 震(R5)');
|
||||
game.onGesture('tap'); await tick();
|
||||
assert(notReadyCount() === denyVoiceBefore + 1, '加速冷却拒绝 4s 去抖(连刷不重播)');
|
||||
await advance(3100); // 冷却结束,后续用例不受影响
|
||||
|
||||
// -- §5.4/§11 正常闪避 3 颗(同向滑;§11 起窗口=呼啸全程,此处仍在撞击前 800ms 出手) --
|
||||
// 同循环验证 §11 断崖过渡(裸飞第 1~3 颗逼近固定 4.0s)与方向呼喊时机(spawn 同窗)
|
||||
@@ -378,6 +423,7 @@ try {
|
||||
naturalSpawn();
|
||||
const obH1 = [...game.obstacles].at(-1);
|
||||
game.onGesture('right'); // 反向
|
||||
assert(plays.some((p) => p.id === 'sfx/whiff'), '滑错方向有挥空轻叹(R5 归因真话:无效手势有回音)');
|
||||
await advance(obH1.impactAt - clock.now + 50);
|
||||
assert(game.hits === 1, '反向滑不判闪避,撞击 hits=1');
|
||||
assert(lastVoice(plays) === 'voice/hit_left', 'hit_<dir> 归因方向与来袭一致');
|
||||
@@ -402,11 +448,20 @@ try {
|
||||
const obNext = [...game.obstacles].at(-1);
|
||||
await tick();
|
||||
assert(h.voiceStarts.at(-1).id === 'voice/dir_left', '下一颗 spawn 呼喊顶断归因(生存优先级)');
|
||||
await advance(1300); // 呼喊播完 → onComplete 接力 → hit_last 自动接播
|
||||
assert(game._defendedId === 'voice/hit_right', '归因被顶断后登记残留(R5 防顶断登记)');
|
||||
// R5:登记残留 → 呼喊播完的 onComplete 走 _replayDefended queue 补 replay(归因完整送达)。
|
||||
// 虚拟时钟下语音门有落位延迟,用轮询等 replay/接播事件而非固定 advance 步长。
|
||||
const hitRightStarts = () => h.voiceStarts.filter((v) => v.id === 'voice/hit_right').length;
|
||||
let guard = 0;
|
||||
while (hitRightStarts() < 2 && guard++ < 16) await advance(300);
|
||||
assert(hitRightStarts() === 2, '归因被呼喊顶断后补 replay(R5:玩家不再丢失方位归因)');
|
||||
assert(game._defendedId === null, 'replay 后登记清除');
|
||||
while (h.voiceStarts.at(-1).id !== 'voice/hit_last' && guard++ < 32) await advance(300);
|
||||
assert(h.voiceStarts.at(-1).id === 'voice/hit_last',
|
||||
'归因被呼喊顶断后 hit_last 仍接播(§11:最后一命不再被静默吞掉)');
|
||||
'归因 replay 播完接播 hit_last(§11:最后一命不再被静默吞掉,R5 先因后果)');
|
||||
assert(game._hitLastPending === false, 'hit_last 接播后挂起标记清除');
|
||||
assert(game._hitLastPlaying === true, 'hit_last 在播标记置位(round2 R2)');
|
||||
game.obstacles.delete(obNext); // R5:replay 多耗一个呼喊周期,提前摘除防其撞击点坠毁干扰抑制用例
|
||||
// round2 R2:hit_last 在播期间新刷陨石的 spawn 呼喊被抑制(警告播完前不被顶断)
|
||||
const shoutMark2 = h.voiceStarts.length;
|
||||
randQueue.push(0.5); // up
|
||||
@@ -415,14 +470,14 @@ try {
|
||||
await tick();
|
||||
assert(!h.voiceStarts.slice(shoutMark2).some((v) => v.id === 'voice/dir_up'),
|
||||
'hit_last 在播期间 spawn 不播方向呼喊(round2 R2:警告播完前不被顶断)');
|
||||
await advance(1300); // hit_last 播完 → 呼喊抑制解除
|
||||
game.obstacles.delete(obNext2); // 立即摘除(后续轮询等待会越过其撞击点)
|
||||
let guard2 = 0;
|
||||
while (game._hitLastPlaying && guard2++ < 16) await advance(300);
|
||||
assert(game._hitLastPlaying === false, 'hit_last 播完在播标记清除');
|
||||
randQueue.push(0.5); // up:链后再刷陨石,方向呼喊恢复
|
||||
naturalSpawn();
|
||||
await tick();
|
||||
assert(h.voiceStarts.at(-1).id === 'voice/dir_up', '警告链结束后方向呼喊恢复(round2 R2)');
|
||||
game.obstacles.delete(obNext);
|
||||
game.obstacles.delete(obNext2);
|
||||
game.obstacles.clear(); game.swipes = [];
|
||||
|
||||
// -- 边界:里程碑 dodges=10 播 ms_10 --
|
||||
|
||||
Reference in New Issue
Block a user