Description
Changelog
Reviews (2)
GodotNodes+
A reusable component-based library of nodes for Godot 4, favoring composition over inheritance.
Add health, damage, shields, cooldowns, state machines, object pooling, save/load, projectiles, and more to any entity — without writing boilerplate.
Features
- Composition-first — attach only what you need. A player = Sprite2D + Health + Hurtbox2D + StateMachine.
- Cross-dimension — 2D and 3D variants for most systems.
- Synergistic — nodes are designed to work together. StatusEffect ticks on Health, TimerLabel displays Cooldown, Follow2D tracks Target2D.
- Editor dock — browse and add nodes with one click via the NodesPlus sidebar.
- Signal-driven — every component emits typed signals for decoupled game logic.
Installation
- Copy
addons/nodes_plus/into your project'saddons/directory. - Enable it in Project Settings → Plugins.
- The NodesPlus dock appears in the bottom-left editor panel.
Quick Start
Add health to a player:
- In the NodesPlus dock, click Health.
- Set
max_healthto100in the inspector. - Connect the
health_depletedsignal to handle death. - Call
apply_damage(10)from an enemy's Hitbox2D.
Add a StateMachine:
- Click StateMachine and State from the dock.
- Add child State nodes (idle, run, jump).
- Override
enter(),update(),exit()in each state. - Call
$StateMachine.change_state($StateMachine/Idle).
Node Reference
Stats
- Health (
Node) — HP management withhealth_changedandhealth_depletedsignals. - Damage (
Node) — Damage value with crit chance and multiplier. - Shield (
Node) — Absorbs damage before Health. Supports recharge and break. - Regeneration (
Node) — Heals Health and Shield over time. - Cooldown (
Node) — Ready/not-ready timer for abilities. Supports pause and auto-restart. - Lifespan (
Node) — Auto-queue_free, hide, or signal after a duration. - StatusEffect (
Node) — Temporary property modifiers + DoT/HoT tick system with stacking.
Combat (2D & 3D)
- Hitbox2D / Hitbox3D (
Area2D/Area3D) — Deals damage to Hurtbox nodes. One-shot and group filtering support. - Hurtbox2D / Hurtbox3D (
Area2D/Area3D) — Receives damage, delegates to Health/Shield. Invincibility frames. - InteractionArea2D / InteractionArea3D (
Area2D/Area3D) — Input-triggered interaction with nearest-body detection, cooldown, and one-shot.
Movement & Tracking (2D & 3D)
- Follow2D / Follow3D (
Node) — Smooth lerp-based position following. - Target2D / Target3D (
Area2D/Area3D) — Lock-on detection with auto-acquire and nearest-target selection. - Projectile2D / Projectile3D (
CharacterBody2D/CharacterBody3D) — Physics-based projectiles with collision, max distance, and lifespan integration.
Systems
- Spawner (
Node) — Timed or on-demand scene spawning with limits. - ObjectPool (
Node) — Reusable instance pool with prewarm, growth, and auto-return. - StateMachine (
Node) — Manages state transitions withchange_state(). - State (
Node) — Base class withenter(),exit(),update(),physics_update(),handle_input(). - Save (
Node) — JSON serialization with automatic data collection viasave_targets. - Load (
Node) — Loads and applies saved data to target nodes. - Shaker (
Node) — Universal shake for Node2D, Node3D, and Control nodes. - TimerLabel (
RichTextLabel) — Displays remaining time from Cooldown, Lifespan, or StatusEffect with color thresholds.
Compatibility
- Godot 4.4+ (tested with GL Compatibility renderer).
- 2D and 3D — every system has variants for both.
- No external dependencies — pure GDScript.
License
MIT
Changelog for version v1.0
No changelog provided for this version.