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.
4.7 KiB
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_process里move_and_collide- 撞墙/砖块/挡板:读
collision.get_normal()做镜面反射
- 创建
brick.tscn:StaticBody2D + CollisionShape2D + ColorRectbrick.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)
- LoseZone:屏幕底部一条 Area2D,球经过
- 球速、挡板速度、初始命数全部
@export,方便调
验收:
- 能打碎所有砖块,分数正确累加
- 球出界扣命,命尽出现 Game Over
- 重开后一切重置正常
M2 手感打磨(约 1 天)
目标:把"好玩"的核心做出来。这是打砖块最值得花时间的一步。
- 挡板反弹角度分档(核心):按球击中挡板的横向偏移换算反弹角
- 中心 → 接近竖直;边缘 → 大角度斜飞。公式写一个函数,M1 里先用它替换纯镜面
- 球速随击砖次数缓慢上升(设上限),控制单局节奏
- 碎砖反馈:GPUParticles2D 飞出碎片,或 Tween 缩放 + 颜色闪动
- 命数用图标显示(简单 Sprite 排一排),比纯数字直观
验收:反弹可控、可预期;连续玩 3 分钟不觉得"球不受我控制"。
M3 内容扩展(约 1~2 天)
目标:从"一关"变成"一个游戏"。
- 关卡数据驱动化:
data/下加level_2.gd、level_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 | 收尾发布 | 可发布的成品 |