YARD - Yet Another Resource Database 1.0.0 Tools 4.5 Community
Submitted by user elliotfontaine; MIT; 2026-02-27
YARD is an editor plugin for Godot to manage resources and query them at runtime, with a table view in the editor as the cherry on top.
OVERVIEW
--------
YARD has two complementary aspects:
A table-based resource editor. The YARD editor tab lets you create and
manage registries: catalogues of resources grouped by class. Each registry
provides a spreadsheet-like view of your resources and their properties.
A lightweight runtime API. At runtime, a Registry is just a small .tres
file holding UIDs and string IDs. It does not load the resources it
references. You control when loading happens, and how.
FEATURES
--------
- Reference resources by stable, human-readable string IDs instead of
file paths or UIDs lying around in some autoload
- Restrict a registry to a specific class — only matching resources
can be added
- Sync a registry from a directory — entries are added and removed
automatically as resource files appear or disappear
- Bake a property index in the editor for zero-cost runtime queries
by resource property values
- Load entries individually, all at once (blocking), or asynchronously
via threaded loading
- No runtime overhead beyond what you explicitly request
INSTALLATION
------------
1. Copy the addons/yard folder into your project's addons/ directory
2. Enable the plugin in Project > Project Settings > Plugins
USAGE
-----
Creating a registry:
Open the Registry tab in the editor, click File > New Registry, and
configure:
- Class restriction: only resources of this class will be accepted
- Scan directory: the registry stays in sync with files in this folder
- Indexed properties: property names to bake for runtime filtering
Loading an entry:
var skeleton: Enemy = ENEMIES.load_entry(&"skeleton")
Loading all entries (blocking):
var all_enemies := ENEMIES.load_all_blocking()
Loading all entries (threaded):
var tracker := ENEMIES.load_all_threaded_request()
Querying the index:
var legendaries := WEAPONS.filter_by_value(&"rarity", Rarity.LEGENDARY)
var high_level := WEAPONS.filter_by(&"level", func(v): return v >= 10)
var results := WEAPONS.filter_by_values({
&"rarity": Rarity.LEGENDARY,
&"type": &"sword",
})
LICENSE
-------
MIT
View files Download Submit an issue Recent Edits