111 lines
7.5 KiB
Markdown
111 lines
7.5 KiB
Markdown
# Genarrative Domain Context
|
||
|
||
Genarrative 是一个 AI 原生互动内容与小游戏平台,当前上下文记录团队在玩法、作品、运行态和平台闭环中使用的领域语言。
|
||
|
||
## Language
|
||
|
||
### Bark Battle
|
||
|
||
**汪汪声浪大作战**:
|
||
浏览器 2D 声控对战玩法,玩家通过麦克风响度触发声浪并推动能量条。
|
||
_Avoid_: 狗叫识别游戏、声纹识别玩法
|
||
|
||
**有效声浪触发**:
|
||
玩家麦克风采样点的归一化响度在冷却结束后达到或超过有效阈值时产生的一次计分输入。
|
||
_Avoid_: 有效叫声持续时长、狗叫识别结果、等待回落后的叫声
|
||
|
||
**有效阈值**:
|
||
用于判定麦克风采样是否产生有效声浪触发的响度门槛。
|
||
_Avoid_: 狗叫识别阈值、语义识别阈值
|
||
|
||
**声浪冷却**:
|
||
两次有效声浪触发之间必须满足的最小时间间隔。
|
||
_Avoid_: 叫声持续时长、回落等待时间
|
||
|
||
**能量条**:
|
||
表示玩家与对手当前声浪优势的连续对抗刻度。
|
||
_Avoid_: 血条、分数条
|
||
|
||
**单局结果**:
|
||
一局 Bark Battle 结束后形成的胜负、平局和派生统计摘要。
|
||
_Avoid_: 原始音频记录、语音内容
|
||
|
||
**Bark Battle 平台作品闭环**:
|
||
Bark Battle 从创作配置、发布作品、正式运行态到单局结果记录和作品统计的完整平台流程。
|
||
_Avoid_: 孤立 demo、只做表现深化
|
||
|
||
**轻创作配置作品**:
|
||
创作者只配置展示与难度预设字段、但不能直接配置公平性敏感规则的 Bark Battle 作品。
|
||
_Avoid_: 完整规则编辑器、固定官方关卡
|
||
|
||
**难度预设**:
|
||
Bark Battle 作品中用于选择 AI 对手行为强度的发布态配置值。
|
||
_Avoid_: 阈值配置、分数公式配置
|
||
|
||
**排行榜分榜**:
|
||
排行榜按作品、难度预设和规则集版本拆分后的独立排名空间,只收录后端裁决为玩家胜利的单局结果。
|
||
_Avoid_: 全难度混排、跨规则版本混排、失败刷分榜
|
||
|
||
**后端裁决结果**:
|
||
后端根据 start run 记录和 finish 派生指标校验后生成的正式单局结果。
|
||
_Avoid_: 前端最终分数、客户端胜负裁决
|
||
|
||
**派生指标**:
|
||
前端从本地 runtime 汇总出的不可还原原始音频的单局统计值。
|
||
_Avoid_: 原始音频、可还原语音内容
|
||
|
||
**作品统计投影**:
|
||
按作品聚合的 Bark Battle 游玩开始、完成结果、反作弊标记和最佳/平均表现摘要。
|
||
_Avoid_: 只从排行榜反推、原始音频分析、留存分析
|
||
|
||
**个人历史成绩**:
|
||
玩家本人可查看的 Bark Battle 最近完成记录和个人最佳摘要。
|
||
_Avoid_: 公开失败记录、完整无限历史、好友对比
|
||
|
||
**正式作品入口闭环**:
|
||
Bark Battle 作品从创作入口、作品详情、广场/作品卡片、我的作品到正式 runtime 路由的可发现、可进入流程。
|
||
_Avoid_: 内部试玩入口、独立活动专区
|
||
|
||
**轻配置编辑流程**:
|
||
Bark Battle 创作者用单页轻配置表单和预览卡片完成草稿保存与发布的创作流程。
|
||
_Avoid_: 多步骤向导、完整规则编辑器、拖拽编辑器
|
||
|
||
**Phase 2 实施顺序**:
|
||
Bark Battle 平台作品闭环按契约与领域规则、后端存储/API、最小前端纵切、投影体验、收口验证的顺序推进。
|
||
_Avoid_: mock 先行堆积、前后端各自发散、先做排行榜 UI
|
||
|
||
## Relationships
|
||
|
||
- 一个 **汪汪声浪大作战** 单局包含多个 **有效声浪触发**。
|
||
- 每个 **有效声浪触发** 必须达到 **有效阈值** 并满足 **声浪冷却**。
|
||
- **有效声浪触发** 推动 **能量条**。
|
||
- **能量条** 在倒计时结束时产生一个 **单局结果**。
|
||
- **单局结果** 可以被后端记录为派生摘要,但不包含原始麦克风音频。
|
||
- **Bark Battle 平台作品闭环** 包含发布态作品配置、**正式作品入口闭环**、run start / finish、个人历史成绩、**作品统计投影** 和最小排行榜。
|
||
- Phase 2 的 Bark Battle 作品是 **轻创作配置作品**,通过 **轻配置编辑流程** 创建;配置范围限制为标题、描述、主题/背景预设、狗狗皮肤预设和排行榜开关,其中 **难度预设** 只影响 AI 对手行为。
|
||
- **排行榜分榜** 由 `workId + difficultyPreset + rulesetVersion` 唯一确定,只收录 `serverResult = player_win` 的单局结果。
|
||
- **单局结果** 的正式胜负、分数与排行榜成绩来自 **后端裁决结果**;前端只提交 **派生指标**,客户端结果仅用于 debug/对账。
|
||
- **作品统计投影** 计入成功 start run 的 playStartCount、后端接受 finish 的 finishCount、胜/平/负、flagged、leaderboard 以及最佳/平均能量表现。
|
||
- **个人历史成绩** 由最近记录列表和个人最佳摘要组成,只允许本人查看;排行榜只公开入榜胜利成绩。
|
||
- **正式作品入口闭环** 必须覆盖创作入口、作品详情 CTA、广场/作品卡片、我的作品/个人作品架、稳定作品 ID runtime 路由和 `work_play_start` 埋点。
|
||
- **Phase 2 实施顺序** 固定为:契约与领域规则 → SpacetimeDB 表/reducer 与 api-server BFF → 最小前端纵切 → 投影与列表体验 → 收口验证。
|
||
|
||
## Example dialogue
|
||
|
||
> **Dev:** “第二阶段排行榜要按玩家狗叫持续时间排序吗?”
|
||
> **Domain expert:** “不按持续时间;Bark Battle 的计分输入是有效声浪触发,排行榜只能基于触发次数、峰值、能量条结果等派生摘要。”
|
||
|
||
## Flagged ambiguities
|
||
|
||
- “有效叫声”曾同时指代持续时长合规的声音片段和瞬时响度触发;已解析为 **有效声浪触发**,不再要求 `minBarkDurationMs` / `maxBarkDurationMs`,也不等待响度回落。
|
||
- “第二阶段”曾可能指玩法表现深化或平台接入;已解析为 **Bark Battle 平台作品闭环**,优先补正式 play type、作品配置、发布、正式 runtime、结果持久化、历史成绩、作品统计和最小排行榜。
|
||
- “创作者可配置作品”曾可能指完整规则编辑器;已解析为 **轻创作配置作品**,Phase 2 不允许创作者直接配置单局时长、有效阈值、声浪冷却、AI 细粒度参数、分数公式或反作弊阈值。
|
||
- “难度预设”曾可能影响阈值、冷却或计分;已解析为只影响 AI 对手行为,排行榜按 `workId + difficultyPreset + rulesetVersion` 分榜。
|
||
- “单局结果”曾可能由前端直接决定;已解析为必须由 **后端裁决结果** 决定,前端只提交触发次数、音量、能量、连击、时长等 **派生指标**。
|
||
- “排行榜成绩”曾可能收录胜/平/负或按触发次数排序;已解析为只收录玩家胜利局,并以 `finalEnergy` 优先、`triggerCount` / `maxVolume` / 标准局时长接近度 / `finishedAt` 作为后续排序因子。
|
||
- “作品统计”曾可能只从排行榜反推;已解析为独立 **作品统计投影**,失败、平局和 flagged finish 都可进入统计,但 rejected finish 不进入完成统计。
|
||
- “个人历史成绩”曾可能指完整无限历史或公开记录;已解析为仅本人可见的最近记录列表 + 个人最佳摘要,不公开失败、平局或 flagged 历史。
|
||
- “入口闭环”曾可能只指内部 demo 或单个详情 CTA;已解析为 **正式作品入口闭环**,不新增独立专区或活动页。
|
||
- “创作编辑”曾可能指多步骤向导或完整编辑器;已解析为 **轻配置编辑流程**,使用单页表单 + 预览卡片完成保存草稿、发布和发布后跳转作品详情。
|
||
- “实施顺序”曾可能按 UI 或功能并行发散;已解析为契约/领域规则先行,再做后端存储/API,随后打通最小前端纵切,最后补投影体验与收口验证。
|