# liangxiegame/qframework

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/liangxiegame-qframework).**

5,163 stars · 843 forks · C# · mit

## Links

- GitHub: https://github.com/liangxiegame/QFramework
- Homepage: https://qframework.cn
- awesome-repositories: https://awesome-repositories.com/repository/liangxiegame-qframework.md

## Topics

`frameworks` `game-dev` `godot` `godot-addon` `godot-engine` `godot-plugin` `godot4` `godotengine` `qframework` `u3d` `unity` `unity-3d` `unity-asset` `unity-editor` `unity-framework` `unity-scripts` `unity2d` `unity3d` `unity3d-framework` `unity3d-plugin`

## Description

QFramework is a Unity game architecture framework designed to separate presentation, system, and data logic. It implements a layered software architecture to manage complex game states and provides a game engine utility library to reduce boilerplate code.

The framework is centered on the Command Query Responsibility Segregation pattern, which separates data modification commands from data retrieval queries. It utilizes a dependency injection container to manage the lifecycles and resolution of singletons and modular components, alongside an event-driven system for state synchronization to prevent circular dependencies.

The project covers a broad range of capabilities, including asset lifecycle management via reference counting, memory optimization through object pooling, and UI management with automated component binding and panel navigation stacks. It also includes tools for sequential action coordination, audio playback control, and live code reloading.

## Tags

### Software Engineering & Architecture

- [Command Query Responsibility Segregation Patterns](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/state-logic-and-utilities/command-query-responsibility-segregation-patterns.md) — Centrally implements Command Query Responsibility Segregation to separate state-changing operations from data-retrieval queries.
- [Game Architecture Layers](https://awesome-repositories.com/f/software-engineering-architecture/logic-and-presentation-separation/game-architecture-layers.md) — Organizes game logic into strict layers of models, systems, and controllers to separate data from presentation.
- [Command Pattern Implementations](https://awesome-repositories.com/f/software-engineering-architecture/command-pattern-implementations.md) — Implements a command execution mechanism to isolate data modification logic from the presentation layer. ([source](https://github.com/liangxiegame/QFramework/blob/master/QFramework%20API.md))
- [Command Query Responsibility Segregation Patterns](https://awesome-repositories.com/f/software-engineering-architecture/command-query-responsibility-segregation-patterns.md) — A structural approach using commands for data modification and queries for retrieval to prevent controller bloat. ([source](https://github.com/liangxiegame/QFramework/blob/master/Doc.md))
- [Dependency Injection Containers](https://awesome-repositories.com/f/software-engineering-architecture/dependency-injection-containers.md) — Includes a dependency injection container to manage the registration and resolution of singletons and modular components.
- [Dependency Injection Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/dependency-injection-frameworks.md) — Provides a container to manage the registration and lifecycle of singletons and modular components to decouple logic.
- [Dependency Injection](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/dependency-injection.md) — Implements dependency injection to decouple software components by resolving required instances through a central container. ([source](https://github.com/liangxiegame/QFramework/blob/master/QFramework%20API.md))
- [Inversion-of-Control Containers](https://awesome-repositories.com/f/software-engineering-architecture/inversion-of-control-containers.md) — Provides an inversion-of-control container for registering and retrieving singletons and modular components. ([source](https://github.com/liangxiegame/QFramework/blob/master/Doc.md))
- [MVC Pattern Implementations](https://awesome-repositories.com/f/software-engineering-architecture/mvc-pattern-implementations.md) — Decouples data, user interface, and interaction logic through a structured Model-View-Controller implementation. ([source](https://github.com/liangxiegame/QFramework/blob/master/Doc.md))
- [Reactive Data Binding](https://awesome-repositories.com/f/software-engineering-architecture/reactive-data-binding.md) — Implements properties that trigger events on value changes to synchronize data across different architectural layers. ([source](https://github.com/liangxiegame/QFramework/blob/master/QFramework%20API.md))
- [Layered Architectures](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/layered-architectures.md) — Employs a layered architecture that separates presentation, system, and model logic to ensure a strict data flow.
- [State Management Patterns](https://awesome-repositories.com/f/software-engineering-architecture/state-management-patterns.md) — Utilizes a command-based state management pattern to ensure consistent mutations across the system and model layers. ([source](https://github.com/liangxiegame/QFramework))
- [Application Component Lifecycles](https://awesome-repositories.com/f/software-engineering-architecture/component-lifecycle-management/application-component-lifecycles.md) — Manages the initialization and cleanup sequences for systems and models to ensure clean setup and teardown. ([source](https://github.com/liangxiegame/QFramework/blob/master/QFramework%20API.md))
- [Infrastructure Wrappers](https://awesome-repositories.com/f/software-engineering-architecture/module-encapsulation-patterns/logic-encapsulation-interfaces/component-encapsulation-wrappers/infrastructure-wrappers.md) — Provides a dedicated utility layer that encapsulates low-level APIs for networking and storage. ([source](https://github.com/liangxiegame/QFramework/blob/master/README_EN.md))
- [Object Pooling](https://awesome-repositories.com/f/software-engineering-architecture/object-pooling.md) — Provides object pooling to reuse frequently created and destroyed game objects and reduce garbage collection overhead.

### Data & Databases

- [Data Querying](https://awesome-repositories.com/f/data-databases/data-querying.md) — Provides a dedicated query system for retrieving specific information without modifying state. ([source](https://github.com/liangxiegame/QFramework/blob/master/QFramework%20API.md))

### Game Development

- [Asset and Resource Management Systems](https://awesome-repositories.com/f/game-development/asset-and-resource-management-systems.md) — Handles the asynchronous loading and unloading of game resources using a reference counting model to optimize memory.
- [Asset Lifecycle Management](https://awesome-repositories.com/f/game-development/asset-lifecycle-management.md) — Implements a reference-counting system for loading and automatically unloading game assets from local and network sources. ([source](https://github.com/liangxiegame/QFramework/blob/master/Doc.md))
- [C# Game Development Workflows](https://awesome-repositories.com/f/game-development/c-game-development-workflows.md) — Optimizes development productivity through a combination of fluent APIs, live reloading, and automated UI binding.
- [Game Engine Utilities](https://awesome-repositories.com/f/game-development/game-engine-utilities.md) — Ships a comprehensive library of tools for asset management, object pooling, and audio control tailored for Unity.
- [Sequential Action Coordination](https://awesome-repositories.com/f/game-development/sequential-action-coordination.md) — Provides a system to execute tasks, delays, and callbacks in a defined order or in parallel. ([source](https://github.com/liangxiegame/QFramework/blob/master/Doc.md))

### User Interface & Experience

- [Event-Driven State Synchronizers](https://awesome-repositories.com/f/user-interface-experience/event-driven-state-managers/event-driven-state-synchronizers.md) — Uses an event-driven synchronization system to notify higher architectural layers of data updates without circular dependencies. ([source](https://github.com/liangxiegame/QFramework/blob/master))
- [Architectural State Synchronizers](https://awesome-repositories.com/f/user-interface-experience/event-driven-state-managers/event-driven-state-synchronizers/architectural-state-synchronizers.md) — Notifies higher architectural layers of data changes via a decoupled messaging system to prevent circular dependencies.
- [Interface Panel Lifecycle Management](https://awesome-repositories.com/f/user-interface-experience/interface-panel-lifecycle-management.md) — Provides a navigation stack to control the opening, closing, and layering of interface panels and back-button logic. ([source](https://github.com/liangxiegame/QFramework/blob/master/Doc.md))
- [Hierarchical Navigation Stacks](https://awesome-repositories.com/f/user-interface-experience/navigation-routing/hierarchical-navigation-stacks.md) — Manages the lifecycle and layering of interface screens using a hierarchical navigation stack.
- [Reactive Property Bindings](https://awesome-repositories.com/f/user-interface-experience/reactive-property-bindings.md) — Uses reactive property bindings to automatically synchronize user interface elements with underlying data changes.
- [Automated Component Binders](https://awesome-repositories.com/f/user-interface-experience/ui-component-management/automated-component-binders.md) — Generates scripts that map object references to class fields, eliminating manual drag-and-drop assignments. ([source](https://github.com/liangxiegame/QFramework/blob/master/Doc.md))

### Web Development

- [Unity Game Frameworks](https://awesome-repositories.com/f/web-development/cross-platform-development/game-development-frameworks/unity-game-frameworks.md) — Provides a layered software architecture for Unity that separates presentation, system, and data logic.

### Development Tools & Productivity

- [Live Reloading Environments](https://awesome-repositories.com/f/development-tools-productivity/live-reloading-environments.md) — Allows modifying scripts and observing results in the running application without needing to restart the scene. ([source](https://github.com/liangxiegame/QFramework/blob/master/Doc.md))

### Graphics & Multimedia

- [Audio Playback](https://awesome-repositories.com/f/graphics-multimedia/audio-music/audio-playback.md) — Provides a system for playing background music and sound effects with integrated volume control and asynchronous loading. ([source](https://github.com/liangxiegame/QFramework/blob/master/Doc.md))

### Networking & Communication

- [Global Event Dispatchers](https://awesome-repositories.com/f/networking-communication/communication-protocols-architectures/communication-paradigms/broadcasting-patterns/global-event-dispatchers.md) — Implements a decoupled messaging system to dispatch events to registered listeners globally or through specific systems. ([source](https://github.com/liangxiegame/QFramework/blob/master/QFramework%20API.md))

### Operating Systems & Systems Programming

- [Asset Lifecycle Tracking](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/memory-management/automated-reclamation-systems/reference-counting/asset-lifecycle-tracking.md) — Implements reference-counting asset management to automatically unload local and network resources when no longer needed.
