
🎮 专为 Nintendo Switch 打造的轻量级 2D 游戏引擎
高性能、易用、原生支持 Switch 平台
[📖 构建指南](./SWITCH_BUILD_GUIDE.md) | [🚀 快速开始](#快速开始) | [📦 项目结构](#项目结构) | [💬 问题反馈](https://github.com/ChestnutYueyue/extra2d/issues)
---
## 🌟 简介
**Extra2D** 是一个专为 **Nintendo Switch** 平台设计的轻量级 2D 游戏引擎,采用现代 C++17 架构,充分利用 Switch 硬件特性,为开发者提供流畅的游戏开发体验。
> 💡 Extra2D 的诞生是为了让 Switch 独立游戏开发变得更加简单高效。无论是复古风格的像素游戏,还是现代化的 2D 作品,Extra2D 都能提供强大的支持。
### ✨ 核心特性
- **🎯 Switch 原生支持**:专为 Nintendo Switch 硬件优化,支持掌机/主机双模式
- **🎬 高级动画系统**:支持骨骼动画、精灵动画、补间动画,提供 ALS 动画格式支持
- **📜 脚本系统**:集成 Squirrel 脚本引擎,支持热更新和快速迭代开发
- **🎵 音频系统**:基于 SDL2 的高质量音频播放,支持 BGM 和音效
- **🎨 特效系统**:粒子系统、后处理效果、自定义着色器支持
- **💾 数据持久化**:游戏存档、配置文件的便捷读写
---
## 🗺️ 架构概览
```mermaid
mindmap
root((Extra2D 引擎架构))
核心系统
应用管理 Application
渲染后端 RenderBackend
窗口管理 Window
输入处理 Input
音频引擎 AudioEngine
资源管理 ResourceManager
事件系统 EventDispatcher
场景管理
场景 Scene
场景管理器 SceneManager
过渡动画 Transition
空间索引 SpatialManager
节点系统
基础节点 Node
精灵 Sprite
文本 Text
形状 ShapeNode
摄像机 Camera
动画节点 AnimationNode
动画系统
动作系统 Action
精灵动画 AnimatedSprite
骨骼动画支持
动画缓存 AnimationCache
动画事件 AnimationEvent
脚本系统
Squirrel 脚本引擎
脚本节点 ScriptNode
完整 API 绑定
特效系统
粒子系统 ParticleSystem
后处理 PostProcess
自定义效果管理器
UI 系统
基础控件 Widget
按钮 Button
工具库
音频播放 Sound
数据持久化 Data
随机数 Random
定时器 Timer
字体 FontAtlas
数学库
向量 Vec2/Vec3
矩形 Rect
大小 Size
颜色 Color
```
---
## 🚀 快速开始
### 环境要求
| 组件 | 要求 |
|:----:|:-----|
| 开发环境 | devkitPro + devkitA64 (Switch) / MinGW-w64 (Windows) |
| C++ 标准 | C++17 |
| 构建工具 | xmake |
| 目标平台 | Nintendo Switch / Windows (MinGW) |
### 安装 devkitPro
```bash
# Windows (以管理员身份运行 PowerShell)
Invoke-WebRequest -Uri "https://github.com/devkitPro/pacman/releases/latest/download/devkitpro-pacman.amd64.exe" -OutFile "devkitpro-pacman.exe"
.\devkitpro-pacman.exe
# 安装 Switch 开发工具链
pacman -S switch-dev switch-portlibs
```
### 构建项目
#### Switch 平台
```bash
# 克隆仓库
git clone https://github.com/ChestnutYueyue/extra2d.git
cd extra2d
# 配置 Switch 平台构建
xmake f -p switch --mode=release
# 构建引擎
xmake
# 构建示例游戏
xmake -g examples
```
#### Windows (MinGW) 平台
```bash
# 克隆仓库
git clone https://github.com/ChestnutYueyue/extra2d.git
cd extra2d
# 配置 MinGW 平台构建
xmake f -p mingw --mode=release
# 安装依赖
xmake require -y
# 构建引擎和示例
xmake
# 运行示例
xmake run hello_world
```
### 生成 NSP 可运行文件
```bash
# 打包推箱子游戏示例
xmake package push_box
# 生成的文件位于
# build/switch/release/push_box/push_box.nsp
```
---
## 📝 Hello World 示例
```cpp
#include