110 lines
6.5 KiB
Markdown
110 lines
6.5 KiB
Markdown
# 年糕历险记(NianGao Adventure)— Go 体素沙盒(类 Minecraft)
|
||
|
||
一个用 Go 实现的可扩展、可 Mod 的类 Minecraft 体素沙盒游戏。
|
||
游戏名 / 窗口标题 / 安装包统一使用中文名 **年糕历险记**(Windows 安装包为 NSIS 中文安装,见 [构建与发布.md](文档/构建与发布.md) §8)。
|
||
|
||
## 状态
|
||
|
||
项目处于**实现阶段**:M0–M3、M5 里程碑已完成(世界/渲染/交互/Mod/热更新),
|
||
M3.5/M4/M6 进行中(见 [路线图.md](文档/路线图.md))。
|
||
客户端/服务器可构建运行(客户端需 C 工具链:`tools/` 放 zig 或 MinGW,用 `scripts/build.ps1` 构建)。
|
||
|
||
## 文档中心
|
||
|
||
所有开发文档统一存放于 [`文档/`](文档/) 目录,**入口为 [`文档/索引.md`](文档/索引.md)**(书签式目录,含决策树,AI 助手先读它)。
|
||
|
||
### 第一层:总纲
|
||
|
||
| 文档 | 主题 |
|
||
| --- | --- |
|
||
| [设计.md](文档/设计.md) | 总体设计规范、素材库位置、Mod 加载、无限世界、易遗漏功能检查表 |
|
||
| [架构.md](文档/架构.md) | 分层架构、模块依赖、并发模型、核心数据流 |
|
||
| [开发规范.md](文档/开发规范.md) | Go 编码规范、Git 工作流、评审清单、ADR |
|
||
|
||
### 第二层:场景专篇(核心开发手册,共 20 篇)
|
||
|
||
**数据层**
|
||
|
||
| 文档 | 主题 |
|
||
| --- | --- |
|
||
| [区块管理.md](文档/场景/区块管理.md) | Chunk 数据结构、生命周期状态机、异步生成流水线、锁与并发 |
|
||
| [世界生成.md](文档/场景/世界生成.md) | 噪声选型、确定性地形、生成管线、跨区块安全 |
|
||
| [世界生态.md](文档/场景/世界生态.md) | 生物群系、树/植被/矿物后处理、随机刻、液体流动 |
|
||
|
||
**表现层**
|
||
|
||
| 文档 | 主题 |
|
||
| --- | --- |
|
||
| [渲染.md](文档/场景/渲染.md) | GL 线程亲和、mesh 策略(face culling / greedy)、纹理图集、透明排序、默认光影系统与光影包替换 |
|
||
| [光照.md](文档/场景/光照.md) | 天空光+方块光、BFS 传播、光源移除 relight、火把跨区块 |
|
||
| [音频.md](文档/场景/音频.md) | 3D 音效衰减、声源上限、分类音量、音频库线程 |
|
||
|
||
**交互层**
|
||
|
||
| 文档 | 主题 |
|
||
| --- | --- |
|
||
| [物理与碰撞.md](文档/场景/物理与碰撞.md) | AABB 逐轴解算、移动模式、非立方体碰撞、实体推挤 |
|
||
| [方块交互与动画.md](文档/场景/方块交互与动画.md) | DDA 射线拾取、破坏进度、方块耐久、crack 动画、放置、方块状态 |
|
||
| [红石与方块更新.md](文档/场景/红石与方块更新.md) | 延迟更新队列、迭代上限、红石信号、活塞推动 |
|
||
|
||
**玩法层**
|
||
|
||
| 文档 | 主题 |
|
||
| --- | --- |
|
||
| [实体系统.md](文档/场景/实体系统.md) | 实体生命周期、AI 与限频寻路、自然生成、掉落物 |
|
||
| [物品与背包.md](文档/场景/物品与背包.md) | 物品栈、背包规则表、配方索引、工具耐久、容器方块实体 |
|
||
| [UI与输入.md](文档/场景/UI与输入.md) | UI 渲染架构、拖拽/Shift 状态机、多语言、键位与鼠标 |
|
||
| [UI还原.md](文档/场景/UI还原.md) | **客户端 UI 一比一还原原版**:界面清单、像素级布局规格、字体/纹理、截图验收 |
|
||
| [村民系统.md](文档/场景/村民系统.md) | 村庄生成、职业村民日程 AI、**程序化建造房子**(特色)、交易 |
|
||
| [工作台与合成表.md](文档/场景/工作台与合成表.md) | 3×3 合成网格、配方索引匹配、tag 展开、批量合成、防刷 |
|
||
| [挖矿与矿物.md](文档/场景/挖矿与矿物.md) | 矿物深度分布、工具门槛、速度公式、掉落/烧炼/附魔、矿洞照明 |
|
||
| [动物体系.md](文档/场景/动物体系.md) | 动物行为 AI、繁殖与数量控制、剪羊毛/牛奶/蛋、驯服骑乘 |
|
||
| [僵尸与敌对生物.md](文档/场景/僵尸与敌对生物.md) | 敌对生物样板:AI 状态机、攻击模型、白天燃烧、村庄围攻 |
|
||
|
||
**网络层 / 稳定层**
|
||
|
||
| 文档 | 主题 |
|
||
| --- | --- |
|
||
| [多人同步.md](文档/场景/多人同步.md) | 服务器权威、实体插值、区块流限流、防作弊细化 |
|
||
| [存档与持久化.md](文档/场景/存档与持久化.md) | 保存时机、diff-only、异步保存池、原子写入、迁移 |
|
||
| [性能与内存.md](文档/场景/性能与内存.md) | Go GC 坑、对象池、锁粒度、channel 边界、pprof 流程 |
|
||
| [热更新.md](文档/场景/热更新.md) | Mod/素材/光影不重启热更新:分层矩阵、generation 版本化、原子切换与回滚 |
|
||
|
||
### 第三层:协议与格式
|
||
|
||
| 文档 | 主题 |
|
||
| --- | --- |
|
||
| [网络协议.md](文档/网络协议.md) | 帧格式、消息目录、序列化规则、同步与防作弊 |
|
||
| [存档格式.md](文档/存档格式.md) | level.dat、region、chunk 序列化、压缩、迁移 |
|
||
| [Mod开发指南.md](文档/Mod开发指南.md) | Mod 结构、manifest、Lua API、权限沙箱 |
|
||
|
||
### 第四层:流程与治理
|
||
|
||
| 文档 | 主题 |
|
||
| --- | --- |
|
||
| [测试与质量.md](文档/测试与质量.md) | 单测/集成/基准、race/fuzz、CI、质量门禁 |
|
||
| [构建与发布.md](文档/构建与发布.md) | 构建、go:embed、交叉编译、版本、发布清单 |
|
||
| [路线图.md](文档/路线图.md) | 里程碑 M0–M6、验收标准 |
|
||
|
||
> 新增或修改文档后,必须同步更新 [`文档/索引.md`](文档/索引.md)。
|
||
|
||
## AI 助手规则
|
||
|
||
仓库根目录提供面向 AI 编码助手的规则文件,统一引导助手先查文档索引、遵循开发规范再动手:
|
||
|
||
- [`CLAUDE.md`](CLAUDE.md) — Claude Code
|
||
- [`.cursorrules`](.cursorrules) — Cursor
|
||
- [`.github/copilot-instructions.md`](.github/copilot-instructions.md) — GitHub Copilot
|
||
|
||
## 目录规划
|
||
|
||
遵循 [设计.md](文档/设计.md) 第 1 节:`cmd/`、`internal/`、`assets/`、`mods/`、`resourcepacks/`、`worlds/`、`config/`、`logs/` 等。
|
||
|
||
## 素材包 / 光影包怎么放(内容包统一格式)
|
||
|
||
素材包、光影包与功能 Mod 共用同一套内容包格式(manifest + `type`,见 [设计.md](文档/设计.md) §1.3),**统一投放到 [`mods/`](mods/README.md)**:
|
||
|
||
- **素材包**(`type: "resource"`)覆盖默认材质;支持**原生 Minecraft 格式**(pack.mcmeta + assets/…)直接放置;默认素材包已在 [`resourcepacks/texture-pack-default1.20.5-26.2/`](resourcepacks/README.md)。
|
||
- **光影包**(`type: "shader"`)覆盖着色管线;**不下载光影包也没关系——未安装时使用系统默认光影**(内置,见 [渲染.md](文档/场景/渲染.md) §9)。
|
||
- **初版材质**:随客户端 `go:embed` 嵌入,无素材包时生效。
|