Skip to content

Latest commit

 

History

27 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Important

🔀 This repo has moved to Codeberg

The active copy now lives at codeberg.org/Heathen-Engineering/Godot-Extension-Resolver — please point your git remote, UPM manifest, or Gem reference there going forward. That's where new commits, releases, and issues actually happen now.

This GitHub copy is preserved as-is and still works for anyone already pointing at it, but it isn't receiving new updates. It will be archived (read-only) once every downstream package that depends on it has finished migrating too, not immediately.

Questions? Discord.

Extension Resolver for Godot

License Maintained Godot

A dependency resolver for Godot addons. Any addon that ships a small manifest file gets, for free: version-checked dependency resolution, one-click fetching of missing dependencies from their declared source, update-availability checking, and a safe unlock step for GDExtension binaries with a hard native-library dependency.

  • License: Apache 2.0
  • Origin: Heathen Group
  • Platforms: Windows, Linux, macOS

Tip

Looking for the easiest way to install? Copy Archive/addons/ExtensionResolver/ straight into your project's addons/ folder and enable the plugin. See Install below.

Extension Resolver's Project Settings tab, showing installed extensions grouped by publisher

Support

For general questions, help, and troubleshooting, join our Discord. Thousands of developers are there and can often help faster than waiting on a maintainer. Please use GitHub Issues for a confirmed bug or a feature request that needs tracking, not general support questions.


Become a GitHub Sponsor

Prefer a one-time purchase? Heathen's own storefront is live, direct source access at heathen.group/pricing, no sponsorship required.

Discord GitHub followers

Support Heathen by becoming a GitHub Sponsor. Sponsorship directly funds the development and maintenance of free tools like this, as well as our game development Knowledge Base and community on Discord.

Sponsors also get access to our private SourceRepo, which includes developer tools for O3DE, Unreal, Unity, and Godot. Learn more or explore other ways to support at heathen.group/kb


What it does

Godot has no built-in package manager, so addons that depend on other addons have historically had to hand-roll their own fetch/version-check logic, or simply assume the dependency is already there. Extension Resolver replaces that with one shared mechanism:

Feature Description
Version-checked dependencies Not just "is it installed," but "is it installed at a version that actually satisfies what I need."
One-click fetching Missing or out-of-range dependencies are fetched from their declared source with a single confirmation, never automatically.
Update checking Every installed extension is checked against its source for a newer release, right in the Project Settings tab.
Safe native-library gating GDExtension binaries with a hard dependency stay inert until every dependency is confirmed present, then unlock without needing an editor restart.
Libraries A catalogue view for installing addons you don't have yet, not just managing the ones you do. See Library Schema.

Full documentation of the manifest format is in Archive/docs/manifest-schema.md.


Install

Copy Archive/addons/ExtensionResolver/ into your project's addons/ folder and enable the plugin from Project Settings > Plugins. It is pure GDScript: no compiled binary, no native-library load order to worry about.

Alternatively, if you install an addon that already depends on Extension Resolver, its own gate script will offer to fetch and enable Extension Resolver for you automatically the first time it is needed.


For extension authors

  1. Ship an extension.manifest.json at your addon's root. See Archive/docs/manifest-schema.md for the full schema.
  2. Copy Archive/gate/extension_resolver_gate.gd into your own addons/<YourAddon>/gate/ folder.
  3. From your EditorPlugin's _enter_tree(), call Gate.ensure_unlocked(self, "<YourAddonId>", _on_unlocked), using a preload() of the gate script you copied in step 2.

That is the entire integration surface. Version comparison, fetching, and the Project Settings tab that lists every installed extension and its update status all live in Extension Resolver itself, so none of it needs to be duplicated per addon.


License

Apache 2.0.

About

Dependency resolution for Godot extensions.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages