scripts — independent software & tools
-
GodOSC
Implementation of the Open Sound Control protocol in Godot using GDScript and a group of nodes for convenient use. GodOSC receives and sends OSC messages over UDP. Currently supports: * Sending and Receiving OSC messages. * Receiving OSC Bundles * Booleans * Floats * Integers * Strings * Blobs Includes the following nodes: OSCServer * Receives OSC messages OSCClient * Sends OSC messages OSCMessage * Helper node. Attaches to a node who's data will be used in an outgoing OSC message. OSCReceiver * Helper node. Attaches to a node that will be controlled by incoming OSC messages.
-
MapCamera2D
A node that adds mouse, keyboard and gesture zooming, panning and dragging to Camera2D. Exported properties: - zoom_factor (multiplies Camera2D.zoom each mouse wheel scroll) - zoom_min (minimum Camera2D.zoom) - zoom_max (maximum Camera2D.zoom) - zoom_limited (if true, MapCamera2D.zoom_min is effectively increased to stay within limits) - zoom_relative (if true, mouse zooming is done relative to the cursor) - zoom_keyboard (if true, zooming can also be done with the plus and minus keys) - pan_speed (adds to Camera2D.offset while the cursor is near the viewport's edges) - pan_margin (maximum number of pixels away from the viewport's edges for the cursor to be considered near) - pan_keyboard (if true, panning can also be done with the arrow keys) - drag (if true, the map can be dragged while holding the left mouse button) - drag_inertia (multiplies the final drag movement each second)
-
Godot Midi
This add-on allows for the import and playback of MIDI files in Godot. Great for syncing events to music, making rhythm games, or even your own audio production/synthesis applications. Features: - Easy import of MIDI files as Godot Resources - Easy MIDI event handling with signals - Imported MIDI events stored in an array of dictionaries per-track - Asynchronous playback via a separate thread - Linking to one or more AudioStreamPlayers for synchronization with music - Easy rhythm game integration with helper functions for get_notes_around and get_notes_in_range Please note: this is a work-in-progress, bugs/unexpected behavior may occur. Please consult the README on GitHub before using it. Bugs reports, suggestions, and feature requests are welcomed!
-
You Can Do It!
Anime girls motivate you every 15-30 minutes. Features: - Girls holding programming books - Nice girls to compliment you - Chill girls to greet you - Mean girls to insult you - Collect girls in the catalog
-
GD UUID
GD UUID is a Godot library that generates UUIDs. Currently, it supports UUID v7 only.
-
Threaded resource save-load
This plugin allows you to save/load resources in the background using threads, preventing main thread freezes and handling the process using signals. For more information click "View files".
-
Godot 4 MessagePack
Implementation of the Messagepack specification for Godot 4 written in pure GDSCript.
-
Documentation Comment Helper
Adds features to aid in writing documentation comments. Right-click to convert lines of text to documentation comments, or to open a window to type your documentation comments into. The window includes buttons to add formatting tags that the Godot documentation system uses. Tested with 4.6, but should work with most earlier 4.x versions.
-
BZ Physics Helper
A simple and optimized, static utility class for Godot 4+ to make 3D ray-casting easier to use for C# / .Net.
-
Input Buffer Combo System
A lightweight and flexible combo input buffer system for Godot 4. This addon allows you to track player inputs, store them in a timed buffer, and detect combos based on customizable action sequences. It is ideal for fighting games, action games, and any system that requires chained inputs. Features: Input buffering with configurable time window Combo detection using action sequences Supports custom InputMap actions Priority-based combo resolution (longer combos first) Easy integration into existing player controllers The system works by capturing input events, storing them in a buffer, and resolving combos after a short delay. When a valid sequence is detected, it returns the corresponding combo action for execution. Perfect for: Fighting game mechanics Hack-and-slash combat systems Advanced player input handling Includes example usage and simple setup.
-
vuedotcs
Manage Godot nodes and data as effortlessly as Vue, from Vuedot implement by C#
-
Finite State Machine
A better state machine for Godot 4.x (GDScript). Nesting states supported. Designed with developer experience in mind, this plugin provides editor warnings, automated tree scanning, hierarchical lifecycle propagation, and runtime flexibility for both static and dynamic setups.
-
Jodotai
Reactive atomic state for Godot 4, inspired by Jotai.
-
brainCloud Client SDK
Official brainCloud client SDK for Godot 4 (GDScript). Adds a brainCloud editor dock for one-click credential setup, and registers a global brainCloud autoload singleton giving you instant access to all brainCloud services — authentication, player entities, leaderboards, cloud scripts, virtual currency, RTT WebSocket events, lobby matchmaking, and real-time relay multiplayer. All API calls are async/await compatible.
-
IMSC Dialogue/Script Player
A lightweight yet powerful JSON dialogue/script player that can be easily integrated into any stage of game development. Features: - Speech nodes with optional choices (branching dialogs) - Conditional branching based on variables or expressions - Variable management – set, get, and use in conditions - Trigger / Function nodes – invoke game logic and receive outputs - Serializable state – save/load, undo/redo, replay - Expression evaluation – math, comparison, and logical operators - Async support – triggers can be asynchronous - Sub‑scripts – callScript nodes run nested graphs with isolated variables and in/out data flow - Custom nodes – register your own exec (flow) or data (expression) node types via register_custom_node - Pause/Resume – pause execution during triggers or user input You can create a JSON graph from scratch or use IMS Creators to create ready-to-use dialogue graphs in a visual editor.
-
State Machine Lite
Lightweight finite state machine autoload for Godot 4. Free version. Upgrade to PRO for hierarchical states, transitions guards, history and visual debugger.
-
Procedural PBR Texture Generators
Lightweight, zero-bloat CLI utilities written in Python that procedurally generate seamless, tileable PBR (Physically Based Rendering) texture maps for realistic stylized water and clouds.
-
codeadd
CLI for Code Addiction framework - AI-powered development workflows
-
macos-scripts
A modular CLI for structured terminal workflows, automation, and system tools on macOS.
-
Proxmox-OS-AutoTagger
🗂️ Automate tagging of Proxmox VE containers and VMs with their OS version for easy management and organization.
-
Universal Save/Load System
Plugin designed to be generic and usable for any kind of game. The system is called Thoth from the Egyptian deity that was the holder of knowledge and patron of scribes, so Thoth is in charge of saving your game. If you want to support me : https://www.stupidrat.com/senseless If you wish to pledge to help me I also have a Patreon page. https://www.patreon.com/c64cosmin Documentation : https://stupidratstudio.github.io/thoth/ Contact & Support : https://discord.gg/FX5NaQHcjS
-
Object State Machine
Full documentation available in the repository: https://github.com/lowlevel-1989/object_state_machine A hybrid state machine solution for Godot - Single node in scene tree - Add just one NodeStateMachine node to your scene - No node-based states - States are pure GDScript objects (not scene nodes) - Optimized performance - Avoids scene tree overhead for state transitions - Clean architecture - Keep your scene tree simple while managing complex behaviors How It Works - Add a single node to your scene (NodeStateMachine) - Define states as scripts (extending StateAbstract) - Manage transitions through lightweight objects - Keep your scene tree clean - no nested state nodes Where to Use This? (Great for Complex Behaviors!) - Player behaviors: Idle, Run, Jump, Attack, Crouch - Enemy AI: Patrol, Chase, Attack, Flee - UI Systems: Main menu, Pause screen, Inventory - Game Flow: Level loading, Cutscenes, Dialogue - Complex object states: Treasure chest (locked, unlocking, open, empty), Security system (armed, disarmed, triggered) - Building mechanics: Placement, Rotation, Connection, Demolition modes Includes examples, documentation, and a clean architecture for handling transitions and input in pure script-based states.
-
Wyvernbox - Inventory System
Yet another inventory system, made primarily for Action RPGs. Now for Godot 4! Setup: - Drag stuff from addons/wyvernbox_prefabs into your scene. Should just work. - Enabling the plugin optional, but highly recommended. - If enabled, access the Documentation as you would in Godot - via the F1 key, then search. - Items are defined through ItemType resources. - For loot tables, make ItemInstantiators (each item, chance optional) and/or ItemGenerators (one from list, can be generated by script). For "or" logic or script-driven checks, make ItemPatterns. Supports: - 4 inventory types, including those for multi-slot items, equipment, and theoretically-infinite (or count-limited) currencies - all types are compatible with GUI containers - 2D and 3D ground items - gestures: quick-transfer (Shift-Click), gather/transfer all items of type (Double-Click), split one/half (Right-Click) - crafting with substitutes and random outcomes, merchants with randomized and limitable wares - localizable equipment affixes (for your Incredible Club of Casual Murder) - item search/filters, autosave - custom inspector tables to map items to values in YOUR classes (like in ShopManager, ItemGenerator, ItemPattern objects). Include an Item Browser popup to easily drag-drop item types, generators and patterns from the project. - hook up the GrabbedItemStack node's signals to a node to make input events do custom actions with grabbed items. Try the example: - Copy the example/ and addons/ folders into you project. DON'T unpack the entire repo zip, just these two. - Enabling the plugin optional, but highly recommended. - Launch test_2d.tscn
-
4.1+ Discord RPC / Editor Presence Plugin
Discord Game RPC Plugin for GDScript in Godot 4.1 or newer. It has Linux, Windows and partialy MacOS support. The GDScript code patterns are much easier then in other addons Make a complete rich presence with timestamps images info, Invites and much more.
-
GodotP2PNetwork
# GodotP2PNetwork ## Summary GodotP2PNetwork adds a network/lobby layer over existing networking infrastructure. Currently, we support - [https://github.com/CoaguCo-Industries/GodotSteam](https://github.com/CoaguCo-Industries/GodotSteam) #### Future Plans to Support: - Native Godot Networking - Peer to Peer Proxy server - To avoid having players have to port forward to play with friends ## Plugins ### Optional - Highly recommend since this is the only working Networking layer currently - Steam - [https://github.com/CoaguCo-Industries/GodotSteam](https://github.com/CoaguCo-Industries/GodotSteam) - [https://godotsteam.com/](https://godotsteam.com/) ## Features - RPC Signals - Send singals to any connected clients - RPC Method - Make method calls on any connected clients - RPC Sync - Sync Objects Across all clients - Network Lobby - Network Chat - Lobby Search - Configurable Network timing - Allow for client-side processing with period server syncs to reduce network load ## Singletons - `P2PNetwork` - `P2PLobby` ## Example - [GodotP2PNetworkExample](https://github.com/DawnGroveStudios/GodotP2PNetworkExample)
-
Rakugo Dialogue System
Rakugo Dialogue System is dialogue scripting system inspired by Ren’Py Script. It is part of Rakugo Project: https://rakugoteam.github.io
-
Format on Save
This plugin runs `gdformat` on save to automatically format your GD script as you code. NOTE: This plugin only runs if "gdformat" is installed. Instructions available at https://github.com/Scony/godot-gdscript-toolkit
-
Save Access (C#)
Save Access is a system for easily saving data to text files in a JSON format. Features Include: - Saving entire scene trees. - Automatic JSON serialization. - Support for recursive save structures. - ISaveable interface to allow modular save/load structures. For more information, see the GitHub repo.
-
QuickAudio
Light-weight and easy-to-use interface for creating sound effects and music systems
-
Neural Network
An addon for Godot that provides functionality for working with neural networks.
-
State Machine
A simple node base finite state machine inspired by ShaggyDev's state machine.
-
Random Audio
!! Disclaimer !! Godot already has built in functionality for this using the "AudioStreamRandomizer" Resource type. When making this plugin I didn't realize that. Extension of all AudioStreamPlayer nodes that adds functionality for randomizing pitch, volume and stream. Adds AudioStreamArrays which you can save to disk and have multiple different sets of sounds (eg. footsteps, damage, shooting) to select from randomly.
-
KSaver
A simple way to save and load game data.
-
Node Based Finite State Machine 4
A finite state machine, which uses nodes as states.
-
AudioStreamPlayerArea2D
A node like AudioStreamPlayer2D, but plays from a polygonal area rather than a single point. Exported properties: - polygon (the area to play from approximately, must be clockwise)
-
Fluid HTN (Godot 4.1 ~ 4.6)
A simple HTN planner based around the principles of the Builder pattern. A Fluid HTN for Godot implemented in GDScript.
-
Saveable (C#)
A save system for Godot C#. Requirements: - Godot 4.2.x Mono Version. - Installed Newtonsoft.Json package. Features: - Saving entire node trees. - Uses Newtonsoft.Json for serialization and deserialization. - Supports both encrypted, compressed and regular mode. - ISaveable interface to allow modular save/load structures. For more details, visit the GitHub repo.
-
MeshLODGenerator
LOD generator addon for Godot 4.x, suitable for mesh quality ingame settings.
-
Game State Saver Plugin
This plugin maintains game object state (property values) between scene changes as well as saves that state to a file. It handles the following scenarios for you: 1. Re-applying property values to game objects when a scene is reloaded. For example if an object is moved by the player, its position can be maintained so that it is in the new position when the scene is reloaded. 2. Re-instance a game object that was dynamically added to the scene. For example if an enemy drops an item and you want it to stay in the game even when the player leaves the scene, the plugin will re-instance this object when that scene is reloaded. Of course other properties can be persisted too, like the objects position. 3. Re-free a game object that was freed from the scene. For example, a quest item is added to a scene at design time in the Godot editor, and so is normally always present. However, the player can pick up the item which removes the item from the scene tree at runtime. This plugin will note the fact the item was freed and re-free it when the scene is reloaded. 4. Share values between scenes. This is done with a "global" section of the game state data. This allows something happening in one scene to affect something else in another. For example, a switch in once scene can set a global value to true which unlocks a door in another scene. The plugin takes care of all of the above, but if you have special state logic you need to add for a game object, you can hook into the state system by connecting to certain signals (see readme for details).
-
Better Third Person Camera 3D
A third-person camera for 3D games. The camera has: - Its own Spring-Arm. - Support for Zoom and mouse events. - Rotation control and mouse events.
-
simple random position generator
i've recently started using godot and this is a very simple script for generating random positions in range of an area i made this for my own project and noticed there is no such thing in asset store even tho its very simple features: include an area wich the random position will be generated in exclude an area from generating in order to get the random position you need to call the give_random_pos() function. in order to enable exclude zone hit the bool in scene and set the pos1 and pos2
-
Idle Energy Saver
This plugin lowers the CPU consumption of your application when it loses its focus which is when it gets minimized or when you switch to another program. It's as simple as adding a node to your main scene. This is especially of interest for you if you build a non-game application. See the project's README for more details.
-
Inventory Toolkit
Scripts and base classes for inventory control, with configurable item stack and slots. Check the example for tipical usage.
-
AI dialog generator plugin
This Godot plugin helps with creating AI generated dialogs for free! Use it in RPG (dynamic quest assigning also possible) or bring your NPCs to life.
-
GDScript syntax highlighting for GNU Nano text editor
This tool expands nano with syntax highlighting for `.gd` files. Installation: - download addon using godot or clone repository using git - open terminal and follow the instructions in the README.md file - after instalation you can remove this addon from godot project, syntax highlighting will remain installed in nano on your machine.
-
Godot UI Animation Library
A collection of the most commonly used animations for your UI
-
Button Audio Player
Add sound to any Button. Non-invasive design, configured through the inspector, does not require scripting, and supports any node inherited from BaseButton.
-
Ellyality Inventory
General inventory system fit for all types of game
-
Audio Bus Volume Slider
Simple extension of HSlider that provides a slider to control any audio bus.
-
GUIPresser
A node that allows to handle clicks and hover over Control nodes
-
RepairScene
Repairs broken resource paths in Godot 4.x scene files after renaming or moving assets. You renamed a folder. Now half your scenes show "Scene file appears to be invalid/corrupt" and Godot refuses to open them. The .tscn files contain hard-coded resource paths that no longer exist on disk. Fixing them manually means opening each file in a text editor and rewriting every broken ext_resource path by hand. This EditorScript scans your .tscn files as raw text — bypassing Godot's resource loader entirely, because the whole point is to fix files Godot cannot open — finds every broken path= reference, and resolves it by matching the filename stem against your current project filesystem. Stale uid= tokens are stripped and regenerated on the next import. Always run with write_changes set to false first. The dry-run mode logs every change it would make without touching any file. Features: - Scans entire project or a specific subfolder - Resolves broken paths by filename stem match — handles moved files with the same name - Strips stale uid= tokens so Godot regenerates them cleanly - Backup system creates .bak files before overwriting anything - Dry-run mode: logs all proposed changes without writing to disk - Summary table: files scanned, refs broken, refs resolved, refs unresolved - Configurable backup directory and backup-skip logic - Zero dependencies — works in a blank project Create a new script with EditorScript as the base class. Paste RepairScene.gd contents. Set scan_root. Run with Ctrl+Shift+X. Review the Output panel. Set write_changes to true to apply. Godot 4.x only. GDScript 2.0. Extended version with fuzzy path resolution for renamed files and closest-directory disambiguation available at nullstateassets.itch.io.
-
SignalGraphVisualizer
Live runtime graph of all signal connections in your Godot 4.x scene. Signal connections in Godot are invisible at runtime. They live in the editor's Node panel, disconnected from your code, and there is no built-in way to see the full picture of what is connected to what while your game is running. Debugging a signal that never fires means opening every node one by one and checking its connections manually. This script opens a floating window at runtime that scans your entire scene tree and renders every signal connection as a graph. Emitter nodes appear on the left of each bezier curve, receiver nodes on the right. Click any card to highlight its connected nodes and dim everything else. Pan with middle mouse, zoom with scroll wheel. Features: - Full scene scan on ready with manual refresh button - Bezier connection lines between emitter and receiver node cards - Each card lists the node's emitted and received signal names - Click a card to isolate its connections and dim unrelated nodes - Pan and zoom canvas navigation - Configurable via Inspector: card colors, typography, line appearance, zoom limits, layout - Attach to any node — spawns its own Window without polluting your hierarchy - Zero dependencies — works in a blank project Add SignalGraphVisualizer.gd to any node in your scene. Hit play. The graph opens automatically. Godot 4.x only. GDScript 2.0. Extended version with live filter bar and click-to-inspect detail panel available at nullstateassets.itch.io
-
TileMapCollisionManager
Name-based collision layer management for TileMap in Godot 4.x. TileMap.set_layer_enabled() takes a layer index — a raw integer. Your layers have names. Every time you restructure your TileMap, those indices shift silently and your collision code breaks with no error messages. You are manually maintaining a number-to-name mapping in your head. This script builds a name-to-index cache at startup and exposes a clean string-based API. Write set_collision_enabled_by_name("Ground", true) instead of set_layer_enabled(2, true). Your code survives TileMap restructuring because it never references indices directly. Features: - Name-to-index cache built automatically on ready - set_collision_enabled_by_name() for single layer control - refresh_layer_cache() to rebuild after runtime structural changes - Inspector-configured initial collision state on scene load - Duplicate layer name detection with warnings - Debug layer map printing via Inspector toggle - Zero dependencies — works in a blank project Attach TileMapCollisionManager.gd to your TileMap node. It replaces TileMap as the base class. Set initial_enabled_layers in the Inspector. Done. Godot 4.x only. GDScript 2.0. Extended version with batch methods, global toggles, and state snapshot serialization available at nullstateassets.itch.io.
-
Trauma - 2D Camera Shake Plugin for Godot
Trauma-based camera shake for Camera2D. Usage: 1. Add a CameraShake node as a child of your Camera2D. 2. Call shake(profile) with any ShakeProfile resource. 3. Or call add_trauma(0..1) for cumulative effects (e.g. per bullet hit).
-
uuid
The uuid class is a GDScript 'static' class that provides a unique identifier generation for Godot Engine.