Merge remote-tracking branch 'origin/master' into feat/smart-paste
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m23s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 1m57s
Project CI / Backend tests (pull_request) Successful in 4m32s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 6m44s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Failing after 8m24s
Project CI / Frontend tests (pull_request) Successful in 2m37s
Project CI / Native shell tests (pull_request) Successful in 6m49s
Project CI / Repository checks (pull_request) Successful in 2m50s
Project CI / AI game creator shell web tests (pull_request) Successful in 1m52s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m23s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 1m57s
Project CI / Backend tests (pull_request) Successful in 4m32s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 6m44s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Failing after 8m24s
Project CI / Frontend tests (pull_request) Successful in 2m37s
Project CI / Native shell tests (pull_request) Successful in 6m49s
Project CI / Repository checks (pull_request) Successful in 2m50s
Project CI / AI game creator shell web tests (pull_request) Successful in 1m52s
This commit is contained in:
@@ -30,8 +30,3 @@ server-rs/.data
|
||||
server-rs/.spacetimedb
|
||||
|
||||
public/generated-*
|
||||
|
||||
scripts/loadtest/data/*.local.json
|
||||
scripts/loadtest/data/k6-*.log
|
||||
scripts/loadtest/data/k6-*summary*.md
|
||||
scripts/loadtest/data/latest-*-prefix.txt
|
||||
|
||||
@@ -365,7 +365,6 @@ module.exports = {
|
||||
'src/types.ts',
|
||||
'src/types/**',
|
||||
'src/uiAssets.ts',
|
||||
'scripts/loadtest/**',
|
||||
'packages/shared/src/contracts/jumpHop.ts',
|
||||
'packages/shared/src/contracts/match3dAgent.ts',
|
||||
'packages/shared/src/contracts/match3dRuntime.ts',
|
||||
|
||||
@@ -88,11 +88,3 @@ nohup.out
|
||||
spacetime.local.json
|
||||
deploy/container/api-server.env
|
||||
deploy/container/worker-smoke/
|
||||
|
||||
# Local load-test data extracted from private migration files
|
||||
scripts/loadtest/data/*.local.json
|
||||
|
||||
# Local load-test run artifacts
|
||||
scripts/loadtest/data/k6-*.log
|
||||
scripts/loadtest/data/k6-*summary*.md
|
||||
scripts/loadtest/data/latest-*-prefix.txt
|
||||
|
||||
@@ -59,12 +59,6 @@ test('后台灰度发布路由可通过导航和 hash 访问', () => {
|
||||
expect(routeHash('gray-release')).toBe('#gray-release');
|
||||
});
|
||||
|
||||
test('后台不再暴露旧创作模板管理路由', () => {
|
||||
expect(resolveAdminRoute('#creation-entry')).toBe('dashboard');
|
||||
expect(resolveAdminRoute('#creation-announcement')).toBe('dashboard');
|
||||
expect(resolveAdminRoute('#work-visibility')).toBe('dashboard');
|
||||
});
|
||||
|
||||
test('后台素材查询路由可通过导航和 hash 访问', () => {
|
||||
expect(adminRoutes).toContainEqual({
|
||||
id: 'editor-assets',
|
||||
|
||||
@@ -125,17 +125,24 @@ fn stage_codex_target(manifest_dir: &std::path::Path, target: &str) {
|
||||
&& sha256_file(&target_path)
|
||||
.map(|target_sha256| target_sha256 == source_sha256)
|
||||
.unwrap_or(false);
|
||||
let source_permissions = fs::metadata(&source_path)
|
||||
.expect("读取组件权限失败")
|
||||
.permissions();
|
||||
if !target_matches_source {
|
||||
fs::copy(&source_path, &target_path).expect("复制内置 Codex CLI 资源失败");
|
||||
fs::set_permissions(&target_path, source_permissions.clone())
|
||||
.expect("保留内置 Codex CLI 组件权限失败");
|
||||
} else if fs::metadata(&target_path)
|
||||
.expect("读取内置 Codex CLI 资源失败")
|
||||
.permissions()
|
||||
!= source_permissions
|
||||
{
|
||||
// 内容相同但曾被错误 chmod 的 staging 文件也必须恢复执行权限。
|
||||
// 权限已一致时不再写元数据:Windows 上这次写入会更新 change time,
|
||||
// 让 tauri dev 的文件监听把每次构建都当成 staging 变更而无限重建。
|
||||
fs::set_permissions(&target_path, source_permissions)
|
||||
.expect("保留内置 Codex CLI 组件权限失败");
|
||||
}
|
||||
// 内容相同但曾被错误 chmod 的 staging 文件也必须恢复执行权限。
|
||||
fs::set_permissions(
|
||||
&target_path,
|
||||
fs::metadata(&source_path)
|
||||
.expect("读取组件权限失败")
|
||||
.permissions(),
|
||||
)
|
||||
.expect("保留内置 Codex CLI 组件权限失败");
|
||||
file_hashes.insert(
|
||||
relative.to_string(),
|
||||
serde_json::Value::String(source_sha256),
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
- project/决策台账.md
|
||||
- project/dialog.md
|
||||
正式产物使用当前阶段指定的相对路径。
|
||||
五个策划阶段的审批:当你判断当前策划阶段必需产物已完成时,必须提交阶段审批。用户批准后 Runtime 自动进入下一阶段。
|
||||
五个策划阶段的审批:当你判断当前策划阶段必需产物已完成时,必须提交阶段审批。用户批准后进入下一阶段。
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
概念阶段定稿时,创建或更新 `project/速览卡.md`。下面是速览卡的参考结构;根据游戏类型、项目规模和用户要求选择适用字段,同类内容可以合并,复杂项目可以增加必要字段。表格和列表中的示例行按实际对象逐行扩展:
|
||||
概念阶段定稿时,创建或更新速览卡。下面是速览卡的参考结构;根据游戏类型、项目规模和用户要求选择适用字段,同类内容可以合并,复杂项目可以增加必要字段。表格和列表中的示例行按实际对象逐行扩展:
|
||||
|
||||
# 速览卡:《游戏名》
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
+24
-24
@@ -3,7 +3,7 @@
|
||||
版本:v3 | 规则:台账放活队列——design 只放结论、分析只放论证、决定与开放问题住这里。编号连续不复用;被推翻的行标 overturned 挂新行,不删行。
|
||||
状态六态:`confirmed`(用户亲口/亲选)/ `auto_decided`(技术类代决,必带理由+推翻条件,用户一键可翻)/ `default_pending`(默认建议兜底,用户未点头)/ `prototype_pending`(待原型验证)/ `pending_user`(等用户拍板)/ `overturned`(被推翻,挂旧行编号)。
|
||||
|
||||
> 编号口径:D-01~D-13 与 templates/stardew-analysis.md 台账节选一致(D-04~D-06、D-08~D-10、D-12 原为"就地小权衡,直接登记未开条目",此处按登记口径展开);D-14 起为技术文档期新增,与 stardew-tdd-tech.md 开放问题回执互引。
|
||||
> 编号口径:前面各项与全局分析登记一致;其中若干为"就地小权衡,直接登记未开条目",此处按登记口径展开。后续项在技术文档期新增,并与开放问题回执互引。
|
||||
|
||||
## 当前待办(活队列)
|
||||
|
||||
@@ -11,20 +11,20 @@
|
||||
|
||||
| 编号 | 决定 | 层 | 谁 | 依据 | 推翻条件 | 状态 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| D-14 | 体力与战斗共享单池 | TDD | user | 风险资源统一制造取舍(概念张力一);**暂按共享实现,改单拆只需改 S02 成本入口** | 战斗参与率实测过低(玩家回避矿井) | pending_user(暂按共享实现) |
|
||||
| D-15 | 背包格子制 vs 重量制 | TDD | user | 格子制直觉、重量制焦虑感与 T5"休闲不打卡"冲突;暂按格子制实现、存档预留 capacity_type 字段 | 格子管理成为主要负面反馈 | pending_user(B 级阻断存档结构,暂按格子制) |
|
||||
| 体力共享 | 体力与战斗共享单池 | TDD | user | 风险资源统一制造取舍(概念张力一);**暂按共享实现,改单拆只需改 S02 成本入口** | 战斗参与率实测过低(玩家回避矿井) | pending_user(暂按共享实现) |
|
||||
| 背包容量 | 背包格子制 vs 重量制 | TDD | user | 格子制直觉、重量制焦虑感与 T5"休闲不打卡"冲突;暂按格子制实现、存档预留 capacity_type 字段 | 格子管理成为主要负面反馈 | pending_user(B 级阻断存档结构,暂按格子制) |
|
||||
|
||||
### 待原型验证(prototype_pending)
|
||||
|
||||
| 编号 | 决定 | 层 | 谁 | 依据 | 推翻条件 | 状态 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| D-13b | 战斗判定窗口手感(前摇帧数/无敌帧 450ms 基准) | 系统 | user | 数值可定、手感不可纸面验证 | 原型显示节奏拖慢/玩家困惑 | prototype_pending(规则本体见 D-13 confirmed) |
|
||||
| 判定手感 | 战斗判定窗口手感(前摇帧数/无敌帧 450ms 基准) | 系统 | user | 数值可定、手感不可纸面验证 | 原型显示节奏拖慢/玩家困惑 | prototype_pending(规则本体见 战斗判定 confirmed) |
|
||||
|
||||
### 默认建议兜底(default_pending)
|
||||
|
||||
| 编号 | 决定 | 层 | 谁 | 依据 | 推翻条件 | 状态 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| D-19 | 天气权重表具体数值(晴/雨/风暴按季节) | TDD | agent | 概念层只定"雨免浇水"定性;数值推内容期填 | 前 5 日出现连续 3 日雨/全无雨 | default_pending(默认值已进数据表,带 designer_note) |
|
||||
| 天气数值 | 天气权重表具体数值(晴/雨/风暴按季节) | TDD | agent | 概念层只定"雨免浇水"定性;数值推内容期填 | 前 5 日出现连续 3 日雨/全无雨 | default_pending(默认值已进数据表,带 designer_note) |
|
||||
|
||||
## 已采用决定
|
||||
|
||||
@@ -32,35 +32,35 @@
|
||||
|
||||
| 编号 | 决定 | 层 | 谁 | 依据 | 推翻条件 | 状态 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| D-01 | 定调:牧场物语系参照、治愈慢节奏 | 概念 | user | 用户原始需求 | — | confirmed |
|
||||
| D-02 | 单人体验,无多人 | 概念 | user | 概念层非目标 | — | confirmed |
|
||||
| D-03 | 战斗保持伴生风险,不做装备驱动主轴 | 概念 | user | 概念期问题一 | 矿井流失率过半且归因战斗 | confirmed |
|
||||
| D-07 | 日目标自设,季节与社区提供低频牵引 | 顶层 | user | 顶层期问题一 | 新手周流失归因无方向 | confirmed |
|
||||
| D-11 | 采集/钓鱼/战斗统一"活动结果"接口 | 架构 | user | 架构期问题一 | 第三活动类型出现结构性差异 | confirmed |
|
||||
| D-13 | 战斗采用节奏/指令判定 | 系统 | user | S06 问题一 | 原型显示节奏拖慢/玩家困惑 | confirmed(手感部分拆 D-13b prototype_pending) |
|
||||
| 基调定位 | 定调:牧场物语系参照、治愈慢节奏 | 概念 | user | 用户原始需求 | — | confirmed |
|
||||
| 范围约束 | 单人体验,无多人 | 概念 | user | 概念层非目标 | — | confirmed |
|
||||
| 战斗定位 | 战斗保持伴生风险,不做装备驱动主轴 | 概念 | user | 概念期问题一 | 矿井流失率过半且归因战斗 | confirmed |
|
||||
| 日目标 | 日目标自设,季节与社区提供低频牵引 | 顶层 | user | 顶层期问题一 | 新手周流失归因无方向 | confirmed |
|
||||
| 活动接口 | 采集/钓鱼/战斗统一"活动结果"接口 | 架构 | user | 架构期问题一 | 第三活动类型出现结构性差异 | confirmed |
|
||||
| 战斗判定 | 战斗采用节奏/指令判定 | 系统 | user | S06 问题一 | 原型显示节奏拖慢/玩家困惑 | confirmed(手感部分拆 判定手感 prototype_pending) |
|
||||
|
||||
### 技术代决(auto_decided——带理由与推翻条件,用户一键可翻)
|
||||
|
||||
| 编号 | 决定 | 层 | 谁 | 依据(理由) | 推翻条件 | 状态 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| D-04 | 时间片制:700ms=10 游戏分钟 | 概念 | agent | 原作实证节拍;一天≈14 分钟真实时间贴合 T5"休闲" | 内测一天体感过短/过长 | auto_decided |
|
||||
| D-05 | 分区域切换(区域独立场景,非连续地图) | 概念 | agent | 概念层"不是什么:无边界开放世界";区域小网络全部步行可达 | 场景切换成为移动负担反馈 | auto_decided |
|
||||
| D-06 | 28 日/季、四季/年 | 顶层 | agent | 季节窗口制造"本季计划"节奏(支柱二) | 换季频率在测试中被无视 | auto_decided |
|
||||
| D-09 | 商店营业时段走条件表 | 架构 | agent | 与配方/区域解锁共用 check(condition_id) 单一入口 | 条件表规模膨胀难维护 | auto_decided |
|
||||
| D-10 | 出货箱日终统一结算 | 架构 | agent | 收入集中进日终面板,强化"一天一结算"叙事;商店现卖保留即时通道 | 玩家普遍绕开出货箱 | auto_decided |
|
||||
| D-12 | 工具升级期间该工具不可用 | 系统 | agent | 升级=时间成本换效率(顶层张力二);备用旧工具暂不做(开放问题) | 升级期挫败感集中爆发 | auto_decided |
|
||||
| D-16 | 矿井逐层生成本期不做(P2) | TDD | agent | GDD 已标"不做无限地牢";首期按布局池 8~12 模板拼装 | 内测要求深度爬塔玩法 | auto_decided |
|
||||
| D-17 | 换装首期 5 层(基础体/裤/衣/发型/饰件),非 19 层 | TDD | agent | 外观自定义非首期卖点;层结构预留到 19 层 | 外观系统成核心诉求 | auto_decided |
|
||||
| D-18 | 作物品质三档:普通/银/金 | TDD | agent | 经济分层需要(即时变现 vs 等待升值的取舍) | 银金档无人区分、一律普通出售 | auto_decided |
|
||||
| 时间片 | 时间片制:700ms=10 游戏分钟 | 概念 | agent | 原作实证节拍;一天≈14 分钟真实时间贴合 T5"休闲" | 内测一天体感过短/过长 | auto_decided |
|
||||
| 区域切换 | 分区域切换(区域独立场景,非连续地图) | 概念 | agent | 概念层"不是什么:无边界开放世界";区域小网络全部步行可达 | 场景切换成为移动负担反馈 | auto_decided |
|
||||
| 季节周期 | 28 日/季、四季/年 | 顶层 | agent | 季节窗口制造"本季计划"节奏(支柱二) | 换季频率在测试中被无视 | auto_decided |
|
||||
| 营业条件 | 商店营业时段走条件表 | 架构 | agent | 与配方/区域解锁共用 check(condition_id) 单一入口 | 条件表规模膨胀难维护 | auto_decided |
|
||||
| 日终结算 | 出货箱日终统一结算 | 架构 | agent | 收入集中进日终面板,强化"一天一结算"叙事;商店现卖保留即时通道 | 玩家普遍绕开出货箱 | auto_decided |
|
||||
| 工具占用 | 工具升级期间该工具不可用 | 系统 | agent | 升级=时间成本换效率(顶层张力二);备用旧工具暂不做(开放问题) | 升级期挫败感集中爆发 | auto_decided |
|
||||
| 矿井生成 | 矿井逐层生成本期不做(P2) | TDD | agent | GDD 已标"不做无限地牢";首期按布局池 8~12 模板拼装 | 内测要求深度爬塔玩法 | auto_decided |
|
||||
| 换装范围 | 换装首期 5 层(基础体/裤/衣/发型/饰件),非 19 层 | TDD | agent | 外观自定义非首期卖点;层结构预留到 19 层 | 外观系统成核心诉求 | auto_decided |
|
||||
| 品质三档 | 作物品质三档:普通/银/金 | TDD | agent | 经济分层需要(即时变现 vs 等待升值的取舍) | 银金档无人区分、一律普通出售 | auto_decided |
|
||||
|
||||
### 已推翻(overturned——旧行保留,挂新行)
|
||||
|
||||
| 编号 | 决定 | 层 | 谁 | 依据 | 推翻条件 | 状态 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| D-08 | 作物品质两档:普通/银 | TDD | agent | 早期小权衡:两档最简 | — | **overturned → D-18**(经济分层不足,改三档;铱档留 P1) |
|
||||
| 早期品质两档 | 作物品质两档:普通/银 | TDD | agent | 早期小权衡:两档最简 | — | **overturned → 品质三档**(经济分层不足,改三档;铱档留 P1) |
|
||||
|
||||
## 队列纪律(给 agent 的使用说明)
|
||||
## 队列纪律(使用说明)
|
||||
|
||||
- 新决定入队:拿下一号(当前最大 D-19,下一号 D-20);就现代决可登记不开条目,但状态必须写 auto_decided 并带理由+推翻条件。
|
||||
- 新决定入队:取下一个可用登记编号,并保持连续不复用;就现代决可登记不开条目,但状态必须写 auto_decided 并带理由+推翻条件。
|
||||
- 用户翻案:旧行标 overturned 挂新行,受影响文档节重写(本台账只记录,不代改)。
|
||||
- 概念层变更定稿后:速览卡"决定状态与原型验证项"字段随本文件最新版同步(prompt 级纪律)。
|
||||
- 概念层变更定稿后:速览卡"决定状态与原型验证项"字段随本文件最新版同步。
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
# 脉冲荒原:节点争夺战
|
||||
|
||||
> Fast GDD v1 · 状态:ready\_for\_approval
|
||||
> gddId:`gdd-a5309290-edd4-4232-9c7c-d99024e0fa42`
|
||||
> fingerprint:`sha256-serde-json-v2:1d34b0cbee5f623a224102e4d832ad6ecc10ffbf27b876d9bc1e24a5483f06a3`
|
||||
> approvalRequestId:`gdd-approval-6f5de673-553d-499f-8ca1-8c32f4841bc0`
|
||||
|
||||
## 决定状态
|
||||
|
||||
@@ -64,12 +61,12 @@
|
||||
- 单局时长:默认每局约10~20分钟;首个可玩闭环优先做到一局可完整开始、争夺、决胜和重开。
|
||||
- 参考游戏:无
|
||||
|
||||
## Runtime 平台事实
|
||||
## 平台事实
|
||||
|
||||
- Runtime:self-contained-web
|
||||
- 视口:desktop / mobile
|
||||
- 输入:keyboard / touch
|
||||
- 预览:local-http
|
||||
- 运行方式:浏览器内运行,离线可用
|
||||
- 视口:桌面 / 移动
|
||||
- 输入:键盘 / 触控
|
||||
- 预览:本地启动后可在浏览器中试玩
|
||||
|
||||
## MVP 系统
|
||||
|
||||
|
||||
+9
-9
@@ -1,6 +1,6 @@
|
||||
# 速览卡:《星露谷物语》金样项目
|
||||
|
||||
> 12 字段版本;渲染器照旧出卡走审批。字段来源见每节尾注(概念层/定调记录/台账投影)。概念层变更定稿后本卡必须同步更新(prompt 级纪律)。
|
||||
> 字段来源见每节尾注(概念层/定调记录/决策台账)。概念层变更定稿后本卡必须同步更新。
|
||||
|
||||
## 1. 游戏名称
|
||||
《星露谷物语》(金样项目沿用案例名;新项目由概念层第 1 节定名)←概念层§1
|
||||
@@ -30,8 +30,8 @@
|
||||
## 7. 目标用户 ←概念层§5
|
||||
牧场物语系慢节奏成长玩家+动森式"无压力日常"需求;单人、可反复、每次一至数个游戏日;不要求预先掌握复杂数值。
|
||||
|
||||
## 8. 平台事实 ←运行时注入,禁改
|
||||
自包含 Web · 双视口(桌面/移动)· 键鼠/触屏双输入 · 本地 HTTP 预览(金样项目按 HTML 演示路线锁定)。
|
||||
## 8. 平台事实(禁改)
|
||||
Web 浏览器运行 · 双视口(桌面/移动)· 键鼠/触屏双输入 · 本地启动后可在浏览器中试玩。
|
||||
|
||||
## 9. MVP 系统(5 个)←概念层"最小闭环粗清单"
|
||||
| 系统 | 最小功能 | 为什么必须有 | 验证方法 |
|
||||
@@ -51,9 +51,9 @@
|
||||
- 这样验证:测试者玩完第 1 日后是否主动说"再玩一天";能否说出"明天要先做什么"。
|
||||
- 达标再扩展:玩家能自述明日计划后,才加社交深度与矿井分层。
|
||||
|
||||
## 12. 决定状态与原型验证项 ←台账投影(decision-log.md v3)
|
||||
- 已确认(confirmed):定调 D-01 / 单人 D-02 / 战斗伴生 D-03 / 日目标自设 D-07 / 活动统一接口 D-11 / 战斗节奏判定 D-13。
|
||||
- 技术代决(auto_decided,可一键翻案):D-04 时间片 / D-05 分区域切换 / D-06 28 日季 / D-09 营业条件 / D-10 出货箱日终 / D-12 工具占用 / D-16 矿井生成 P2 / D-17 换装 5 层 / D-18 品质三档(推翻 D-08 两档)。
|
||||
- 等拍板(pending_user):D-14 体力战斗是否共享单池(暂按共享实现);D-15 背包格子/重量(暂按格子制,B 级阻断存档结构)。
|
||||
- 待原型(prototype_pending):D-13b 战斗判定窗口手感(前摇帧数/450ms 无敌帧基准)。
|
||||
- 默认兜底(default_pending):D-19 天气权重数值(默认已入表,带 designer_note)。
|
||||
## 12. 决定状态与原型验证项(依据决策台账)
|
||||
- 已确认(confirmed):总体基调 / 单人范围 / 战斗伴生 / 日目标自设 / 活动统一接口 / 战斗节奏判定。
|
||||
- 技术代决(auto_decided,可一键翻案):时间片 / 区域切换 / 季节周期 / 营业条件 / 日终结算 / 工具占用 / 矿井生成 P2 / 换装 5 层 / 品质三档(推翻早期品质两档)。
|
||||
- 等拍板(pending_user):体力战斗是否共享单池(暂按共享实现);背包格子/重量(暂按格子制,B 级阻断存档结构)。
|
||||
- 待原型(prototype_pending):战斗判定窗口手感(前摇帧数/450ms 无敌帧基准)。
|
||||
- 默认兜底(default_pending):天气权重数值(默认已入表,带 designer_note)。
|
||||
|
||||
+2
-2
@@ -8,7 +8,7 @@
|
||||
> 玩家在有限的时间与体力下,通过农场、探索与社交三组活动系统产出资源与关系,经物品与经济系统转化为投资,由时间系统推进日终,把一天的成果变成下一天的选择。
|
||||
|
||||
变更记录:
|
||||
- 2026-09-05:战斗与敌人系统定为伴生风险定位,深度刻意受限,不进入最小闭环核心链(依据:概念分析 D-03)。
|
||||
- 2026-09-05:战斗与敌人系统定为伴生风险定位,深度刻意受限,不进入最小闭环核心链(依据:概念分析 战斗定位)。
|
||||
|
||||
## 系统地图
|
||||
|
||||
@@ -66,7 +66,7 @@ P0 段:
|
||||
负责一天制的节奏规则:什么时候推进日期、哪些系统收到跨天 tick、日终结算何时发生。它不负责奖励结算,也不负责作物成长规则——只负责"什么时候"和"谁被通知"。
|
||||
|
||||
### S06 战斗与敌人系统
|
||||
负责战斗内状态、敌人行为与战利品请求。它不直接修改商店价格或 NPC 好感,不负责角色长期成长;战利品只提交请求,由 S07 物品系统入账。定位是矿井探索的风险与节奏变化,不是成长主轴(D-03)。
|
||||
负责战斗内状态、敌人行为与战利品请求。它不直接修改商店价格或 NPC 好感,不负责角色长期成长;战利品只提交请求,由 S07 物品系统入账。定位是矿井探索的风险与节奏变化,不是成长主轴(战斗定位)。
|
||||
|
||||
### S07 物品、背包与制作系统
|
||||
负责物品身份、容器、堆叠与配方队列。它是全项目的公共语言层——任何系统的产出都以 `item_id` 入账;它不负责物品的经济价值平衡,价格只由 S09 维护。
|
||||
|
||||
+2
-2
@@ -47,7 +47,7 @@
|
||||
| BGM | ogg,-18LUFS,循环点标记 | `bgm_{season}` 4 首+矿井 1 首 | — | 响度+循环 | 豁免(音频契约) |
|
||||
| SFX | wav 单发 | `sfx_{event}`(事件↔音效映射表登记) | — | 同帧触发 | 豁免(音频契约) |
|
||||
|
||||
- 绘制工艺:陶泥儿 MCP 像素绘制路径逐类写参数(作物/图标/角色三类的封装流程);施工环境无产出通道时规格先行锁定、状态如实登记"缺失"。
|
||||
- 绘制工艺:按项目实际制作路径逐类记录参数与封装流程;施工环境无产出通道时规格先行锁定、状态如实登记"缺失"。
|
||||
- 音频契约说明:原作 XACT cue 名 435 候选/代码引用 230 个——本项目首期 SFX 事件 20 只起步,按事件总线 `sfx_event` 映射表登记,不逐 cue 复刻。
|
||||
- 豁免类型仅限:程序化生成(矿井布局由表驱动拼装)/ UI 文本 / 本期不需要——每项豁免在契约行写明。
|
||||
|
||||
@@ -77,6 +77,6 @@
|
||||
|
||||
| # | 问题 | 去向 |
|
||||
|---|---|---|
|
||||
| 1 | 换装系统首期是否做全 19 层(或缩到 5 层) | → 台账代决(建议首期 5 层:基础体/裤/衣/发型/饰件;台账 D-17) |
|
||||
| 1 | 换装系统首期是否做全 19 层(或缩到 5 层) | → 台账代决(建议首期 5 层:基础体/裤/衣/发型/饰件;台账 换装范围) |
|
||||
| 2 | 锚点图方向需用户确认 | → 施工期提案卡 |
|
||||
| 3 | 位图字体 vs 矢量像素风字体 | → 小批阶段随 UI 套件定 |
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@
|
||||
|
||||
## 自足性检查(2026-09-06 生产态复评)
|
||||
|
||||
| # | 施工 agent 的问题 | 答案在哪 | 状态 |
|
||||
| # | 施工方的问题 | 答案在哪 | 状态 |
|
||||
|---|---|---|---|
|
||||
| 1 | 七个 P0 系统怎么行为? | 01 收编章(P0 七系统规则全文已收编@v1;S06 P1 要点已收) | **过** |
|
||||
| 2 | 表里有多少行内容、文本全填了吗? | 03 全量填充(作物8/敌人3/NPC12/文本40/物品46/配方14 全填,第八查全绿) | **过** |
|
||||
@@ -13,7 +13,7 @@
|
||||
| 5 | 代码怎么组织、跑在哪? | 01 代码组织+能力边界(三态全落位) | **过** |
|
||||
| 6 | 怎么算做完? | 01 里程碑三判据+三件验收 | **过** |
|
||||
|
||||
**结论:六问全过——TDD 规格已自足,施工 agent 可只凭本 TDD 开工。**
|
||||
**结论:六问全过——TDD 规格已自足,施工方 可只凭本 TDD 开工。**
|
||||
剩余非规格缺口(不阻塞开工,按里程碑推进):①P1 四系统(S05/S10/S11/S12)施工前补文档并收编;②资产表 30 行量产(按十步流程排期);③B 级两项(背包容量、生命体力共享)在 v0.1 存档实现前收口。
|
||||
|
||||
## 三件状态
|
||||
|
||||
+9
-9
@@ -1,7 +1,7 @@
|
||||
# 技术实现:《星露谷物语》(TDD 金样 · 技术实现)
|
||||
|
||||
> 状态:reviewed | 基于 GDD:架构层@v3 + P0 系统文档@v1(收编) | 数据侧契约:data/contracts@v2
|
||||
> **目标运行时:HTML**(GDD 平台事实锁定;本项目选 HTML 演示自包含 Web 路线。Unity/Godot/Cocos 项目结构相同:能力边界按下表换判定列,预览改陶泥儿驱动引擎弹窗,导出改驱动引擎 CLI)
|
||||
> **目标运行时:HTML**(由 GDD 平台事实锁定;本项目按浏览器平台事实执行)
|
||||
> 平台事实:双视口(桌面/移动)· 键鼠/触屏双输入 · 本地 HTTP 预览
|
||||
> 实证数字来源:星露谷 1.6.15 反编译知识库 v3(快照 stardew-1.6.15-7f1e5b8e,2026-09-11);写新项目时替换为本项目数值。
|
||||
|
||||
@@ -112,11 +112,11 @@
|
||||
- 边界约定:系统间只经公开 api 与事件总线通信,禁跨目录直改他人 state。
|
||||
- 实证参照(原作,仅作组织参考):玩法逻辑全在一个 6.27MB 程序集,入口链 原生启动器→主 dll→GameRunner 帧循环(Update/Draw 非固定步长,真实毫秒累加器驱动逻辑);静态表/本地化文本/地图/运行状态/存档五类数据分置 Content、内存、Saves 目录,按需缓存加载。
|
||||
|
||||
## 外部库与 skill 引用
|
||||
## 外部依赖与可复用能力
|
||||
|
||||
| 需求 | 用什么 | 来源与版本 | 实例化参数 |
|
||||
|---|---|---|---|
|
||||
| Web 游戏开发规范 | agc-web-game-development | `skill@当前版` | 双视口/双输入/本地预览/纯 HTML 交付 |
|
||||
| Web 游戏开发规范 | 浏览器游戏开发规范 | 当前版 | 双视口/双输入/本地预览/纯 HTML 交付 |
|
||||
| 地图渲染 | Canvas 2D 自研渲染器 | 手写(JSON 地图数据) | 四层结构(对齐原作 xTile 层语义) |
|
||||
| 音频 | 原生 WebAudio | 浏览器内置 API | BGM/SFX 双通道 |
|
||||
|
||||
@@ -124,9 +124,9 @@
|
||||
|
||||
| 项 | 规定 | 依据 |
|
||||
|---|---|---|
|
||||
| 瓦片地图结构 | 16px 网格;农场 80×65、小镇 50×40、矿井按层生成 | 台账 D-05(区域分场景,非连续地图) |
|
||||
| 瓦片地图结构 | 16px 网格;农场 80×65、小镇 50×40、矿井按层生成 | 台账 区域切换(区域分场景,非连续地图) |
|
||||
| 镜头 | 跟随玩家+边界钳制;无缩放(固定整数倍) | GDD 顶层(无镜头玩法) |
|
||||
| 场景切换 | 农场↔小镇↔矿井走连接点淡入淡出 ≤1s | 概念 D-05 定案"分区域切换" |
|
||||
| 场景切换 | 农场↔小镇↔矿井走连接点淡入淡出 ≤1s | 概念 区域切换 定案"分区域切换" |
|
||||
| 关卡数据 | `data/maps/*.json`(自定义 JSON:层/网格/对象点) | 契约 v2 |
|
||||
|
||||
## 输入与操作
|
||||
@@ -150,7 +150,7 @@
|
||||
|
||||
## 构建与验证
|
||||
|
||||
- 构建:`npm run agc build`(产物自包含,本地 HTTP 起服)。(引擎项目双轨:陶泥儿驱动引擎弹窗预览=开发期验证;驱动引擎 CLI 导出=交付构建——验证分级同下。)
|
||||
- 构建:项目标准构建命令(产物可离线运行,本地 HTTP 起服)。(引擎项目按所选引擎的预览与导出流程完成验证与交付。)
|
||||
- 自动:无头构建通过+静态检查(资源引用存在、表引用完整——CI 跑验收七查)。
|
||||
- 半自动:双视口浏览器验证——桌面 1920×1080 与移动 390×844 各完成"新档→第 1 日流程→存读档",截图比对缩放整數性(引擎项目=弹窗预览内同流程)。
|
||||
- 手测清单:①移动视口摇杆+热区全操作可完成第 1 日;②场景切换三次无白屏;③后台 5 分钟返回,时钟与存档一致。
|
||||
@@ -167,6 +167,6 @@
|
||||
|
||||
| # | 问题 | 去向 |
|
||||
|---|---|---|
|
||||
| 1 | 背包格子还是重量容量(影响存档与 UI 结构) | → 概念层决策卡(B 级阻断,台账 D-15) |
|
||||
| 2 | 矿井逐层生成是否本期做 | → 台账代决(建议 P2,GDD 已标"不做无限地牢";台账 D-16) |
|
||||
| 3 | 体力是否与战斗共享单池 | → 台账 D-14(B 级待拍,暂按共享实现) |
|
||||
| 1 | 背包格子还是重量容量(影响存档与 UI 结构) | → 概念层决策卡(B 级阻断,台账 背包容量) |
|
||||
| 2 | 矿井逐层生成是否本期做 | → 台账代决(建议 P2,GDD 已标"不做无限地牢";台账 矿井生成) |
|
||||
| 3 | 体力是否与战斗共享单池 | → 台账 体力共享(B 级待拍,暂按共享实现) |
|
||||
|
||||
+9
-9
@@ -1,12 +1,12 @@
|
||||
---
|
||||
name: game-tdd-02-art-bible
|
||||
description: 写"美术圣经"(美术侧)分册时使用。与总纲(技术文档层总纲分册)配套。
|
||||
配套模板:templates/tdd-art-bible.md。配套金样:exemplars/stardew-tdd-art-bible.md。读者:美术 agent / 素材生产。
|
||||
读者:美术 / 素材生产。
|
||||
---
|
||||
|
||||
# 美术圣经 · 美术侧写法(策划 agent · TDD 分册之二)
|
||||
# 美术圣经 · 美术侧写法(策划 · TDD 分册之二)
|
||||
|
||||
> 本文件承载美术侧的写作流程;模板在 templates/tdd-art-bible.md(保持纯净),金样在 exemplars/stardew-tdd-art-bible.md。
|
||||
> 本文件承载美术侧的写作流程。
|
||||
|
||||
## 一、这一件的判断立场
|
||||
|
||||
@@ -31,9 +31,9 @@ description: 写"美术圣经"(美术侧)分册时使用。与总纲(技
|
||||
|
||||
1. 输入齐了吗:概念层定调记录与身份基调(翻译源头)、系统文档全部可见
|
||||
对象(资产总清单的范围)、物品表(item_id 绑定依据,数据侧已定)、
|
||||
画风 skill(全局画风库可引用)。
|
||||
可复用画风规范。
|
||||
2. 本件在数据侧表结构定稿后开写(素材清单引用 item_id)。
|
||||
3. 读取金样 exemplars/stardew-tdd-art-bible.md 了解契约表与资产状态表包含的信息类型(同层只读一次)。
|
||||
3. 读取对应金样了解契约表与资产状态表包含的信息类型(同层只读一次)。
|
||||
|
||||
## 三、怎么写(模板即流程,按节)
|
||||
|
||||
@@ -54,8 +54,8 @@ description: 写"美术圣经"(美术侧)分册时使用。与总纲(技
|
||||
### 4. 素材规格契约(逐素材一行,美术按此交付、程序按此消费)
|
||||
| 素材 | 尺寸/帧数/方向数 | 命名规则 | atlas 格式 | 验收 | 绑定 item_id / 豁免 |
|
||||
每个 gameplay 可见对象一行;多帧图禁当静态图、单元素区域图禁整图使用
|
||||
(运行时绑定规则)。**怎么用陶泥儿 MCP 绘制→封装→交付,逐类写明工艺**
|
||||
(与三段 skill 的工艺卡衔接)。**资产管线按目标运行时适配**:HTML=源文件
|
||||
(运行时绑定规则)。**怎么绘制→封装→交付,逐类写明工艺**
|
||||
(与三段复用能力的工艺卡衔接)。**资产管线按目标运行时适配**:HTML=源文件
|
||||
+atlas/帧表 JSON 直接入包;Unity=Sprite 导入设置与图集;Godot=资源导入
|
||||
(.import);Cocos=Creator 资源与自动图集——规格(尺寸/帧数/命名)四运行时
|
||||
一致,封装形式随程序侧契约。
|
||||
@@ -67,7 +67,7 @@ description: 写"美术圣经"(美术侧)分册时使用。与总纲(技
|
||||
**每个 gameplay 可见对象必有一行或显式豁免,没有第三种状态**——缺什么、
|
||||
做到哪、谁验收过,一张表看全;程序接入填消费点,契约版本变更重验收。
|
||||
**自足性判定**:资产表"全行非缺失且两维验收过"=美术侧构建完成——
|
||||
施工 agent 只看本圣经+资产表即可产出全部素材,不回 GDD。
|
||||
施工方 只看本圣经+资产表即可产出全部素材,不回 GDD。
|
||||
|
||||
### 6. 量产流程与验证
|
||||
十步流水:概念候选(3~10 张)→人选方向→编辑出锚点图(3~5 张)→锁圣经
|
||||
@@ -90,4 +90,4 @@ description: 写"美术圣经"(美术侧)分册时使用。与总纲(技
|
||||
|
||||
1. 视觉锚必须能溯源到定调记录,不许无锚发明审美。
|
||||
2. 素材契约每行必绑 item_id 或写豁免类型。
|
||||
3. 画风卡引用必带版本;工艺走三段 skill 的工艺卡,不即兴写流程。
|
||||
3. 画风卡引用必带版本;工艺沿用既有复用能力的工艺卡,不即兴写流程。
|
||||
|
||||
+3
-4
@@ -1,14 +1,13 @@
|
||||
---
|
||||
name: game-tdd-03-data-config
|
||||
description: 写"数据与配表"(数据侧)分册时使用。与总纲(技术文档层总纲分册)配套。
|
||||
配套模板:templates/tdd-data.md。配套金样:exemplars/stardew-tdd-data.md。
|
||||
底料:归 TDD 素材两份提取件(S06 数值结构+架构字段字典,随包附件)。
|
||||
读者:数值策划 + 程序。
|
||||
---
|
||||
|
||||
# 数据与配表 · 数据侧写法(策划 agent · TDD 分册之三)
|
||||
# 数据与配表 · 数据侧写法(策划 · TDD 分册之三)
|
||||
|
||||
> 本文件承载数据侧的写作流程;模板在 templates/tdd-data.md(保持纯净),金样在 exemplars/stardew-tdd-data.md。
|
||||
> 本文件承载数据侧的写作流程。
|
||||
> 两份提取件是本件的现成实料:引用规则、示例表、验收七查直接改造成文。
|
||||
|
||||
## 一、这一件的判断立场
|
||||
@@ -34,7 +33,7 @@ description: 写"数据与配表"(数据侧)分册时使用。与总纲(
|
||||
(架构层的定性基准,在本件落成前 N 日验算)。
|
||||
2. 先读两份提取件:字段字典全套规则与验收模板已在那里成文,本件是
|
||||
项目实例化,不是重新发明。
|
||||
3. 读取金样 exemplars/stardew-tdd-data.md 了解数据清单、验算表与验收结论包含的信息类型(同层只读一次)。
|
||||
3. 读取对应金样了解数据清单、验算表与验收结论包含的信息类型(同层只读一次)。
|
||||
|
||||
## 三、怎么写(模板即流程,按节)
|
||||
|
||||
|
||||
+10
-11
@@ -1,12 +1,12 @@
|
||||
---
|
||||
name: game-tdd-01-tech
|
||||
description: 写"技术实现"(程序侧)分册时使用。与总纲(技术文档层总纲分册)配套。
|
||||
配套模板:templates/tdd-tech.md。配套金样:exemplars/stardew-tdd-tech.md。读者:程序 agent / 工程师。
|
||||
读者:工程师。
|
||||
---
|
||||
|
||||
# 技术实现 · 程序侧写法(策划 agent · TDD 分册之一)
|
||||
# 技术实现 · 程序侧写法(策划 · TDD 分册之一)
|
||||
|
||||
> 本文件承载程序侧的写作流程;模板在 templates/tdd-tech.md(保持纯净),金样在 exemplars/stardew-tdd-tech.md。
|
||||
> 本文件承载程序侧的写作流程。
|
||||
|
||||
## 一、这一件的判断立场
|
||||
|
||||
@@ -26,15 +26,15 @@ description: 写"技术实现"(程序侧)分册时使用。与总纲(技
|
||||
## 二、动笔前
|
||||
|
||||
1. 输入齐了吗:架构层系统范围表+P0 清单(拆模块依据)、数据侧表结构契约
|
||||
(加载与校验要引用)、skill 选型卡(实现类需求先查卡,不自造轮子)。
|
||||
(加载与校验要引用)、可复用能力选型(实现类需求先查现成能力,不自造轮子)。
|
||||
2. 读总纲判断立场;本件在数据侧表结构定稿后开写。
|
||||
3. 读取金样 exemplars/stardew-tdd-tech.md 了解技术实现文档包含的信息类型(同层只读一次)。
|
||||
3. 读取对应金样了解技术实现文档包含的信息类型(同层只读一次)。
|
||||
|
||||
## 三、怎么写(模板即流程,按节)
|
||||
|
||||
### 0. 系统行为规格(收编章——本件的灵魂)
|
||||
每个 P0 系统一节,**收编**该系统文档的「玩家行动/状态与规则/反馈需求」
|
||||
三节全文(标注"基于系统文档@v{N}")。施工 agent 只读这里就该知道这个系统
|
||||
三节全文(标注"基于系统文档@v{N}")。施工方 只读这里就该知道这个系统
|
||||
怎么行为——不需要回 GDD。P1 系统收编一句话职责+开放状态,施工到该系统时
|
||||
补收编。收编节只同步不改写:GDD 变了重同步,TDD 不在这里加观点。
|
||||
|
||||
@@ -59,15 +59,14 @@ Unity Tilemap/NavMesh、Godot TileMap 节点/AudioServer、Cocos 组件、
|
||||
HTML 的 Canvas/WebAudio/localStorage)、**自封装**(基础 API 上自己写逻辑)、
|
||||
**受限**(该运行时不适合,写明替代方案或降级)。不许答应 GDD 做所选运行时
|
||||
做不到的事。运行时四选一(HTML/Unity/Godot/Cocos),TDD 不擅自换;
|
||||
引擎项目由陶泥儿驱动弹窗预览与 CLI 导出,验证节按此写。
|
||||
引擎项目按所选引擎的预览与导出流程验证。
|
||||
|
||||
### 5. 代码组织概览
|
||||
承架构层目录映射:入口、场景、系统模块的文件组织,一图或一段写死。
|
||||
命名与模块边界约定写清(面向生成代码的可读性:谁在哪个目录、什么前缀)。
|
||||
|
||||
### 6. 外部库与 skill 引用
|
||||
实现类需求先查选型卡;每条引用带 `名字@版本 + 实例化参数`;无卡可用的
|
||||
写明来源(CDN/手写)与理由。
|
||||
### 6. 外部依赖与可复用能力
|
||||
实现类需求先查可复用能力;记录来源、适用版本与实例化参数;没有现成能力时写明来源与理由。
|
||||
|
||||
### 7. 场景与镜头 / 输入与操作 / 音频
|
||||
三节各一张表:场景(tilemap 结构/镜头行为,代决记台账);输入(动作×
|
||||
@@ -90,5 +89,5 @@ HTML 的 Canvas/WebAudio/localStorage)、**自封装**(基础 API 上自己
|
||||
## 五、红线(承总纲四条,本件特化)
|
||||
|
||||
1. 平台事实禁改;与 GDD 冲突走回执,不就地硬做。
|
||||
2. skill 引用必带版本与参数。
|
||||
2. 可复用能力引用必带版本与参数。
|
||||
3. 里程碑判据不许写"基本""大致""感觉"。
|
||||
|
||||
+2
-3
@@ -1,9 +1,8 @@
|
||||
### C2 01_核心玩法编排/SKILL.md(→ modules/system-types/01_核心玩法编排/SKILL.md)
|
||||
### C2 01_核心玩法编排 · 系统写法
|
||||
|
||||
---
|
||||
name: gdd-sys-01-orchestration
|
||||
description: 写"核心玩法/日循环编排"类系统文档时使用。与 skills/systems.md
|
||||
配套(通用纪律不在此重复)。配套模板:modules/system-types/01_核心玩法编排/模板.md。
|
||||
description: 写"核心玩法/日循环编排"类系统文档时使用。
|
||||
---
|
||||
|
||||
# 核心玩法编排 · 系统写法
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
### C2 01_核心玩法编排/模板.md(→ modules/system-types/01_核心玩法编排/模板.md)
|
||||
### C2 01_核心玩法编排 · 模板
|
||||
|
||||
# __系统:S__(核心玩法编排类)
|
||||
|
||||
|
||||
+2
-3
@@ -1,9 +1,8 @@
|
||||
### C2 02_时间与日程/SKILL.md(→ modules/system-types/02_时间与日程/SKILL.md)
|
||||
### C2 02_时间与日程 · 系统写法
|
||||
|
||||
---
|
||||
name: gdd-sys-02-time-schedule
|
||||
description: 写"时间与日程"类系统文档时使用。与 skills/systems.md 配套。
|
||||
配套模板:modules/system-types/02_时间与日程/模板.md。
|
||||
description: 写"时间与日程"类系统文档时使用。
|
||||
---
|
||||
|
||||
# 时间与日程 · 系统写法
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
### C2 02_时间与日程/模板.md(→ modules/system-types/02_时间与日程/模板.md)
|
||||
### C2 02_时间与日程 · 模板
|
||||
|
||||
# __系统:S__(时间与日程类)
|
||||
|
||||
|
||||
+2
-3
@@ -1,9 +1,8 @@
|
||||
### C2 03_生产种植经营/SKILL.md(→ modules/system-types/03_生产种植经营/SKILL.md)
|
||||
### C2 03_生产种植经营 · 系统写法
|
||||
|
||||
---
|
||||
name: gdd-sys-03-farm-production
|
||||
description: 写"生产/种植经营"类系统文档时使用。与 skills/systems.md 配套。
|
||||
配套模板:modules/system-types/03_生产种植经营/模板.md。
|
||||
description: 写"生产/种植经营"类系统文档时使用。
|
||||
---
|
||||
|
||||
# 生产种植经营 · 系统写法
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
### C2 03_生产种植经营/模板.md(→ modules/system-types/03_生产种植经营/模板.md)
|
||||
### C2 03_生产种植经营 · 模板
|
||||
|
||||
# __系统:S__(生产种植经营类)
|
||||
|
||||
|
||||
+2
-3
@@ -1,9 +1,8 @@
|
||||
### C2 04_地图与探索/SKILL.md(→ modules/system-types/04_地图与探索/SKILL.md)
|
||||
### C2 04_地图与探索 · 系统写法
|
||||
|
||||
---
|
||||
name: gdd-sys-04-map-exploration
|
||||
description: 写"地图与探索"类系统文档时使用。与 skills/systems.md 配套。
|
||||
配套模板:modules/system-types/04_地图与探索/模板.md。
|
||||
description: 写"地图与探索"类系统文档时使用。
|
||||
---
|
||||
|
||||
# 地图与探索 · 系统写法
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user