1. 核心玩法设计
赤色要塞——核心玩法设计
本章你将掌握
| 技能 | 难度 | Godot节点 | 说明 |
|---|---|---|---|
| 俯视载具控制 | ⭐⭐ | CharacterBody3D | 8方向移动+车头自动朝向 |
| 炮塔独立旋转 | ⭐⭐⭐ | Node3D + look_at() | 车身和炮塔分离控制 |
| 子弹发射系统 | ⭐⭐ | Area3D + RigidBody3D | 物理子弹+碰撞检测 |
| 2.5D摄像机跟随 | ⭐⭐ | Camera3D(正交) | 固定角度俯视+平滑跟随 |
| 敌人AI导航 | ⭐⭐⭐ | NavigationAgent3D | 自动寻路+追击玩家 |
| 地图滚动系统 | ⭐⭐⭐ | 摄像机边界限制 | 单向推进式地图 |
| 人质营救机制 | ⭐⭐ | Area3D触发器 | 接近触发+上车逻辑 |
节点层级预览
JackalGame (Node3D)
├── GameCamera (Camera3D, 正交投影)
├── GameMap (Node3D)
│ ├── Terrain (MeshInstance3D)
│ ├── Buildings (Node3D)
│ └── Obstacles (StaticBody3D)
├── Player (CharacterBody3D)
│ ├── VehicleBody (MeshInstance3D)
│ ├── Turret (Node3D)
│ │ └── TurretMesh (MeshInstance3D)
│ ├── FirePoint (Marker3D)
│ └── HostageArea (Area3D)
├── Enemies (Node3D)
│ ├── Infantry (CharacterBody3D)
│ ├── Tank (CharacterBody3D)
│ └── Turret (StaticBody3D)
└── UI (CanvasLayer)
├── ScoreLabel
└── HostageCounter游戏核心节点
点击节点可跳转到对应文档查看详细说明。
系统架构图
┌─────────────────────────────────────────────┐
│ 赤色要塞核心系统 │
├─────────────────────────────────────────────┤
│ │
│ 输入系统 → 载具控制 → 物理移动 │
│ ↓ │
│ 炮塔控制 → 射击系统 → 子弹管理 │
│ ↓ │
│ 碰撞检测 → 伤害判定 → 敌人AI │
│ ↓ │
│ 人质系统 → 任务管理 → 关卡推进 │
│ │
└─────────────────────────────────────────────┘在动手写任何代码之前,我们需要先搞清楚一个问题:赤色要塞到底是个什么游戏?玩家在游戏里主要做什么?
1.1 赤色要塞是什么游戏
赤色要塞(Jackal)是1986年由科乐美(Konami)在FC(就是小时候说的"红白机")上推出的一款俯视角载具射击游戏。
用一句话说清楚它的核心玩法:你开着一辆武装吉普车,在敌人的地盘上一路向前冲,消灭遇到的敌人,解救被困的人质,最后安全撤离。
就像你在电影里经常看到的那种情节——特种兵开着悍马冲进敌营,一边开火一边救人,最后在爆炸中潇洒离开。赤色要塞就是把这种感觉做成了游戏。
如果你没玩过原版
没玩过也没关系!你只需要知道它的感觉:开车、开枪、炸东西、救人、往前冲。我们用2.5D的方式把它重新做出来。
核心动作拆解
赤色要塞的核心玩法可以拆解成这几个动作:
| 动作 | 说明 | 比喻 |
|---|---|---|
| 驾驶 | 8方向移动,车辆灵活穿梭 | 像在停车场里灵活挪车 |
| 射击 | 朝移动方向开火,消灭步兵和小型目标 | 像 FPS 游戏里的机关枪 |
| 投弹 | 抛出手雷/炸弹,摧毁建筑物和坦克 | 像扔石头砸易拉罐 |
| 探索 | 在地图上寻找隐藏的建筑和人质 | 像寻宝游戏 |
| 营救 | 接近人质让他们上车 | 像公交车到站接乘客 |
| 推进 | 不断向前推进到关卡终点 | 像跑酷游戏一直往前跑 |
1.2 为什么用 2.5D 做赤色要塞
你可能会问:原版是2D的,为什么不直接用2D做?为什么要搞2.5D?
好问题!2.5D(就是用3D技术做出来看起来像2D的效果)对于赤色要塞有几个巨大的好处:
| 特性 | 2D 实现 | 2.5D 实现 | 优势 |
|---|---|---|---|
| 地形起伏 | 只能用图片模拟高低差 | 真正的3D地形,有上坡下坡 | 战术更丰富,可以占据高处 |
| 车辆碾压感 | 平面移动 | 车辆真正在3D地面上行驶 | 视觉更有冲击力 |
| 爆炸效果 | 换一张爆炸图片 | 3D粒子爆炸,碎片飞溅 | 更震撼 |
| 建筑物摧毁 | 切换图片 | 建筑物崩塌动画 | 更有破坏快感 |
| 视角灵活性 | 固定视角 | 可以微调俯视角度 | 找到最佳观感 |
| 光影效果 | 手绘阴影 | 实时光照和阴影 | 更真实 |
2.5D 的本质
2.5D 并不是什么神秘技术。简单说就是:用3D的场景和模型,但把摄像机固定在一个固定的角度往下看。就像你用手机从上方拍桌子上的玩具车——场景是3D的,但画面看起来像2D。
1.3 核心玩法循环
任何好玩的游戏都有一个"让玩家停不下来"的循环。赤色要塞的循环是这样的:
驾驶前进 → 遇到敌人 → 射击/投弹消灭 → 探索区域 → 发现人质 → 营救上车
↑ ↓
←←←←←←←←←← 继续推进到下一个区域 ←←←←←←←←←←←←←←←←←←←←←←用大白话说就是:开车往前冲,遇到敌人就打,看到人就救,一路杀到终点。
玩法循环的设计原则
| 原则 | 说明 | 为什么重要 |
|---|---|---|
| 节奏感 | 战斗和探索交替出现 | 一直打会疲劳,一直走会无聊 |
| 成就感 | 消灭敌人、炸毁建筑、救到人质 | 每个小目标都给即时奖励 |
| 紧迫感 | 不能后退,只能前进 | 像考试一样逼你往前走 |
| 惊喜感 | 地图上有隐藏武器和人质 | 激发玩家探索欲望 |
1.4 2.5D 视角方案
赤色要塞的2.5D视角是这样的:
摄像机(从上方略斜俯视)
↘ ∠约60°
↓
┌─────────────────────┐
│ │
│ 敌人 🏠 人质 │ ← 3D 地面(XZ平面)
│ 🚗 │
│ 🌳 🌳 │
└─────────────────────┘摄像机参数规划
| 参数 | 值 | 说明 |
|---|---|---|
| 投影模式 | 正交(Orthogonal) | 平行投影,没有透视近大远小的变形 |
| 俯视角度 | X轴旋转约 -55° 到 -65° | 从上方斜着往下看 |
| 高度 | Y轴约 15-20 单位 | 足够高能看到一片区域 |
| 视野大小 | Orthogonal Size 约 10-12 | 控制画面能看到多大范围 |
为什么用正交投影而不是透视投影?
正交投影(Orthogonal Projection)就是"平行光照射"的效果——远处的物体和近处的物体一样大。这样画面看起来更像经典的2D游戏。
如果用透视投影(近大远小),画面虽然更"3D",但不符合赤色要塞原版的感觉。我们要的是"用3D做的2D游戏",不是"3D游戏"。
1.5 最小可玩版本(MVP)定义
最小可玩版本(MVP,Minimum Viable Product)就是"最少做到什么程度,游戏就能玩了"。
对于赤色要塞的2.5D重制版,MVP 需要这些:
| 功能 | 描述 | 优先级 |
|---|---|---|
| 吉普车移动 | 一辆吉普车能8方向移动 | 必须 |
| 吉普车射击 | 能朝移动方向发射子弹 | 必须 |
| 基本地形 | 一块平坦的3D地面 | 必须 |
| 至少一种敌人 | 能被子弹消灭的步兵 | 必须 |
| 碰撞检测 | 子弹打中敌人,敌人消失 | 必须 |
| 摄像机跟随 | 画面跟着吉普车走 | 必须 |
| 基本HUD | 显示得分 | 可选 |
| 人质营救 | 能救人上车 | 可选(第二阶段) |
| 多种敌人 | 坦克、炮台等 | 可选(第三阶段) |
先跑通再迭代
不要一上来就想做完美版本。先做上面表格里"必须"的那几项,让游戏"能跑起来"。哪怕吉普车是一个方块,敌人是一个球,地面是一个平面——先能玩,再做好看。
1.6 开发路线图
整个教程按以下顺序推进,每一步都建立在上一步的基础上:
| 阶段 | 章节 | 你将获得什么 |
|---|---|---|
| 起步 | 2. 项目搭建 | 能运行的 Godot 项目 + 正确的2.5D摄像机 |
| 核心操作 | 3. 载具控制 | 能8方向移动的吉普车 |
| 战斗 | 4. 射击系统 | 能开枪打敌人的游戏 |
| 关卡 | 5. 地图滚动 | 有地图探索感的游戏 |
| 挑战 | 6. 敌人AI | 有挑战性的游戏 |
| 流程 | 7. 任务系统 | 有关卡流程的游戏 |
| 特色 | 8. 营救人质 | 有营救玩法的完整游戏 |
| 润色 | 9. 音效特效 | 有声有色的游戏 |
| 完成 | 10. 打磨发布 | 可以分享的游戏 |
每个章节的预计用时
| 章节 | 预计用时 | 难度 |
|---|---|---|
| 1. 核心玩法(本章) | 15分钟 | 阅读理解 |
| 2. 项目搭建 | 30~45分钟 | 简单 |
| 3. 载具控制 | 1~2小时 | 中等 |
| 4. 射击系统 | 1~2小时 | 中等 |
| 5. 地图滚动 | 1~2小时 | 中等偏难 |
| 6. 敌人AI | 2~3小时 | 较难 |
| 7. 任务系统 | 1~2小时 | 中等 |
| 8. 营救机制 | 1~2小时 | 中等 |
| 9. 音效特效 | 1~2小时 | 简单 |
| 10. 打磨发布 | 1~3小时 | 中等 |
不要追求一次做完
整个教程做完大约需要 12~20 小时。建议每天做1~2个章节,给自己留出消化和实验的时间。做游戏不是赶工,享受过程比快速完成更重要。
1.7 技术栈概览
我们使用以下技术来实现赤色要塞的2.5D重制:
| 技术 | 用途 | 在项目中的角色 |
|---|---|---|
| Godot 4.x | 游戏引擎 | 整个项目的开发平台 |
| C# / GDScript | 编程语言 | 编写游戏逻辑(两种语言都会提供) |
| CharacterBody3D | 玩家载具 | 处理吉普车的移动和碰撞 |
| Area3D | 子弹/触发器 | 检测子弹命中、人质触发区 |
| NavigationRegion3D | 敌人AI导航 | 让敌人能绕过障碍物追击玩家 |
| Camera3D(正交) | 2.5D视角 | 从上方俯视3D场景 |
| CPUParticles3D | 爆炸/烟雾特效 | 视觉反馈 |
| Resource / JSON | 关卡数据 | 存储关卡配置信息 |
1.8 与原版赤色要塞的对比
| 方面 | FC 原版 | 我们的 2.5D 重制 |
|---|---|---|
| 画面 | 2D 像素图 | 3D 低多边形模型 |
| 视角 | 纯俯视 | 略微倾斜的俯视 |
| 地形 | 平面,视觉假装有高低差 | 真正的3D地形起伏 |
| 爆炸 | 帧动画 | 3D 粒子特效 |
| 建筑 | 贴图 | 3D 模型可崩塌 |
| 操控 | 方向键+AB键 | WASD+鼠标/手柄 |
| 人数 | 最多2人 | 先做单人,后扩展双人 |
低多边形风格(Low Poly)
我们推荐使用"低多边形"美术风格。简单说就是用很少的面数构建3D模型,看起来有棱有角,但色彩鲜明、风格统一。这种风格的好处是:
- 不需要很高的建模技术
- 运行性能好
- 有独特的复古美感
- 和 FC 原版的像素风格在精神上一致
1.9 学习本教程的前置知识
在开始本教程之前,你需要掌握以下基础知识:
| 知识 | 最低要求 | 推荐学习资源 |
|---|---|---|
| Godot 基本操作 | 会创建节点、运行场景 | Godot 官方入门教程 |
| 编程基础 | 了解变量、函数、条件判断 | 任何编程入门教程 |
| 3D 坐标系 | 知道 X/Y/Z 轴是什么 | 本教程会随时提醒 |
| Git | 不需要 | - |
如果你完全没有 Godot 经验
如果你从来没有用过 Godot,建议先完成以下任一入门教程:
- Godot 官方入门:"Your first 2D game"(做一个2D躲避游戏)
- Godot 官方3D入门:"Your first 3D game"(做一个简单的3D平台跳跃)
完成后再来学本教程,会轻松很多。本教程不会解释"什么是节点"、"怎么添加子节点"这类基础操作。
C# 还是 GDScript?
本教程同时提供 C# 和 GDScript 两种语言的代码。如果你不知道选哪个:
| 对比 | GDScript | C# |
|---|---|---|
| 学习难度 | 低(Python 语法风格) | 中(需要了解 C# 语言) |
| 性能 | 稍慢 | 更快 |
| 社区资源 | 较多(Godot 社区主力语言) | 逐渐增多 |
| 适用场景 | 快速原型、小型项目 | 中大型项目、团队协作 |
新手推荐 GDScript,因为语法简单、Godot 原生支持、社区资源更多。如果你已经有 C# 经验,也可以直接用 C#。
1.10 游戏设计文档(GDD)速览
在正式开始编码之前,我们用一个简短的 GDD(Game Design Document,游戏设计文档)来总结整个游戏的设计:
游戏概述
| 项目 | 描述 |
|---|---|
| 游戏名称 | 赤色要塞 2.5D |
| 游戏类型 | 俯视角载具射击 |
| 视角 | 2.5D 正交俯视角 |
| 美术风格 | 低多边形(Low Poly) |
| 目标平台 | PC(Windows/Mac/Linux) |
| 单局时长 | 约 15~30 分钟 |
核心机制
- 载具驾驶:8方向移动,车头自动朝向移动方向
- 武器系统:机关枪(快速连射)+ 手雷(范围爆炸),可升级
- 地图探索:单向推进式地图,摄像机不能后退
- 敌人对抗:步兵、坦克、炮台、直升机、运兵车
- 人质营救:从建筑物中救人,救人数量决定武器升级
- 关卡推进:完成所有任务后到达撤离点通关
玩家体验目标
- 爽快感:开车冲撞、疯狂射击、爆炸满天飞
- 策略性:先打谁?先救人还是先清敌?
- 成就感:武器升级、关卡通关、高分评价
下一章
核心玩法设计好了,下一步就是把项目搭起来,配置好2.5D的摄像机。
