@codegraphy-dev/plugin-godot
v3.0.1
Published
CodeGraphy Godot plugin
Maintainers
Readme
CodeGraphy Godot
Adds Godot GDScript relationship analysis to CodeGraphy.
- Package:
@codegraphy-dev/plugin-godot - Core API:
@codegraphy-dev/plugin-api - Extension API:
@codegraphy-dev/extension-plugin-api
This package has two plugin entries. The Core entry analyzes Godot projects and declares Godot graph semantics. The Extension entry owns Godot Graph View colors, shapes, and icons. The CLI loads only the Core entry.
Install
This package requires Node.js ^22.14.0 || >=23.6.0. Node.js 20 is not supported.
Install @codegraphy-dev/core first if the codegraphy CLI is not already available.
npm i -g @codegraphy-dev/plugin-godot
codegraphy plugins register @codegraphy-dev/plugin-godot
codegraphy plugins enable @codegraphy-dev/plugin-godot
codegraphy indexDetection coverage
.gdfiles:preload()load()extendsclass_namereferencesclass_namedeclarations as Symbol Nodes- function, constant, variable, and enum declarations as Symbol Nodes
signaldeclarations as Symbol Nodes- inline and standalone
@exportdeclarations as Exported Property Symbol Nodes connect(...)calls as Signal Connections
- Structured parsing:
@gdquest/lezer-gdscriptparses GDScript beforepreload(),load(),ResourceLoader.load(), andclass_nameextraction, with text fallbacks for parser gaps.@fernforestgames/godot-resource-parserparses Godot 4.tscnand.tresfiles before external-resource dependency extraction, with text fallbacks for unsupported syntax.project.godotsections use the plugin's lightweight text parser for resource-bearing settings.
project.godot:application/run/main_scene[autoload]
.tscnand.trestext resources:[ext_resource ... path="res://..."]- scene and resource headers as Scene or Resource Symbol Nodes
- scene node entries as Scene Node Symbol Nodes
Edge semantics
- Scene and resource text references are emitted as normal
loadedges withtype: static. project.godotresource-bearing settings are also emitted as normal staticloadedges.- The finer-grained plugin provenance is
sourceId: "ext-resource"for.tscn/.tresfiles andsourceId: "project-settings"forproject.godot. - The detector follows Godot's text-loader behavior more closely by accepting relative
path=values and preferring a matchinguid=target when one is known in the workspace. - This means they participate in the existing
loadEdge Type Graph Scope settings while still being attributable to Godot text-resource parsing. - The plugin emits GDScript
class_namedeclarations as class symbols withpluginKind: godot-class-name. When Graph Scope enables Symbol, Variable, andcontains, the Relationship Graph shows each declaration as a Symbol Node inside its.gdfile. The Godotclass_namerow lives under Variable, so the parent toggle can hide these plugin-owned symbols without erasing their saved state. - GDScript function, constant, variable, and enum declarations are emitted as normal Symbol Nodes, so they use the shared Function, Constant, Variable, and Enum Graph Scope and Legend defaults.
- Godot Scene, Resource, Autoload, Scene Node, Signal, and Exported Property rows are plugin-owned Symbol Node filters that still use the shared
containsedge when ownership is visible. - Signal
connect(...)relationships are emitted ascodegraphy.gdscript:signal-connectionedges and appear under the Signal Connections Graph Scope row. - Incremental indexing reanalyzes signal declaration files after a receiver adds, removes, or retargets a
connect(...)call. - The Godot Extension entry adds plugin-owned Legend rules so
class_nameand other Godot symbols can be styled separately from generic symbols.
Example workspace
The repo fixture at examples/example-godot now includes:
project.godot→scenes/main.tscn,scripts/game_manager.gdscenes/main.tscn→ player, enemy, projectile, UI, and enemy spawner scene/script resourcesscripts/player.gd→scripts/base/entity.gd,scenes/projectile.tscn,scripts/projectile.gd, andscripts/components/health_component.gdscripts/spawning/enemy_spawner.gd→scenes/enemy.tscn,resources/enemy_spawn_config.tres,scripts/enemy.gd,scripts/player.gd, andscripts/data/spawn_config.gdresources/enemy_spawn_config.tres→scripts/data/spawn_config.gd
The example has the structure of a small Godot project. It includes a valid project.godot, a main.tscn entry scene, and an autoloaded GameManager. Player, enemy, and projectile scenes include colliders and health bars. A compact controls UI and enemy spawner complete the fixture.
Those .tscn/.tres fixtures intentionally use relative path= values, and the resource reference also carries a uid= so the plugin exercises both Godot-style resolution paths.
