# Claude Project Memory ## 1. 项目定位(长期不变) - 项目类型:魔塔Like(固定地图探索 + 数值驱动 + 剧情导向 + 解谜)。 - 目标体量:按原定体量推进,不主动缩减世界观与章节目标。 - 开发模式:代码主力由 AI 完成;人工主要负责美工、地图、剧情、体验验收与方向裁决。 - 当前基础:塔的基础结构已完成,支持正常战斗与可视化地图修改。 ## 2. 当前开发优先级(默认顺序) 1. 地图回合时轴(Map Turn)剩余接线与稳定性。 2. 回档系统(状态继承、存读档一致性)。 3. 敌人可相互战斗与伤害。 4. 玩家多角色(队友/阵容)系统。 > 未经明确指令,不要跳级并行实现高风险模块。 ## 3. 规则来源与冲突处理 - 机制规则唯一口径:`docs/map-turn-spec.md` - 代码落地状态台账:`docs/map-turn-implementation-status.md` - 协作与开发边界:本文件 `claude.md` - 若规则冲突:先列出冲突点与影响,不擅自改规则,等待用户裁决。 ## 4. 开发硬约束(来自 DEVELOPMENT_RULES 共识) 1. 新功能默认写在 `project/plugins.js`。 2. 优先使用 `_docs/api.md` 中的样板接口实现需求。 3. 所有绘制基于 `core.createCanvas` 体系。 4. 所有异步流程基于 `core.insertAction`(含 function/async 事件流)。 5. 使用非样板接口时,必须就地注释:用途、原因、风险。 6. 不直接改动 `libs/` 与 `main.js` 等核心底层文件,除非用户明确授权。 7. 不直接破坏核心运行态结构(如整体替换 `core.status` / `core.material`)。 ## 5. Map Turn 专项原则(必须遵守) - 单一时间总线:时间推进统一走 `consumeTime(deltaTime, reason)`。 - 单 tick 语义:`deltaTime = n` 必须触发恰好 `n` 次 `advanceMapTurnOne`。 - 规则优先级:死亡流程优先、战后成功再扣层、状态技能 `timeCost=0` 不推进时间。 - 耗时规则:`battleFinalTimeCost = max(baseBattleTimeCost, statusBattleTimeCostMax)`。 - 性能底线:每 tick 禁止全图扫描;敌方调度仅遍历 `activeEnemiesByFloor` 缓存。 - 存档一致:`flags.mapTurnState` 与 `flags.skillState` 保持可序列化并可恢复。 - 缓存策略:`activeEnemiesByFloor` 作为派生缓存,读档或换层后允许重建。 ## 6. AI 输出与执行格式 每次任务默认按以下顺序输出: 1. 先给结论(本次做什么/不做什么)。 2. 给改动范围(文件与模块)。 3. 对齐到规则(引用 `map-turn-spec.md` / 台账条目)。 4. 给最小验证步骤(可复现、可回归)。 5. 若有风险,给 1-2 条可选方案并标出推荐项。 ## 7. 验收偏好 - 优先级:正确性与可验证性 > 写法优雅。 - 关键机制必须可回归验证(如 `consumeTime(3)` 的 3 tick 断言、战后扣层、读档连续、`timeCost=0` 过滤)。 - 遇到不确定行为,先加可观测日志/断言,再做进一步改动。 ## 8. Git 与协作习惯 - 已使用 Git;改动应保持小步、可读、可回退。 - 未经明确要求,不做破坏性历史操作(如强推、硬重置)。 - 不覆盖与当前任务无关的既有改动。 ## 9. 调用短语约定 当用户说“按 claude 执行”时,AI 必须默认执行: 1. 先复述目标与当前阶段优先级。 2. 明确本次任务对应哪个优先级模块。 3. 检查是否违反第 4、5 节约束。 4. 输出最小可执行步骤,再开始实现。 当用户说“先讨论不改代码”时,AI 只给方案,不做实现。