Scripts

  • Lua GDExtension
    4.3
    v0.3.0Scripts

    Extension for using the Lua programming language in Godot 4.3+ - Use Lua to script Godot objects like Node and Resource - Create additional Lua states to support modding in your game, as many as you need! - Supports Godot APIs in Lua: work with variants, Godot classes, load code from "res://..." and more! - Supports Lua objects in GDScript: access LuaState, LuaTable, LuaFunction, LuaCoroutine and more! Check out the project page for more information: https://github.com/gilzoide/lua-gdextension

    By: gilzoide
  • Python for Godot
    4.4
    v1.0.0-alpha6Scripts

    Note: To use this plugin, simply download it. You don't have to enable it in the plugins menu The aim of this project is to integrate Python scripting into the Godot Engine, allowing developers to write scripts in Python instead of, or alongside, GDScript. This plugin enables the selection of Python as the scripting language when creating new scripts within Godot, providing an alternative for developers who are more comfortable with Python. Platform Compatibility: Please note that this plugin is currently only compatible with Windows 64-bit, Linux 64-bit and MacOS ARM64 systems. Ensure that you are working on one of these platforms to take full advantage of the Python scripting capabilities. Similarity to GDScript: The Python API is designed to be similar to GDScript, making it easier for developers familiar with GDScript to transition to or integrate Python into their projects. Getting Started: To start using Python in Godot: Install the Plugin: Download the plugin and install it in the addons folder Create Python Scripts: When creating a new script, select Python as the language. Refer to the Documentation: Look at the Github page for a short example of the api

    By: nikz
  • Wyvernbox - Inventory System
    4.0
    v1.3.14Scripts

    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

    By: don-tnowe
  • Wyvernbox - Inventory System
    3.5
    v1.1.1Scripts

    Yet another inventory system for Godot 3, made primarily for Action RPGs. Supports: - 4 inventory types, including those for multi-slot items, equipment, and theoretically-infinite currencies - all types are Container-compatible - 2D and 3D ground items - stacking and quick-transfer - crafting with substitutes and random outcomes, merchants with randomized and limitable wares - localizable equipment affixes - item filters, and autosave. Setup: - Drag stuff from addons/wyvernbox_prefabs into your scene. Should just work. - 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. - Enabling the plugin optional, but highly recommended.

    By: don-tnowe
  • Debug draw
    3.2
    v0.1Scripts

    This is a small debug drawing script, which you can setup as an auto-load singleton. It lets you print text on the screen, draw boxes or lines from anywhere in your code. It is mostly geared towards 3D at the moment.

    By: Zylann
  • Godot Safe Resource Loader
    4.0
    v0.2.3Scripts

    Godot Safe Resource Loader is a small library that allows you to safely load .tres resource files from unknown sources without risking your player's security. It does this by scanning the resource file for embedded GDScripts and links to resources at unsafe locations outside of "res://" before loading it. The main use case for this is to allow your users to share savegames and load them without risking that they contain malicious code.

    By: derkork
  • GECS
    4.0
    GECS
    122
    v3.5.1Scripts

    GECS - Godot Entity Component System A lightweight and performant ECS framework that integrates seamlessly with Godot 4.x, built to leverage Godot’s node system. It supports: - Full integration with Godot’s node system - Query-based filtering of entities with optimized component indexing - System groups for organized processing - Component resources that work in the editor - Straightforward setup with automatic node management - Clear examples (Zombies Ate My Neighbors, a 2D Breakout clone) OVERVIEW GECS follows the Entity Component System (ECS) pattern: - Entity: A container (a node extending Entity) representing an object. - Component: A data container resource (extends Component) with properties but no logic. - System: A node (extends System) that defines a query for relevant entities and the logic to run on them. - World: A central node (extends World) that manages entities and systems. FEATURES - Components: Simple resources, easy to edit in the Godot inspector. - Entities: Node scenes that extend Entity and automatically synchronize component data. - Systems: Nodes that define queries (for example using with\_all, with\_any) and process matching entities. - System Groups: Specify a group name such as "physics" or "gameplay" to organize and process systems at different times. - ECS Singleton: Global access to your current World, allowing you to call ECS.process(delta, group). - Relationship Support: Use relationships as specialized resources to link entities. - Advanced Queries: Use with\_relationship, with\_reverse\_relationship, and various conditions to refine your entity matching. WHY USE GECS - Improved code organization and maintainability - Clean separation of data (components) and logic (systems) - Intuitive queries for selecting and managing entities - Works naturally with Godot’s scene and node structure GETTING STARTED 1. Place the GECS addon in your project’s addons folder. 2. Enable the plugin in Project Settings > Plugins. 3. Ensure ECS.gd is autoloaded (done automatically when enabling the plugin). 4. Create your own entities, components, and systems. 5. Place a World node, attach your systems and entities, then call ECS.process(delta, group) as needed. SIMPLE STEPS - Create Components, for example Velocity or Bounce, each with exported properties. - Create Entities, adding the desired components in the inspector. - Create Systems, define queries such as with\_all, and implement the logic. - Add Systems to your World node, optionally setting a group. - Process them via ECS.process(delta, "group\_name"). USE CASES - 2D and 3D games needing modular and scalable code - Clean separation of concerns in larger projects - Editor-based design of components without heavy scripting - Simplified debugging of component data SPECIAL FEATURES - Relationship-based queries for advanced linking of entities - System groups for controlling update order - Resource-based components that can be instanced or shared - Editor support for exporting component properties CONCLUSION GECS streamlines development with a concise Entity Component System approach that fits naturally into Godot’s node structure. Build maintainable, modular games with flexible queries, reusable data containers, and powerful system organization.

    By: csprance
  • Discord.gd
    3.3
    v1.2.1Scripts

    Interact with the Discord Bot API. Make Discord Bots in Godot! Supports embeds, files, buttons, menus and more. Support Application commands aka Slash Commands Note: Works on Godot 3.x For the latest version check the Github repo. Found a bug? Report it on the Github issues page or in the Discord server. Docs: https://3ddelano.github.io/discord.gd/

    By: 3ddelano
  • Text Database
    4.0
    v1.3Scripts

    Advanced loader for text data files (JSON, CFG). It can load your files and perform a complex data validation. If you like keeping your data in text files, this will be useful as it ensures that your data is correct, i.e. without typos. Data collections in TextDatabase are arrays of dictionaries. You can e.g. store items, enemy data, or level metadata etc. in a JSON or CFG files, where each item/enemy/level/etc is a Dictionary with some properties. You can define fields for your data, which can be either mandatory, or just allowed, and the loader will ensure that your fields are correct. Example usage: var database = TextDatabase.new() database.add_mandatory_property("price") database.add_valid_property("attack") database.load_from_path("res://items.json) var data = database.get_array() Example valid file: [ { "name": "Sword", "price": 100, "attack": 5 } ] Example invalid file: [ { "name": "Shield", "defense": 1 } ] It's missing "price" and "defense" is not a defined property, so the file won't load. You can catch errors like this, so you can avoid unexpected behaviors due to data typos. btw, ConfigFiles (CFG) are much better than JSON. Here's the Sword example as CFG: [Sword] price = 100 attack = 5 You can store multiple items in one file and load multiple files into database. Just use load() multiple times on one database and then get_array() will return data from all files. Or you can use get_dictionary() instead and access the entries by name. Explaining all functionality would be very long, so just read the README, which you can find in the asset's repository (: You can also find an example project in there.

    By: KoBeWi
  • Text Database
    3.4
    v1.0Scripts

    Advanced loader for text data files (JSON, CFG). It can load your files and perform a complex data validation. If you like keeping your data in text files, this will be useful as it ensures that your data is correct, i.e. without typos. Data collections in TextDatabase are arrays of dictionaries. You can e.g. store items, enemy data, or level metadata etc. in a JSON or CFG files, where each item/enemy/level/etc is a Dictionary with some properties. You can define fields for your data, which can be either mandatory, or just allowed, and the loader will ensure that your fields are correct. Example usage: var database = TextDatabase.new() database.add_mandatory_property("price") database.add_valid_property("attack") database.load("res://items.json) var data = database.get_array() Example valid file: [ { "name": "Sword", "price": 100, "attack": 5 } ] Example invalid file: [ { "name": "Shield", "defense": 1 } ] It's missing "price" and "defense" is not a defined property, so the file won't load. You can catch errors like this, so you can avoid unexpected behaviors due to data typos. btw, ConfigFiles (CFG) are much better than JSON. Here's the Sword example as CFG: [Sword] price = 100 attack = 5 You can store multiple items in one file and load multiple files into database. Just use load() multiple times on one database and then get_array() will return data from all files. Or you can use get_dictionary() instead and access the entries by name. Explaining all functionality would be very long, so just read the README, which you can find in the asset's repository (: You can also find an example project in there.

    By: KoBeWi
  • GodotRx
    4.2
    v1.0.1Scripts

    GodotRx - Reactive Extensions for the Godot Game Engine version 4 (GDRx) Why Rx? ReactiveX allows a more declarative programming style working on observable data streams. It encourages high cohesion and low coupling rendering the code more easily readable and extendable. The Godot Engine brings a well thought-out event system as well as a nice implementation of coroutines to the table. It allows you to easily implement asynchronous code execution, meaning that code is not run in the sequence order which it is written in. An observer listens to an observable event which fires when something important happens in the program resulting in side-effects for the connected instances, this can be e.g. a player attacking an enemy or an item, which is picked up. Rx extends this idea by turning all forms of data within the program like GD-signals, GD-lifecycle events, callbacks, data structures, coroutines etc. into observable data streams which emit items. These data streams, referred to as 'Observables', can be transformed using concepts from the world of functional programming. (Say hello to Flat-Map, Reduce and friends!)

    By: Neroware
  • Tween Suite
    4.3
    v1.1Scripts

    Extension for the Tween system. It adds: TweenNode - a Node wrapper for Tween. It allows for configuring the Tween from the inspector and provides a reusable Tween object. You can either use it with TweenAnimation or via code, by implementing the virtual initialize_animation(tween) method. If TweenAnimation is used, you need to set a root node, similar to AnimationPlayer root. TweenAnimation - a Resource that defines an animation for a Tween. You can use it with a regular Tween by calling apply_to_tween(tween, root) or by assigning it to TweenNode. The root is the base Node for animation paths. TweenAnimation editor - a complete editor for creating TweenAnimation resources. You can add animation steps and add Tweeners to steps to create animation. The editor supports simple animation playback to preview what you are editing. TweenNode and TweenAnimation come with a documentation. For more information and images see the GitHub repo.

    By: KoBeWi
  • You Can Do It!
    4.4
    v4.3Scripts

    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

    By: Joy-less
  • First Person Controller (FPS)
    3.3
    v1.0Scripts

    This is a First Person Controller inspired by Half Life 2 and Counter Strike Global Offensive. You can instance abilities as a child of the Camera node of the player (shooting, grabbing, etc). The basic Player script support snapping on slopes until an angle of 45 degrees. It works with QWERTY and AZERTY keyboards and joysticks. The character always run, you can use Shift or L2 to walk and Control or B from the joystick to crouch. Everything is animated using tweens allowing you to edit the animations easily. Everything is under MIT license apart for the 3D models and sounds, but they are royalty free. You must credit the author or share the source if you use them. Here are the sources: - AK-47 model by TastyTony: https://sketchfab.com/3d-models/low-poly-ak-47-type-2-a7260926fb0a40f8bba5f651b03d23f1 - M1911 model by TastyTony: https://sketchfab.com/3d-models/low-poly-m1911-117f542d21954ae0a59afaedadcff338 - Gun fire sound by GoodSoundForYou: https://soundbible.com/1998-Gun-Fire.html - Shell falling sound by Marcel: https://soundbible.com/2072-Shell-Falling.html 2:52 PM 7/18/2021 For additional resources you can download 400 low poly creative commons weapons here, you just need to credit TastyTony: https://sketchfab.com/TastyTony Impact, footsteps and flashlight button: https://www.fesliyanstudios.com/ Here are all the abilities available: - Shoot: it will add the ability to shoot with the left-click or L2 from a controller. And to reload with R or with the X button of an Xbox controller. You can switch weapons with the mouse wheel, number of your keyboard or the directional pad of the joystick. It supports recoil (you lose accuracy with the fire rate and movement speed), camera shake, weapon bobbing adjusted with the player's movement speed, weapon sway. A shell is spawned at each shot. There are multiple sounds and the pitch is randomly modulated. The shooting sound has an echo. - Crosshair: it is animated, it gets wider depending on the player's movement speed. - Flashlight: a flashlight that you can toggle On and Off by pressing f or L1, it has two placeholder sounds with random pitch. - FootstepSound: plays a footstep sound randomly, the pitch is set randomly too for less repetition. The volume and rate are adjusted depending on the player's movement speed. When after falling a louder sound is played. - Grab: allows grabbing a RigidBody under 50 kg with the E key or the Y button of an Xbox controller. You can drop it with the same key or throw it with the shoot key. The game displays a message when you can grab an object. - Minimap: it displays in the top left corner the player from the top. It has a royalty-free font used for the HUD of the FPS. It includes a pause singleton. Import Pause.gd in Project > Project Settings... and in the AutoLoad tab. This singleton will allow pausing the game with the escape key. You can then resume it with the left-click or leave it by pressing escape again.

    By: Linko
  • Inventory System Example
    3.2
    v2.0Scripts

    Update 2.0 - Added Character Panel with equipment slots - Character Panel and Inventory Panel can be moved by dragging title bar - Added slot and item types (eg. boots can't be equipped on helmet slots) - Added Sort by Rarity button to Inventory panel - Increased default amount of inventory slots to 45 - Added scrollbar to slots - Added custom item tooltip - Added "Add Item" button to add random item with random rarity - Items can be equipped and deequipped using Right Mouse Button - Improved items picking and dropping - Updated code for better performance and managemen

    By: Oen44
  • Godot Midi
    4.2
    v0.2.0Scripts

    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 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!

    By: nlaha
  • First Person Stealth Character Controller
    3.2
    v1.0.0Scripts

    A first-person character controller with an FSM, inspired by the Thief games and Quadrilateral Cowboy. Features: - Clambering up ledges and into vents. - Detects how lit the player is. - Get the texture of the surface walked on and signal to nearby listeners in a radius. - Head bobbing - Crouching and crawling - Sneaking - Leaning - Frobbing (Interacting) - Dragging and throwing rigidbodies with the mouse. - Noclip state - Camera zoom

    By: Scipioceaser
  • AwaitableHTTPRequest
    4.1
    v2.2.1Scripts

    This addon makes HTTP requests much more convenient to use by introducing the await-syntax and removing the need for signals. See the image and examples.tscn for usage.

    By: Swarkin