Files
2026-05-06 08:17:32 +08:00

10 KiB
Raw Permalink Blame History

实施计划 — 《影之传说:忍者救公主》MVP(仅第一章,横屏)

以下任务基于 requirements.md 中的 20 条需求,按"自底向上 + 可独立验证"的顺序组织。每一个子任务均为可执行的编码步骤,可独立提交与测试。

核心约束:横屏(Landscape)锁定、设计分辨率 960×540、Cocos Creator 3.8.x + TypeScript、微信小游戏、首包 ≤4MB、锁帧 30fps、仅硬核模式、MVP 仅第一章 5 关。


  • 1. 项目脚手架与分层架构搭建

  • 1.1 初始化 Cocos Creator 3.8.x + TypeScript 项目(横屏)

    • 创建项目骨架:assets/scripts/{ui,logic,data,common}assets/scenesassets/resources/{prefabs,textures,audio,configs}
    • 配置微信小游戏构建选项(基础库 2.16.0+,锁帧 30fps
    • 在 Cocos Project Settings + game.json 中强制横屏deviceOrientation: landscape),设计分辨率 960×540Canvas Fit Height 适配策略
    • 接入 ESLint + Prettier + tsconfig 严格模式
    • 需求:技术栈约束、18.1 ~ 18.7
  • 1.2 建立核心基础设施模块

    • 实现 EventBus(全局事件)、ObjectPool(对象池)、TimeMgr(暂停/恢复)、StorageMgr(封装 wx.setStorageSync + 读取失败回退)
    • 定义 Logger 与分级打点接口,预留性能埋点入口
    • 为上述模块补充单元测试(Jest),覆盖率 ≥ 80%
    • 需求:17.1 ~ 17.6、18.4 ~ 18.5、20.1 ~ 20.6
  • 2. 数据驱动配置与类型系统

  • 2.1 定义 TS 接口与 JSON 配置表(仅硬核)

    • 编写 IEnemyConfigIWeaponConfigIItemConfigILevelConfigIBossConfigIStorySceneConfig 等接口
    • 输出第一章 5 关 + 4 种敌人 + 1 个 BOSS(双幻坊)+ 5 种道具(水晶玉/点丸/术丸/魔笛/增丸)+ 2 种武器 + 剧情背景 3 页配置的 JSON
    • 实现 ConfigMgr 异步加载与校验(缺失字段报错),不加载任何轻度模式配置分支
    • 需求:6.1 ~ 6.7、7.1 ~ 7.6、8.1 ~ 8.5、9.1 ~ 9.6、13.1 ~ 13.6、19.2
  • 3. 悬浮操作 UI 系统(横屏布局 + 多点触控)

  • 3.1 实现悬浮 UI 图层与虚拟摇杆(横屏基线 960×540)

    • 创建独立 UI Canvas(层级高于游戏场景),按横屏布局渲染摇杆(左下 Ø120px)、跳跃键(摇杆右上方 Ø90px)、手里剑(右下偏左 Ø90px)、忍者刀(右下偏右 Ø90px),默认透明度 70%
    • 保证左右两组按钮分别落在屏幕左右 1/3 安全区,不遮挡战斗视野
    • 实现摇杆死区(10px)、区域外点击方向向量识别、45°/135° 抛物线角度识别区与轨迹预览光效
    • 支持横屏安全区自适应(16:9 / 18:9 / 19.5:9 / 20:9,识别左右两侧刘海/听筒/Home Indicator),≥3 点多点触控、按钮区优先、非按钮区事件穿透
    • 需求:1.1 ~ 1.8、2.5 ~ 2.6、18.6、20.1、20.3
  • 3.2 实现布局自定义与持久化

    • 长按进入布局设置模式,允许拖拽按钮位置、调整大小与透明度
    • 将布局写入 StorageMgr,下次启动自动还原;读取失败使用横屏默认布局
    • 需求:1.6、17.2、17.6
  • 4. 角色移动与物理跳跃系统

  • 4.1 实现地面检测与横向移动

    • 基于简化 AABB 碰撞实现地面/空中状态机,暴露 isGrounded 属性
    • 摇杆左右方向 → 100/150px/秒移动(红衣/绿衣/黄衣分档)
    • 需求:2.1、5.1 ~ 5.2
  • 4.2 实现物理跳跃与抛物线跳跃

    • 实现标准垂直跳(250px)、长按蓄力高跳(375px)、黄衣跳跃(300px)
    • 摇杆在 45°/135° + 跳跃按下 → 抛物线轨迹跳跃;空中禁用跳跃按钮并半透明反馈
    • 起跳前插入 ≈150ms 下蹲延迟;硬核模式下跳跃过程中禁止横向轨迹调整
    • 需求:2.2 ~ 2.8、13.3 ~ 13.5、20.2、20.5
  • 5. 攻击与状态系统(双按钮互斥 + 自动升级)

  • 5.1 实现双攻击按钮互斥与组合操作

    • 点击任一攻击按钮激活对应武器(手里剑 0.3/0.25 s,忍者刀 0.5 s),另一按钮半透明未激活;同时按下以最先按下的为准
    • 支持长按手里剑 3 连发;跳跃+攻击(100ms 内)识别为跳跃攻击组合;允许"移动+跳跃+攻击"三合一与组合光效叠加
    • 需求:3.1 ~ 3.6、3.9、4.1 ~ 4.5、20.4
  • 5.2 实现忍者刀攻防一体与角色状态机

    • 忍者刀判定帧内对 shuriken/sword 类型攻击成功格挡(播放特效+音效),对 fireball/smoke_bomb 不格挡
    • 角色状态机:红衣 ↔ 绿衣 ↔ 黄衣,拾取水晶玉自动升级,被普攻命中立即降回红衣并清零强化;烟玉/火球直接死亡
    • 需求:3.7 ~ 3.8、5.1 ~ 5.6、10.2 ~ 10.5
  • 6. 敌人 AI、道具与碰撞伤害系统

  • 6.1 实现 4 种敌人 AI

    • 青忍(远程十字镖 + 近战刀斩,2.0 s 间隔)、赤忍(120px/s + 烟玉 1.5 s + 主动拦截跳跃)
    • 黑忍(城壁关卡掉落魔笛卷物,死亡后不再刷新)、妖坊(3.0 s 直线火球,秒杀)
    • 摄像机视野外敌人暂停 AI 更新,进入视野恢复;敌人/子弹统一走对象池
    • 需求:6.1 ~ 6.7、18.5
  • 6.2 实现道具掉落与碰撞伤害判定

    • 森林 12 击杀计数 → 水晶玉确定性生成,13~20 s 或移出视野后销毁
    • 3 赤忍击杀 → 50% 掉落点丸/术丸;魔笛秒杀全屏;增丸 +1 命
    • 统一 DamageSystem:无敌帧 → 忍者刀格挡 → 攻击类型/距离判定 → 扣血;火球 <100px、烟玉 <80px 致命
    • 需求:7.1 ~ 7.6、10.1 ~ 10.6
  • 7. 关卡、场景与视差滚动系统

  • 7.1 实现 4 层视差场景与关卡框架(按 16:9 横屏基准标定)

    • 抽象 LevelBase,加载关卡配置 → 摄像机卷轴(横向/左右/垂直)→ 4 层视差滚动(1:2:4:4)
    • 按 16:9 横屏可视宽度重新标定卷轴速度与关卡长度,保证 30fps 稳定渲染
    • 场景互动:树木/石柱遮挡子弹、草丛短暂隐身、藤蔓可攀爬、绳索需挥刀斩断
    • 需求:8.8 ~ 8.9、15.4 ~ 15.5、18.1 ~ 18.3
  • 7.2 实现第一章 5 关内容(1-1 ~ 1-5)

    • 按配置表完成 1-1 森林(3 妖坊/75s)、1-2 森林深处(红妖珠坊/85s)、1-3 洞穴水路(10 青忍/100s)、1-4 城壁垂直(顶层/95s)
    • 1-5 魔城天守阁:进入双幻坊 BOSS 战房间;保证时限、通关条件、场景切换稳定
    • 需求:8.1 ~ 8.5、14.5
  • 8. BOSS 战(双幻坊 蝴蝶显形)与第一章结局叙事

  • 8.1 实现蝴蝶显形与一击必杀机制

    • BOSS 战关卡生成环绕蝴蝶对象,未命中前 BOSS 无敌;命中蝴蝶 → 变色并触发 BOSS 显形
    • 双幻坊 3 种攻击模式(双人夹击 / 火球喷射 / 分身迷惑)按血量 1/3 阶段切换
    • 显形后任一有效命中 → BOSS 死亡;玩家被火球命中立即死亡
    • 需求:9.1 ~ 9.6、13.4
  • 8.2 实现"公主被带走"过场与章节结算

    • BOSS 血量 ≤ 1/2 时触发 ≤3s "公主被青忍带走"短过场(战斗不暂停)
    • 击败双幻坊 → ≤2s 定格画面 → 无缝进入第一章结算界面;全程不得出现"斩断绳索解救成功"画面
    • 过场与结算期间支持"跳过"按钮直达结算
    • 需求:8.6 ~ 8.7、14.1 ~ 14.5
  • 9. 基础 UI 流程、剧情背景、新手引导与得分结算

  • 9.1 实现剧情背景介绍系统(正式进关前的背景交代)

    • 新建 StorySceneCtrl:按配置加载 3 页像素插画 + 打字机文案,分页推进;右下角"跳过"、左下角"下一页"指示
    • 点击屏幕任意区域加速打字显现;点击"跳过"立即终止过场并加载 1-1,无二次确认
    • 首次从主菜单点击"开始游戏"或首次进入 1-1 时自动播放;首次完成/跳过后写入 StorageMgr,下次启动默认跳过
    • 设置界面提供"重新观看背景介绍"入口、结算界面"重玩第一章"按钮触发状态重置
    • 播放专属 bgm_story,遵循 BGM/音效音量;960×540 横屏布局下文字避开左右安全区
    • 过场结束无缝衔接新手引导(需求 11.1),不引入额外点击等待
    • 需求:19.1 ~ 19.9、17.5
  • 9.2 实现主流程 UI 场景(横屏布局)

    • 主菜单(开始游戏/设置/关卡选择)→ 关卡选择(依据本地解锁状态)→ 游戏内 HUD(命数/得分/计时)→ 结算界面(本关得分/总分/连击/无伤)→ 失败界面(重试/返回)
    • 设置界面:BGM/音效音量、悬浮按钮布局重置、重置新手引导、重新观看背景介绍不得出现任何难度选择入口
    • 所有场景均按 960×540 设计,横屏下对刘海/听筒区进行黑边或偏移处理
    • 需求:12.7 ~ 12.8、13.1、17.1 ~ 17.6、18.6
  • 9.3 实现新手引导与得分系统

    • 1-1 高亮引导:攻击按钮 → 摇杆 → 跳跃按钮;1-2 引导:抛物线跳跃/互斥按钮/格挡/跳跃攻击/自动升级;1-3 引导:蝴蝶显形/BOSS 攻击识别/一击必杀
    • 引导完成状态持久化;得分规则:忍者刀 ×2、手里剑 ×1、完美格挡 ×3、5 连刃接触 +1500、无伤 ×3、剩余时间折分
    • 需求:11.1 ~ 11.5、12.1 ~ 12.6
  • 10. 美术音效资源、性能优化与体验埋点

  • 10.1 集成像素美术与音频资源

    • images/影.pngimages/敌人.pngimages/场景.png 产出主角 3 形态(16×32)、4 敌人、1 BOSS 及森林/城墙/魔城 3 场景(每场景 ≤48 色)
    • 产出剧情背景介绍的 3 页像素插画(主角身份/公主被掳/启程使命)
    • 接入 5 类 WAV 音效(attack/jump/hurt/pickup/parry)与 5 首 MP3 BGMforest/castle/final/boss/story),总音频 ≤500KB
    • 实现季节调色板切换(青叶/红叶/雪原)与落叶/飘雪粒子(MVP 仅启用青叶,其余保留接口)
    • 需求:15.1 ~ 15.5、16.1 ~ 16.5、19.7
  • 10.2 性能优化与埋点验证

    • 对象池复用敌人/子弹/特效;关卡切换清理资源,内存峰值 ≤200MB;首包 ≤4MB(其余按关卡分包)
    • 横屏异形屏适配(左右两侧安全区识别),低端机可关闭粒子特效,帧率 ≥25fps
    • 埋点:触控响应 <50ms、跳跃状态切换 <50ms、45°/135° 识别 ≥95%、组合识别 <100ms、空中跳跃禁用执行率 ≥99%,并输出流畅度评分统计
    • 需求:18.1 ~ 18.7、20.1 ~ 20.6