
This script allows you to load scenes in a seperate background thread to eliminate any lag! NOTE: This does not work for WEB, since Threads are not supported there.
This script allows you to load scenes in a seperate background thread to eliminate any lag! NOTE: This does not work for WEB, since Threads are not supported there.
Godot Signals is an advanced and powerful signal management system for the Godot Engine, designed to enhance signal handling and simplify communication between game components. This plugin brings flexibility, efficiency, and high performance to your Godot projects, allowing developers to create complex signal workflows with ease. Key Features: - Advanced Signal Processing: Build signal processing chains with filtering, transforming, and mapping capabilities. - Signal Broker System: Easily connect signals across your game without tightly coupled object references. - Wildcard Subscriptions: Use intuitive pattern matching to subscribe to multiple signals at once. - Alias Support: Automatically assign aliases based on node names, groups, or custom settings for improved organization. - Performance Optimization: Low overhead and optimized processing for high-frequency signals like continuous position updates. - Flexible Callback Handling: Automatically adapts callback arguments to handle signal data intelligently. Why Use Godot Signals? If you’ve ever felt limited by Godot’s native signal system or struggled with managing event-driven interactions in large projects, this plugin is for you! Godot Signals simplifies complex workflows by centralizing event handling, reducing tight coupling between nodes, and allowing for cleaner, more maintainable code with minimal performance impact.
A simple class based on Godot's default CharacterBody3D with very simple stair stepping ability. Just call "move_and_stair_step()" instead of "move_and_slide()". Written in C++ Only tested with cylinder colliders. Works best with "0.01" collider margin. There are a couple signals you can connect to: on_stair_step (any step, up or down) on_stair_step_down on_stair_step_up
N64-era appropriate lens flare made of sprites. Add the lens_flare.gd script to a Node3D and position it where you want the "sun" to be, add the number of ghosts you want (around 10 seems appropriate for the era) and then either tweak them manually or by clicking the randomize button.
A minimalist, node-oriented event system that fits perfectly with the Godot philosophy. Send custom actions and react to them anywhere in your game.
Minimal Wavefront OBJ mesh geometry exporter script. Only supports meshes with indexed vertex data and does not export materials.
This is my version of anti-cheats adapted for Godot Engine as plugin, this plugin makes it difficult to use cheats locally. # Supported * IntStream Integer values * BoolStream Boolean Values * FloatStream Float Values * StringStream String Values * VariantStream General purposes values # Others * TrackValue Can be used to monitor the list of changes similar to TrackerStream Scene.
An implementation of Charles "Chuck" Moore's Forth programming language as a virtual computer inside of Godot.
Simple extensible logger for Godot 4.x. Comes with default console writer and error file writer with max log size limitation.
This is script for Godot Engine, that validate JSON files by JSON Schema.
Yet another Tween for for Godot 3. - Easy as fluent syntax to use - No need adhoc logics - No need duration control - Kinematics based natural interpolation - Also has the same features as Tween [English] https://github.com/ydipeepo/godot-motion/blob/main/README.md [日本語] https://github.com/ydipeepo/godot-motion/blob/main/README_jp.md [ç®€ä½“ä¸æ–‡] https://github.com/ydipeepo/godot-motion/blob/main/README_zh.md
Clientside Predictor Character synchronization using clientside prediction for Godot 3D network games. This asset allows you to implement clientside prediction with just a few lines of code per entity. Do youn need an 3D artist or a gamedev? In that case, please send a mail to [email protected] ================================= Usage: -Replace the Script ServerScriptForConnectionHandlingEtc.gd with something that has to be called from your server, spawning the player avatars. playerId has to be the string representation of the unique network id. var target:Vector3=Vector3(100.0,0.0,100.0) var lockRotation:Vector3=Vector3(0.0,1.0,1.0) get_parent().find_node("DummySpawner",true,false).remote_spawn_dummy(0.4,str(playerId),Vector3(0,0,0),Quat(0.0,0.0,0.0,0.0),"","DummyCollection",lockRotation) get_parent().get_root().get_node("ClientsidePredictionSpawner").initBegin("Player","DummyCollection", 30.0,target,"Camera",5.0,false,false) get_parent().find_node("ClientsidePrediction",true,false).initBegin("Player","DummyCollection", 30.0,target,"Camera",5.0,false,false) Each entity (for example each player entity, each bullet entity etc - not their instances!) has to have its own ClientsidePrediction node (you will have to rename it in order to use more than one entity.) To modify the avatar the user sees, the corresponding node should be attached to the node called "Dummy" that has to be a unique subnode of the node "DummyCollection" ("DummyCollection" can be renamed, just don't forget to specify the correct name in the spawnig function), and that has got to have the script "ClientsidePredictionDummy" attached to it. (DummyCollection=>Dummy(ClientsidePredictionDummy.gd)=>Avatar The "Dummy" node should be positioned outside the walkable terrain, as it could cause unwanted collissions. -Replace the Player node in ExampleClient.tscn with a real first person player controller, which has been derived from KinematicBody =================================== Dummy states to implement into state machine: (!!! Untested !!! Please write GitHub issue in case of failure) These have to be called from the client. Only states of nodes with client's ID can be changed, and the states will be replicated over the network. var dummyNode:ClientsidePredictionDummy=get_tree().find_node("DummyCollection").get_node(nodeID) Play sound: dummyNode.play_sound("res://sound.ogg", nodeID, "DummyCollection", "<SoundNodeName>") Play animation: dummyNode.playAnimation(nodeID, "<AnimationPlayerName>","SomeCoolAnimation", animationNodeId,true): Set mesh: dummyNode.set_mesh(var "res://mesh",nodeID, "DummyCollection", "<MeshNodeName>"): Set speed_ dummyNode.set_speed(0.4, nodeID, "DummyCollection"): ================================= Node Structure: ===Client=== -root --"Player" (type: KinematicBody) - has to have the player controller script attached (name can be changed for more entities) --"ClientsidePrediction" (type: Spatial) ClientsidePrediction.gd (name can be changed for more entities) ----"DummyFunctions" (type: Spatial) (feature not yet implemented) ----""DummyCollection" (type: Spatial) ------"Dummy" (type: KinematicBody) ClientsidePredictionDummy.gd --------"MeshInstance" (type: MeshInstance) --------"CollissionShape" (type: CollissionShape) ===Server=== -root --"Player" (type: KinematicBody) (name can be changed for more entities) --"DummySpawner" (type: Spatial) DummySpawner.gd --"ClientsidePredictionSpawner" (Type: Spatial) ClientsidePredictionSpawner.gd --"ClientsidePrediction" (type: Spatial) ClientsidePrediction.gd (name can be changed for more entities) ----"DummyFunctions" (type: Spatial) (feature not yet implemented) ----"DummyCollection" (type: Spatial) (name can be changed for more entities) ------"Dummy" (type: KinematicBody) ClientsidePredictionDummy.gd --------"MeshInstance" (type: MeshInstance) --------"CollissionShape" (type: CollissionShape) ================================= Update: v0.2: -Seperated client scene from server scene. The server scene now has got to have a DummySpawner.gd node attached. -Added demo scenes. (You will have to add an own connection handling part, which calls the DummySpawner, though. The player controller for the "Player" node also has to be implemented, it is not included.) v0.2.1 -added some sanity checks v0.2.2 -parametrized ClientsidePrediction.tscn name in DummySpawner v0.3 -moved spawning of ClientsidePrediction.gd to server, making it being called by ClientsidePredictionSpawner v0.5 -addes states v0.5 -added more sanity checks v0.6 -added demo scenes v0.6.1 -removed buffer overflow in animations v0.6.2 -added missing player controller to demo scene v0.6.3 -repaired scenes v0.6.4 -repaired scenes even more ================================= #==== DummySpawner.gd==== # Note: This script should be attached to a seperate node on the server only. #----func remote_spawn_dummy(var idNode:String, var pos:Vector3, var rota:Quat,var _AnimationTreeName, var _collectionName):---- # idNode: Unique ID of the character instance per player # pos: Start position # rota: Start rotation # _AnimationTreeName: Name of the AnimationTree (can be "" when not using Animation Trees # _collectionName: Name of the node with the ClientsidePrediction.tscn #==== ClientsidePrediction.gd==== (Attached to the main node of the clientside prediction, most likely labled ClientsidePrediction) # Note: This script should be attached to the _collectionNode. # # The dummy node has got to have the script ClientsidePredictionDummy.gd attached, # and it has to be a child node of the _collectionNode. # To spawn an instance of a character, call the dummy node's spawn_dummy function from the server # The rotational node should be the node from which to get the rotation, for example the Camera node # #----func initBegin(var _speed:float, var _characterNode, var _collectionNode, var _tickrate, _targetPosition, var _rotator, var _clamping,_useKeyFrames,_useTarget): # _speed: speed of interpolation # _characterNode: node that should be interpolated # _collectionNode:node to that holds the character list # _tickrate: rate at that the position is being updated (milliseconds) # _target: target position when using direct position instead of character sync # _rotation: target rotation when using direct position instead of character sync # _clamping: distance from extrapolated position to current position at which to snap # _useKeyFrames: should root motion be applied when animating? # _useTarget: use fixed target instead of character synchronization
Allows to use standard C# async/await to load resources.
This script provides a Dependency Injection (DI) system for the Godot Engine. It facilitates object creation, dependency management, and binding using various modes (singleton, instance, value, etc.). With this script, you can manage your dependencies more efficiently, especially for large-scale Godot projects. --- ## Features - **Dependency Injection**: Inject dependencies into nodes dynamically or throughout the scene tree. - **Binding System**: Bind classes, interfaces, variables, and scenes to be used as dependencies. - **Flexible Binding Modes**: - `INSTANCE`: Creates a new instance every time. - `SINGLETON`: A single shared instance for the class. - `SCENE_INSTANCE`: Creates an instance of a scene. - `SCENE_SINGLETON`: A single shared instance of a scene. - `VALUE`: Directly binds a value. - `ALL_MAPPED`: Retrieves all mapped dependencies for an interface. - **Scene Parent Management**: Automatically assigns default parent nodes for created scenes when no parent is specified. - **Recursive Tree Injection**: Injects dependencies recursively into the scene tree. - **Interface Mapping**: Supports mapping dependencies to enums for fine-grained control.
Swipe Event Class. This asset provides a new Class node "SwipeEventModule" meant to generate "InputEventSwipe" event, who is not provided by the engine. https://github.com/burstina/SwipeEvent
This add-on provides a node that generates linear stairs using CSG.
Asynchronous AMQP-0-9-1 Client Addon with RabbitMQ extensions for Godot 4.3 Consult README.md and Example.gd for usage information.
With this helper you can chat like ChatGPT, generate images like DALL-E and list all available models.
.eft is a file extension which allows you to easily implement user-created themes into your game / application. Contact @possiblepanda on discord for help, and use the GitHub for a short tutorial.
This addon provides cryptographically secure and efficient UUID v4 objects and string representations in line with official guidelines. Web builds will attempt to use the web browser-provided crypto object if available, and only fall back to weak pseudorandom numbers as a last resort. Includes object comparison and deserialization functionality.
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.
Automatically formats GDScript whenever you save it, without installing gdtoolkits.
Writing 5 lines of Code to read & write files is too much for you? With this plugin you only need 1. Also adds a file monitoring signal. It makes everything about files just a little bit easier. Features a clunky file viewer as an example and saved files to look at.
This is an addon for html game analytics. Give me stars on github! :) More information in the github repository