1. 核心玩法概述
2026/4/13大约 8 分钟
1. 核心玩法概述:象棋是什么?"战魂版"又是什么?
本章你将掌握
| 技能 | 难度 | Godot节点 | 说明 |
|---|---|---|---|
| 棋盘坐标系统 | ⭐⭐ | Node3D + 数组映射 | 9x10网格坐标转换 |
| 走法规则引擎 | ⭐⭐⭐⭐ | 纯逻辑代码 | 7种棋子的合法走法判定 |
| 3D棋子渲染 | ⭐⭐ | MeshInstance3D + Label3D | 立体棋子+汉字显示 |
| 鼠标拾取系统 | ⭐⭐⭐ | RayCast3D + CollisionObject3D | 3D场景中选中棋子 |
| 将军/将死判定 | ⭐⭐⭐⭐ | 递归搜索算法 | 检测将军状态和无路可走 |
| Minimax AI | ⭐⭐⭐⭐⭐ | 博弈树搜索 | 电脑对手智能决策 |
| 吃子战斗动画 | ⭐⭐⭐ | AnimationPlayer + Tween | 棋子碰撞+粒子爆炸 |
| 网络对战 | ⭐⭐⭐⭐ | ENetMultiplayerPeer | 局域网联机 |
节点层级预览
ChineseChess (Node3D)
├── GameCamera (Camera3D, 正交投影)
├── ChessBoard (Node3D)
│ ├── BoardMesh (MeshInstance3D)
│ ├── GridLines (MeshInstance3D)
│ └── RiverLabel (Label3D)
├── Pieces (Node3D)
│ ├── RedGeneral (Area3D)
│ │ ├── PieceMesh (MeshInstance3D)
│ │ └── CharLabel (Label3D)
│ ├── RedAdvisor1 (Area3D)
│ ├── ... (其他红方棋子)
│ ├── BlackGeneral (Area3D)
│ └── ... (其他黑方棋子)
├── GameLogic (Node)
│ ├── RuleEngine (脚本)
│ ├── AIPlayer (脚本)
│ └── NetworkManager (脚本)
├── Effects (Node3D)
│ ├── SelectionHighlight (MeshInstance3D)
│ ├── MoveHint (MultiMeshInstance3D)
│ └── CaptureParticles (GPUParticles3D)
└── UI (CanvasLayer)
├── TurnIndicator
├── Timer
└── MoveHistory游戏核心节点
点击节点可跳转到对应文档查看详细说明。
系统架构图
┌─────────────────────────────────────────────┐
│ 中国象棋战魂版核心系统 │
├─────────────────────────────────────────────┤
│ │
│ 输入系统 → 棋子选择 → 合法走法计算 │
│ ↓ │
│ 移动确认 → 规则引擎 → 将军判定 │
│ ↓ │
│ 吃子动画 → 胜负判定 → 回合切换 │
│ ↓ │
│ AI决策 / 网络同步 → 棋谱记录 │
│ │
└─────────────────────────────────────────────┘1.1 象棋是什么?——给完全没下过象棋的你
想象一下:两个人面对面坐着,中间摆着一张画满线条的棋盘,每人手里有 16 颗棋子。你走一步,我走一步,谁先把对方的"老板"(将/帅)逼到无路可逃,谁就赢了。
这就是中国象棋——一种有上千年历史的棋类游戏。
一句话理解象棋
你可以把象棋想象成"古代战争模拟器":你是将军,棋子是你的军队,棋盘就是战场。你的目标很简单——抓住对方的统帅。
棋子一览
象棋双方各有 16 枚棋子,总共 32 枚。下面这个表格列出了所有棋子的"身份"和"能力":
| 棋子 | 红方名称 | 黑方名称 | 每方数量 | 一句话描述 |
|---|---|---|---|---|
| 将/帅 | 帅 | 将 | 1 | 你的"命根子",被抓就输了 |
| 士/仕 | 仕 | 士 | 2 | 老板的贴身保镖,只能在九宫格里斜着走 |
| 象/相 | 相 | 象 | 2 | 走"田"字的大个子,不能过河,还会被"塞象眼" |
| 马 | 馬 | 馬 | 2 | 走"日"字的骑兵,但会被"蹩马腿" |
| 车 | 車 | 車 | 2 | 最猛的战车,横冲直撞,想走多远走多远 |
| 炮 | 炮 | 砲 | 2 | 远程射手,移动像车,但吃子必须隔一个棋子"翻山" |
| 兵/卒 | 兵 | 卒 | 5 | 小兵,过河前只能往前走,过河后能左右也能走 |
棋盘长什么样?
象棋棋盘由 9 条竖线和 10 条横线交叉组成,形成 90 个交叉点。棋子就放在这些交叉点上(不是格子里面)。
棋盘有几个关键区域:
| 区域 | 位置 | 说明 |
|---|---|---|
| 楚河汉界 | 棋盘中间 | 把棋盘分成上下两半,红方和黑方各占一半 |
| 九宫格 | 每边 3x3 区域 | 将/帅和士/仕只能在这个小区域内活动 |
| 兵/卒起始位 | 每方第 4 排 | 5 个小兵一字排开 |
1.2 "战魂版"是什么意思?
传统象棋是 2D 的——棋盘画在纸上或屏幕上,棋子是扁平的圆圈。虽然经典,但总觉得少了点什么。
"战魂版" = 传统中国象棋的规则 + 3D 视觉增强。
简单来说,就是让象棋"活"起来:
| 对比项 | 传统象棋 | 战魂版 |
|---|---|---|
| 棋盘 | 扁平的 2D 纸面 | 立体的 3D 木纹棋盘 |
| 棋子 | 圆形平面图标 | 3D 圆柱体棋子,上面刻着汉字 |
| 吃子 | 棋子消失,换位置 | 战斗动画 + 粒子爆炸特效 |
| 摄像机 | 固定俯视角度 | 3D 摄像机,自动旋转、特写 |
| 音效 | 静悄悄 | 走子音效、吃子战斗音效、胜利音乐 |
为什么要做 3D?
不是因为 2D 不好,而是 3D 能让你在学象棋的同时,学到真正的游戏开发技术——3D 场景搭建、动画系统、粒子特效、摄像机控制……这些都是游戏开发的核心技能。
1.3 规则速览:10 分钟看懂象棋怎么下
基本规则
- 红方先行:每局开始,红方先走第一步
- 轮流走子:红走一步,黑走一步,交替进行
- 一次走一枚:每回合只能移动一枚棋子
- 不能走到有自己棋子的位置:可以走到有对方棋子的位置(那就是"吃子")
- 被将军必须应将:如果你的将/帅正在被攻击(被"将军"),你必须立刻解围
胜负判定
| 情况 | 结果 |
|---|---|
| 一方的将/帅被吃掉 | 被吃方输 |
| 一方被"将死"(无法解除将军状态) | 被将死方输 |
| 一方无子可走(被困毙) | 无子可走方输 |
| 双方同意和棋 | 和棋 |
| 反复出现相同局面(三次) | 和棋 |
特殊规则
蹩马腿:马走"日"字,但如果"日"字的第一步(直线方向)有棋子挡着,马就跳不过去。
想象马在位置 A:
A - B - C
|
D
马想跳到 C,但 B 处有棋子 → 蹩腿,跳不了
马想跳到 D,前方无阻挡 → 可以跳塞象眼:象走"田"字,但"田"字中心有棋子的话,象就飞不过去。
将帅不能对面:将和帅不能在同一列上直接"看"到对方(中间没有任何棋子阻挡)。这意味着你不能走一步棋,导致两个老板面对面。
新手最常犯的错误
- 忘记"不能送将"——你走完一步后,自己的将/帅不能处于被攻击状态
- 不知道"蹩马腿"——马不是想跳就能跳的
- 炮不会吃子——炮吃子必须隔一个棋子(炮架),不能直接吃
1.4 本项目的最终目标
我们要用 Godot 引擎,从零开始做一个完整的中国象棋战魂版游戏:
1.5 技术选型一览
| 技术 | 用途 | 为什么选它 |
|---|---|---|
| Godot 4.x | 游戏引擎 | 免费、开源、轻量、3D支持好 |
| C# / GDScript | 编程语言 | Godot 原生支持 |
| Node3D | 3D场景节点 | 棋盘和棋子的基础 |
| AnimationPlayer | 动画系统 | 吃子战斗动画 |
| GPUParticles3D | 粒子特效 | 吃子爆炸效果 |
| Camera3D | 摄像机 | 3D视角控制 |
| ENetMultiplayerPeer | 网络模块 | 局域网联机对战 |
| Tween | 补间动画 | 棋子平滑移动 |
1.6 章节导航
本章带你了解了象棋的基础规则和"战魂版"的含义。接下来,我们要开始搭建项目了。
学习路线建议
如果你是第一次接触 Godot,建议按章节顺序学习。每一章都建立在前一章的基础上,跳着看可能会遇到理解困难。
| 下一章 | 内容 |
|---|---|
| → 2. 项目搭建与场景配置 | 创建 3D 棋盘场景、配置摄像机和灯光 |
1.7 本章小结
| 要点 | 说明 |
|---|---|
| 中国象棋 | 两人对弈的棋类游戏,目标是将死对方的将/帅 |
| 战魂版 | 传统规则 + 3D视觉增强(3D棋盘、战斗动画、粒子特效) |
| 项目目标 | 用 Godot 引擎实现完整的中国象棋战魂版 |
| 技术栈 | Godot 4.x + C#/GDScript + Node3D + 动画系统 + 网络模块 |
