You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
my-bricks/docs/milestones.md

4.7 KiB

my-bricks 开发里程碑

新手学习路径,按"每步都能跑、每步都能看到效果"划分。 时间只是业余时间的大致估算,按你自己的节奏来,不必赶。

总原则:

  • 每个里程碑结束时,游戏必须能运行,绝不攒一堆代码一起调试。
  • 一个里程碑内写坏的代码,当步修好,不留债到下一步。
  • 每完成一个里程碑,git commit 一次(从 M1 开始建仓库)。

M0 环境搭建(约半天)

目标:装好工具,跑通"空场景 → 画面上有个方块"。

  • 下载安装 Godot 4 稳定版(官网 godotengine.org,选 4.x 标准版)
  • 新建项目,分辨率设为 1280×720,主场景随便选一个
  • 场景里放一个 ColorRect(或任意节点),按 F5 运行看到它
  • 熟悉三个面板:场景树(左)、属性(右)、运行按钮(右上)
  • 打开项目设置 → 物理层,命名 Layer 1 = World、Layer 2 = Brick(给 M1 做准备)

验收:能运行一个空场景,节点能选中、能改属性。

遇到的坑记下来:装不上/运行不了等环境问题,优先查 Godot 官方文档和社区。


M1 核心玩法闭环(约 1~2 天)

目标:完成"能玩一局":挡板、球、砖块、计分、生命、Game Over。

  • 创建 paddle.tscn:CharacterBody2D + CollisionShape2D + 可见图形(ColorRect/Sprite)
    • paddle.gd:键盘 ←→/AD + 鼠标移动,@export 挡板速度
  • 创建 ball.tscn:CharacterBody2D + CollisionShape2D + 图形
    • ball.gd:初始停在挡板上(发球状态)→ 空格发射 → _physics_processmove_and_collide
    • 撞墙/砖块/挡板:读 collision.get_normal() 做镜面反射
  • 创建 brick.tscn:StaticBody2D + CollisionShape2D + ColorRect
    • brick.gd@export 血量;被撞扣血,归零销毁并发 destroyed(points) 信号
  • level.gd:读 data/level_1.gd 的字符串网格,按坐标生成一排砖块
  • main.tscn + main.gd:组装 World/Paddle/Ball/LoseZone/UI
    • LoseZone:屏幕底部一条 Area2D,球经过 body_entered → 扣命 + 重置球
    • HUD:分数 Label、生命 Label(先用系统字体,样式后补)
    • 状态机:PLAYING / GAME_OVER(先只做这两个,MENU 留到 M3)
  • 球速、挡板速度、初始命数全部 @export,方便调

验收

  • 能打碎所有砖块,分数正确累加
  • 球出界扣命,命尽出现 Game Over
  • 重开后一切重置正常

M2 手感打磨(约 1 天)

目标:把"好玩"的核心做出来。这是打砖块最值得花时间的一步。

  • 挡板反弹角度分档(核心):按球击中挡板的横向偏移换算反弹角
    • 中心 → 接近竖直;边缘 → 大角度斜飞。公式写一个函数,M1 里先用它替换纯镜面
  • 球速随击砖次数缓慢上升(设上限),控制单局节奏
  • 碎砖反馈:GPUParticles2D 飞出碎片,或 Tween 缩放 + 颜色闪动
  • 命数用图标显示(简单 Sprite 排一排),比纯数字直观

验收:反弹可控、可预期;连续玩 3 分钟不觉得"球不受我控制"。


M3 内容扩展(约 1~2 天)

目标:从"一关"变成"一个游戏"。

  • 关卡数据驱动化:data/ 下加 level_2.gdlevel_3.gd,Main 按顺序加载
  • 过关判定:砖块清空 → LEVEL_CLEAR 提示 → 空格/按钮进下一关
  • 主菜单场景:开始游戏 / 退出(状态机补上 MENU
  • 音效:命中、碎砖、出界、过关 4 个 AudioStreamPlayer2D(素材先用免费 CC0)
  • 道具(选 1~2 个):加宽挡板、多球(难度大可选做)
    • 击碎砖块概率掉落 → Area2D 下落 → 挡板接住生效 → 定时器恢复

验收:从主菜单开始,能连续玩 3 个关卡通关;有音效、有道具。


M4 收尾发布(约 1 天)

目标:把作品拿得出手。

  • 视觉统一:占位图形换成顺眼的配色/贴图(可选,纯色也完全可行)
  • 导出:桌面(macOS/Windows)或 Web(HTML5),导出前按导出模板指引走一遍
  • 写 README:游戏介绍 + 操作说明(放项目根目录)
  • design.md 第 8 节过一遍验收清单,修掉残留问题

验收:导出的程序在另一台机器/浏览器能独立运行。


里程碑总览

里程碑 内容 产物
M0 环境搭建 能运行的空场景
M1 核心玩法闭环 能玩一局(无菜单)
M2 手感打磨 反弹可控、有反馈
M3 内容扩展 菜单 + 多关卡 + 音效 + 道具
M4 收尾发布 可发布的成品