# Fantasy
**Repository Path**: Mu-L/Fantasy
## Basic Information
- **Project Name**: Fantasy
- **Description**: C # Game Framework, but not limited to games. Can be used for non game business development
- **Primary Language**: C#
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 10
- **Created**: 2025-11-12
- **Last Updated**: 2025-11-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README

[](LICENSE)
[](https://dotnet.microsoft.com/)
[](https://docs.microsoft.com/en-us/dotnet/csharp/)
[](https://unity.com/)
[](https://github.com/qq362946/Fantasy/stargazers)
**[📖 官方文档](Docs/README.md)** | **[🚀 快速开始](Docs/README.md)** | **[💬 QQ 群: 569888673](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=yourqrcode)**
---
# ⭐ Fantasy 是什么?
Fantasy 是一个**零反射、高性能的 C# 游戏服务器框架**,专为大型多人在线游戏打造。
**核心特点:** ⚡ 零反射架构 | 🚀 Native AOT 支持 | 🌐 多协议支持 | 🔥 分布式架构 | 🎮 ECS 设计
## 适用场景
- 🏰 **MMORPG** - 分布式架构、跨服通信、实体寻址系统
- ⚔️ **实时对战游戏** - KCP 低延迟协议、高性能 ECS 架构
- 🎲 **回合制/卡牌游戏** - 可靠的 TCP/WebSocket 通信、数据持久化
- 🌍 **开放世界游戏** - 场景管理、实体层级系统
- 🏪 **H5/小游戏** - WebSocket 协议支持、Unity WebGL 兼容
- 🎰 **高并发游戏** - 分布式部署、对象池优化
## 多协议支持
- 🔌 **TCP** - 稳定可靠,服务器间内网通信首选
- ⚡ **KCP** - 低延迟 UDP 可靠传输协议,适合实时对战游戏
- 🌍 **WebSocket** - 原生支持 H5/小游戏,Unity WebGL 一键发布
- 🌐 **HTTP** - RESTful API、Web 后台管理、GM 工具完美集成
## 核心优势
### 📡 网络通信
```csharp
// ❌ 传统框架需要 50+ 行代码
var message = new C2G_LoginRequest();
message.Account = "player123";
message.Password = "password";
var bytes = ProtoBuf.Serialize(message);
var response = await session.Call(opCode, bytes);
// ... 还要手动处理回调、超时、错误处理
// ✅ Fantasy 只需 1 行代码(自动生成扩展方法)
var response = await session.C2G_Login("player123", "password");
```
### ⚡ 零反射 + Native AOT 极致性能
```csharp
// 传统框架: 运行时反射扫描注册(慢 + 不支持 AOT)
// Assembly.GetTypes().Where(t => typeof(IMessageHandler).IsAssignableFrom(t))...
// Fantasy: 编译时自动生成注册代码(快 + AOT 友好)
// 无需任何手动注册,源生成器自动完成一切
public class C2G_LoginHandler : Message
{
protected override async FTask Run(Session session, C2G_Login request, G2C_Login response)
{
// 框架自动路由到这里,零反射开销
response.Token = await AuthService.Login(request.Account);
}
}
```
### 🌉 Roaming 路由系统
```csharp
// 定义 Roaming 消息(.proto 文件)
message C2M_EnterMap // IRoamingRequest
{
int32 MapId = 1;
}
message M2C_EnterMap // IRoamingResponse
{
int32 ErrorCode = 1;
int64 SceneId = 2;
}
// Gate 服务器自动转发到目标 Map 服务器,无需任何配置
// 客户端只需连接 Gate,剩下的交给框架处理
var response = await session.C2M_EnterMap(1001);
// 服务端在 Map 服务器处理(不是 Gate 服务器!)
public class C2M_EnterMapHandler : Roaming
{
protected override async FTask Run(Session session, C2M_EnterMap request, M2C_EnterMap response)
{
// 这里运行在 Map 服务器上,Gate 已自动转发
var scene = await CreateMapScene(request.MapId);
response.SceneId = scene.Id;
response.ErrorCode = 0;
}
}
```
**Roaming 核心价值**
- ✅ **自动服务器路由** - 客户端无需知道目标服务器地址
- ✅ **零配置转发** - Gate 根据消息类型自动转发到正确的服务器
- ✅ **透明的分布式** - 开发体验与单服务器一致
- ✅ **灵活的服务器扩展** - 轻松添加新的游戏服务器类型
### 🌐 跨服通信轻松实现
```csharp
// 服务器 A 发布跨服事件
await sphereEvent.PublishToRemoteSubscribers(new WorldBossDefeatedEvent
{
BossId = 1001,
KillerGuildId = 5201314
});
// 服务器 B/C/D... 自动接收并处理
// 跨服公告、跨服排行榜、跨服 PVP 轻松搞定
```
### 🎮 多协议支持,一套代码多场景
```csharp
// 同一个消息定义,支持 TCP/KCP/WebSocket/HTTP 全协议
// 无需修改任何代码,只需配置文件切换协议类型
var session = await NetworkHelper.Connect("127.0.0.1:20000", NetworkProtocolType.TCP);
// 或 NetworkProtocolType.KCP / WebSocket / HTTP
```
### 🚀 ECS 架构,开发效率拉满
```csharp
// 定义实体
public class Player : Entity
{
public string Name { get; set; }
public int Level { get; set; }
}
// 添加组件(组合式设计,灵活扩展)
player.AddComponent();
player.AddComponent();
player.AddComponent();
// 系统自动执行(源生成器自动注册,零配置)
public class PlayerAwakeSystem : AwakeSystem
{
protected override void Awake(Player self)
{
Log.Info($"玩家 {self.Name} 上线了!");
}
}
```
---
## 平台支持
| 平台 | 支持状态 | 说明 |
|------|-------|------------------|
| 🖥️ **Windows Server** | ✅ 完全支持 | 游戏服务器首选平台 |
| 🐧 **Linux Server** | ✅ 完全支持 | Docker/K8s 容器化部署 |
| 🍎 **macOS** | ✅ 完全支持 | 开发调试友好 |
| 🎮 **Unity (Win/Mac/iOS/Android)** | ✅ 完全支持 | 2022.3.62+ |
| 🌐 **Unity WebGL (H5)** | ✅ 完全支持 | WebSocket 协议 |
| 🎯 **Godot** | ❎ 暂未支持 | .NET 版本 Godot |
| 🖼️ **WinForms / WPF** | ❎ 暂未支持 | GM 工具、服务器监控面板 |
| 📟 **Console** | ❎ 暂未支持 | 独立游戏、机器人、压测工具 |
---
## 📋 环境要求
| 组件 | 版本要求 | 说明 |
|------|---------------------------|------|
| **.NET SDK** | 8.0+ | [下载地址](https://dotnet.microsoft.com/download) |
| **Unity** | 2022.3.62+ | 客户端开发(可选) |
| **IDE** | VS 2022 / Rider / VS Code | 推荐 Rider 或 VS 2022 |
| **MongoDB** | 4.0+ | 数据库(可选,使用内存模式可不装) |
---
## 🛠️ Fantasy CLI 脚手架工具
Fantasy CLI 是官方提供的项目脚手架和管理工具,帮助你快速创建和管理 Fantasy 项目。
### 安装
```bash
dotnet tool install -g Fantasy.Cli
```
**⚠️ macOS/Linux 用户注意事项**
在 macOS 或 Linux 上安装后,如果无法直接使用 `fantasy` 命令,需要将 .NET tools 路径添加到 PATH 环境变量:
**macOS (zsh - 默认 Shell):**
```bash
echo 'export PATH="$PATH:$HOME/.dotnet/tools"' >> ~/.zshrc
source ~/.zshrc
```
**macOS (bash):**
```bash
echo 'export PATH="$PATH:$HOME/.dotnet/tools"' >> ~/.bash_profile
source ~/.bash_profile
```
**Linux (bash):**
```bash
echo 'export PATH="$PATH:$HOME/.dotnet/tools"' >> ~/.bashrc
source ~/.bashrc
```
**验证安装:**
```bash
fantasy --version
```
### 快速使用
**创建新项目:**
```bash
fantasy init # 交互式创建项目
fantasy init -n MyGameServer # 使用项目名快速创建
```
**添加框架组件:**
```bash
fantasy add # 交互式选择组件
fantasy add -t protocolexporttool # 添加协议导出工具
fantasy add -t networkprotocol # 添加网络协议
fantasy add -t nlog # 添加 NLog 日志
```
更多详细信息,请查看 [Fantasy.Cli 文档](Fantasy.Packages/Fantasy.Cil/README.md)
---
## 💬 社区与支持
- **QQ 讨论群**: **569888673** (点击加群:[链接](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=yourqrcode))
- **联系邮箱**: 362946@qq.com
- **GitHub Issues**: [提交问题](https://github.com/qq362946/Fantasy/issues)
- **官方网站**: [www.code-fantasy.com](https://www.code-fantasy.com/)
- **B站视频教程**: [空间主页](https://space.bilibili.com/382126312)
---
## 🙏 感谢所有为 Fantasy 做出贡献的开发者
[](https://github.com/qq362946/Fantasy/graphs/contributors)
---
## 🤝 优质开源项目推荐
- [ET Framework](https://github.com/egametang/ET) - Fantasy 的设计灵感来源,完善的分布式游戏服务器框架
- [TEngine](https://github.com/ALEXTANGXIAO/TEngine) - Unity框架解决方案,新手友好的全平台开发框架
- [Legends-Of-Heroes](https://github.com/FlameskyDexive/Legends-Of-Heroes) - LOL风格的球球大作战,基于ET框架的完整游戏项目
---
### 🎉 如果 Fantasy 对你有帮助,请给个 Star ⭐
### 让更多人发现这个项目!
**Built with ❤️ by Fantasy Team | Made for Game Developers**
[⬆ 回到顶部](#fantasy-framework)