# mini_game_engine **Repository Path**: oj-code/mini_game_engine ## Basic Information - **Project Name**: mini_game_engine - **Description**: c++ mini game engine - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-18 - **Last Updated**: 2026-05-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Mini Game Engine - 游戏引擎教程项目 从零开始构建游戏引擎,2D部分完成银河恶魔城Demo,3D部分将完成动作游戏Demo。 **当前进度:第30章/30章 — 完整3D动作游戏Demo(全部完成)** ## 项目简介 本项目是一个循序渐进的游戏引擎教程。2D部分共18章,从创建窗口到完整可玩的银河恶魔城风格游戏。3D部分第19-30章,从3D渲染基础到完整3D动作游戏Demo。 **最新章节(第30章 - 最终章):** - 全系统整合 — 渲染/物理/动画/战斗/AI/音频/UI/粒子/场景全部联动 - 3个完整关卡 — 教学训练场→战斗竞技场���BOSS决战 - BOSS三阶段 — HP降低时速度和攻击频率递增,狂暴模式 - 三段连招 — J键连续按击触发连击,伤害递增 - 完整游戏流程 — 标题画面→游戏→暂停→死亡→通关 ## 技术栈 | 组件 | 技术 | 引入章节 | |------|------|----------| | 窗口/输入 | GLFW 3.3.8 | 第1章 | | 图形 | OpenGL 3.3 Core | 第2章 | | 图像加载 | stb_image | 第4章 | | 音频(2D) | miniaudio | 第13章 | | 音频(3D) | FMOD | 第29章 | | 调试UI | Dear ImGui | 第1章 | | 模型加载 | Assimp (3D部分) | 第20章 | | 构建系统 | CMake 3.17+ | — | | 平台 | Windows (VS2019/VS2022) | — | ## 章节目录 ### 2D部分(第1-18章)✅ 已完成 **基础篇(1-4章)** | 章节 | 标题 | 核心内容 | |------|------|----------| | 1 | 窗口创建 | GLFW初始化、OpenGL上下文、ImGui集成 | | 2 | 三角形渲染 | 顶点缓冲、着色器编译、渲染管线 | | 3 | 矩阵变换 | Vec2/3/4、Mat4、正交投影、MVP管线 | | 4 | 纹理精灵 | 纹理加载(stb_image)、UV映射、Sprite类 | **核心系统篇(5-8章)** | 章节 | 标题 | 核心内容 | |------|------|----------| | 5 | AABB碰撞 | 轴对齐包围盒、碰撞检测、穿透深度计算 | | 6 | 动画系统 | 关键帧动画、动画片段、动画控制器 | | 7 | 平台物理 | 重力、地面检测、平台跳跃物理 | | 8 | 角色控制 | CharacterController2D、输入处理、状态管理 | **世界构建篇(9-13章)** | 章节 | 标题 | 核心内容 | |------|------|----------| | 9 | 瓦片地图 | Tilemap数据结构、多图层、碰撞图层 | | 10 | 纹理瓦片 | Tileset图集、UV计算、地图渲染器 | | 11 | 精灵动画 | Spritesheet动画、AnimatedSprite | | 12 | 摄像机系统 | Camera2D跟随、平滑插值、边界限制、震动 | | 13 | 音频系统 | miniaudio集成、BGM/SFX、音量控制 | **游戏玩法篇(14-18章)** | 章节 | 标题 | 核心内容 | |------|------|----------| | 14 | 战斗系统 | 攻击状态机、Hitbox/Hurtbox、伤害计算 | | 15 | 敌人AI | FSM状态机、巡逻/追击/攻击、近战/远程/混合型 | | 16 | 房间关卡 | 多房间、传送门触发器、淡入淡出过渡、存档点 | | 17 | UI系统 | HP/MP血条、伤害飘字、暂停菜单、二段跳、墙跳 | | 18 | 完整Demo | 武器系统、技能系统、JSON关卡、视差背景、粒子特效、编辑模式、BOSS战 | ### 3D部分(第19-30章)✅ 已完成 **3D基础篇(19-25章)** | 章节 | 标题 | 核心内容 | 状态 | |------|------|----------|------| | 19 | 3D渲染基础 | 透视投影、MVP管线、旋转立方体、深度测试 | ✅ | | 20 | 3D模型加载 | Assimp集成、OBJ/FBX加载、Mesh数据结构 | ✅ | | 21 | 光照系统 | Phong着色、方向光/点光/聚光灯 | ✅ | | 22 | 材质与纹理 | 多纹理、法线贴图、TBN矩阵、材质系统 | ✅ | | 23 | 3D摄像机 | Camera3D类、Orbit/FPS/TPS三模式、平滑跟随 | ✅ | | 24 | 3D角色控制器 | 重力、地面检测、WASD移动、跳跃、冲刺、朝向转向 | ✅ | | 25 | 骨骼动画 | 骨骼树、蒙皮Shader、关键帧插值、动画混合 | ✅ | **3D游戏篇(26-30章)** | 章节 | 标题 | 核心内容 | 状态 | |------|------|----------|------| | 26 | 3D战斗系统 | 球球/球胶囊碰撞、Hitbox/Hurtbox、三段连招、Hit Stop顿帧、受击闪烁血条 | ✅ | | 27 | 敌人AI + PhysX | PhysX物理引擎集成、AI状态机(巡逻/追击/攻击)、视野检测、Kinematic角色碰撞 | ✅ | | 28 | 场景与关卡 | 程序化天空盒、3D粒子系统(火花/拖尾/环境)、场景管理器(训练场/竞技场)、触发器系统、淡入淡出过渡 | ✅ | | 29 | UI与音频整合 | FMOD 3D空间音效、玩家HUD(HP/MP)、敌人头顶血条、伤害飘字、BGM循环、音量控制面板 | ✅ | | 30 | 3D动作游戏Demo | 全系统整合、3关卡、BOSS战、完整游戏流程 | ✅ | ## 环境要求 - Windows 10/11 - Visual Studio 2019 或 2022 - CMake 3.17+ - Git ## 快速开始 ```batch # 1. 下载第三方依赖 setup.bat download_miniaudio.bat # 2. 构建 mkdir build && cd build cmake -G "Visual Studio 16 2019" -A x64 .. cmake --build . --config Debug # 3. 运行最终3D Demo(第30章:完整3D动作游戏) Debug\30_3d_demo.exe # 或运行2D最终Demo(第18章) Debug\18_full_demo.exe ``` ## 项目结构 ``` mini_game_engine/ ├── source/ # 引擎源码 │ ├── engine/ # 核心(窗口、渲染、纹理、粒子系统) │ ├── math/ # 数学库(向量、矩阵) │ ├── physics/ # 物理(AABB、碰撞检测) │ ├── animation/ # 动画(关键帧、状态机) │ ├── tilemap/ # 瓦片地图 │ ├── camera/ # 2D摄像机 │ ├── audio/ # 音频系统(miniaudio) │ ├── combat/ # 战斗系统(伤害、Hitbox) │ ├── ai/ # 敌人AI(FSM状态机) │ ├── scene/ # 房间系统(关卡、触发器) │ ├── ui/ # HUD(血条、飘字) │ ├── game/ # 游戏逻辑(平台物理控制器) │ ├── engine3d/ # 3D引擎(摄像机、骨骼动画、战斗、AI、天空盒、粒子、FMOD音频、游戏UI) │ └── editor/ # 关卡编辑器 ├── examples/ # 29个示例(每章一个可独立运行的程序) ├── data/ # 资源 │ ├── texture/ # 纹理(角色、瓦片、背景、特效) │ ├── audio/ # 音频(4首BGM + 9个音效) │ ├── shader/ # GLSL着色器 │ └── levels/ # JSON关卡数据(5个关卡) ├── depends/ # 第三方库(setup.bat下载) ├── CMakeLists.txt # 构建配置 └── setup.bat # 依赖下载脚本 ``` ## 最终Demo操作(第18章) **移动与跳跃:** | 按键 | 功能 | |------|------| | A/D | 移动(有加速度曲线) | | Space | 跳跃(短按低跳,长按高跳) | | 空中Space | 二段跳(需拾取或编辑模式开启) | | 贴墙+Space | 蹬墙跳(需拾取或编辑模式开启) | **战斗:** | 按键 | 功能 | |------|------| | J | 普通攻击(当前武器) | | L | 技能攻击(消耗15MP,每种武器不同效果) | | K | 瞬移到敌人身后(消耗20MP,带残影效果) | | Q | 切换武器(拳头/长剑/重锤) | **系统:** | 按键 | 功能 | |------|------| | W/↑ | 进入传送门 | | ESC | 暂停 | | E | 编辑模式(调物理参数、编辑关卡和敌人) | | Tab | 调试面板 | | R | 重生 | | Enter | 开始/通关返回 | ## 武器系统 | 武器 | 获取位置 | 普攻特点 | L键技能 | |------|----------|----------|---------| | 拳头 | 默认 | 快速、低伤害 | 冲拳(冲刺+攻击) | | 长剑 | 走廊拾取 | 中速、大范围 | 剑气波(前方300px AOE) | | 重锤 | 实验室拾取 | 慢速、高伤害 | 震地(周围200px AOE+屏幕震动) | ## 编辑模式(E键) 四个标签页: - **Physics** — 移动速度、加速度、跳跃力、重力、土狼时间、跳跃缓冲等 - **Player** — HP/MP数值、攻击力、技能冷却、能力开关(二段跳/墙跳/瞬移/武器) - **Enemies** — 添加/删除/修改敌人类型、血量、巡逻范围 - **Level** — 添加/删除/修改平台 ## 项目完成 全部30章教程已完成。从第1章创建窗口到第30章完整3D动作游戏Demo, 涵盖了2D和3D游戏引擎开发的核心技术。 感谢 Claude Opus 4.5(第1-14章)和 Claude Opus 4.6(第12章修复、第14章重写、第15-30章)的开发工作。