狂想曲委员会——Beta冲刺Day 0

狂想曲委员会 狂想曲委员会 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

狂想曲委员会——Beta冲刺Day 0

这个作业属于哪个课程软件工程实践
这个作业要求在哪里团队作业——Beta冲刺+事后诸葛亮
这个作业的目标调整日完成 Beta 工程骨架、核心 v5/最终选择/结局、资产与测试底座
其他参考文献Beta冲刺计划、11-14今日任务分工(4人+博主)、alpha_day7 工程、Ren'Py 8.5.3 文档、Beta 测试计划

日期:2026年11月14日(周六)
团队:狂想曲委员会
项目:《福大秋日狂想曲》
整理:狂想曲委员会博客组(正文与产物由 AI 协助整理)

一、今天的背景:风雨把外拍按下暂停键

11月14日原本是校园背景预拍摄日。由于天气影响,团队决定取消当天所有校园外拍、转场和集合,不安排任何成员外出。拍摄可以顺延,Beta 的软件底座不能一直空着。

于是今天的任务从“拍回来再写”改成“先把不依赖拍摄的部分做出来”:A 包做 Beta 工程与叙事演出骨架,B 包做共享核心 schema v5、最终选择和结局,C 包做资产管线、自动检查、测试计划与 Issue 基线;D 包负责 Alpha 问题总结、换组交接、意向表和发布收口。

原计划调整后说明
11/14 校园背景外拍取消风雨天不安排外出,安全优先
11/14 Alpha 问题总结、换组交接保留硬截止不因天气因素延期,由 D 包发布负责人处理
11/15 人物参考照视天气在室内进行,否则并入 Day3不在风雨天强行集合
Day2 11/17 校园背景第一批保留作为今天取消场次的补位窗口
Day5 11/20 补拍保留补缺景、补光
今日软件任务新增 A/B/C 三个包本文重点记录

今日未安排线下集合。Day0 是 Beta 正式七日冲刺前的准备日,不计入七日站会与燃尽图;协作以调整版任务文档、代码和测试报告为主。本文不补写未发生的站会,也不使用其他日期的照片。若团队另有线上同步,请在发布时补真实记录;没有就不放。

二、今日目标与完成情况

一句话概括:Beta 从“弹窗文字验证”推进到了“可继续接剧本的视觉小说骨架 + 可验证的 v5 核心 + 可检查的资产/测试底座”。但原生引擎、Windows 包和远程仓库今天没有条件验证。

模块Alpha/Day7 的状态Beta Day0 交付当前结果
工程形态alpha_day7 以功能验证为主,剧情用弹窗新建 beta/ Ren'Py 工程,分出 story/、images/、audio/文件与静态检查齐全;原生未启动
叙事演出call screen day2_story 弹窗,没有 say/menu 场景say 名字框/对话框、choice、quick menu、history、顶部 HUD界面文件已写入;实机未验证
状态模型schema v4,只有 B 好感schema v5,新增 A flags 与 final_choice173 例单元/HTTP 测试通过
最终选择第七天直接结束,按 B 好感给结局第七天日终挂起 final-choice,选择后才结束四个结局分支均有测试(3 个 Must + A 线可选)
旧档兼容v4 存档v1—v4 迁移到 v5,旧完成档补最终选择记录加载→保存→再加载回环通过
资产底座没有资产目录与检查脚本25 图片 + 12 音频清单、命名/尺寸检查清单一致;对应文件尚未落盘
自动检查141 项173 项单元/HTTP(含 32 项 Beta 故事测试)+ preflightpreflight 退出码 0
仓库与 Issue没有远程仓库、没有 Issue4 个 Beta 特性分支(另有 master)、28 条 Issue 草稿、Issue 模板分支已建未提交;远程仓库仍未配置
原生与发行Windows 包构建过但未实机lint/原生测试、Windows 包均未运行如实记为 not_run / 未构建

三、任务包与产出

包目标今日产出状态
A 工程/演出把 Beta 推进到可接剧本的 VN 骨架beta/ 工程、角色/图片声明、序章、四个结局 label、say/choice/quick menu/history、HUD 与音频设置软件产物完成;原生未运行
B 核心/结局schema v5、最终选择、旧档迁移flags/final_choice、final-choice 事件、E01/E03 普通/E03 最佳/E02、v1—v4 迁移、32 例故事测试(含在 173 内)已完成并通过自动检查
C 资产/底座资产、测试、Issue、分支底座ASSET_SPEC、25+12 清单、check_assets.py、preflight.py、测试计划、代码规范、28 Issue、4 个 Beta 分支本地完成;远程未配置
D 博客/发布Alpha 问题总结、换组交接、意向表、最终分工、日志本文为今日日志;D 包其余材料的状态需由发布负责人确认不把未发布写成已发布

今天完成的是 A/B/C 的软件产物,不是整个 Beta。D 包的 Alpha 问题总结和换组交接仍由发布负责人处理;本文不提供未发布链接,也不把“待发布”写成“已发布”。如果截至发稿这两篇硬截止材料仍未发布,应直接写“未完成”,不能用这篇日志代替。

今天按任务包记录,不按个人写“已完成”:11/14 分工文档是匿名认领版,具体到人的分工以 18:00 最终分工和真实提交为准;不把 AI 协助产物写成成员独立签入。Day0 是准备日,本文不写成员心得。

四、包 A:把 Beta 推进到视觉小说骨架

1. 新建 beta/ 工程,Alpha 保持不动

今天的 Beta 改动集中在 beta/,没有继续在 alpha_day7 上叠功能。工程从 alpha_day7 复制,排除了 artifacts/build/、runtime/、__pycache__/ 等运行产物,新增:

beta/
├─ game/
│  ├─ characters.rpy
│  ├─ images.rpy
│  ├─ script.rpy
│  ├─ options.rpy
│  ├─ screens.rpy
│  ├─ gameplay_screens.rpy
│  ├─ vn_screens.rpy
│  ├─ startup_test.rpy
│  └─ story/
│     ├─ prologue.rpy
│     └─ endings.rpy
├─ game/images/{bg,sp,cg}/
├─ game/audio/{bgm,sfx,voice}/
├─ docs/
├─ tests/
└─ tools/

characters.rpy 定义了旁白、主角、A、B、黄毛,以及 A 的线上身份“晚风”的手机消息角色(a_phone)。A 的现实口癖“你先别急”、网上的省略号慢半拍,B 的短句感叹号,黄毛的“本大爷”,都写进注释,方便后面写正式剧本时保持一致。

2. 25 个图片声明,正式文件尚未落盘

images.rpy 用 Solid/Composite 写了 25 个占位声明:8 个背景、12 个立绘、5 个 CG。它们不是正式美术,只是让 scene/show 能先跑通,并让资产清单、命名规范和后面的拍摄有同一个目标。

正式素材还没拍、没画,所以资产检查报告里“实际文件 0/25、占位未产出 25”是预期状态。声明存在,不代表对应图片文件已经存在。 今天完成的是“名字、目录、清单、检查规则”,不是“25 张图已经做好”。

3. 序章和四个结局 label

story/prologue.rpy 建立了 S00 占位场景:

  • scene bg_03_dorm_day
  • show sp_a_normal
  • A 与“晚风”的几句对话
  • 一个三选项 menu
  • hide 后 return 主循环

story/endings.rpy 建立了四个 label:ending_alone、ending_b_normal、ending_b_best、ending_a。四个 label 都统一调用 ending_view(game_state) 和 day5_ending,避免每个结局各写一套结算。

script.rpy 的 start 现在是:

姓名 → 配点 → prologue(scene/say/menu)→ day1_loop

native_ready 自动测试入口保留;startup_test.rpy 补了序章的点击步骤,但没有实机运行。

4. 界面拆分与 VN 演出层

Alpha 的界面、HUD、弹窗集中在一个 screens.rpy 里。Beta 按代码规范拆成三个文件:

文件行数内容
screens.rpy379基础样式、主菜单、配点、HUD、日常主界面、剧情弹窗、结局、存读档、设置
gameplay_screens.rpy95日常与功能界面
vn_screens.rpy66say、choice、quick_menu、history(beta_hud 在 screens.rpy)

拆分后单文件都控制在 400 行以内。screens.rpy 里的对话框固定在底部 1120×170,顶部是名字框,下面是对话;选项按钮、快捷菜单、历史记录和文字/音乐/音效设置也都接上了。设置里的进度条用 Solid 绘制,不依赖默认 GUI 图片。

options.rpy 改为 0.8.0-beta,音效和音乐开关打开,语音关闭(还没有语音素材);存档目录继续沿用 fzu-autumn-alpha-day2,这是为了兼容旧存档,不是忘记改。

img

开局页|Beta 0.8.0 网页验证入口。网页入口和 Ren'Py 共用核心,但这不是原生截图。

上图是网页验证入口的真实页面,不是 Ren'Py 原生截图。网页入口和 Ren'Py 共用 fqcore,所以状态、日期、资金和好感是同一套逻辑;原生界面文件已经写好,但本机没有 SDK,今天没有实机启动。

img

日常主界面|截图来自另一次验证运行,玩家名与开局页不同。

日常主界面显示第 1 天上午、生活费 ¥800、精力 3/3、B 好感 0;学习、运动、兼职、休息和课后家教的开放条件都由共享核心返回,不是前端自己判断。

五、包 B:schema v5、最终选择与四个结局

1. 为什么必须升到 v5

Alpha 的状态里只有一个 B 好感,第七天直接结束,ending_view 按 B 好感分档给结局。Beta 要加两样东西:

  1. A 线的三个 flag:suspect_a、knows_a、a_trust;
  2. 玩家在第七天做出的最终选择:None / "b" / "a" / "alone"。

这两样都会进入存档,所以 SCHEMA_VERSION 从 4 升到 5。规则是“只加不改”:B 好感的语义不动,旧字段不改名,旧档通过 upgrade_state 迁移。

2. 状态一致性不是靠界面保证

validate_state 增加了三组检查:

  • flags 必须是恰好三个布尔字段;
  • final_choice 只能是 None、b、a、alone;
  • events_completed 里有 final-choice,就必须有非空 final_choice 且 finished=True;反过来,没有最终选择记录就不能有 final_choice。

另外两条门禁写在核心:

  • 选 b 时,B 好感必须 ≥30;
  • 选 a 时,必须同时满足 knows_a 和 a_trust。

这样即使有人绕过界面直接调用接口,也不会写出“选了 B 但好感不够”或“选了 A 但根本不知道 A 是晚风”的非法状态。

3. 第七天的流程

next_day 在第七天不再直接 finished=True,而是把 pending_event 设为 final-choice。玩家选择后,choose_event 写入 final_choice,把 final-choice 加入完成记录,再置 finished=True。

在最终选择完成之前,日常行动、用餐、结束当天都会被锁住。测试覆盖了“未选择前不能结束”“选择 B 好感不足被拒”“选择 A 缺 flag 被拒”“独自始终可用”等路径。

img

最终选择|第七天日终。B 好感 60,B 可选;A 因缺少 knows_a + a_trust 禁用;独自始终可选。

上图是第七天日终的真实页面:B 好感 60,所以“走向 B”可选;A 选项因为本局没有完成 knows_a + a_trust,显示为禁用并给出原因;“独自看完最后一场演出”始终可选。

4. 四个结局

结局 ID条件标题
E01_alonefinal_choice = "alone"一个人的秋天
E03_b_normalfinal_choice = "b" 且 30 ≤ B 好感 < 60一起走过的秋天
E03_b_bestfinal_choice = "b" 且 B 好感 ≥60秋日约定
E02_afinal_choice = "a" 且 knows_a、a_trust 都为真晚风的回信

E01、E03 普通、E03 最佳是 Must 结局;E02 是 A 线的可选结局,只有完成 A 的身份揭示并选择信任时才开放。A 线仍然只用三个 flag,不新增 A 好感数值,避免在 Beta 第一天把范围扩大到正式攻略线。四个结局都有测试覆盖;界面截图只截了 E03 最佳,E01/E02 没有单独截图。

img

B 最佳结局|E03_b_best。状态持久化的是 final_choice;ending_id 由 ending_view() 计算返回。

上图是 B 好感 60、选择 B 后的最佳结局。页面同时显示跨周目档案:本局已经记为完成。状态里持久化的是 final_choice,ending_id 由 ending_view() 每次计算返回;跨周目档案只记录评级、天数、失窃、取餐和完成标记,不单独存结局 ID。

5. 今天最关键的一个修正:B 线可获得好感从 20 提高到 60

Alpha 的三条 B 线事件即使全选最优,合计也只有 10 + 4 + 6 = 20。但 Beta 的结局门槛是 30 和 60,这意味着:

  • 按 Alpha 的数值,E03 普通结局不可达;
  • E03 最佳结局也不可达;
  • 只有“独自”结局是真实可达的。

这不是文案问题,是数值和分支设计对不上。今天把 B 线效果重新配平:

事件选项B 好感
图书馆相遇一起梳理课程笔记+25
外卖关心谢谢提醒,我会注意+10
室友与晚风转而聊起秋日合唱+5
秋日合唱邀约好,一起去+20
合计60

图书馆 +25 需要学识 ≥30;合计 60 是满足前置条件路线下的单周可达上限,不是无条件加成。

这样 30 和 60 两档都能在单周内真实到达,并且新增了可达性测试,不是只改数字。测试里会真的把 B 好感推到 60,再验证“普通”和“最佳”两个结局都能出现。

6. 旧 v4 存档怎么迁移

upgrade_state 支持 v1—v4 逐级迁移到 v5:

  • 未完成的旧档:补默认 flags 和 final_choice=None;
  • 已完成的旧档:按 B 好感派生最终选择——≥30 记为 "b",否则记为 "alone",并补一条 final-choice 完成记录;
  • 旧档没有 A 线信息,不会凭空获得 knows_a 或 a_trust。

测试不只调用 upgrade_state,而是走完整的存档信封:load_save → v5 → build_save → load_save,确认加载、保存、再加载都不会丢字段或报 KeyError。

7. 网页入口不需要第二套实现

server.py 的 reply_state 增加了 flags 和 final_choice 透传;网页端事件面板本来就按 event.options 通用渲染,所以最终选择不需要再写一套前端分支。

HTTP 集成测试 BetaHttpTests.test_http_final_choice_flow_and_ending 覆盖了 /api/next 返回 final-choice、/api/choice 返回结局和 ending_id 的完整路径。

六、包 C:资产管线与测试底座

1. 先定规范,再等素材

beta/docs/ASSET_SPEC.md 先写清楚命名、目录、尺寸、格式和音频响度:

  • 背景 bg_01_library_day.webp,1920×1080,游戏内缩到 1280×720;
  • 立绘 sp_a_normal.webp,透明底;
  • CG cg_01_library.webp,1920×1080;
  • BGM/SFX 使用 .ogg,44.1kHz,目标约 −16 LUFS。

同时建立 beta/game/images/{bg,sp,cg}/、beta/game/audio/{bgm,sfx,voice}/,放入 .gitkeep 和 manifest.json。清单目前是 25 个图片清单项 + 12 个音频清单项(对应占位文件尚未落盘):8 背景 + 12 立绘 + 5 CG,4 BGM + 8 SFX。

这里要特别说明:清单有 25+12 项,不等于正式文件已经存在。资产报告写的是“0/25、0/12 实际文件;占位尚未产出;0 个未登记文件”。检查通过的原因是清单、目录、images.rpy 声明彼此一致,而不是素材已经完成。

2. check_assets.py 能抓三类问题

beta/tools/check_assets.py 检查:

  • 命名前缀、编号、扩展名、目录是否符合规范;
  • 清单与 images.rpy 声明是否一致,是否有缺失、多余、重名;
  • 有 Pillow 时检查尺寸和透明通道,没有 Pillow 时如实写“未检查尺寸”。

--self-test 会故意构造三类坏数据:缺文件、命名错、尺寸错。今天的结果是 3/3 类问题全部检出,说明检查脚本不是“永远返回通过”。

3. preflight.py 一键跑底座检查

beta/tools/preflight.py 把今天的检查串起来:

  • unittest discover
  • check_assets.py
  • check_docs.py
  • 静态检查:必需文件、story/ 目录、四个结局 label、版本号、say/choice/quick_menu/history;
  • 原生 lint:有 SDK 才跑,没有就记 not_run;
  • release:有包才跑,没有就记 not_run。

报告写到 beta/artifacts/preflight_report.json。今天的结果是 退出码 0、overall pass、static 27/27;native:lint 和 release 明确是 not_run,不是通过。

4. 测试计划、代码规范和 Issue 基线

  • BETA_TEST_PLAN.md 写了 6 层测试矩阵:剧本/分支、核心单元、原生、网页/HTTP、包内、人工;
  • CODE_STYLE.md 规定单 .rpy ≤400 行、剧本不写函数、状态变更统一入口;
  • RUN_BETA.md 写了 SDK 启动、lint、原生测试命令,以及没有 SDK 时怎么只跑 Python/网页入口;
  • BETA_ISSUES.md 建了 28 条 Issue 草稿,编号 BETA-D1-01 到 BETA-D7-04,每条有目标、验收、预估人时和负责人空位;
  • 本地建了 4 个 Beta 特性分支(另有 master):feat/beta-engine、feat/beta-story、feat/beta-test、feat/beta-art;分支目前都指向当前 master 提交,Beta 代码尚未提交;
  • beta/.gitattributes 把 png/webp/ogg/jpg/jpeg 交给 Git LFS(本机 git-lfs 3.7.1)。

img

工程结构与资产汇总图|图里的“Ren'Py 8.5.3 语义”指目标脚本语义,不代表本机跑过 8.5.3 引擎。

img

Issue 与分支汇总图|28 条草稿、4 个 Beta 特性分支。远程仓库未配置,分支已建但 Beta 代码未提交。

这两张是数据汇总图,不是运行截图;数据来自仓库里的脚本行数、资产清单、Issue 文档和 git branch 输出。图下方的 Issue 页明确写了“远程仓库尚未配置:git remote -v 为空;本页只证明本地 Issue 草稿与分支就绪”。28 条是草稿,不是 28 个已经创建的远程 Issue。

从分工到证据,今天按任务包记录,不按个人写“已完成”:A/B/C 是软件包,D 是发布包;具体到人的认领、工时和签入,等 18:00 最终分工与真实提交后补。Day0 是准备日,不写成员心得,也不画没有数据的燃尽图。

七、今天实际跑了什么

验证层实际执行结果证据
Python 单元/HTTP173 例通过,0 失败、0 错误,本次记录约 4 秒beta/artifacts/preflight_report.json
其中:Beta 故事测试32 例通过,0 失败、0 错误,本次记录约 0.7 秒(已含在 173 内)beta/tests/test_beta_story.py 输出
preflight退出码 0,overall passpreflight_report.json
静态检查27/27 通过同上
文档检查5 个 Markdown、14 个本地链接通过preflight_report.json 的 docs
资产检查25 图片 + 12 音频清单项,0 errors / 0 warningsbeta/artifacts/assets_report.json
资产自测3/3 类问题检出check_assets.py --self-test
最终选择 HTTP 流/api/next → /api/choice → ending 通过BetaHttpTests.test_http_final_choice_flow_and_ending
Ren'Py lint / 原生测试NOT RUN本机无 Ren'Py SDK
Windows 包未构建、未实机release = not_run
远程仓库未配置git remote -v 为空

img

测试与预检汇总图|图中的 173 已包含 32 例故事测试,并排展示是为了看新增覆盖,不是 173 + 32 = 205 例。

上图是根据真实 JSON 报告生成的汇总图,不是终端窗口截图。图里专门把 native:lint 和 release 标成 NOT_RUN,避免读者把“preflight pass”误解成“原生和发行都通过了”。

复现命令:

cd beta
python -m unittest discover -s tests -v        # 173 OK(含 32 例 Beta 故事测试)
python tests/test_beta_story.py                # 32 OK(已含在上面的 173 内)
python tools/check_assets.py --self-test       # PASS 3/3
python tools/preflight.py                      # exit 0;native/release not_run
python server.py --open-browser                # 网页验证入口

这些数字证明的是指定脚本路径、状态约束和接口行为,不等同于:

  • Ren'Py 原生实机点击;
  • Windows 包内运行;
  • 正式剧本、正式美术和完整八周的经济平衡;
  • 五名成员的人工体验。

八、今天踩到的坑与修复

  1. B 好感上限和结局门槛对不上。 Alpha 的三条 B 线事件即使全选最优,合计也只有 20,但 Beta 要 30/60 两档,普通和最佳结局实际不可达。今天重新配平到 60,并加真实可达性测试。这是今天最有价值的一次“测试发现设计问题”。

  2. 最终选择、完成记录和 finished 必须三者一致。 如果只改 final_choice 不写 final-choice 记录,或者写了记录却没有结束状态,旧档和读档路径就会出现非法状态。现在由 validate_state 统一拒绝,界面和核心使用同一套门禁。

  3. 旧档迁移不能靠“猜”。 v4 完成档没有最终选择字段,只能按 B 好感派生 b/alone;旧档没有 A 线信息,就不能凭空补 knows_a/a_trust。迁移后还要走完整信封的加载→保存→再加载,确认不是只在内存里能看。

  4. 界面文件按 400 行规范拆分。 拆成 screens.rpy(379 行)、gameplay_screens.rpy(95 行)、vn_screens.rpy(66 行);preflight 的静态检查也从只搜一个文件改成搜 game/*.rpy,否则拆完以后 say/choice/quick_menu/history 会漏检。

  5. 角色设定和代码注释不一致。 检查时发现 characters.rpy 的注释把“晚风”写成 B 的线上身份,序章也用了 b_phone;共享核心的 A 线却明确是 A=晚风。今天统一为 A=晚风,改名为 a_phone,并更新 ASSET_SPEC、CODE_STYLE 的示例。这个不一致不会让测试报错,但会让写剧本的人按错角色写台词,必须在接正式剧本前修掉。

  6. “占位”不能写成“素材完成”。 资产清单有 25 个图片条目和 12 个音频条目,但实际文件是 0。报告里明确写“占位尚未产出”,博客里也不能把清单数量当成正式素材数量。

九、没有完成的部分

今天交付的是 Beta 的软件底座,不是完整 Beta。以下项目没有完成,不能写成完成:

  • Ren'Py lint / 原生测试:本机没有 Ren'Py SDK,preflight 记为 not_run;startup_test.rpy 的序章点击步骤“已写未跑”;没有原生界面截图,本文的网页界面图(01—04)来自网页验证入口,05—07 是数据汇总图,都不能冒充原生截图。
  • Windows 包:没有构建,也没有实机启动;release = not_run。
  • 远程仓库与 Issue:git remote -v 为空,只有 4 个 Beta 特性分支(另有 master)和 28 条 Issue 草稿;分支已建但都指向当前 master 提交,Beta 代码尚未提交,本次整理时没有 commit、没有 push。如果博客需要 commit/Issue 链接,必须等团队真实提交推送后回填真实 hash/链接。
  • 正式剧本与正式素材:序章是占位场景,25+12 是清单项,对应文件尚未落盘,风雨天没有外拍;正式故事圣经、事件表、立绘、CG、BGM 还没有接入。
  • D 包其余材料:Alpha 问题总结、换组交接、意向表、18:00 最终分工仍由发布负责人处理。截至本文整理,未见两篇硬截止材料的已发布链接;如果确认未发布,应如实写成未完成。本文不把未发布材料写成已发布。
  • 个人分工与心得:Day0 是准备日,本文按任务包记录,不写成员心得;个人分工以 18:00 最终分工和真实提交为准。
  • 燃尽图:Beta Day0 不是正式七日冲刺日,今天没有新增燃尽图。等 Day1 按 Sprint Backlog 记录真实剩余人时后再画,不用一条没有数据支撑的曲线占位。

十、Day1 首件事

  1. 补原生验证:在有 Ren'Py 8.5.3 SDK 的机器上跑 renpy beta lint,然后跑 native_startup、native_day6、native_day7;结果按实际写 pass 或 not_run。
  2. 接正式故事圣经/事件表:把 S00 占位换成第一版正式台词,但不要改 v5 的字段名、事件 ID 和结局 ID。
  3. 补远程仓库:团队提供 URL 后推送本地分支,创建 28 个远程 Issue,补 Projects 看板和真实 commit 链接。
  4. 构建 Windows 包并实机测试:构建通过不等于运行通过,必须在解压后的包内复跑测试,并记录真实平台。
  5. 继续资产管线:等正式背景/立绘/CG 到位后,用 check_assets.py 检查命名、尺寸和透明通道,再替换 images.rpy 的占位声明。
  6. D 包收口:发布 Alpha 问题总结和换组交接,回填 Beta 置顶合集;意向表和最终分工按团队实际记录归档。

十一、AI技术员工作情况

本轮给 AI 的输入是 alpha_day7 工程、Beta冲刺计划.md、11-14今日任务分工(4人+博主)、Beta 测试计划和前几篇 Alpha 日志。AI 协助完成:

  • 读取 Alpha 的剧情、状态、存档和界面代码,设计并实现 beta/ 工程骨架、序章/结局 label 和 VN 界面拆分;
  • 实现 schema v5、A flags、final_choice、四个结局和 v1—v4 迁移;
  • 新增 32 例 Beta 故事测试,把全量单元/HTTP 测试更新到 173 例;
  • 写资产规范、清单、check_assets.py、preflight.py、测试计划、代码规范和 28 条 Issue 草稿;
  • 生成 4 张网页验证入口截图(01—04)和 3 张数据汇总图(05—07),整理测试证据和交付包;
  • 起草这篇日志。

AI 没有代替真实外拍、团队沟通、Ren'Py SDK lint、Windows 实机、远程仓库创建或成员独立开发。本文中的分工按任务包记录,不把 AI 协助产物写成成员个人独立签入;真实线上同步记录(如果有)、commit/Issue 链接、人工体验仍需团队补充。

这次比较有价值的协作方式,是让 AI 不只写“完成”,还要给出可复查的验证路径。例如“B 好感能到 60”不是改一个数字就结束,而是把三条 B 线事件的上限和四个结局、30/60 两档门槛、最终选择门禁和旧档迁移都写进测试。对没有条件验证的 lint、原生、Windows 和远程仓库,材料里明确保留 not_run 或“未配置”,不用测试数量替代边界。

十二、结语

风雨把外拍按下暂停键,但没有把工程按下暂停键。

Beta Day0 的交付不是一篇“全部完成”的宣言,而是一套能继续往前走的底座:能进入的 VN 骨架、能迁移的 v5 核心、能真实到达的四个结局、能检查的资产管线、能一键跑的 preflight,以及一份把 not_run 写清楚的证据。

下一步不是继续堆功能,而是先把原生 lint、Windows 实机、远程仓库和真实素材补上,再进入正式剧本与拍摄。先把能验证的验证掉,不能验证的写明白——这比在博客里写一个漂亮的“全部通过”更接近真实开发。

...全文
评论
收藏 已收藏
分享
返回顶部