docs: 更新 README 文档内容
- 完善特性描述,添加音频系统、输入系统等新功能说明 - 更新依赖列表,添加 SDL2_mixer 和 zlib - 优化示例代码,展示资源管理和 Actor 系统 - 添加模块概览表格和技术亮点章节 - 重构项目结构说明,反映最新代码组织
This commit is contained in:
84
README.md
84
README.md
@@ -1,14 +1,17 @@
|
|||||||
# Frostbite2D
|
# Frostbite2D
|
||||||
|
|
||||||
一个现代化的跨平台2D游戏引擎,使用C++17开发。
|
一个现代化的跨平台 2D 游戏引擎,使用 C++17 开发。
|
||||||
|
|
||||||
## 特性
|
## 特性
|
||||||
|
|
||||||
- **跨平台支持** - Windows、Linux、macOS、Nintendo Switch
|
- **跨平台支持** - Windows、Linux、macOS、Nintendo Switch
|
||||||
- **现代渲染** - OpenGL渲染器,支持批量渲染和着色器管理
|
- **现代渲染** - OpenGL 4.x 渲染器,支持批量渲染和自定义着色器
|
||||||
- **完整的游戏开发框架** - 场景管理、精灵系统、资源管理
|
- **完整游戏框架** - 场景管理、Actor 系统、精灵动画
|
||||||
- **高效的工具集** - 二进制读取器、PVF归档格式、脚本解析器
|
- **资源管理系统** - NPK 图片归档、PVF 脚本归档、LRU 缓存
|
||||||
- **智能指针系统** - 引用计数指针,避免内存泄漏
|
- **音频系统** - SDL2_mixer,支持 MP3/OGG/WAV
|
||||||
|
- **输入系统** - 键盘、鼠标、触摸、手柄完整支持
|
||||||
|
- **智能指针** - 自定义引用计数系统,避免内存泄漏
|
||||||
|
- **事件系统** - 支持捕获/冒泡、优先级、事件拦截
|
||||||
|
|
||||||
## 构建
|
## 构建
|
||||||
|
|
||||||
@@ -18,7 +21,7 @@
|
|||||||
|
|
||||||
- C++17 兼容编译器
|
- C++17 兼容编译器
|
||||||
- XMake
|
- XMake
|
||||||
- SDL2、SDL2_image、GLM、Glad
|
- SDL2、SDL2_image、SDL2_mixer、GLM、Glad、zlib
|
||||||
|
|
||||||
### 基本构建
|
### 基本构建
|
||||||
|
|
||||||
@@ -51,13 +54,16 @@ xmake build -p switch
|
|||||||
```cpp
|
```cpp
|
||||||
#include <frostbite2D/core/application.h>
|
#include <frostbite2D/core/application.h>
|
||||||
#include <frostbite2D/core/window.h>
|
#include <frostbite2D/core/window.h>
|
||||||
|
#include <frostbite2D/2d/actor.h>
|
||||||
#include <frostbite2D/2d/sprite.h>
|
#include <frostbite2D/2d/sprite.h>
|
||||||
#include <frostbite2D/scene/scene.h>
|
#include <frostbite2D/scene/scene.h>
|
||||||
#include <frostbite2D/scene/scene_manager.h>
|
#include <frostbite2D/scene/scene_manager.h>
|
||||||
|
#include <frostbite2D/resource/asset.h>
|
||||||
|
#include <frostbite2D/resource/npk_archive.h>
|
||||||
|
|
||||||
using namespace frostbite2D;
|
using namespace frostbite2D;
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char** argv) {
|
||||||
AppConfig config = AppConfig::createDefault();
|
AppConfig config = AppConfig::createDefault();
|
||||||
config.windowConfig.width = 1280;
|
config.windowConfig.width = 1280;
|
||||||
config.windowConfig.height = 720;
|
config.windowConfig.height = 720;
|
||||||
@@ -68,10 +74,13 @@ int main(int argc, char **argv) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Asset::get().setWorkingDirectory("assets");
|
||||||
|
NpkArchive::get().open("images.npk");
|
||||||
|
|
||||||
auto scene = MakePtr<Scene>();
|
auto scene = MakePtr<Scene>();
|
||||||
SceneManager::get().PushScene(scene);
|
SceneManager::get().PushScene(scene);
|
||||||
|
|
||||||
auto sprite = Sprite::createFromFile("assets/player.png");
|
auto sprite = Sprite::createFromFile("player.png");
|
||||||
if (sprite) {
|
if (sprite) {
|
||||||
sprite->SetPosition(100, 100);
|
sprite->SetPosition(100, 100);
|
||||||
scene->AddActor(sprite);
|
scene->AddActor(sprite);
|
||||||
@@ -84,28 +93,55 @@ int main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 模块概览
|
||||||
|
|
||||||
|
| 模块 | 描述 |
|
||||||
|
|------|------|
|
||||||
|
| `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/
|
||||||
├── Frostbite2D/ # 引擎核心代码
|
├── Frostbite2D/ # 引擎核心
|
||||||
│ ├── include/ # 公共头文件
|
│ ├── include/frostbite2D/ # 公共头文件
|
||||||
│ │ └── frostbite2D/
|
│ │ ├── 2d/ # 2D 图形组件
|
||||||
│ │ ├── 2d/ # 2D图形组件
|
│ │ ├── animation/ # 动画系统
|
||||||
│ │ ├── core/ # 核心引擎类
|
│ │ ├── audio/ # 音频系统
|
||||||
│ │ ├── graphics/ # 图形渲染系统
|
│ │ ├── base/ # 基础类型(智能指针)
|
||||||
│ │ ├── scene/ # 场景管理
|
│ │ ├── core/ # 核心引擎类
|
||||||
│ │ ├── types/ # 类型定义
|
│ │ ├── event/ # 事件系统
|
||||||
│ │ └── utils/ # 工具类
|
│ │ ├── graphics/ # 图形渲染系统
|
||||||
│ └── src/ # 实现文件
|
│ │ ├── resource/ # 资源管理系统
|
||||||
├── Game/ # 游戏应用示例
|
│ │ ├── scene/ # 场景管理
|
||||||
│ ├── assets/ # 游戏资源
|
│ │ ├── types/ # 类型定义
|
||||||
│ ├── include/ # 游戏头文件
|
│ │ └── utils/ # 工具类
|
||||||
│ └── src/ # 游戏源文件
|
│ └── src/ # 实现文件
|
||||||
├── platform/ # 平台配置
|
├── Game/ # 游戏示例
|
||||||
└── xmake.lua # XMake构建配置
|
│ ├── assets/ # 游戏资源
|
||||||
|
│ └── src/ # 游戏源文件
|
||||||
|
├── platform/ # 平台配置
|
||||||
|
└── xmake.lua # 构建配置
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 技术亮点
|
||||||
|
|
||||||
|
- **批量渲染** - 2048 四边形批次优化
|
||||||
|
- **LRU 缓存** - NPK/SoundPack 资源缓存(默认 512MB)
|
||||||
|
- **侵入式链表** - 高性能 Actor 子对象管理
|
||||||
|
- **变换系统** - 局部/世界变换矩阵自动更新
|
||||||
|
- **事件系统** - 支持捕获/冒泡、优先级、拦截
|
||||||
|
- **资源归档** - 支持 NPK(图片/音频)、PVF(脚本)
|
||||||
|
|
||||||
## 许可证
|
## 许可证
|
||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
|
|||||||
Reference in New Issue
Block a user