368 lines
57 KiB
Markdown
368 lines
57 KiB
Markdown
# G0 玩法原型实现记录
|
||
|
||
更新日期:2026-10-20。对应 [GameDesign.md](../../GameDesign.md) 的 G0 阶段,用于验证核心循环与操作手感,不等同于完整 P0 或正式服经济系统。
|
||
|
||
## 已实现
|
||
|
||
- 营地入口接入弹珠台、伙伴、教学布阵和战斗,首页资源、等级和教学目标读取当前原型存档。
|
||
- 一张可瞄准台面,范围为 -35°~35°,按钮每次调整 5°;固定步长碰撞、墙面反弹、圆形弹片偏转,落入五个奖励区后结算。零度垂直命中不会停留在弹片顶部。
|
||
- 首次发射获得捕捉券,此后每十次发射再获一张。原型池先补齐未拥有伙伴,全部获得后按固定轮转转换为碎片;正式 P0 概率池另行接入。
|
||
- 岩团团、火喵、芽芽三只伙伴,分别提供守护、输出和支援能力。初始拥有前两只,第三只通过首次捕捉获得。
|
||
- 共享训练,消费 `30×当前等级` 糖果,最高 Lv.20;T2 进化逻辑需要 Lv.5、对应碎片 40 与金币 500,并提升属性和战斗体型。
|
||
- 点击选择伙伴、点击槽位部署;占用槽位会交换,物种不能重复上阵。教学关只开放中央路线前后两个站位,另两条路线显示锁定。
|
||
- 一场真实运行的 3D 教学防守:九只敌人、三波、最后一只为首领;固定逻辑步长、伙伴攻击/治疗、敌人阻挡与突破、耐久、胜负、暂停、二倍速和主动放弃。
|
||
- 首通发金币 80、糖果 40、弹珠 3;重复挑战不再发首通奖。首次通关后有一次教学目标奖励弹珠 5。
|
||
- 弹珠每十分钟自然恢复一枚,上限 30;满额期间不累计恢复,重新降到上限下方时重新计时。
|
||
|
||
## 存档边界
|
||
|
||
G0 使用 `PlayerPrefs` 的独立账号命名空间 `AIGame.G0.v1.{pid}`,不写入现有 AIServer 的真实经济数据。登录完成、取得玩家 ID 后才绑定存档,不同 ID 分开保存。
|
||
|
||
每次变更先复制完整状态,写入双槽快照后再公布内存状态;快照记录修订号和完整性校验。读取较新的有效槽,最新槽损坏时回退另一个有效槽。未完成发射记录保存输入与唯一 ID,重启后完成同一结算,不再次扣弹珠。首通与教学目标状态持久化,重复点击不能重复发奖。
|
||
|
||
以上是 G0 历史实现边界。2026-10-16 起运行流程改用下文 G1 服务端存档;本地类只供原型规则回归,不将本地余额直接迁入联网钱包。
|
||
|
||
## 文件与资源
|
||
|
||
| 文件 | 用途 |
|
||
| --- | --- |
|
||
| `AIClient/Assets/HotUpdate/Scripts/Gameplay/PrototypeGame.cs` | 原型状态、快照存储、经济与伙伴操作、弹珠轨迹 |
|
||
| `AIClient/Assets/HotUpdate/Scripts/Gameplay/PrototypeBattle.cs` | 教学战斗模拟,与表现分离 |
|
||
| `AIClient/Assets/HotUpdate/Scripts/Gameplay/PrototypeFlow.cs` | 页面加载、输入绑定、轨迹与 3D 战场表现 |
|
||
| `Tools/generate_prototype_ui.py` | 生成四个 UI JSON,运行时不创建业务骨架 |
|
||
| `AIClient/AgentScripts/BuildPrototype.cs` | 通过 Pipeline 制作 Arena、伙伴肖像、Prefab 和资源收集规则 |
|
||
| `AIClient/AgentScripts/VerifyPrototype.cs` | G0 规则与 Prefab 回归;联网实际点击验证已迁至 `VerifyG1.cs` |
|
||
|
||
四个页面为 `UI_PrototypePinball`、`UI_PrototypePets`、`UI_PrototypeFormation`、`UI_PrototypeBattle`,位于 `Doc/UIPrefabCreater/` 与对应 UI Prefab 目录。战斗结果面板是战斗 JSON 的持久化子节点。
|
||
|
||
`Assets/Bundles/Scenes/Prototype/PrototypeArena.prefab` 包含战场、三只伙伴简模、九个敌人池、攻击弹体池、独立相机与灯光,所有业务场景对象由编辑器预制后实例化。相机只绘制第 30 层,退出战斗关闭,不改写原主相机设置。角色局部 -Z 为正面,战斗中按敌人方向旋转。
|
||
|
||
伙伴使用 Unity 原始几何体的原型模型,供后续正式美术替换。肖像由同一模型在 Unity 隔离场景渲染,不引用外部生成服务。资源登记见 `Doc/ResDesc_Model.md`、`Doc/ResDesc_Picture.md` 与 `Doc/ResDesc_Effect.md`。
|
||
|
||
## 运行与重建
|
||
|
||
打开现有 Boot 场景进入 Play。保持现有本地 AIServer 配置;登录后点击“弹珠”发射,获得足够糖果后进入“伙伴”训练,在“冒险”进行布阵与防守。其余尚未接入的入口仍保留建设中提示,不表示完整 P0 已实现。
|
||
|
||
```powershell
|
||
python Tools/generate_prototype_ui.py
|
||
python Tools/generate_home_ui.py
|
||
unity command --project-path D:/UD/AI/AIGame/AIClient set_autotick --enable true
|
||
unity command --project-path D:/UD/AI/AIGame/AIClient recompile
|
||
# 轮询 recompile_status 到 completed/up_to_date,再继续。
|
||
unity command --project-path D:/UD/AI/AIGame/AIClient recompile_status
|
||
unity command --project-path D:/UD/AI/AIGame/AIClient run_script --file AgentScripts/BuildPrototype.cs --entry BuildPrototype.Build
|
||
unity command --project-path D:/UD/AI/AIGame/AIClient run_script --file AgentScripts/VerifyPrototype.cs --entry VerifyPrototype.Domain
|
||
```
|
||
|
||
UI 仍使用 Common 九宫格、TMP 字体和 Candy 主题。Art/UI 收集四个新页面;Art/GameplayPrototype 收集 Arena,材质和肖像随依赖进入资源包。没有手工修改 Prefab、Material 或 `.meta`;未构建 Player 或上传 CDN。
|
||
|
||
## 验证范围与后续
|
||
|
||
规则验证覆盖瞄准确定性、全部 71 个整数角度落入奖励区、自然恢复时机和上限、双槽恢复、写入失败、待结算发射恢复、防重复奖励、捕捉转换、训练进化、阵容交换和战斗胜负。实际点击测试使用独立的临时玩家 ID,结束后还原真实账号并删除临时测试键,不改变真实原型进度。
|
||
|
||
最终运行截图位于 `AIClient/Assets/Screenshots/g0_*.png`。伙伴和敌人目前是简模,攻击表现为预制弹体、缩放和位移反馈;未制作正式 Animator、攻击动画和音频。
|
||
|
||
2026-10-15 验证结果:Unity 编译完成;上述规则与 Prefab 字体/九宫格检查通过。实际 EventSystem 点击走通弹珠、捕捉、共享训练、阵容交换、推荐布阵、暂停/二倍速、三波防守、精确首通发奖及一次目标领奖;已检查四页与结算截图。测试临时存档已清理,真实原型账号快照保持一致;已退出 Play,恢复原 Game View,Boot 场景无未保存修改,最终一轮无新增 Console 错误。尚未进行微信真机验证、Player 构建或资源发布。
|
||
|
||
P0 还需补足配置表、存档版本迁移、伙伴与关卡内容、完整概率池、元素/技能规则、拖拽布阵、营地建筑、日常支撑页面与真机性能验证。当前教学关的中性敌人使用简化基础伤害,不声明已完成完整的五元素克制和技能体系。
|
||
|
||
## G1 本地服务端接入(2026-10-16)
|
||
|
||
现有 Candy JSON→Prefab 页面直接接入 `PrototypeApi`。登录后读取服务端账户,实时玩法不再写 G0 PlayerPrefs,也不使用客户端时钟发放自然恢复。原型余额不迁入联网钱包;旧 G0 双槽数据仍保留。
|
||
|
||
`AIServer/src/game.cpp` 在 SQLite 单一事务中保存玩家快照和按玩家唯一的请求日志;共享连接的鉴权读写也纳入互斥。服务端处理弹珠扣费/轨迹/券、捕捉新旧伙伴、训练、进化、阵容、教学战斗开始/结算/放弃、首通和目标领取。业务拒绝持久化,修订号防止另一设备使用旧余额继续操作,原请求重放返回当前快照与原操作结果。数据库写入失败不改变任何余额或活动状态。
|
||
|
||
弹珠轨迹、落点和奖励全部由服务端返回。教学战斗开始时冻结成长和阵容、计算结果,完成时只根据该结果发奖;客户端只负责表现,不能提交胜利或奖励数值。结算须达到服务端最短播放时间。重新进入会恢复同一次弹珠或挑战;暂停和恢复不会重复创建活动。
|
||
|
||
客户端按端点和玩家保存一个未确认请求,收到完整有效响应才清理。网络失败时提供重试并锁定新业务操作,401 自动重新登录同一游客再提交原请求。未完成弹珠会继续播放并结算;未完成教学战斗可从冻结快照重新播放。不是完整逐帧反作弊协议,战中输入玩法需要另行扩展。
|
||
|
||
验证已通过:原生事务测试(鉴权、拒绝重放、16并发重试、存储故障回滚、71个方向、成长、胜负、持久化);HTTP边界测试(账户隔离、24并发重试、进程重启、一次结算、维护);Unity 编译和 G0 规则/字体/九宫格回归;独立服务/账户上的 EventSystem 实际点击(弹珠→捕捉→训练→换阵→暂停/2倍速→教学胜利、准确80金币/40糖果/3弹珠);目标领奖、丢失确认重试、飞行中重进、401/空会话续期及过期修订号下放弃战斗重试不发奖。
|
||
|
||
本轮只更新代码、协议与测试,没有生成新的美术或修改页面骨架;继续复用已登记的 G0 资源。开发服务 `127.0.0.1:8080` 已更新,保留原用户数据库。未部署生产服、构建 Player、上传 CDN 或进行微信真机验证。正式 P0 尚需配置表提取、迁移策略、全量内容与概率池;现有固定教学池不能当作正式抽取系统。
|
||
|
||
收尾:独立测试服务已关闭,真实开发账户恢复且余额/进度未受测试影响;已退出 Play 并恢复验证前 Game View。最终 Console 游标365,本轮349之后无新增错误。
|
||
|
||
## G2 首章前五关与统一配置(2026-10-16)
|
||
|
||
本轮交付选关、关卡准备、逐关解锁和独立首通奖励。营地主界面“冒险”进入五关列表,可重试已通过关卡;通关结算提供下一关入口。关卡界面显示敌人元素、类型、建议训练等级、战术提示、首通奖励与已领取状态;建议等级不是进入门槛。
|
||
|
||
| 关卡 | 内容 | 建议训练 | 首通:金币 / 糖果 / 弹珠 |
|
||
| --- | --- | --- | --- |
|
||
| 1-1 营地初守 | 保留原教学规则,中性敌人 | Lv.1 | 80 / 40 / 3 |
|
||
| 1-2 草丛来客 | 草元素,火喵有克制优势,加入队长 | Lv.2 | 90 / 50 / 3 |
|
||
| 1-3 疾风小径 | 火元素,加入疾跑怪 | Lv.3 | 100 / 60 / 3 |
|
||
| 1-4 岩壳阵线 | 岩元素,加入有防御的硬壳怪 | Lv.4 | 110 / 70 / 3 |
|
||
| 1-5 溪口大角王 | 水元素,混合敌人与强化首领 | Lv.5 | 200 / 100 / 5 |
|
||
|
||
唯一配置源是 `Config/Gameplay/greenfield.json`。服务端CMake将JSON与内容哈希嵌入程序,客户端从响应取得同一份配置;训练/进化、伙伴生命/攻击/射程/治疗、敌人属性、元素环、关卡波次与奖励由此读取。弹珠奖励与主要物理系数也来自配置,台面几何及固定模拟步长仍是当前引擎约定,改变几何须同步调整JSON→Prefab生成器。
|
||
|
||
新战斗冻结完整配置、关卡和阵容,重新进入仍播放同一份配置。第二关起启用 `max(1,floor(攻击×元素系数−防御))`,伤害包含火→草→岩→电→水→火的单向克制;治疗不参与元素乘算。第一关继续使用原G1基础伤害,以兼容已开始的教学战斗。敌人暂复用已有简模,用移动速度、耐久、伤害、防御及队长/首领体型区分,不是五套正式美术。
|
||
|
||
服务端存档schema升级为2,新增选中关卡和五个首通标志。旧schema=1余额、目标、已有伙伴和阵容不变;旧首通只对应1-1,不补发奖励。旧未完成弹珠沿用保存轨迹,旧未完成挑战沿用原奖励和legacy表现;未知未来schema拒绝处理,不清空账户。新增关卡数据与迁移在同一事务落盘。
|
||
|
||
界面全部通过 `Tools/generate_prototype_ui.py` 生成JSON,再由 Pipeline 执行 `BuildProgression.Build` 生成五个Prefab;无运行时业务骨架。选关页、布阵提示、伙伴技能说明、弹珠双资源落区和结算按钮沿用Candy。新资源登记在 `ResDesc_Picture.md` 与 `ResDesc_Config.md`。
|
||
|
||
验证:服务端1011项断言通过,覆盖五关按推荐等级可通关、越关拒绝、逐关首通、重复挑战不发奖、进程重连与两类G1迁移;66组C++与Unity模拟对照全部一致(55次胜利、11次失败,含旧待结算战斗);五个Prefab的字体/九宫格检查通过。独立服务/账户实际点击走通锁定关卡列表、训练与换阵、首关通关/重试、下一关、回到关卡列表及第二关草元素战斗;1-2准确发90金币/50糖果/3弹珠并解锁1-3。schema=2下丢失确认/飞行中重进、401/空会话及放弃战斗的过期修订号重试回归也通过。已检查八张截图,位于 `Assets/Screenshots/progression_*.png`。
|
||
|
||
配置重建与对照检查:
|
||
|
||
```powershell
|
||
cmake --build AIServer/build-g1 --config Release
|
||
AIServer/build-g1/Release/game_tests.exe D:/UD/AI/AIGame/Tools/output/progression_parity.json
|
||
python Tools/generate_prototype_ui.py
|
||
unity command --project-path D:/UD/AI/AIGame/AIClient recompile
|
||
# 轮询 recompile_status 完成后继续;Edit Mode中生成Prefab。
|
||
unity command --project-path D:/UD/AI/AIGame/AIClient run_script --file AgentScripts/BuildProgression.cs --entry BuildProgression.Build
|
||
unity command --project-path D:/UD/AI/AIGame/AIClient run_script --file AgentScripts/VerifyProgression.cs --entry VerifyProgression.Domain
|
||
```
|
||
|
||
当前仍只开放单路线前后两槽、三只伙伴、固定教学捕捉池,属于G2内容的第一批。P0余下的15关、更多伙伴及正式捕捉池、多路线、T2技能强化、营地建筑、任务与设备性能验证尚未完成。未构建Player或部署生产服。
|
||
|
||
本轮收尾:已恢复真实开发账户,未向其发送测试玩法操作;独立18081测试服务已关闭,开发8080服务保持健康。Unity已退出Play、恢复原Game View,Boot场景无未保存修改;Console游标403,本轮365之后无新增错误。
|
||
|
||
## G2 五伙伴与首章捕捉池(2026-10-16)
|
||
|
||
现行实现覆盖岩团团、火喵、芽芽、电系闪闪雀、水系泡泡龟。后两者的几何简模、材质、透明肖像和Arena绑定已通过Pipeline制作,替代原先仅三只伙伴的容量;仍属于原型美术。伙伴列表、布阵页更新为五只,新捕捉页通过JSON→Prefab制作,沿用Candy,未恢复Studio/Mint。
|
||
|
||
首章普通池五种等权20%,首次教学固定芽芽并独立计数。普通捕捉连续4次重复后下一次保证未收集伙伴,获得新伙伴清零;集齐后暂停保底,重复转20对应碎片。页面同时展示基础概率和本次条件概率、保底进度、券数量与最近结果。服务端选择随机结果,不接受客户端物种/种子;扣券、次数、保底、结果与碎片同事务落盘。同一请求重试只返回原回执;客户端丢失确认后恢复原结果弹窗,不再次抽取。
|
||
|
||
schema升级为3,`stages/shards`扩展为5项,新增教学完成、普通捕捉次数和连续重复计数。schema1/2余额、前三伙伴进化/碎片、阵容、目标、关卡进度与待完成活动保留;已拥有芽芽则不重发教学,新增两只初始未拥有。旧G2三伙伴挑战继续按保存的三伙伴配置模拟与发奖,不混用新配置;旧G1 legacy路径继续保留。
|
||
|
||
验证:服务端1284项断言通过,包含各概率桶、保底边界、全部集齐、教学独立、重复20碎片、16并发同请求、日志写入故障回滚、持久回执、G1/G2迁移及冻结旧配置。97组C++/Unity战斗对照一致(86胜/11负),覆盖新水/电队伍和旧待完成挑战;六个玩法Prefab的字体、九宫格与五伙伴资产绑定检查通过;原G0规则兼容回归通过。HTTP隔离、24并发重试、重启与维护检查通过。
|
||
|
||
实际EventSystem点击在独立18081测试账号上通过:教学捕捉→五卡列表→训练/换阵→首战;四次重复边界展示缺失泡泡龟100%→单券保底→集齐暂停→随机重复20碎片;闪闪雀后排/泡泡龟前排通过1-2,持久首通回执与钱包准确增加90金币/50糖果/3弹珠;丢失捕捉确认后重放原请求,券/次数/碎片仅变一次且原结果弹窗可恢复。截图与资源已按类型登记。
|
||
|
||
复验入口:`VerifyCollection.Assets`、`VerifyCollection.PityAndBattle`、战斗结束后的`FinishBattle`、`LostAcknowledgement`、`SettledBattle`、`FreshTutorial`;确定性保底夹具`Tools/seed_collection_test.py`只允许修改`Tools/output/g1-live`内的隔离数据库和`g1live_`账号。新账号首次捕捉页已经复验:教学芽芽100%、普通次数0、无伪造的最近结果。
|
||
|
||
本轮完成首章五伙伴池。P0目标中另五种伙伴、其余15关、多路线/T2技能强化、营地建筑、任务、经济曲线与设备验证仍未完成;未构建Player或部署生产服。
|
||
|
||
收尾:真实开发账号已恢复,金币/糖果/发射数/等级快照检查不变;独立18081测试进程已按路径/端口核验并关闭,8080开发服务健康。Unity编译完成并退出Play,已恢复原Game View,Boot场景无未保存修改;Console游标444,本轮403之后无新增错误。
|
||
|
||
## G2 营地设施与固定装饰槽位(2026-10-16)
|
||
|
||
首页底部“营地”接通营地生活面板。主营帐复用探险家档案;完成首次发射开放训练屋(复用共享训练/进化);通过1-1开放弹珠树展示/入口,通过1-3开放休息区,通过1-5开放建造台。锁定设施显示条件并禁用操作。弹珠树读取原钱包与恢复锚点,倒计时基于服务端时间加单调时间推算,余额只由服务端确认;没有额外生产、领取或产量升级。
|
||
|
||
休息区显示五伙伴收藏,选择已拥有伙伴后可打招呼,服务端保存休息伙伴和累计互动次数,重复请求不重复计数;客户端驱动已制肖像节点缩放反馈,不额外发金币/糖果/弹珠/券,没有新AnimationClip。
|
||
|
||
建造台提供三处固定装饰位置,每种最多拥有一件。小旗/盆栽/路灯测试价120/180/240金币,配置来自`greenfield.json.camp`。先选装饰和位置显示半透明预览与明确费用;撤回、离开页面不提交扣费。点击“确认购买”才提交服务端事务;已有装饰免费放置/移动,移动清空旧位置,占用位置需先收回,收回保留库存且无退款。该看板是当前营地布局表现,首页背景中的房屋尚不可点击,未制作3D营地行走或自由摆放。
|
||
|
||
服务端新增`camp.place/store/interact`,沿用身份、修订号、在途活动互斥和SQLite操作日志;购买的钱包、库存、布局与回执同事务落盘。丢失响应时重试同一请求,原费用/位置回执可恢复并展示,不二次扣款。schema1/2经现有迁移后继续升级,schema3→4只初始化空装饰拥有/布局与休息字段,保留钱包、伙伴、捕捉保底、关卡、回执及在途活动,不补发资源。客户端继续支持旧冻结战斗配置没有camp字段。
|
||
|
||
资产:`BuildCampAssets.cs`经Pipeline制作三件原创几何简模与透明肖像;`generate_prototype_ui.py`生成营地46节点和建造台50节点JSON,由项目转换器制作Prefab。控件沿用有效九宫格/TMP,原五伙伴与Home图标复用,资源已登记至Model/Picture/Config描述文件。`BuildProgression.Build`现生成八个玩法Prefab。
|
||
|
||
验证:1375项服务端断言通过,新增锁定、参数/类型、服务器价格、占位拒绝、免费移动/仓库、余额不足、旧修订号、在途互斥、互动无奖励、16并发重试、日志故障全事务回滚、重开连接和schema3迁移;HTTP鉴权、隔离、24并发重试、进程重启和维护检查通过。97组C++/Unity战斗对照保持86胜/11负,八个Prefab字体/九宫格与营地资产绑定检查通过。
|
||
|
||
独立18081服务/账号的真实点击通过:首页入口/主营帐/锁定状态、首次发射开启训练屋、1-3伙伴打招呼且四类资源不变、弹珠树读取同一库存、1-5建造台、预览撤回不扣费、购买小旗120仅一次、移动/收回/仓库免费、占位禁止确认、丢失盆栽购买确认后原请求重放只扣180、重新绑定会话保留布局/休息伙伴、金币239时禁止购买240的路灯且可撤回。已检查锁定、休息、预览、仓库、恢复等画面并微调文字留白。
|
||
|
||
复验:`VerifyCamp.Assets/Start/Rest/BuildFlow/ReviewPreview/Insufficient`,配合`Tools/seed_camp_test.py rest|build|poor`。夹具只接受`Tools/output/g1-live`内数据库和`g1live_camp_`账号;不会修改真实进度。开发服务8080已更新并保留原数据库,更新前备份在`Tools/output/camp-before.db`。未构建Player或发布生产服/CDN。
|
||
|
||
这批完成营地设施与装饰第一版;完整20关/10伙伴、多路线、T2技能强化、营地行走/自由摆放、任务签到、经济曲线与设备验证仍未完成。
|
||
|
||
收尾:原首页115项资源/事件/点击/重连绑定检查及G0领域兼容回归通过;首页仍发`MainHUD.Home`,由`GameplayBootstrap`路由到营地,实际进出点击复验通过。开发账号已恢复,金币/糖果/发射数/等级快照检查不变;隔离18081服务已核验并关闭,8080开发服健康。Unity编译完成、退出Play、恢复原Game View,Boot场景无未保存修改;Console游标529,本轮444之后无新增错误。
|
||
|
||
## G2 每日任务与七日累计登录(2026-10-16)
|
||
|
||
首页任务入口打开任务/目标页,签到入口打开七日页。任务页保留长期教学首通目标,并增加每日三项:结算3次弹珠、正常结束1场冒险、与伙伴打招呼1次,各发5弹珠。进度来自服务端已提交的`shot.finish/battle.finish/camp.interact`,封顶3/1/1;主动离开、活动开始、页面打开、客户端自报与请求重放不计入,正常失败的冒险也可完成任务。互动仍需先通过1-3;玩家可用“前往完成”进入对应玩法。
|
||
|
||
日界为服务器UTC+8零点,首次进入新日的存档事务重置每日进度/领取标志,未领每日奖励过期。跨日弹珠/冒险按结算日计数;日任务领取携带原日键,旧日的新提交不能误领新日任务,原先已成功的领取请求跨日重放则返回原奖励回执。时钟回退不回滚已记录日键、不重复累计登录。
|
||
|
||
累计登录按不同访问日增加1,跳过多天也只增加1,上限7,非连续登录;配置奖励为弹珠10/5/5/10/5/10/20。已解锁未领的项保留,允许任意顺序领取;无付费补签、漏登重置或七日循环。所有领取与钱包、领取标志、操作日志同事务落盘,写入失败整体回滚;丢失确认后同请求重放只发一次,并在客户端恢复“奖励已领取”弹窗。弹珠奖励可超过30,原自然恢复上限与暂停规则不变。
|
||
|
||
实时存档schema5新增日键/三项进度与领取、累计登录天数/七项领取。schema4迁移保留钱包、教学/关卡、捕捉、营地、回执和在途活动;不追溯旧累计发射/互动作为今日进度,不自动发签到奖励,当次访问只登记第一个累计登录日。schema1~3继续链式迁移;冻结旧战斗不要求daily字段。配置源仍为`greenfield.json`,新增`daily`由CMake嵌入并生成版本哈希。
|
||
|
||
UI通过`generate_prototype_ui.py`生成40节点任务页、54节点签到页,`generate_home_ui.py`增加首页任务红点;Pipeline执行`BuildDaily.Build`调用JSON转换器生成三份Prefab,沿用Candy、Common有效九宫格、Home弹珠图标和TMP。没有新增美术贴图/模型/音效。红点只在教学/每日目标或签到奖励可领时显示,领取后清除,首页事件与重连契约保留。
|
||
|
||
验证:1493项原生断言通过,覆盖事件来源、跨零点、过期领取、旧回执重放、时钟回退、漏登、七日封顶/结束、16并发任务和签到重试、日志故障回滚、持久存档及schema4迁移/在途弹珠。HTTP鉴权/账户隔离/24并发重试/进程重启/维护回归通过;97组双端战斗对照仍为86胜/11负,十个玩法Prefab字体/九宫格与115项首页检查通过,G0领域规则兼容通过。
|
||
|
||
独立18081服务与`g1live_daily_`账号实际点击通过:首日签到+10一次且未来项锁定、同日重进不增登录天数、三次真实发射推进任务并+5一次、真实教学胜利准确80金币/40糖果/3弹珠并推进冒险任务、教学目标+5与每日冒险+5分开领取、真实休息互动无直接资源但任务+5、三项全部领取后红点清除。累计3日/7日的UI夹具验证未领奖励保留、未来项锁定、七日完成和不循环;丢失签到确认后原请求只发5一次、展示回执并清理队列,会话重进保留标志。schema5下丢失弹珠确认/飞行中重进及401/空会话续期回归也通过。跨日与七日累计规则由原生受控时间测试覆盖,未修改系统时钟。
|
||
|
||
复验入口:`VerifyDaily.Start/Finish/RestAndClaim/EarnedSignin/Completed/FinalViews`,配合`Tools/seed_daily_test.py rest|signin3|complete`。夹具只允许修改`Tools/output/g1-live`内数据库与`g1live_daily_`账号,真实账号不参与奖励测试。资源已按Picture/Config登记;8080开发服已更新,更新前数据库备份为`Tools/output/daily-before.db`。未构建Player、上传CDN或部署生产服。
|
||
|
||
这批完成三个每日目标与七日登录第一版。更多主线任务/成就、免费补给商店、背包/宝箱/邮件、完整20关/10伙伴、多路线/T2技能、自由营地与设备性能验证仍未完成。
|
||
|
||
收尾:真实开发账号已恢复,金币/糖果/发射数/等级快照检查不变,未向其发送测试领奖操作;独立18081服务已按路径/端口/数据库参数核验并关闭,8080开发服健康。Unity编译完成、退出Play并恢复原Game View,Boot场景无未保存修改;Console游标569,本轮529之后无新增错误。
|
||
|
||
## G2 背包与补给商店(2026-10-16)
|
||
|
||
首页背包接通四分类:消耗品显示捕捉券数量、来源与永久有效说明,可前往捕捉/弹珠台;伙伴材料显示五种碎片及进化条件,点击定位对应伙伴;装饰显示拥有数量、仓库/放置位置与布置入口;活动道具暂无内容,提供空状态。金币/糖果/弹珠只显示原钱包,捕捉券/碎片/装饰直接读取原字段,不维护另一份库存。
|
||
|
||
商店分免费补给、金币商品与营地装饰。初始每日免费5弹珠;通过1-1可用100金币购买20糖果,每日3次;通过1-3可用300金币购买1捕捉券,每日1次。金币商品先显示获得内容、费用、购买后余额和当日剩余,确认才提交;取消不扣费。商品到账直接供现有训练/捕捉使用。装饰页与背包共用原建造台,预选同一物种后选择位置,已拥有装饰放置/移动免费。
|
||
|
||
配置源新增`shop.goods`,服务端`shop.buy`校验日键、关卡、余额、限购,以配置价格发确定奖励,不接受客户端奖励/价格/解锁。schema5→6只初始化三项`shopBought`,保留钱包、任务/签到、营地、伙伴、回执和在途活动;日切与任务共用UTC+8日键,未用次数不累计。扣费、到账、次数和请求日志同事务;失败回滚,跨日原请求重放只恢复原回执、不消耗新日库存。免费补给允许弹珠超过自然恢复上限,原自然恢复规则不改。旧冻结战斗可没有shop配置。
|
||
|
||
两页由`generate_prototype_ui.py`生成85/61节点JSON,Pipeline执行`BuildInventory.Build`经项目转换器生成Prefab,沿用Candy、Common有效九宫格、Home图标和原伙伴/装饰肖像。无新增美术贴图/模型/音效。`BuildProgression`现包含十二页;首页骨架与事件契约不变,旧首页实际点击检查更新为验证已接通页面及剩余支撑弹窗。
|
||
|
||
验证:1620项原生断言通过,覆盖免费/价格/解锁/限购、伪造输入、16并发付费和免费重试、库存与钱包回滚、余额不足、旧修订号、在途互斥、跨日旧请求重放、时钟回退、持久化与schema5迁移。新增旧schema5冻结战斗不含shop的对照,98组C++/Unity结果一致(87胜/11负);十二页字体/九宫格与115项首页检查通过,HTTP鉴权/账户隔离/24并发/进程重启/维护及G0领域兼容回归通过。
|
||
|
||
独立`g1live_inventory_`账号实际点击通过:四类背包/空状态/来源入口,锁定金币商品,每日免费+5一次并在重进后保留次数;确认/取消不提前扣款,购买糖果三次正确售罄,丢失糖果确认后原请求只扣100并发20一次;捕捉券到账后真实消耗捕捉,糖果真实用于训练,背包同步减少;材料入口定位伙伴,装饰入口预选模型,免费放置后背包显示位置;金币99时有库存但禁止100金币购买,受控日界夹具刷新后可重新领取5弹珠。首页八个入口与营地通过实际EventSystem点击;schema6下教学领奖、丢失弹珠确认/飞行中重进及401/空会话续期回归通过。测试脚本切分类后等待渲染帧再点击;跨日规则由原生受控时间覆盖,未改系统时钟。
|
||
|
||
复验入口:`VerifyInventory.Start/Purchases/Decorations/Insufficient/Refreshed`,配合`Tools/seed_inventory_test.py coins|decor|poor|reset`。夹具仅允许`Tools/output/g1-live`内数据库和`g1live_inventory_`账号,不修改真实数据。资源已登记至Picture/Config;8080开发服务已更新,更新前备份为`Tools/output/inventory-before.db`。未构建Player或发布生产服/CDN。
|
||
|
||
本批是现有库存与补给商店第一版;通用物品表、批量/堆叠溢出、宝箱/邮件、更多任务/成就、完整20关/10伙伴、多路线/T2技能、自由营地及设备验证仍未完成。
|
||
|
||
收尾:真实开发账号已恢复,金币/糖果/发射数/等级快照检查不变,未向其发送测试购买或免费领取;隔离18081测试服务已核验并关闭,8080开发服健康。Unity编译完成、退出Play并恢复原Game View,Boot场景无未保存修改;Console游标605,本轮569之后无新增错误。
|
||
|
||
## G2 小镇邮件与版本一致性(2026-10-18)
|
||
|
||
检查时服务端已有未完成的schema7邮件迁移/领取代码,但canonical配置缺mail、客户端只接受schema6,重新构建后原生测试在首次读取失败。本轮补齐配置校验与端到端业务,没有重置钱包或回退存档。当前服务器为schema7;客户端接受schema6/7滚动更新,schema6的邮件入口显示稍后重进。Unity的JsonUtility会为缺失的新嵌套字段创建空对象,已专项兼容旧服务和冻结战斗配置;schema7实时配置仍必须包含完整mail。
|
||
|
||
首页邮件入口打开Candy邮件面板:每页五封,显示未读/已读、附件待领/已领、到期和无附件通知;正文支持滑动,单封或一键最多20封领取。首页红点仅显示有效未读信或有效未领附件;打开邮箱不自动领,选择邮件才标已读。倒计时用服务端时间加单调时钟,过期附件禁领,保留已读/已领/到期记录。
|
||
|
||
`greenfield.json.mail`定义7天有效的欢迎补给(糖果20、弹珠5)和无附件营地通知。schema6→7只保存这两封记录,不自动发资源;已有钱包、伙伴、关卡、捕捉、营地、日常、购买次数、旧回执与在途活动保留。旧冻结战斗缺mail时继续按保存配置结算。schema7后不会重复创建初始信;当前不含运营投递、群发和删除邮件接口,修改initial不会自动给旧schema7账号追加信件。
|
||
|
||
`mail.read/claim/claimAll`沿用鉴权、revision、在途活动互斥及SQLite操作日志。单封附件、钱包与已读/已领标志原子提交;批量逐封返回成功/已领/过期/无附件/不存在,坏项不阻塞其他有效附件,重复ID/错误类型/超20封则整单拒绝。存储失败全部回滚,同请求重试/进程重启/跨日/过期后重放恢复原回执,不再次发奖。客户端保留未确认请求,匹配完整有效邮件回执后清理,并恢复领取结果弹窗;缺失JSON奖励、错误回执ID等不确认。
|
||
|
||
资源:`generate_prototype_ui.mail()`生成42节点JSON,Pipeline执行`BuildMail.Build`通过现有转换器生成`UI_PrototypeMail.prefab`,复用Common九宫格与TMP,无新增外部贴图/模型/动画/音频。`BuildProgression`与双端对照资产检查现包含13页。邮件JSON/Prefab、11张隔离实测截图及配置已分别登记Picture/Config描述文件。
|
||
|
||
验证:原生1717项断言通过,新增首次建信不发钱包、已读不发奖、单封/批量防重复、16并发、错误/混合批量、到期边界与时钟回退、单封/批量日志故障回滚、连接重开、schema6迁移和旧冻结战斗;99组C++/Unity战斗对照一致(88胜/11负);13页字体/九宫格检查和G0领域兼容回归通过。HTTP用独立进程/数据库验证24并发弹珠与邮件重试、账户隔离、进程重启回执、真实已读/领取与维护。
|
||
|
||
独立18081服务/`g1live_mail_`账号实际EventSystem点击通过:未读红点→读信不发奖→精确糖果20/弹珠5一次→通知无附件→红点清除→会话重进不重复;8封混合状态分页、过期禁领、长正文滚动;三封批量准确金币7/糖果20/弹珠3/券1;丢失确认后重放原请求只发5弹珠,已读/已领/列表文案同步、恢复结果弹窗并清理队列;空邮箱禁用领取。已检查详情、批量结果、到期、长文底部、重放和空状态画面。
|
||
|
||
复验:`VerifyMail.Assets/Start/Batch/LostAcknowledgement/Empty/Cleanup`,配合`Tools/seed_mail_test.py mixed|lost|empty`。夹具只允许`Tools/output/g1-live`中的`mail-db.path`指向的隔离数据库与`mail-account.txt`中的`g1live_mail_`账号;旧营地/每日/收集/背包夹具增加schema7兼容。原生及双端导出仍使用`game_tests.exe Tools/output/progression_parity.json`,HTTP运行`python Tools/test_game_http.py`。
|
||
|
||
开发服更新前使用SQLite在线备份到`Tools/output/mail-before.db`,按可执行路径/端口核验后重建并重启8080。真实账号恢复并完成6→7迁移;与备份逐账号比较仅schema/mails/revision有变化,钱包、进度及操作日志总数不变,两封真实邮件均未读/未领。隔离18081进程已按路径/数据库核验并关闭,8080健康;Game View与原有Play状态恢复,Boot不保存临时变更。测试期间Play切换曾使Pipeline请求线程中断,重连后全部实测通过;编辑器保留该工具错误及重启开发服造成的两条WS断连警告,未清空历史Console。未构建Player、上传CDN、部署生产服或进行微信真机验证。
|
||
|
||
下一批优先三路线/六槽布阵与T2技能,再补关卡/伙伴内容、宝箱/设置及G3体验性能验收;本轮没有扩大至完整P0。
|
||
|
||
## G2 三路线布阵与 T2 技能(2026-10-18)
|
||
|
||
本轮在已有五伙伴/五关内容上完成三路线布阵的服务端权威规则与客户端表现。1-1、1-2 仍分别开放 1 条路线,1-3、1-4 开放 2 条,1-5 开放 3 条;每条路线有前后两个槽位,部署时同一伙伴只能出现一次,占用槽位会交换,空路线会记录突破。拖动布阵使用已登记的 `FormationDragHandle`,拖回伙伴区撤下,推荐布阵按当前开放路线填充。
|
||
|
||
每个伙伴增加 T1/T2 技能:岩团团护盾、火喵范围攻击、芽芽治疗、电系闪闪雀连锁攻击、水系泡泡龟减速。T2 使用既有共享训练等级、碎片与金币条件,并通过已制作的技能脉冲、护盾、减速标记和 T2 冠饰表现。首领对减速按配置缩短效果,治疗和护盾不套元素伤害乘算;战斗开始冻结完整配置、关卡和阵容,结算仍只接受服务端结果。
|
||
|
||
`AIServer/tests/game_tests.cpp` 新增三路线槽位权限、跨路线交换、空槽撤下、请求重放、存储故障回滚、五技能覆盖、首领控制衰减、治疗/护盾效果及多关卡/等级/进化矩阵。服务端原生测试现为 3505 项;C++ 模拟导出的 `Tools/output/progression_parity.json` 与 Unity `VerifyProgression.Domain` 对照为 189 组(150 胜 / 39 负),十三个业务 Prefab 的字体与九宫格检查通过。`python Tools/test_game_http.py` 的隔离 HTTP 回归也通过。
|
||
|
||
修正了配置中技能名称和三关战术提示的编码占位符,新增 `bossControlScale` 配置并在 C++/Unity 两端执行一致校验。没有生成新贴图、模型、动画或音效,因此无需新增资源登记;继续复用既有 Arena、伙伴与 UI 资源。
|
||
|
||
仍待完成:完整 10 伙伴/20 关内容、正式多路线关卡设计、T2 外观替换为正式美术、宝箱/设置、自由营地与 G3 真机性能验收。未构建 Player、上传 CDN 或部署生产服。
|
||
|
||
## 战斗角色显示修复(2026-10-18)
|
||
|
||
问题原因是三路线资源脚本 `BuildLanes.Build` 已提交但尚未执行,`PrototypeArena.prefab` 缺少 `DeploymentMarkers`、`SkillEffects`、`Shield`、`SlowMark` 与 T2 冠饰等节点;客户端在刷新战斗时于路线标记节点空引用,后续角色表现因此没有更新。已通过 Unity Pipeline 执行 `BuildLanes.Build` 持久化战场预制体,并为 `PrototypeFlow.RefreshBattle` 增加缺失表现节点保护,避免旧缓存或不完整预制体导致每帧异常。实机 Play Mode 截图确认岩团团、火喵已显示,战斗继续推进;本轮无新增 Console 错误。
|
||
|
||
## G2 宝箱奖励页(2026-10-19)
|
||
|
||
首页“宝箱”入口接通奖励页:每日宝箱、首通掉落箱与自选箱。每日宝箱每天领取1个、只进入库存不直接发奖;1-1、1-3、1-5首通各掉落一个箱(绿野补给箱、伙伴碎片自选箱、溪口大礼箱),重复挑战不再掉落。打开固定箱直接发放金币/糖果/弹珠/捕捉券;自选箱先选一种伙伴碎片(×10)再打开。箱子永久有效,暂不做过期转材料。
|
||
|
||
配置源仍为`greenfield.json`,新增`rewards`(三种箱的内容与自选、每日箱ID、首通掉落表),CMake嵌入并生成新版本哈希,客户端读取同一份配置。服务端新增`chest.claimDaily/chest.open`,扣箱、发奖、写操作日志同一事务;每服务器日可领一次,与商店限购共用UTC+8日切。`battle.finish`首通回执新增`chest`字段。业务拒绝`invalid_chest/chest_missing/chest_claimed/invalid_choice`持久化。
|
||
|
||
schema升级为8:7→8只新增`chests:[0,0,0]`与`chestDailyClaimed`,迁移不发放免费箱。客户端兼容schema6~8服务滚动更新,schema8以下宝箱入口提示稍后重进。客户端按动作校验回执:打开箱必须携带至少一项非零奖励,每日箱回执不得携带奖励(JsonUtility会把缺失奖励物化为全零对象)。
|
||
|
||
UI通过`generate_prototype_ui.py`新增`chest()`生成48节点JSON,Pipeline执行`BuildChest.Build`经项目转换器生成`UI_PrototypeChest.prefab`;`BuildProgression`与双端对照资产检查现包含14页,首页`Dot_Rewards`改由每日可领或拥有箱子驱动,首页115项检查仍通过。
|
||
|
||
验证:原生3598项断言通过,覆盖空库存、每日箱只入库、固定箱精确奖励、自选箱选择校验、重复/丢失回执、首通掉落只一次、过期修订号、在途互斥、日切与时钟回退、16并发、日志故障回滚、重连持久化及schema7迁移;HTTP隔离进程验证24并发每日箱/开箱只发一次与账户隔离;C++/Unity对照189组一致(150胜/39负)。独立18081服务与`g1live_chest_`账号实际EventSystem点击通过:首页入口与空状态、每日箱入库不发奖、固定箱精确60金币/30糖果/2弹珠一次、自选芽芽碎片+10、丢失确认恢复原回执;首页入口实际点击检查扩为9项入口与营地。已检查五张截图,Console无新增错误。测试后真实开发账号由备份比对仅schema/revision变化,钱包80金币/40糖果/48弹珠、等级与发射数不变;隔离服务已关闭,8080开发服务更新并健康。未构建Player、上传CDN或部署生产服。
|
||
|
||
下一批建议:设置面板(音乐、音效、画质、振动、账号信息,本地偏好+账号信息读取),随后补齐内容量与正式战场。
|
||
|
||
## 绿野战场方案 A 接入开战(2026-10-20)
|
||
|
||
`Battlefield_Greenfield` 已嵌进 `PrototypeArena/Greenfield`,方块地面关闭,场景不摆桥。开战相机只画第 30 层,Greenfield 整棵子树已统一设层。隔离 18081 Play Mode 验证 1-1 加载绿野土路与装饰,截图 `battlefield_play_battle.png`。开发 8080 未改动真实账号。未构建 Player、上传 CDN 或部署生产服。
|
||
|
||
## 设置面板(2026-10-20)
|
||
|
||
首页设置入口接通 `UI_PrototypeSettings`:音乐/音效开关、画质三档、振动(桌面禁用)、账号 ID/访客名与重新登录说明;删除账号按钮禁用并提示 P0 未开放。偏好存本机 PlayerPrefs,重新登录走 `GameNet.RenewSession`,不删云端进度。JSON→Prefab,`VerifySettings` 资产与 Play 点击通过,截图 `settings_page.png`。玩法页增至 15 个。未构建 Player、上传 CDN 或部署生产服。
|
||
|
||
下一批建议:补齐内容量(更多伙伴/关卡)与正式美术/音频。
|
||
|
||
## G2 十伙伴与二十关(2026-10-20)
|
||
|
||
内容量扩到 P0 目标:`greenfield.json` 现为10只伙伴、20关。新增岩甲犀(岩·控制·减速)、烈焰狮(火·输出·双目标)、藤蔓灵(草·支援·治疗)、雷鸣豹(电·输出·双目标)、潮汐鲸(水·守护·护盾),每元素两只,覆盖守护/输出/支援/控制四种定位;捕捉池十项等权10%,教学仍固定芽芽,自选箱十个碎片选项。关卡为1-1~1-10「绿野初程」与2-1~2-10「溪谷守望」,每关仍为三波九个敌人、五类敌人;后半段`hpScale`最高4.0、`attackScale`最高2.35,1-5起三路线。首通掉落扩展为1-1、1-3、1-5、1-10、1-15、1-20。
|
||
|
||
服务端`autoDeploy`改为按配置选人(前排最短射程、后排最长射程),不再硬编码五个伙伴;营地互动与进化的伙伴边界改为配置长度。存档schema升级为9:8→9只把`stages/shards`扩到10、`clearedStages`扩到20,新伙伴未拥有、新关卡未通关,不发伙伴、首通奖或宝箱。客户端兼容schema6~9滚动更新。
|
||
|
||
配置超过MSVC单字符串字面量上限后,`AIServer/CMakeLists.txt`改为按8000字节分块生成相邻字面量,拼接后与原文件逐字节一致;版本哈希仍取整份JSON的SHA256。
|
||
|
||
UI按双列/双行重排:伙伴、捕捉、背包材料、营地休息区为2×5卡片,布阵伙伴栏为5×2,选关页改为两个章节标签各十行,宝箱自选为2×5。Arena与肖像扩到十套简模,技能特效与T2冠饰扩到十个槽位;伙伴卡只显示元素/定位/生命/攻击/碎片,完整技能说明放在选中区,避免小卡溢出。
|
||
|
||
验证:原生4335项断言通过,覆盖10/20配置校验、schema8→9迁移、十伙伴捕捉池与保底、20关顺序解锁与推荐等级通关、六处首通掉落、16并发与日志故障回滚;HTTP隔离进程24并发弹珠/邮件/宝箱重试、重启回执与账户隔离通过。C++/Unity对照227组一致(120胜/107负),包含十伙伴技能与20关矩阵;十六个Prefab字体/九宫格通过。实际EventSystem点击走通两章标签切换、十伙伴/捕捉/宝箱列表与首页入口,检查截图`roster_*.png`。真实开发账号与备份比对仅schema/revision变化,钱包80金币/40糖果/48弹珠、等级与操作日志不变;8080开发服已重建并迁移,未构建Player或部署生产服。
|
||
|
||
仍待完成:设置面板的音效资源、T2正式外观、正式战场、G3真机性能与微信验收。
|
||
|
||
### 主界面音乐选用与接入(2026-10-20)
|
||
|
||
用户确认《微风小镇》作为主界面BGM。84秒OGG通过独立 `MainMenuMusic.prefab` 接入,Prefab和AudioSource由Pipeline持久化制作、Art/Sound收集,运行时经YooAsset异步加载。菜单循环播放,设置中的音乐开关独立暂停/续播,音效关闭不影响已开启的音乐;战斗/弹珠页暂停、返回菜单续播,应用后台暂停。Boot实播验证循环、三轮开关、菜单往返不叠音、弹珠暂停和偏好恢复通过,编译及本轮新增错误检查通过。素材和回执见 `Doc/Design/Sound/MainMenuSoft/ProductionBrief.md` 与 `Doc/ResDesc_Sound.md`;未构建或发布,微信音频解锁待真机验收。
|
||
|
||
## 正式伙伴接入战斗(2026-10-20)
|
||
|
||
岩团团、火喵、芽芽三只已验收的正式伙伴替换了 `PrototypeArena` 的 Hero0~2 几何简模,肖像 `proto_pet_0~2` 也改为从正式模型渲染。正式模型嵌套在 `Visual` 子节点,统一缩放到 1.5 单位高,T2 仍沿用冠饰和 1.2 倍体型。`PrototypeFlow.RefreshBattle` 在伙伴普攻、治疗或施放技能时触发 Animator 的 `Attack`,暂停或结束时动画速度为 0,二倍速时为 2。正式模型不再做原型的上下弹跳和缩放脉冲;Hero3~9 仍是简模,表现不变。
|
||
|
||
顺带修复两处已提交的问题。一是十伙伴扩容后,`StartBattle` 仍按 `stages.Length == 5 ? 3 : 1` 构造战斗快照:10 只伙伴得到 schema1,`PrototypeGame` 校验抛出"服务端存档无效",所有关卡都无法开战。现改为 `PrototypeSave.BattleSnapshot`,按伙伴数量补齐各 schema 的必需字段,与 `VerifyProgression` 的回放快照规则一致;它只用于表现,不参与结算。二是十伙伴批次的 `BuildPrototype.Build` 全量重建冲掉了已嵌入的 Greenfield 战场。本次已重新执行 `AttachGreenfield.Build`,并让 `MakeArena` 在全量重建时自动嵌入 Greenfield。
|
||
|
||
验证:`VerifyFormalHeroes.Assets`、`VerifyBattlefield.Assets` 和 `AttachGreenfield.Verify` 通过。在独立的 18081 服务(`Tools/output/formal_heroes/test.db`)上用新账号实际点击,走通 1-1 开战:岩团团和火喵在绿野战场上显示并播放 Attack,切换二倍速后 Animator 速度为 2;截图为 `formal_heroes_idle/attack.png`。真实开发账号已还原,钱包、发射数、等级与快照一致;18081 服务已关闭,8080 开发服健康。Unity 已退出 Play 并恢复原 Game View,本轮无新增 Console 错误。芽芽的战斗表现只做了资产检查,新账号的 1-1 不会让它上场。未构建 Player 或上传 CDN。
|
||
|
||
UI 音效暂未接入:10 条 TangoFlux 音效中,9 条是持续 1.5~2.5 秒的声音,`Ui_Open` 前 1.36 秒为静音,不适合直接作为按钮音,需要先裁剪或重新生成。
|
||
|
||
### UI 音效接入(2026-10-21)
|
||
|
||
UI 音效换成 v2 一次性短音效(0.12~0.8 秒)并接入运行时。`UiSfx.prefab` 与主界面音乐一同加载,受设置里的音效开关控制。按钮按名称分类:返回/关闭→Close,取消类→Back,页签→Tab,开关→Toggle,其余→Click。首页入口播 Open,服务端确认后:领奖/捕捉/开箱/首通→Claim,训练/进化/购买/营地操作→Confirm,布阵→Toggle,被拒绝或断线→Deny,首页新出现红点→Notify。`VerifyUiSfx` 在隔离 18081 账号上实际点击验证通过,真实账号与偏好已还原。生成、选择与触发表详见 `Doc/Design/Sound/UiSfx/ProductionBrief.md`。听感待人工试听。
|
||
|
||
- 2026-10-21 UI 音效 v3:clip 换成 `Tools/synth_ui_sfx.py` 程序化合成的木琴、钟琴和气泡音,风格清脆轻松;播放代码和触发映射不变,Prefab 已重建。
|
||
|
||
- 2026-10-21 岩甲犀(pet 5)接入战斗与肖像,正式伙伴为 0/1/2/5;其余仍为简模。实战验收用隔离库种子账号(stages[5]=1、formation=[0,5]),见 `VerifyFormalHeroes.PlaySeeded`。
|
||
|
||
- 2026-10-21 闪闪雀(pet 3)、泡泡龟(pet 4)接入战斗与肖像。正式伙伴现为 0/1/2/3/4/5,Hero6~9 仍是简模。`VerifyFormalHeroes.Assets` 确认六只脚底 y=0.00、身高 1.50、第 30 层、带 Animator。隔离 18081 种子账号阵容为泡泡龟前排、闪闪雀后排(龟的普攻距离是 2,放后排打不到),1-1 中两只都播放 Attack 并跟随二倍速。真实账号已还原。截图 `formal_heroes_bird_turtle_idle.png`、`_attack.png`。
|
||
|
||
- 2026-10-21 主界面底图去掉绘制的探险者、猫咪和对话框,备份为 `Doc/Design/UI/Home/home_camp_with_cast.png`。简模 `ExplorerSimple` 在广场中央来回走,点击后才出现随机台词。常驻问候条默认关闭。`VerifyHomeExplorer.Play` 通过。截图 `home_explorer_walk.png`、`home_explorer_talk.png`。
|
||
|
||
## G3 经济样例、引导与失败建议(2026-10-21)
|
||
|
||
按 `GameDesign` 8.2 与 14.1,先做不依赖微信真机的三块。
|
||
|
||
`Tools/economy_sample.py` 读取 `greenfield.json`,写出 `Doc/Design/G3/EconomySample.md`。首日、七日和卡在 1-5 前三条轨迹都不计自然恢复。设计稿 8.2 已改成现行数字:前五关首通 17 枚,10 发金币均值 520,不计自然恢复的该项合计是 67 枚。训练到 Lv.5、进化金币都能靠弹珠台均值补上,碎片差 30,是卡关时更慢的一项。
|
||
|
||
首页教学目标按首日顺序提示:发射、用券捕捉芽芽、共享训练、布阵打 1-1、领取目标。弹珠不足时同时指向自然恢复、每日任务、签到和免费补给。战斗失败在原关卡提示下追加建议:克制伙伴是否上阵、训练等级是否低于建议、开放路线是否空着。胜利用原结算文案。
|
||
|
||
性能预算写在 `Doc/Design/G3/PerformanceBudget.md`。画质三档沿用现有设置。未构建 Player,未测微信帧率、内存和主包体积。
|
||
|
||
`VerifyG3.Domain` 核对首日引导五步文案。`VerifyG3.Play` 在隔离 18081 新账号上确认首页显示「发射第一枚弹珠」,1-1 放弃后结算含失败建议。流畅档 90 帧平均 55.3 FPS,同屏伙伴 2、敌人 1,最长帧 143.68 ms。这是编辑器诊断,不是微信验收。真实账号金币、糖果、发射数和等级已还原;18081 已关闭。回执 `Doc/Design/G3/editor_frame_sample.json`。
|
||
|
||
`VerifyG3.Loop` 用另一个隔离新账号走完教学循环:两发弹珠(糖果 40、金币 80)、捕捉芽芽、训练到 Lv.2、默认阵容通过 1-1、领取教学目标 +5 弹珠。结束钱包为弹珠 26、糖果 50、金币 160、券 0。未领邮件、签到、每日任务和后续关卡。回执 `Doc/Design/G3/first_day_loop.json`。
|
||
|
||
- 2026-10-21 5 类正式敌人接入战斗:小角怪/疾跑怪/硬壳怪/角怪队长/大角首领取代几何简模,按 type 显示,走路播 Walk、出手播 Attack(`PrototypeBattle.Enemy.Moving/Strikes` 仅供表现,不影响结算)。隔离 18081 种子账号 1-5 实战验收通过,详见 `Doc/Design/Character/EnemyCharacterProduction.md`。
|
||
|
||
## G4 属性挑战(2026-10-21)
|
||
|
||
首页「活动」在通过 1-1 后打开五场元素试炼。火、草、岩、电、水各一场,只自动上阵已拥有的对应元素伙伴,主线阵容不变,不消耗弹珠。首次胜利给该元素指定伙伴 10 碎片和一枚徽章;再次胜利只在用时更短时刷新纪录。没有对应伙伴时提示去捕捉,不要求付费。存档从 schema 9 迁到 10,只补空的徽章和纪录,不发奖励。操作活动模板还没做。服务端 `game_tests` 覆盖锁定、缺伙伴、放弃、首次发奖和重复不发奖。
|
||
|
||
- 2026-10-21 10 个伙伴全部换成正式模型并接入战斗与肖像(新做藤蔓灵/雷鸣豹/潮汐鲸,烈焰狮等由另一工具完成)。隔离 18081 种子账号 1-5 实战验收通过。
|
||
|
||
## 排行榜(2026-10-21)
|
||
|
||
首页「排行」读取服务器已确认的主线通关数和五场试炼最短用时。同成绩先比达成时间,再比玩家编号;没有成绩不上榜,页面显示前 20 名。客户端不能提交分数。存档从 schema 10 迁到 11 时,只给已有成绩盖上本次进入的时间,不发奖励。没有时间的旧成绩排在同成绩之后。正在进行的弹珠或战斗也可以看榜,不会被榜单请求结算。8080 已在 2026-10-21 15:07 重启,排行已接通。
|
||
|
||
## 好友(2026-10-21)
|
||
|
||
首页「好友」按玩家编号查找,支持申请、接受、拒绝、撤回、删除、屏蔽、查看阵容和营地布置。好友、申请、屏蔽各最多 20 人。赠礼每天最多送出 5 次、收到 5 次,每次给对方 20 金币;不能送给自己,同一对好友每天只允许一个方向,重复提交同一次请求不会再次入账。存档从 schema 11 迁到 12 时只补空名单,不发金币。进行中的战斗也可以打开好友页。留言、实时聊天和突袭未做。8080 已在 2026-10-21 15:07 重启,好友和排行已接通。服务端 `game_tests` 覆盖互访、单向赠礼、次数上限和空迁移。
|
||
|
||
## 钓鱼(2026-10-21)
|
||
|
||
属性挑战页的「小镇钓鱼」进入钓鱼。通过 1-1 后可玩,每局消耗 1 枚弹珠,每天 5 局,放弃也占次数。服务器开始时冻结 8 条鱼汛,单局 20 秒,超时后再等 3 秒,之后只能放弃。客户端回传点击的鱼和时间,服务器重算积分;不能直接提交分数,超出当前时间的点击整单拒绝。3 分得 10 金币,5 分得 20 金币,8 分得 30 金币和 5 糖果。低于 3 分不返还弹珠。个人最佳只刷新纪录。同一请求重放不重复入账。进行中的弹珠、战斗或钓鱼互相挡住。存档从 schema 12 迁到 13 时只补 0 次和最佳 0 分,不发奖励。寻宝、派对、画册、温泉和首领挑战未做。服务端 `game_tests` 5101 项断言通过,覆盖锁定、消耗、伪造分数、未来点击、重放、放弃、次数上限、日切和空迁移。8080 已在 2026-10-21 16:42 重启,重启前备份为 `AIServer/data/aiserver-before-schema13-20261021-164141.db` 及其 wal、shm。未向真实账号发送请求;玩家下次进入时迁到 schema 13,只补 0 次和最佳 0 分。未构建 Player。
|
||
|
||
## 营地寻宝(2026-10-21)
|
||
|
||
好友页在双方已是好友、并且自己通过 1-1 之后,可以对这位好友寻宝。每天 3 次,同一位好友每天一次。服务器按自己的通关数从活动池发奖:1 关 10 金币,4 关 20 金币,10 关 30 金币和 5 糖果。客户端不能指定抽到哪一件。奖励不加给对方,也不减少对方的金币、弹珠或装饰。同一请求重放不重复入账。进行中的战斗也可以寻宝。存档从 schema 13 迁到 14 时只补 0 次,不发奖励。突袭仍会播放战斗,这次没做。服务端 `game_tests` 5192 项断言通过,覆盖未结交、未通关、伪造事件、战斗进行中发奖、对方营地不变、重放、同一营地当天一次、每日 3 次、次日恢复、10 关分档和空迁移。8080 已在 2026-10-21 20:38 重启,重启前备份为 `AIServer/data/aiserver-before-schema14-20261021-203836.db` 及其 wal、shm。未向真实账号发送请求;玩家下次进入时迁到 schema 14,只补 0 次寻宝。未改伙伴模型和战场。
|
||
|
||
- 2026-10-21 伙伴 T2 进化外观:T1 模型+骨骼挂件(9/10,潮汐鲸待混元额度),战斗按 tier 切换 Visual/VisualT2;隔离 18081 全 T2 阵容 1-5 实战通过。
|
||
|
||
|
||
## 五敌人战场替换与技能闭环样例(2026-10-21)
|
||
|
||
五类敌人的 Studio 低模已替换正式战场,原Avatar/控制器/三动作不变;45个模型引用、尺寸/贴地和五类型 Walk/Attack、攻击受击反馈通过。保留现有伙伴及T2,不重建整体战场。
|
||
|
||
火喵/岩团团独立技能样例实现 C++ 50ms整数tick逻辑、动作通道和阶段、投射物到达伤害、护盾及特效音效播放。C++30项检查、Unity1×/2×/暂停/低帧率最终状态一致、静音和清理通过;生成5条TangoFlux音效。生产服务器和主线仍旧规则,未进行网络轨迹协议接入或20关规则迁移。记录 `Doc/Design/Combat/SkillSlice/Production.md`。
|
||
|
||
|
||
## 权威技能协议与正式战场接入(2026-10-21)
|
||
|
||
新客户端battle.begin/challenge.begin声明combatProtocol1,服务端冻结25技能与配置、结果和事件,分页只读获取。PrototypeBattle.Trace仅应用权威事件,统一动作/特效/音效及数据时钟;旧客户端与旧战斗仍走原规则。正式战场持久化技能池和19个可调挂点,T2缩放同步。
|
||
|
||
120组C++关卡/进化/阵容矩阵覆盖25技能;23份跨关轨迹在C#最终状态与统计一致;18083真实UI全T2的1-5经服务重启恢复相同场次,实播/结算通过。8080开发服已更新,旧程序与SQLite一致性备份保留,全部game_states核对不变。制作记录 `Doc/Design/Combat/Runtime/Production.md`。未发布Player或生产服,真机性能与完整伙伴专属音效特效仍待完成。
|
||
|
||
|
||
### 2026-10-21:伙伴技能表现补齐
|
||
已完成十伙伴专属技能VFX及剩余四条TangoFlux声音,正式战场15类效果/76池根/8音源/9音效。23份服务器轨迹表现回放、暂停倍速静音、去重与生命周期清理、正式战场视觉验收通过;资源已登记。记录 `Doc/Design/Combat/PartnerSkills/Production.md`。后续为微信真机性能和混音验收。
|
||
|
||
### 2026-10-21:最新技能规则的首日前五关验收
|
||
|
||
隔离新账号只用初始岩团团/火喵及教学芽芽,正常两次发射、训练至Lv.5、领取基础补给和推荐布阵,真实UI走通1-1~1-5,全程T1,无资源或通关状态预置。五份权威轨迹哈希、结果、奖励、统计和最终钱包与C++事务路径一致;重打1-5不重复发奖。最终金币720/糖果110/弹珠62。修复训练资源不足时仍要求直接训练的引导及隐藏敌人Animator逐帧警告,专项UI/实战通过。新增首日CTest,四组服务端回归通过。结果与边界见 [G3/FirstFiveAcceptance.md](G3/FirstFiveAcceptance.md)。真实账号恢复,18085测试服关闭,Boot无脏状态;未构建Player或重启8080,真机性能仍待测。
|