![Extra2D Logo](./logo/logo_text_dark.svg)

Release License Build Status C++17 Nintendo Switch

🎮 专为 Nintendo Switch 打造的轻量级 2D 游戏引擎
高性能、易用、原生支持 Switch 平台

[📖 构建指南](./docs/Extra2D%20构建系统文档.md) | [🚀 快速开始](#快速开始) | [📦 示例程序](#示例程序) | [📚 API 教程](./docs/API_Tutorial/01_Quick_Start.md)
--- ## 🌟 简介 **Extra2D** 是一个专为 **Nintendo Switch** 平台设计的轻量级 2D 游戏引擎,采用现代 C++17 架构,充分利用 Switch 硬件特性,为开发者提供流畅的游戏开发体验。 > 💡 Extra2D 的诞生是为了让 Switch 独立游戏开发变得更加简单高效。无论是复古风格的像素游戏,还是现代化的 2D 作品,Extra2D 都能提供强大的支持。 ### ✨ 核心特性 - **🎯 Switch 原生支持**:专为 Nintendo Switch 硬件优化,支持掌机/主机双模式 - **🎬 高级动画系统**:支持骨骼动画、精灵动画、补间动画 - **🎵 音频系统**:基于 SDL2_mixer 的高质量音频播放,支持 BGM 和音效 - **🎨 渲染系统**:基于 OpenGL ES 的 2D 渲染,支持自定义着色器 - **💾 数据持久化**:游戏存档、配置文件的便捷读写 - **🔧 空间索引**:内置四叉树和空间哈希碰撞检测系统 - **🖱️ UI 系统**:完整的 UI 控件支持(按钮、文本、滑块等) --- ## 🚀 快速开始 ### 环境要求 | 组件 | 要求 | |:----:|:-----| | 开发环境 | devkitPro + devkitA64 (Switch) / MinGW-w64 (Windows) | | C++ 标准 | C++17 | | 构建工具 | xmake | | 目标平台 | Nintendo Switch / Windows (MinGW) | ### 安装 xmake ```bash # Windows (PowerShell) Invoke-Expression (Invoke-WebRequest 'https://xmake.io/psget.text' -UseBasicParsing).Content # macOS brew install xmake # Linux sudo add-apt-repository ppa:xmake-io/xmake sudo apt update sudo apt install xmake ``` ## 📚 文档 - [📖 API 教程](./docs/API_Tutorial/01_Quick_Start.md) - 完整的 API 使用教程 - [01. 快速开始](./docs/API_Tutorial/01_Quick_Start.md) - [02. 场景系统](./docs/API_Tutorial/02_Scene_System.md) - [03. 节点系统](./docs/API_Tutorial/03_Node_System.md) - [04. 资源管理](./docs/API_Tutorial/04_Resource_Management.md) - [05. 输入处理](./docs/API_Tutorial/05_Input_Handling.md) - [06. 碰撞检测](./docs/API_Tutorial/06_Collision_Detection.md) - [07. UI 系统](./docs/API_Tutorial/07_UI_System.md) - [08. 音频系统](./docs/API_Tutorial/08_Audio_System.md) - [🔧 构建系统文档](./docs/Extra2D%20构建系统文档.md) - 详细的构建系统说明 --- ## 🏗️ 架构概览 ```mermaid mindmap root((Extra2D
引擎架构)) 核心基础层 数学库 向量 Vec2/Vec3 矩形 Rect 矩阵 glm::mat4 颜色 Color 大小 Size 类型系统 智能指针 Ptr/UniquePtr 字符串 String 平台抽象层 窗口管理 Window 输入处理 Input 键盘 Keyboard 鼠标 Mouse 手柄 Gamepad 触摸 Touch 输入码 InputCodes 渲染系统 渲染后端 Renderer OpenGL 实现 GLRenderer GLShader GLTexture GLSpriteBatch 相机 Camera 纹理 Texture 字体 Font 着色器系统 ShaderSystem 渲染目标 RenderTarget 场景系统 场景管理器 SceneManager 场景 Scene 过渡动画 Transition 节点系统 Node 精灵 Sprite 动画精灵 AnimatedSprite 形状 ShapeNode 粒子系统 ParticleSystem 空间索引 空间管理器 SpatialManager 四叉树 QuadTree 空间哈希 SpatialHash 动画系统 动画控制器 AnimationController 动画剪辑 AnimationClip 关键帧 AnimationFrame 插值引擎 InterpolationEngine 精灵帧 SpriteFrame 动作系统 动作基类 Action 位移动作 MoveBy/MoveTo 缩放动作 ScaleBy/ScaleTo 旋转动作 RotateBy/RotateTo 跳跃动作 JumpBy/JumpTo 淡入淡出 FadeIn/FadeOut 组合动作 Sequence/Spawn/Repeat 缓动函数 Ease 事件系统 事件队列 EventQueue 事件分发 EventDispatcher 事件类型 窗口事件 键盘事件 鼠标事件 UI事件 音频系统 音频引擎 AudioEngine 音效 Sound 资源管理 资源管理器 ResourceManager 纹理池 TexturePool 显存管理 VRAMManager UI系统 基础控件 Widget 按钮 Button 标签 Label 文本 Text 进度条 ProgressBar 滑块 Slider 复选框 CheckBox 单选框 RadioButton 特效系统 粒子系统 ParticleSystem 后处理 PostProcess 自定义效果 CustomEffectManager 工具库 日志 Logger 计时器 Timer 随机数 Random 数据持久化 Data ``` ## 🛠️ 技术栈 | 技术 | 用途 | 版本 | |:----:|:-----|:----:| | OpenGL ES | 2D 图形渲染 | 3.0+ | | GLFW | 窗口和输入管理 | 3.3+ | | GLM | 数学库 | 0.9.9+ | | SDL2_mixer | 音频播放 | 2.0+ | | spdlog | 日志系统 | 最新版 | | stb_image | 图像加载 | 最新版 | | freetype | 字体渲染 | 最新版 | | xmake | 构建系统 | 2.5+ | --- ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! --- ## 📄 许可证 Extra2D 使用 [MIT](LICENSE) 许可证。 --- ## 联系方式 - GitHub Issues: https://github.com/ChestnutYueyue/extra2d/issues - 作者: [ChestnutYueyue](https://github.com/ChestnutYueyue)