main = 6c92c844,每条带文件路径 / 分支 / 提交号,可自己核)|
排期母文档 Docs/roadmap/2026-09-roadmap.mdmain 的清单会把它们显示成「零实现」并据此派活,那是错的;
可反过来也成立:没合进 main 的东西在 09-17 内容锁定那天就是不存在。main,而 main 读不出「已经做完但没合」。
09-06 那一版就带着这一节,它当时抓到的问题今天更严重——release 侧四条全在飞,其中两条从 09-10 起就没再动。| 在飞的东西 | 分支 / 最后动作 | 已经做完的 | 还差什么(09-17 前要落地的) |
|---|---|---|---|
| IAP 全链 + StoreKit 在飞 roadmap 2.4 · Glenn |
thread/tf-a60cb3 09-12 |
com.unity.purchasing 5.4.3 进 manifest · TDAppleStorePlatform.cs 真接 StoreKit(取商品 / 本地化价格 / 购买 / 恢复 / 启动读既有交易 / 先发权益再确认 pending order)· BillingMode.json · scripts/asc_create_iap.mjs ·
机器门 webgl_td_paywall_gate.mjs 13 条断言跑在真实部署包上 ·
ASC 商品已建齐:$4.99 / 简中+英文文案 / 175 地区 / 审核截图 / 状态 READY_TO_SUBMIT ·
TestFlight 包 1.0.0 (20260908151403) 已过 Apple 处理(VALID) |
① 合进 main(这是 09-17 硬门里最大的一块) ② 真人拿沙盒账号在真机跑一次购买 + 一次恢复购买——分支文档自己写着「自动门不能替代真实 Apple ID 的付款弹窗」 ③ build_ios.sh 还写死读 ~/.appstoreconnect,用椰岛新实体出包要加 config 目录开关(已知未做的口子) |
| 音频全套 在飞 roadmap 3.3 · Wesley |
thread/t-a0f9c3…1e9611 09-13 |
28 个命名音位(arrow / ballista / boss / build / button / coin / crowd / defeat / denied / early / final / fire / heavy / hold / hold_done / hold_loop / horn / ice / late / leak / menu / night / perk / rain / ship / victory / wavehorn / wipe)+ 81 个候选 wav ·
每音位音量已调(Audio/Review/manifest.json)· StreamingAssets/audio-credits.json 逐条记来源 / 作者 / 许可 URL(正是判据要的「版权来源可追溯」)·
引擎已接线(TDAudio.Review.cs + TDSim/TDFlow/TDGame/TDUI/TDCampaignUI) |
① Wesley 把试听台这一轮审完(09-12 首轮寒冰与漏怪被全否,09-13 改「只用免费素材」+ 固定批次) ② 合进 main —— 音频是进包的东西,09-17 之后进不去 ③ 目标写的是 BGM 2 + SFX 12,现在 28 个音位超了;口径要不要按实际改一下 |
| 年龄分级问卷 已完成(在 ASC 上) 不可降级 8 项之一 |
thread/app-store-age- rating-questionnai-e3f7a6 09-10 |
已应用并回读验证(2026-09-10):全球 13+,巴西与韩国 12+,越南 16+。
走 scripts/asc_age_rating.mjs 脚本填 + 回读,答案存 scripts/age_rating_rometd.json,内容变了重跑 plan 会 diff 出来 |
只差把记录合进 main(ASC 那边已经是真的了)。内容一改就要重跑 plan——这周还在加船、加登陆、加音频 |
| Android / Google Play 线 在飞 |
thread/w-google-play- ea7587 09-10 |
锁定 bundle id com.bajiao.rometd · 每次 Android 构建同时出 .aab 与 .apk · play_publish.py / play_verify.py / release_preflight.py / build_android_td.sh |
Play 不是本月硬承诺(iOS 为主)。但它顺手改了 ProjectSettings 的 bundle id,而 main 上现在还是 idle 遗留的 com.bajiao.civ——这一处早晚要合,别让两条分支各改一遍 |
| 两批 UI 重做(05ec / 0070) 连分支都没推 |
仅本地工作区 09-10 / 09-12 |
选关页紧凑地标大道 / 等大金纹卡 / 原生上边栏 / 两颗圆润星 / 手指拖动与背景视差;基础 UI 按塔库程序框扩到主菜单、选关、关卡详情 | 这是最危险的一类:不在 main,也不在任何远端分支,只在某台机器的工作区里。 spec §1 自己写着「尚未提交」「当前为本地未提交实现」。09-17 之后合进来就算新功能,要 Wesley 单条批准 |
scripts/app_privacy_rometd.json 答案是 collectsData: false → 标签「Data Not Collected」,
理由里逐条写着「没有任何第三方 SDK」「Assets/Scripts/TD 里没有任何远端主机」。main 上(09-09 客户端 / 09-10 接收端两条决策)数数已经接好并在上报:
StreamingAssets/thinkingdata_td.json 里 appid 与 serverUrl: https://ta2.cisgames.cn 都填好、disabled: false,
TDAnalytics.cs 带匿名设备 id POST 出去。这就是 Apple 定义的「收集」。invalidates_this_answer 第一条就是「Adding any analytics, ads, attribution, crash-reporting or remote-config SDK」。scripts/app_privacy_check.py 跑当前 main,
五项全 ok、退出码 0、打印「'Data Not Collected' still holds」。
原因是那道门只扫 .cs 里的字面 URL(if "http://" not in line and "https://" not in line),
而数数的地址按本项目「数值外置到 JSON」的惯例放在 StreamingAssets 里。
门的盲区恰好是这个仓库自己的写法。PrivacyInfo.xcprivacy;
(b) 首发关掉数数——把 disabled 置真、答案保持不变。
虚假申报是会被下架的那一类问题,不是会被驳回重交的那一类。
顺带:那道门也该补一条扫 StreamingAssets/*.json。PrivacyInfo.xcprivacy——全仓 0 个文件,而它是进包的,吃 09-17 死线。
分支上的答案文件自己记了该怎么做:PlayerPrefs 属于 required-reason API(NSPrivacyAccessedAPICategoryUserDefaults,理由 CA92.1),
并且要先看 Unity 6000.5 往生成的 Xcode 工程里写了什么再决定要不要手写。publish_web_build,Cloudflare 只做回退),
实测单个 data 35.8 MiB 可发,那条上限不再卡看包通道。
② 年龄分级:09-10 已在 ASC 上应用并回读验证,13+。
Docs/decisions/2026-09-07-minigrove-default-delivery-for-panel-sessions.md · scripts/age_rating_rometd.json(分支)numbers_td.json 的 towers 实有 9 条不是 10 条,且不能全叫「塔」——按 attackKind 分:
5 座开火塔(arrow/cannon/ice/ballista/greekfire)· 1 个经济建筑(house,yield)· 1 个辅助(brazier,beacon,0 伤害)· 2 个陷阱(spikes trap / mudpit mire)。
对判据是好消息:目标 6 塔,实有 9 个可放置物。1.0.0 (20260908151403)(09-08,VALID);
口头传的 20260912170939 全仓 grep 不到——分支 09-12 还在动,很可能是那天又传了一个但没落记录。请上传的人确认一句是哪个,它决定 09-25 的 L2 会不会落下。TDPaywall.ProductId 在 main 上还是 com.bajiao.romantd.fullcampaign,
而分支上已改成 com.bajiao.rometd.fullunlock 并注明「旧占位 id 作废」。ASC 上建的是新的那个。合并前别拿 main 上这个 id 去对 ASC。transport,配套海上航道 / 桥梁 / 登陆点(09-07 桥梁、09-13 船 04 网格航道、09-13 后期分段登陆)。目标 8 含 boss,已超MaxStars = 2):把上面那条的区分度问题又压了一档waveGapSeconds = 5.0):堵住「清得慢 = 挣得多」的经济漏洞;波表未随之重配c6f30686),页面 lede 一直写着「本周 08-31 → 09-06」,整个 W2 没进过这里。
线上那一版还带着 09-06 的收官读数,但它从没被提交进仓库——所以连「上次写了什么」都得去线上扒。这一版起:本周区块 = W3,每条带可核对的证据,并且这份 HTML 就在 main 上。
| 触发日 | 级别 | 砍什么 | 按 09-13 实测会不会触发 |
|---|---|---|---|
| 09-17 内容未锁 |
L1 | 12 关 → 9 关 · 3 图 → 2 图 · 6 塔 → 5 塔 · 8 敌 → 6 敌 | 内容量这一侧不会触发。 12 关(TDCampaign.cs 12 个 TDLevelDef)· 9 个可放置物 · 9 种敌人,三项全部超过阶梯目标。
「3 图」这个口径已作废——现在是 12 关各自一张地图,不是 3 图 × 4 关。真正的 L1 风险不在内容量,在「锁」这个动作:在飞的四条 + 两批本地 UI 没合进来,锁了也是锁了个残缺包。 |
| 09-25 未出 TestFlight |
L2 | 砍中文(纯英文首发)· 音频只留核心 SFX · 教程降为一张静态图 | 中文与教程这两刀已经没有意义:双语 522/522 键完全对齐、教程覆盖第 1–3 关都已在 main。
音频那一刀也不必了——分支上是 28 个音位不是 12 个。 TestFlight 09-08 已有 VALID 包,若 09-25 前能把在飞的合进来再出一个,L2 触发条件解除。 |