XGGame-Snake 游戏开发笔记
Sep 1

Hi~ o( ̄▽ ̄)ブ
这是第二篇 Godot 开发笔记:一个贪吃蛇。做完小鸟之后我最想补的不是玩法,是外壳——设置菜单、暂停、手柄、Theme,这些每个游戏都要、上一次都是凑合过去的东西。所以贪吃蛇玩法本身很小,笔记的重心在"为什么这么做"。
项目已开源:GitHub XGGame-Snake,欢迎 Star ⭐ 在线试玩:itch.io
和小鸟那篇不一样:小鸟记的是"怎么做出来",这篇每一步都先回答"为什么先做这个"。我还是新手,方法不一定最佳,仅供参考和交流~
这条蛇和普通贪吃蛇有什么不同
- 食物按时间长出来(场上最多 3 个),吃掉不立刻补——你得规划路线,不是追着一个点跑
- 每 12 秒出现一颗星星,会发光,5 秒不吃就消失,值 2 分
- 开局可选撞墙 / 穿墙
- 越吃越快,有下限
- 全程不用鼠标:键盘和手柄同一套动作名,每个面板都会把焦点交给手柄
目录
- 立项:先写"不做什么" — 立项表、食物规则、实体清单为什么能推出"不需要物理引擎"
- 项目设置:分辨率、按键、骨架 — 1920×1080 和每格 20 像素的关系、键盘手柄一起绑、Autoload 骨架、目录
- 白块原型 ①:蛇是一个数组 —
Vector2i数组、插头删尾、next_direction为什么要分开 - 白块原型 ②:画面是数据的镜子 —
redraw()、方向控制、三种碰撞、随机空格 - 定时生成与过期 — 四个 Timer 各管一件事、哨兵值、星星的寿命
- 系统层:喇叭、裁判、档案柜 — EventBus / GameManager / SaveManager,蛇为什么只喊一声
- 设置菜单:菜单怎么把选择交给游戏 — 单一数据源、常量什么时候该变成变量、一行
posmod实现穿墙 - 暂停与结算:process_mode 的坑 — 暂停会冻住暂停菜单本身、
_unhandled_input的三站、重开前先解冻 - 手柄:从"能移焦点"到"能按下去" — Godot 4 默认
ui_accept没有手柄键、焦点三条规矩、嵌入窗口的输入开关 - UI:皮、总表、左右选 — StyleBoxFlat、按钮的 11 个槽、Theme 与类型变体、自己封装一个 ◀ 值 ▶ 组件
- 图标、启动画面与音效 — 16 像素图标怎么画、
index.png其实是启动画面、字体协议和 CREDITS - 导出、上架与复盘 —
build/+.gdignore、pck 自检、itch、开源文件、这次踩的坑