{"id":34505502,"url":"https://github.com/gewuyou/gframework","last_synced_at":"2026-05-08T14:18:39.546Z","repository":{"id":328083993,"uuid":"1112892344","full_name":"GeWuYou/GFramework","owner":"GeWuYou","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-03T02:07:04.000Z","size":11727,"stargazers_count":6,"open_issues_count":0,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-03T03:34:56.782Z","etag":null,"topics":["cqrs","framework","game","game-development","godot"],"latest_commit_sha":null,"homepage":"https://gewuyou.github.io/GFramework/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GeWuYou.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-12-09T08:41:08.000Z","updated_at":"2026-05-03T02:07:08.000Z","dependencies_parsed_at":"2026-01-20T07:11:43.234Z","dependency_job_id":"379c819c-0516-4824-a58f-e655f2bd810c","html_url":"https://github.com/GeWuYou/GFramework","commit_stats":null,"previous_names":["gewuyou/gframework"],"tags_count":228,"template":false,"template_full_name":null,"purl":"pkg:github/GeWuYou/GFramework","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GeWuYou%2FGFramework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GeWuYou%2FGFramework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GeWuYou%2FGFramework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GeWuYou%2FGFramework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GeWuYou","download_url":"https://codeload.github.com/GeWuYou/GFramework/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GeWuYou%2FGFramework/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32593948,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T22:12:39.696Z","status":"online","status_checked_at":"2026-05-04T02:00:06.625Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cqrs","framework","game","game-development","godot"],"created_at":"2025-12-24T02:58:41.656Z","updated_at":"2026-05-04T04:01:31.129Z","avatar_url":"https://github.com/GeWuYou.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GFramework\n\n\u003e 面向游戏开发场景的模块化 C# 框架，按运行时、抽象层、引擎集成和源码生成器拆分能力。\n\n[![NuGet Core](https://img.shields.io/badge/NuGet-GeWuYou.GFramework.Core-2C7BE5)](https://www.nuget.org/packages/GeWuYou.GFramework.Core)\n[![NuGet Meta](https://img.shields.io/badge/NuGet-GeWuYou.GFramework-1F9D55)](https://www.nuget.org/packages/GeWuYou.GFramework)\n[![Godot](https://img.shields.io/badge/Godot-4.6-green)](https://godotengine.org/)\n[![.NET](https://img.shields.io/badge/.NET-8.0+-purple)](https://dotnet.microsoft.com/)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue)](LICENSE)\n[![zread](https://img.shields.io/badge/Ask_Zread-_.svg?style=flat-square\u0026color=00b0aa\u0026labelColor=000000\u0026logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuOTYxNTYgMS42MDAxSDIuMjQxNTZDMS44ODgxIDEuNjAwMSAxLjYwMTU2IDEuODg2NjQgMS42MDE1NiAyLjI0MDFWNC45NjAxQzEuNjAxNTYgNS4zMTM1NiAxLjg4ODEgNS42MDAxIDIuMjQxNTYgNS42MDAxSDQuOTYxNTZDNS5zMTUwMiA1LjYwMDEgNS42MDE1NiA1LjMxMzU2IDUuNjAxNTYgNC45NjAxVjIuMjQwMUM1LjYwMTU2IDEuODg2NjQgNS4zMTUwMiAxLjYwMDEgNC45NjE1NiAxLjYwMDFaIiBmaWxsPSIjZmZmIi8%2BCjxwYXRoIGQ9Ik00Ljk2MTU2IDEwLjM5OTlIMi4yNDE1NkMxLjg4ODEgMTAuMzk5OSAxLjYwMTU2IDEwLjY4NjQgMS42MDE1NiAxMS4wMzk5VjEzLjc1OTlDMS42MDE1NiAxNC4xMTM0IDEuODg4MSAxNC4zOTk5IDIuMjQxNTYgMTQuMzk5OUg0Ljk2MTU2QzUuMzE1MDIgMTQuMzk5OSA1LjYwMTU2IDE0LjExMzQgNS42MDE1NiAxMy43NTk5VjExLjAzOTlDNS42MDE1NiAxMC42ODY0IDUuMzE1MDIgMTAuMzk5OSA0Ljk2MTU2IDEwLjM5OTlaIiBmaWxsPSIjZmZmIi8%2BCjxwYXRoIGQ9Ik0xMy43NTg0IDEuNjAwMUgxMS4wMzg0QzEwLjY4NSAxLjYwMDEgMTAuMzk4NCAxLjg4NjY0IDEwLjM5ODQgMi4yNDAxVjQuOTYwMUMxMC4zOTg0IDUuMzEzNTYgMTAuNjg1IDUuNjAwMSAxMS4wMzg0IDUuNjAwMUgxMy43NTg0QzE0LjExMTkgNS42MDAxIDE0LjM5ODQgNS4zMTM1NiAxNC4zOTg0IDQuOTYwMVYyLjI0MDFDMTQuMzk4NCAxLjg4NjY0IDE0LjExMTkgMS42MDAxIDEzLjc1ODQgMS42MDAxWiIgZmlsbD0iI2ZmZiIvPgo8cGF0aCBkPSJNNCAxMkwxMiA0TDQgMTJaIiBmaWxsPSIjZmZmIi8%2BCjxwYXRoIGQ9Ik00IDEyTDEyIDQiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8L3N2Zz4K\u0026logoColor=ffffff)](https://zread.ai/GeWuYou/GFramework)\n\n## 从哪里开始\n\n- 第一次接触框架：[入门指南](docs/zh-CN/getting-started/index.md)\n- 想先跑一个最小例子：[快速开始](docs/zh-CN/getting-started/quick-start.md)\n- 想先确认该装哪些包：[安装配置](docs/zh-CN/getting-started/installation.md)\n- 想接入 AI-First 配置工作流：[配置系统](docs/zh-CN/game/config-system.md) / [VS Code 配置工具](docs/zh-CN/game/config-tool.md)\n  当前正式支持边界以 `GFramework.Game` Runtime 与 `GFramework.Game.SourceGenerators` 共享 schema 子集为准；VS Code 工具是辅助层，不会单独扩出另一套配置契约\n- 已经知道要用哪个模块：直接进入对应模块的说明页\n\n## 模块地图\n\n| 模块 | 作用 | 入口 |\n| --- | --- | --- |\n| `GFramework.Core` | 架构、命令、查询、事件、状态、日志、资源、协程等基础运行时 | [模块说明](GFramework.Core/README.md) |\n| `GFramework.Core.Abstractions` | `Core` 对应的契约层，适合面向接口开发或做模块拆分 | [模块说明](GFramework.Core.Abstractions/README.md) |\n| `GFramework.Cqrs` | 新版 CQRS runtime，提供 request dispatcher、notification publish 与 handler 注册 | [模块说明](GFramework.Cqrs/README.md) |\n| `GFramework.Cqrs.Abstractions` | CQRS 消息、处理器、pipeline 行为等契约 | [模块说明](GFramework.Cqrs.Abstractions/README.md) |\n| `GFramework.Game` | 面向游戏项目的配置、数据、路由、场景、UI、设置和存储运行时 | [模块说明](GFramework.Game/README.md) |\n| `GFramework.Game.Abstractions` | `Game` 对应的契约层 | [模块说明](GFramework.Game.Abstractions/README.md) |\n| `GFramework.Godot` | Godot 集成层，负责把框架能力接入节点、场景、UI、设置与存储 | [模块说明](GFramework.Godot/README.md) |\n| `GFramework.Ecs.Arch` | Arch ECS 集成 | [模块说明](GFramework.Ecs.Arch/README.md) |\n| `GFramework.Ecs.Arch.Abstractions` | Arch ECS 集成对应的契约层，适合共享宿主循环与 ECS 模块边界 | [模块说明](GFramework.Ecs.Arch.Abstractions/README.md) |\n| `GFramework.Core.SourceGenerators` | Core 侧通用源码生成器与分析器 | [模块说明](GFramework.Core.SourceGenerators/README.md) |\n| `GFramework.Game.SourceGenerators` | 游戏内容配置 schema 生成器 | [模块说明](GFramework.Game.SourceGenerators/README.md) |\n| `GFramework.Cqrs.SourceGenerators` | CQRS handler registry 生成器 | [模块说明](GFramework.Cqrs.SourceGenerators/README.md) |\n| `GFramework.Godot.SourceGenerators` | Godot 项目元数据、节点注入、信号绑定与 Scene/UI 辅助生成器 | [模块说明](GFramework.Godot.SourceGenerators/README.md) |\n\n## 内部支撑模块\n\n以下目录目前不是独立采用入口，而是跟随所属模块维护的内部支撑组件：\n\n| 目录 | 定位 | 跟随入口 |\n| --- | --- | --- |\n| `GFramework.Core.SourceGenerators.Abstractions` | `Core.SourceGenerators` 的内部契约层 | [目录说明](GFramework.Core.SourceGenerators.Abstractions/README.md) |\n| `GFramework.Godot.SourceGenerators.Abstractions` | `Godot.SourceGenerators` 的内部契约层 | [目录说明](GFramework.Godot.SourceGenerators.Abstractions/README.md) |\n| `GFramework.SourceGenerators.Common` | 生成器家族共享的公共支撑代码 | [目录说明](GFramework.SourceGenerators.Common/README.md) |\n\n## 文档导航\n\n仓库根 README 与文档站点保持同一套栏目命名：\n\n- 入门指南：[入门指南](docs/zh-CN/getting-started/index.md)\n- Core：[Core](docs/zh-CN/core/index.md)\n- Game：[Game](docs/zh-CN/game/index.md)\n- Godot：[Godot](docs/zh-CN/godot/index.md)\n- 教程：[教程](docs/zh-CN/tutorials/index.md)\n- 源码生成器：[源码生成器](docs/zh-CN/source-generators/index.md)\n- ECS：[ECS](docs/zh-CN/ecs/index.md)\n- 抽象接口：[抽象接口](docs/zh-CN/abstractions/index.md)\n- 最佳实践：[最佳实践](docs/zh-CN/best-practices/index.md)\n- API 参考：[API 参考](docs/zh-CN/api-reference/index.md)\n- FAQ：[常见问题](docs/zh-CN/faq.md)\n- 故障排查：[故障排查](docs/zh-CN/troubleshooting.md)\n- 贡献：[贡献指南](docs/zh-CN/contributing.md)\n\n## 包选择\n\n- `GeWuYou.GFramework`\n  当前是聚合元包，只聚合 `GFramework.Core` 与 `GFramework.Game` 这两层运行时；不会自动带上 `Cqrs`、`Godot` 或任何 Source Generator，适合快速试用或先起一个最小运行时骨架。\n- `GeWuYou.GFramework.Core`\n  推荐的最小起步包。先从核心运行时开始，再按需叠加 `Cqrs`、`Game`、`Godot` 和 Source Generators。\n- `GeWuYou.GFramework.*.Abstractions`\n  适合需要单独依赖契约层、插件化、测试替身或多模块解耦的场景。\n- `GeWuYou.GFramework.*.SourceGenerators`\n  只在需要编译期生成代码时安装，版本应与运行时包保持一致。\n\n如果你采用 AI-First 配置工作流，建议在进入实现前先确认两条边界：\n\n- 当前共享子集接受闭合对象边界 `additionalProperties: false`（需显式设置为 `false`；省略或 `true` 视为不支持）\n- `oneOf` / `anyOf` 这类会改变生成类型形状的组合关键字当前会被 Runtime / Generator / Tooling 直接拒绝\n\n更复杂的 schema shape 需要先回到 schema 设计与 raw YAML 维护路径，而不是假定编辑器工具存在隐藏支持。\n\n## 最小安装组合\n\n```bash\n# 最小起步\ndotnet add package GeWuYou.GFramework.Core\ndotnet add package GeWuYou.GFramework.Core.Abstractions\n\n# 新版 CQRS\ndotnet add package GeWuYou.GFramework.Cqrs\ndotnet add package GeWuYou.GFramework.Cqrs.Abstractions\n\n# 游戏层运行时\ndotnet add package GeWuYou.GFramework.Game\ndotnet add package GeWuYou.GFramework.Game.Abstractions\n\n# Godot 集成\ndotnet add package GeWuYou.GFramework.Godot\n\n# 按需安装源码生成器\ndotnet add package GeWuYou.GFramework.Core.SourceGenerators\ndotnet add package GeWuYou.GFramework.Game.SourceGenerators\ndotnet add package GeWuYou.GFramework.Cqrs.SourceGenerators\ndotnet add package GeWuYou.GFramework.Godot.SourceGenerators\n```\n\n## 可选全局 using\n\nNuGet 消费项目可显式开启模块级自动导入：\n\n```xml\n\u003cPropertyGroup\u003e\n  \u003cEnableGFrameworkGlobalUsings\u003etrue\u003c/EnableGFrameworkGlobalUsings\u003e\n\u003c/PropertyGroup\u003e\n```\n\n如果只想排除部分命名空间：\n\n```xml\n\u003cItemGroup\u003e\n  \u003cGFrameworkExcludedUsing Include=\"GFramework.Core.Environment\" /\u003e\n  \u003cGFrameworkExcludedUsing Include=\"GFramework.Godot.Extensions\" /\u003e\n\u003c/ItemGroup\u003e\n```\n\n\u003e 该能力主要面向 NuGet 消费场景。仓库内 `ProjectReference` 方式仍建议显式维护自己的 `GlobalUsings.cs`。\n\n## 仓库结构\n\n```text\nGFramework.sln\n├─ GFramework.Core/\n├─ GFramework.Core.Abstractions/\n├─ GFramework.Cqrs/\n├─ GFramework.Cqrs.Abstractions/\n├─ GFramework.Game/\n├─ GFramework.Game.Abstractions/\n├─ GFramework.Godot/\n├─ GFramework.Ecs.Arch/\n├─ GFramework.Ecs.Arch.Abstractions/\n├─ GFramework.Core.SourceGenerators/\n├─ GFramework.Core.SourceGenerators.Abstractions/\n├─ GFramework.Game.SourceGenerators/\n├─ GFramework.Cqrs.SourceGenerators/\n├─ GFramework.Godot.SourceGenerators/\n├─ GFramework.Godot.SourceGenerators.Abstractions/\n├─ GFramework.SourceGenerators.Common/\n└─ docs/\n```\n\n## 贡献\n\n提交功能或行为变更时，请把代码、测试和文档一起更新：\n\n1. 先阅读对应模块的说明页\n2. 如果改动影响采用路径、安装方式、公共 API 或目录结构，同时更新受影响的中文文档页面，必要时同步调整 [中文文档入口](docs/zh-CN/index.md)\n3. 对跨模块或多阶段任务，维护 `ai-plan/public/README.md` 与对应主题目录下的 tracking / trace\n\n## 许可证\n\n本仓库当前采用 [Apache License 2.0](LICENSE)。贡献源码或配置文件时，请遵循\n[贡献指南中的许可证文件头要求](docs/zh-CN/contributing.md#许可证文件头)。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgewuyou%2Fgframework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgewuyou%2Fgframework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgewuyou%2Fgframework/lists"}