# Silo - 多引擎融合框架
Silo 是一个创新的跨游戏引擎融合框架,整合了 **Bevy**、**Godot** 和 **Unity** 三大引擎的核心能力,实现 ECS 逻辑、渲染能力和网络同步的统一调度与通信。
## 🎯 核心特性
### 引擎能力融合
- **Bevy ECS** - 利用 Bevy 强大的实体组件系统(ECS)处理游戏逻辑
- 网络同步能力
- 事件驱动架构
- 数据驱动的组件系统
- **Godot/Unity** - 利用成熟的渲染引擎能力
- 高质量图形渲染
- 物理引擎
- 动画系统
- 成熟的编辑器生态
### 核心能力
- **跨引擎通信** - 实现 Bevy、Godot、Unity 之间的无缝消息传递
- **事件同步** - 统一的事件系统,支持跨引擎事件触发与监听
- **对象管理** - 跨引擎的对象创建、更新、销毁同步
- **视图层抽象** - 统一的 UI/视图系统,支持多引擎渲染后端
## 🏗️ 架构设计
```
┌─────────────────────────────────────────────────────────┐
│ Silo Framework │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌───────────┐ │
│ │ Bevy │◄──►│ Godot │◄──►│ Unity │ │
│ │ ECS │ │ Rendering │ │ Rendering │ │
│ │ Logic │ │ Godot │ │ C# │ │
│ └──────────────┘ └──────────────┘ └───────────┘ │
│ │ │ │ │
│ └───────────────────┼──────────────────┘ │
│ │ │
│ ┌────────────▼────────────┐ │
│ │ Silo Core Layer │ │
│ │ - Event System │ │
│ │ - Message Bus │ │
│ │ - Object Sync │ │
│ │ - View Abstraction │ │
│ └─────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
```
## 📦 项目结构
```
silo/
├── src/
│ ├── lib.rs # 库入口
│ ├── base.rs # 基础类型和消息定义
│ ├── app.rs # 应用层 API
│ ├── bevy.rs # Bevy ECS 集成
│ ├── ffi.rs # FFI 接口
│ ├── view.rs # 视图层抽象
│ └── godot/ # Godot 集成模块
│ ├── mod.rs
│ ├── nodes.rs
│ ├── reg.rs
│ ├── view.rs
│ └── ext.rs
├── silo-unity/ # Unity 集成包
│ ├── package.json
│ └── *.dll # Unity 依赖库
├── Cargo.toml # Rust 依赖配置
└── LICENSE
```
## 🔧 技术特性
基于 CBOR 序列化的跨引擎消息传递,支持:
- **事件类型**
- `Spawn` - 对象创建
- `Change` - 状态变更
- `Despawn` - 对象销毁
- `Invoke` - 方法调用
## 🚀 使用场景
### 1. 网络同步游戏
利用 Bevy 的网络同步生态(如 Leafwing、Bevy Netcode)处理游戏逻辑同步,Godot/Unity 负责渲染表现。
### 2. 多端渲染
同一套 ECS 逻辑,可以在不同平台使用不同的渲染引擎(Godot 用于桌面端,Unity 用于移动端等)。
### 3. 渐进式迁移
在从 Unity/Godot 迁移到 Bevy 的过程中,可以逐步替换各个模块,保持系统稳定运行。
### 4. 编辑器工具链
利用 Unity/Godot 成熟的编辑器生态进行关卡设计和资源管理,Bevy 处理运行时逻辑。
## ⚙️ 编译配置
### 基础编译
```toml
[dependencies]
silo = { version = "0.1.0" }
```
### 启用 Godot 支持
```toml
[dependencies]
silo = { version = "0.1.0", features = ["godot"] }
```
### 启用 FFI 接口
```toml
[dependencies]
silo = { version = "0.1.0", features = ["ffi"] }
```
## 📋 依赖项
- **Bevy ECS** (0.18.1) - 实体组件系统
- **Bevy App** (0.18.1) - 应用框架
- **Bevy Time** (0.18.1) - 时间系统
- **Bevy Log** (0.18.1) - 日志系统
- **Godot** (0.5.0, optional) - Godot 引擎绑定
- **Tokio** (1.50.0) - 异步运行时
- **Serde** (1.0.228) - 序列化框架
- **CBOR** - 二进制序列化
## 🔌 Unity 集成
在 Unity 项目中使用 Silo:
1. 将 `silo-unity/` 目录复制到 Unity 项目的 `Packages/` 目录
2. 在 `manifest.json` 中添加依赖:
```json
{
"dependencies": {
"silo": "file:../silo-unity"
}
}
```
## 许可证
本项目采用 [LICENSE](LICENSE) 中定义的许可条款。
## 🤝 贡献
欢迎贡献代码、报告问题或提出功能建议!
## 🔗 相关链接
- [Bevy Engine](https://bevyengine.org/)
- [Godot Engine](https://godotengine.org/)
- [Unity](https://unity.com/)