EllanJiang/GameFramework
41.8
Weak · 23 September 2026
52.3k
lines of production code
C#
primary language
5
measurements over time
What this system is
GameFramework is a Unity-based game development framework that provides a comprehensive suite of modular utilities for building games. It offers specialized systems for managing game states, resources, and data, including finite state machines, object pooling, and hierarchical data management. The framework also handles core gameplay infrastructure such as network communication, sound, UI, and localization, while providing foundational tools like logging, event handling, and configuration management.
How it got here
2017 — Initial release of Game Framework
25 changes.
This period marks the initial release of the Game Framework, a Unity-based game development toolkit. The work introduced a comprehensive suite of 19 built-in modules, including systems for entity management, finite state machines, object pooling, and resource handling, establishing the core architecture for the project.
2018–2020 — Core infrastructure and modularization
6 changes.
This period focused on establishing a robust, modular foundation for the Game Framework by introducing dedicated managers for configuration, versioning, logging, and data assets. The team standardized interfaces and data structures to support custom implementations and improve type safety across the system.
Features
Added GameFramework event management system
The GameFramework library now includes a new event management system. This introduces the \IEventManager\ interface and its \EventManager\ implementation, which provide methods for subscribing to, unsubscribing from, and firing events. The system supports a default event handler, allows multiple handlers per event ID, and offers both asynchronous (next-frame) and synchronous (immediate) event firing modes.
GameFramework/Event · high confidence
Finite State Machine system added
The Finite State Machine (FSM) system has been added to the Game Framework. This includes the core FSM implementation, state management, and a dedicated FSM manager for creating, retrieving, and destroying state machines. The API provides methods to manage state transitions, access state data, and query the status of active state machines.
GameFramework/Fsm · high confidence
Initial release of Game Framework with 19 built-in modules
This entry marks the initial commit of the Game Framework, a Unity-based game development framework. The repository introduces the core solution file (GameFramework.sln) configured for Visual Studio 2019, along with a comprehensive README.md documenting 19 built-in modules including Config, Data Node, Data Table, Debugger, Download, Entity, Event, File System, FSM, Localization, Network, Object Pool, Procedure, Resource, Scene, Setting, Sound, UI, and Web Request. The project also includes a .gitignore file tailored for Visual Studio and .NET development environments, and updates the LICENSE file to reflect the 2013-2021 copyright period.
(repo-wide) · high confidence
Initial release of GameFramework library
The GameFramework library is introduced as a new component, providing a comprehensive set of utilities for game development. This includes core base classes, a task pool, configuration and data table managers, a download manager, entity management, event handling, a finite state machine system, localization support, network channels, object pooling, and a file system abstraction. The project file targets .NET Framework 3.5 and includes all associated C\# source files for these modules.
(dependencies) · high confidence
Introduce DataNode system for hierarchical data management
Added a new DataNode system within the GameFramework, providing a hierarchical structure for managing data nodes. This includes the \IDataNode\ and \IDataNodeManager\ interfaces, along with the \DataNodeManager\ implementation, enabling users to create, retrieve, and manipulate data nodes using path-based access and parent-child relationships.
GameFramework/DataNode · high confidence
Introduce DebuggerManager and DebuggerWindowGroup for managing debugger windows
The Game Framework adds a new debugger subsystem consisting of the \DebuggerManager\ and \DebuggerWindowGroup\ classes, along with their corresponding interfaces (\IDebuggerManager\, \IDebuggerWindow\, \IDebuggerWindowGroup\). This change introduces the ability to register, unregister, and select debugger windows via a hierarchical path system, allowing developers to manage and interact with various debugging tools within the framework.
GameFramework/Debugger · high confidence
Introduce EventPool for event management
Added the EventPool component, including the BaseEventArgs class, EventPool implementation, and EventPoolMode configuration, to provide a new mechanism for managing and dispatching events within the game framework.
GameFramework/Base/EventPool · high confidence
Introduce ObjectPool system with memory optimization
The ObjectPool module is introduced, providing a new object pooling system with interfaces (IObjectPool, IObjectPoolManager) and implementations for managing object lifecycles. The implementation includes memory allocation optimizations, such as using \[StructLayout(LayoutKind.Auto)\] for the ObjectInfo struct and optimizing string concatenation to reduce GCAlloc. The system supports creating single or multi-spawn object pools, managing object states (locked, priority, expiration), and provides filtering callbacks for object release.
GameFramework/ObjectPool · high confidence
Introduce TaskPool for managing task execution and status
A new TaskPool system has been added to the Game Framework, providing a mechanism to manage and execute tasks with support for priority, tags, and user-defined data. The update introduces core components including the TaskPool class, which handles task scheduling and agent management, along with supporting types such as TaskBase, TaskInfo, and enumerations for TaskStatus and StartTaskStatus. This allows users to track, query, and control the state of running and waiting tasks within the framework.
GameFramework/Base/TaskPool · high confidence
Introduce TypeNamePair struct for type and name combinations
Added a new internal struct, TypeNamePair, which combines a .NET Type with a name string. This struct implements value equality and hashing, providing a more efficient and type-safe way to represent type-name pairs within the Game Framework's data structures.
GameFramework/Base/DataStruct · high confidence
Introduce WebRequest module for network communication
A new WebRequest module has been added to the Game Framework, providing a complete system for managing HTTP requests. This includes the \WebRequestManager\ to handle task pooling, agent management, and event broadcasting (start, success, failure). The module supports adding requests with URIs, post data, tags, priorities, and custom user data. It also exposes status information about the request queue and agents, allowing developers to monitor and control network activity within the framework.
GameFramework/WebRequest · high confidence
Introduce generic Variable base class for type-safe value handling
Added the abstract base class Variable and its generic counterpart Variable\<T\> in the GameFramework/Base/Variable directory. These classes provide a standardized interface for managing variable values, including methods to get, set, and clear values, as well as retrieving the variable's type. This establishes a foundational component for handling typed variables within the framework.
GameFramework/Base/Variable · high confidence
Introduce global configuration management system
A new global configuration module has been added to the framework, providing a dedicated manager for storing and retrieving global configuration values of type bool, int, float, and string. The system supports adding, removing, and querying configuration items, and exposes events for read success, failure, and updates. This new component allows developers to manage global settings through a clean API.
GameFramework/Config · high confidence
Introduce new DataTable module with binary stream support and optimized memory allocation
The DataTable module has been refactored to support loading data tables from binary resources, enabling 'play while downloading' scenarios. The update introduces new interfaces (IDataRow, IDataTable, IDataTableManager) and a base class (DataTableBase) that facilitate this. For users, this means data tables can now be loaded via binary streams, and the system provides optimized memory allocation to reduce garbage collection (GC) overhead. The API exposes methods to ensure cached binary stream sizes and free cached bytes, offering better control over memory usage during data table operations.
GameFramework/DataTable · high confidence
Introduce new File System module
Added a new File System module to the Game Framework, including the core \FileSystem\ implementation, a \FileSystemManager\ for managing multiple file systems, and supporting types such as \FileInfo\, \FileSystemStream\, and \IFileSystem\/\IFileSystemManager\/\IFileSystemHelper\ interfaces. This provides a unified API for creating, loading, and reading/writing files within the framework.
GameFramework/FileSystem · high confidence
Introduce new Procedure management system
Added the core components for the new procedure management system in the GameFramework. This includes the IProcedureManager interface, the ProcedureBase abstract class for defining game states, and the ProcedureManager implementation which handles initializing, starting, and querying the current state of game procedures via a finite state machine.
GameFramework/Procedure · high confidence
Introduce new localization system with language support and dictionary management
The localization module has been refactored to support a new \Language\ enum containing over 40 supported languages, allowing users to dynamically switch the application's display language. The \ILocalizationManager\ interface and \LocalizationManager\ implementation now provide a comprehensive API for managing localization dictionaries, including retrieving string content by key with support for up to seven template arguments. The system also introduces a \SystemLanguage\ property to automatically detect the device's native language, and exposes events for read success, failure, and updates, enabling robust handling of localization data loading and error states.
GameFramework/Localization · high confidence
Introduce new scene management interface and event args
The GameFramework/Scene area introduces a new \ISceneManager\ interface and a suite of event argument classes (\LoadSceneSuccessEventArgs\, \LoadSceneFailureEventArgs\, \LoadSceneUpdateEventArgs\, \LoadSceneDependencyAssetEventArgs\, \UnloadSceneSuccessEventArgs\, \UnloadSceneFailureEventArgs\) to handle scene lifecycle events. This provides a structured way to monitor and react to scene loading, updating, and unloading states within the framework.
GameFramework/Scene · high confidence
Introduce new sound management system with advanced audio controls
The sound module has been completely refactored with a new architecture, introducing interfaces for sound managers, groups, and agents. Users can now control sound playback with features like fade-in/fade-out effects, adjustable pitch, stereo panning, spatial blending, and Doppler effects. The API provides granular control over volume, mute states, loop status, and priority, while exposing events for success, failure, and update progress during sound playback.
GameFramework/Sound · high confidence
Introduce non-generic Setting API interfaces
Added the \ISettingHelper\ and \ISettingManager\ interfaces, along with the \SettingManager\ implementation, to provide a non-generic API for managing game settings. This includes methods for loading, saving, and querying configuration values of various types (bool, int, float, string, and generic objects).
GameFramework/Setting · high confidence
Introduces core base classes for the Game Framework
Adds foundational components to the Game Framework, including the \GameFrameworkEntry\ class for module lifecycle management, \GameFrameworkModule\ as the abstract base for all modules, and utility classes such as \GameFrameworkLinkedList\, \GameFrameworkMultiDictionary\, and \GameFrameworkSerializer\. This also includes generic delegate types (\GameFrameworkAction\, \GameFrameworkFunc\) and event argument structures to support the framework's internal architecture.
GameFramework/Base · high confidence
Introduction of the ReferencePool system for object pooling
The Game Framework now includes a ReferencePool system located in the Base/ReferencePool directory. This feature introduces an object pooling mechanism that allows developers to acquire and release reusable object instances, helping to reduce memory allocation overhead. The implementation includes the IReference interface, a ReferenceCollection internal class for managing pools, and a static ReferencePool class providing methods like Acquire, Release, Add, and Remove. Additionally, a ReferencePoolInfo struct is provided to expose statistics such as unused, using, acquire, release, add, and remove counts for each pooled type, facilitating debugging and performance monitoring.
GameFramework/Base/ReferencePool · high confidence
New DataProvider system for loading and parsing data assets
A new DataProvider system has been introduced to handle loading, parsing, and managing data assets. This includes the \DataProvider\<T\>\ implementation, a \DataProviderCreator\ for instantiation, and the \IDataProvider\<T\>\ and \IDataProviderHelper\<T\>\ interfaces. The update also adds event argument classes (\ReadDataSuccessEventArgs\, \ReadDataFailureEventArgs\, \ReadDataUpdateEventArgs\, \ReadDataDependencyAssetEventArgs\) to report loading progress, success, failure, and dependency asset states to the user.
GameFramework/Base/DataProvider · high confidence
Behavioural changes
Introduce new download module with pause, priority, and large file support
The download module has been refactored to support pausing downloads, assigning task priorities, and downloading files larger than 2GB. The \DownloadManager\ now exposes a \Paused\ property to suspend all downloads, and the \TaskPool\ mechanism has been optimized to handle task priorities and status tracking. Additionally, the download speed statistics have been updated to calculate a 30-second average, and the module now supports retrieving user-defined data and task status information.
GameFramework/Download · high confidence
Introduced versioning interface and helper mechanism
The versioning system now uses a pluggable helper interface (IVersionHelper) to retrieve game version details. This allows the application to provide custom version information through the SetVersionHelper method, while the framework itself exposes a static GameFrameworkVersion string (2021.05.31).
GameFramework/Base/Version · high confidence
Network module refactored with new interfaces and event-based architecture
The network module has been restructured to use a new set of interfaces (INetworkChannel, INetworkManager, etc.) and event-driven error handling. This introduces a more flexible architecture where each network channel can independently register packet handlers, support custom packet headers, and expose detailed error codes (NetworkErrorCode) and socket-specific errors via new event args (NetworkErrorEventArgs, NetworkCustomErrorEventArgs). The change also includes a new AddressFamily enum and helper interfaces to improve usability and reduce memory allocations.
GameFramework/Network · high confidence
Refactored Entity and Interface modules with improved memory management
The entity and interface modules have been refactored to optimize memory allocation and reduce garbage collection (GC) overhead. This includes replacing LinkedList with List in several areas, optimizing string concatenation and comparison logic, and adjusting the entity serial number increment rules to avoid using 0. Additionally, the code has been updated to be compatible with lower versions of the compiler by replacing specific invocation syntax, and various bugs related to entity release and state checks have been fixed.
GameFramework/Entity · medium confidence
Refactored Game Framework logging to support custom log handlers
The logging subsystem in GameFramework/Base/Log has been refactored to allow custom log implementations. A new ILogHelper interface and a SetLogHelper method have been added to GameFrameworkLog, enabling developers to inject their own logging logic. The previous DebugLog conditional compilation directive has been removed, and the log level enum now explicitly defines Debug, Info, Warning, Error, and Fatal levels.
GameFramework/Base/Log · high confidence
Refactored UI form and group management with new interfaces and event args
The UI module has been refactored to introduce new interfaces (IUIForm, IUIGroup, IUIManager) and associated event argument classes (OpenUIFormSuccessEventArgs, OpenUIFormFailureEventArgs, etc.) to manage UI forms and groups. This change restructures how UI forms are created, tracked, and recycled, providing a more robust and extensible API for handling UI state changes, loading progress, and dependency assets.
GameFramework/UI · high confidence
Refactored Utility namespace with pluggable helper interfaces and optimized implementations
The GameFramework/Utility namespace has been restructured to support pluggable helper implementations for compression, JSON serialization, and text formatting, each exposed via a dedicated interface (ICompressionHelper, IJsonHelper, ITextHelper) that can be set via Set\*Helper methods. The existing utility classes (Assembly, Converter, Encryption, Marshal, Path, Random) have been reorganized into separate files, with the text formatting logic now delegating to the configured ITextHelper or falling back to string.Format. Additionally, unused code such as CombinePath and MD5 has been removed, and performance optimizations including reduced GC allocation and improved string handling have been applied.
GameFramework/Utility · medium confidence
Refactored resource management API with callback-based completion and new resource group interfaces
The resource module has been refactored to replace event-based completion notifications with explicit callback functions, introducing new callback classes such as LoadAssetCallbacks, LoadBinaryCallbacks, and LoadSceneCallbacks to handle success, failure, and update states. Additionally, new interfaces IResourceGroup and IResourceGroupCollection have been added to manage resource groups and their aggregate states, while supporting binary resources and optimized memory allocation throughout the loading process.
GameFramework/Resource · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 42 → 42 (-0.5)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 87 → 83 (-4.2)
- Architecture 68 → 68 (-0.3)
- Maturity 42 → 41 (-1.1)
- Readiness 23 → 23 (+0.0)
- Security 95 → 95 (+0.0)
- Performance 70 → 70 (+0.0)
Resolved (18)
- Build did not complete in the analyzer
- Change coupling: CheckResourcesCompleteCallback.cs ↔ ResourceManager.cs (GameFramework/Resource/CheckResourcesCompleteCallback.cs)
- Change coupling: IConfigHelper.cs ↔ ILocalizationHelper.cs (GameFramework/Config/IConfigHelper.cs)
- Change coupling: IResourceManager.cs ↔ UpdateResourcesCompleteCallback.cs (GameFramework/Resource/IResourceManager.cs)
- Change coupling: ResourceManager.cs ↔ UpdateResourcesCompleteCallback.cs (GameFramework/Resource/ResourceManager.cs)
- Duplicated block (11 lines × 2) (GameFramework/Resource/ResourceManager.cs)
- Duplicated block (14 lines × 2) (GameFramework/Network/NetworkManager.TcpNetworkChannel.cs)
- Duplicated block (15 lines × 2) (GameFramework/Network/NetworkManager.TcpNetworkChannel.cs)
- Duplicated block (15 lines × 2) (GameFramework/Network/NetworkManager.TcpNetworkChannel.cs)
- Duplicated block (15 lines × 2) (GameFramework/Resource/ResourceManager.ResourceChecker.cs)
- Duplicated block (18 lines × 2) (GameFramework/Network/NetworkManager.TcpNetworkChannel.cs)
- Duplicated block (25 lines × 2) (GameFramework/Network/NetworkManager.TcpNetworkChannel.cs)
- Duplicated block (7 lines × 2) (GameFramework/Resource/ResourceManager.ResourceVerifier.cs)
- Duplicated block (8 lines × 2) (GameFramework/FileSystem/FileSystem.cs)
- High interface indirection
- No exposed public API
- dormant codebase — no living knowledge left to concentrate
- redundant comment (GameFramework/Base/DataProvider/IDataProviderHelper.cs)
New (48)
- Change coupling: ConfigManager.cs ↔ ILocalizationManager.cs (GameFramework/Config/ConfigManager.cs)
- Change coupling: IConfigManager.cs ↔ ILocalizationManager.cs (GameFramework/Config/IConfigManager.cs)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (10 lines × 2) (GameFramework/Resource/ResourceManager.ResourceGroup.cs)
- Duplicated block (11 lines × 2) (GameFramework/Resource/ResourceManager.ResourceChecker.cs)
- Duplicated block (11 lines × 2) (GameFramework/Resource/ResourceManager.ResourceChecker.cs)
- Duplicated block (11 lines × 2) (GameFramework/Resource/ResourceManager.ResourceUpdater.cs)
- Duplicated block (11 lines × 3) (GameFramework/Resource/ResourceManager.ResourceUpdater.cs)
- Duplicated block (12 lines × 2) (GameFramework/Sound/PlaySoundParams.cs)
- Duplicated block (13 lines × 2) (GameFramework/Resource/PackageVersionList.cs)
- Duplicated block (13 lines × 2) (GameFramework/Resource/ResourceManager.ResourceGroup.cs)
- Duplicated block (13 lines × 2) (GameFramework/Resource/ResourceManager.ResourceGroup.cs)
- Duplicated block (13 lines × 2) (GameFramework/Resource/ResourceManager.ResourceGroup.cs)
- Duplicated block (13 lines × 3) (GameFramework/Resource/ResourceManager.cs)
- Duplicated block (14 lines × 2) (GameFramework/Network/NetworkManager.TcpNetworkChannel.cs)
- Duplicated block (14 lines × 4) (GameFramework/Network/NetworkManager.TcpNetworkChannel.cs)
- Duplicated block (16 lines × 2) (GameFramework/Resource/ResourceManager.ResourceUpdater.cs)
- Duplicated block (16 lines × 2) (GameFramework/Resource/ResourceManager.cs)
- Duplicated block (17 lines × 2) (GameFramework/Network/NetworkManager.ReceiveState.cs)
- …and 28 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
EllanJiang/GameFramework was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 23 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit d0c010b05167c58e92350449d04864a91ca13fd2 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-955b9cee9818.