Install Asset
Install via Godot
To maintain one source of truth, Godot Asset Library is just a mirror of the old asset library so you can download directly on Godot via the integrated asset library browser
Quick Information
A plugin and framework for creating, loading and managing the life cycles of Packages. Packages are isolated, and modular. They are typically for the feature layer of your game/application. They interact with the application strictly via an adapter script, and can be added or removed without causing breakage. It also includes a simplistic in-memory logging system allowing for rich bug reports in WASM. See documentation for useage and examples.
Modular Package Framework for Godot
A lightweight, opinionated framework for creating modular, isolated packages in Godot. This system encourages decoupled development, safe experimentation, and maintainable feature layers.
Pattern
Package Isolation
- Each package is fully self-contained.
- Interaction with external code occurs only through a package adapter.
- No package dependencies are allowed within the package source; this limits breakage to the adapter script only.
Package Adapter
- The adapter acts as the single interface between a package and the outside world.
- Adapters should be used only by the package itself.
- Supports stable, incremental development and stub-first workflows.
Logging System
- Simplistic centralized logging via
PackageLogger. - Supports messages, warnings, handled errors, and unhandled errors with stack trace.
- Exists in memory using a circular buffer.
- Configurable stack trace depth.
- Configurable buffer size.
- Configurable verbosity.
Package Orchestration
PackageManagermanages global package registry, package groups, and lifecycle.- Supports message propagation to all packages or specific groups.
- Designed to work seamlessly with
.pckfiles for modular runtime loading. Packagescripts areNodes, so you can insert them into the tree if you desire.
Features
- Automatic package lifecycle management (
_loaded,_unloaded) - Message, warning, and error propagation hooks
- Strict boundaries to enforce modularity
- Ready-to-use editor plugin to generate package boilerplate
- Supports both filesystem packages and runtime-loaded
.pckpackages
Philosophy
- Isolation: Packages never rely on external code.
- Stability: Packages can be added or dropped without breakage.
- Incremental development: Stub methods first, implement later, and use TDD-friendly patterns.
Plug-in Useage
- Right click the FileSystem directory you want to create your package in.
- Select Create New -> Package
- Complete the form.
Getting Started
- Create a new package via the Editor plugin or manually.
- Implement your package logic inside the package source directory, package entry script and adapter.
- Use the
PackageManagerto load/unload packages and propagate events. - Access logging through
PackageLogger, or convenience wrappers inPackage.
Example
var pkg = PackageManager.load_package("res://packages/MyPackage")
PackageManager.unload_package("my_package")
var pkgs = PackageManager.load_packages_in_directory("res://packages")
PackageManager.unload_packages_in_group("res://packages")
A plugin and framework for creating, loading and managing the life cycles of Packages. Packages are isolated, and modular. They are typically for the feature layer of your game/application. They interact with the application strictly via an adapter script, and can be added or removed without causing breakage. It also includes a simplistic in-memory logging system allowing for rich bug reports in WASM. See documentation for useage and examples.
Reviews
Quick Information
A plugin and framework for creating, loading and managing the life cycles of Packages. Packages are isolated, and modular. They are typically for the feature layer of your game/application. They interact with the application strictly via an adapter script, and can be added or removed without causing breakage. It also includes a simplistic in-memory logging system allowing for rich bug reports in WASM. See documentation for useage and examples.