Files
Frostbite2D/README.md
Lenheart 51be8a6128 docs: 更新 README 文档内容
- 完善特性描述,添加音频系统、输入系统等新功能说明
- 更新依赖列表,添加 SDL2_mixer 和 zlib
- 优化示例代码,展示资源管理和 Actor 系统
- 添加模块概览表格和技术亮点章节
- 重构项目结构说明,反映最新代码组织
2026-03-28 04:42:54 +08:00

148 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Frostbite2D
一个现代化的跨平台 2D 游戏引擎,使用 C++17 开发。
## 特性
- **跨平台支持** - Windows、Linux、macOS、Nintendo Switch
- **现代渲染** - OpenGL 4.x 渲染器,支持批量渲染和自定义着色器
- **完整游戏框架** - 场景管理、Actor 系统、精灵动画
- **资源管理系统** - NPK 图片归档、PVF 脚本归档、LRU 缓存
- **音频系统** - SDL2_mixer支持 MP3/OGG/WAV
- **输入系统** - 键盘、鼠标、触摸、手柄完整支持
- **智能指针** - 自定义引用计数系统,避免内存泄漏
- **事件系统** - 支持捕获/冒泡、优先级、事件拦截
## 构建
本项目使用 [XMake](https://xmake.io/) 作为构建系统。
### 前置要求
- C++17 兼容编译器
- XMake
- SDL2、SDL2_image、SDL2_mixer、GLM、Glad、zlib
### 基本构建
```bash
xmake build
```
### 调试构建
```bash
xmake build -m debug
```
### 发布构建
```bash
xmake build -m release
```
### 平台特定构建
```bash
xmake build -p windows
xmake build -p linux
xmake build -p switch
```
## 快速开始
```cpp
#include <frostbite2D/core/application.h>
#include <frostbite2D/core/window.h>
#include <frostbite2D/2d/actor.h>
#include <frostbite2D/2d/sprite.h>
#include <frostbite2D/scene/scene.h>
#include <frostbite2D/scene/scene_manager.h>
#include <frostbite2D/resource/asset.h>
#include <frostbite2D/resource/npk_archive.h>
using namespace frostbite2D;
int main(int argc, char** argv) {
AppConfig config = AppConfig::createDefault();
config.windowConfig.width = 1280;
config.windowConfig.height = 720;
config.windowConfig.title = "My Game";
Application& app = Application::get();
if (!app.init(config)) {
return -1;
}
Asset::get().setWorkingDirectory("assets");
NpkArchive::get().open("images.npk");
auto scene = MakePtr<Scene>();
SceneManager::get().PushScene(scene);
auto sprite = Sprite::createFromFile("player.png");
if (sprite) {
sprite->SetPosition(100, 100);
scene->AddActor(sprite);
}
app.run();
app.shutdown();
return 0;
}
```
## 模块概览
| 模块 | 描述 |
|------|------|
| `core` | Application、Window 核心类 |
| `2d` | Actor、Sprite 2D 组件 |
| `graphics` | Renderer、Batch、Camera、Texture、Shader |
| `scene` | Scene、SceneManager 场景管理 |
| `resource` | Asset、NpkArchive、PvfArchive 资源管理 |
| `audio` | AudioSystem、Music、Sound 音频系统 |
| `animation` | Animation、AnimationData 动画系统 |
| `event` | 事件系统(窗口、键盘、鼠标、触摸、手柄) |
| `base` | RefObject、RefPtr 智能指针 |
| `types` | Vec2、Vec3、Rect、Color 数学类型 |
## 项目结构
```
Frostbite2D/
├── Frostbite2D/ # 引擎核心
│ ├── include/frostbite2D/ # 公共头文件
│ │ ├── 2d/ # 2D 图形组件
│ │ ├── animation/ # 动画系统
│ │ ├── audio/ # 音频系统
│ │ ├── base/ # 基础类型(智能指针)
│ │ ├── core/ # 核心引擎类
│ │ ├── event/ # 事件系统
│ │ ├── graphics/ # 图形渲染系统
│ │ ├── resource/ # 资源管理系统
│ │ ├── scene/ # 场景管理
│ │ ├── types/ # 类型定义
│ │ └── utils/ # 工具类
│ └── src/ # 实现文件
├── Game/ # 游戏示例
│ ├── assets/ # 游戏资源
│ └── src/ # 游戏源文件
├── platform/ # 平台配置
└── xmake.lua # 构建配置
```
## 技术亮点
- **批量渲染** - 2048 四边形批次优化
- **LRU 缓存** - NPK/SoundPack 资源缓存(默认 512MB
- **侵入式链表** - 高性能 Actor 子对象管理
- **变换系统** - 局部/世界变换矩阵自动更新
- **事件系统** - 支持捕获/冒泡、优先级、拦截
- **资源归档** - 支持 NPK图片/音频、PVF脚本
## 许可证
MIT License