r/godot • u/litwolfgames • 1d ago
r/godot • u/deadpeopledreaming • 1d ago
fun & memes A little late night pillow-scream of daft debug despair!
Fiddling with an interactive dial scene component, got everything working fine and dandy in its own scene, and in a separate test scene, but in the main scene it doesn't react at all to input. Strange!
Ah, I know, maybe there's a Control somewhere that's consuming the event! No, apparently that's not it...
Is InputEvent being marked as handled somewhere? No...
Am I doing something weird in the code? No, it looks correct...
Pretty soon it's been over an hour of rummaging through tangential code, testing every Hail Mary I can think of, with no luck! Finally I am left with no choice but to use the two very useful things placed somewhat symmetrically on my face to actually look at the scene tree, and lo and behold! There's no script attached!
Oh right... I changed the base type from Control to Area2D a while back, causing this scene to lose the script reference, but not the test scene since I created that afterwards.
Sometimes it's the little things that get you and really take you for a ride! :)
r/godot • u/Head_Leather2246 • 1d ago
help me Struggling with 3D Level Design & Scaling in Godot – Any Deep Guides?
I’m working on a 3D game in Godot and used greyboxing to block out the level, which helped a bit. But I’m still running into two big issues:
- Map design: Making the layout functional and easy to navigate.
- Scaling: Player size vs. props and rooms feels inconsistent. Sometimes the player feels too big or too small compared to the environment.
Looking for detailed tips or tutorials that go beyond the basics:
- How to plan levels that feel balanced and practical?
- Best practices for maintaining consistent scale between Blender and Godot?
- Any workflow for iterating and refining level design before adding detail?
If you have resources, breakdowns, or personal tips for scaling and level design in Godot, please share.
r/godot • u/LeviChase12 • 1d ago
selfpromo (games) swinging a duck around the mouse with TOTK music
My (invisible) chain can finally go slack, and stretch without bouncing. And it's only FAIRLY choppy as opposed to VERY choppy!
r/godot • u/drkranger • 21h ago
selfpromo (games) Game is done. Who wants to beta?
My game is "complete" and now I think I need more testers to nail down requirements. It's pretty low-key, not GPU intensive by any stretch. How do I get beta testers? Anyone?
EDIT: A blurb would have been good...
Dungeon (W)Hoarders is a silly, stupid lazy clicker for PC only (currently). I'm working on the MacOS and Linux builds. It is a "turn-based" hex crawler dungeon delve "tabletop" game. With an unlimited amount of floors that are ever changing, there's no telling how far down you can go.
How about an equally stupid blurb:
"As Hero!, your mission is to delve into the ever-shifting dungeons. Click your way through monster-filled rooms, gather epic loot, and prove you are the ultimate Dungeon (W)Hoarder."
And because I was asked the right security question...here's a project sample image. It's real.

r/godot • u/Mobile-Progress6845 • 1d ago
help me what's the easiest way to create a visual novel?
Hey. As in the title — what's the easiest way to create a visual novel?
My experience in game-making is pretty sparse — I did the Godot tutorial from the documentation. Aside from that, I’ve done some front-end and back-end programming, as well as ETL stuff.
I want to build something where I can just throw my stories at. The whole plan is to learn how to make a visual novel, then how to platform, and eventually create something like Night in the Woods. It looks like there are a bunch of tutorials on platforming, so I hope I’ll be good in that department.
I just need a creative outlet — I’m not thinking about publishing or anything.
NITW used Yarn for dialogues, but as far as I understand, Yarn doesn’t officially support Godot. I dabbled in Yarn a long time ago (it exported as an HTML), and it looks like all I need.
I’ve followed some guy who just hardscripted some dialogue scenes in Godot, and I was able to follow that. The thing is, I SUCK at object-oriented programming, and I assume I need it to create some kind of VN engine.
Any advice or random opinions would be appreciated!
r/godot • u/Okay_Salmon • 1d ago
selfpromo (games) Free Hnefatafl Game (Made in Godot over a weekend) - Play on Itch.io!
Available Now on Itch.io!
Step into the world of the Vikings with Hnefatafl, the ancient strategy game of kings and warriors. Defend the king or lead the attackers, every move could decide the fate of the battlefield. Outsmart your opponent and claim victory in this timeless game of tactics.
This version was created over a single weekend, and with enough support and feedback, it will be expanded with new features and improvements.
👉 Play it free on Itch.io: https://okaysalmon.itch.io/free-hnefatafl
If you enjoy the game, don’t forget to rate and leave a comment on the itch.io
r/godot • u/sinkedlamp • 2d ago
selfpromo (games) Finally done polishing Death Candle, I made a game inspired by COD Zombies.
Soon I'll release a demo on steam ^^
r/godot • u/Alezzandrooo • 1d ago
help me Unknown shader sometimes fails to compile, causing crash.
Hello all. I'm currently having a weird issue which happens very rarely and that I can't seem to replicate in a predictable way.
Basically, when I switch scenes, Godot sometimes prints some errors about a shader apparently written in GDShadingLanguage that fails to compile. The issue crashes the game in a release build.
The shader is not always the same, sometimes it is a particle shader, sometimes it is a spatial shader, but it is not one I've written and I have no idea where it comes from. It also happens in scenes where there are no particles and no models. I attached at the bottom of the post one of the logs that Godot prints when the issue happens.
I tried reinstalling the editor, deleting the .godot folder, updating the drivers multiple times and clearing the AppData folder, but none of it worked.
I do not know where this issue might come from, and I also do not know how to investigate it further. Does anyone know what the cause might be? Or what more could I do to find it?
Godot Engine v4.4.1.stable.mono.official.49a5bc7b6 - https://godotengine.org
Vulkan 1.4.312 - Forward+ - Using Device #0: NVIDIA - NVIDIA GeForce RTX 2080 Super with Max-Q Design
--Main Shader--
1 | // NOTE: Shader automatically converted from Godot Engine 4.4.1.stable.mono's StandardMaterial3D.
2 |
3 | shader_type spatial;
4 | render_mode blend_add, depth_draw_opaque, cull_back, diffuse_burley, specular_schlick_ggx, unshaded;
5 |
6 | uniform vec4 albedo : source_color;
7 | uniform sampler2D texture_albedo : source_color, filter_linear_mipmap, repeat_enable;
8 | uniform ivec2 albedo_texture_size;
9 | uniform float point_size : hint_range(0.1, 128.0, 0.1);
10 |
11 | uniform float roughness : hint_range(0.0, 1.0);
12 | uniform sampler2D texture_metallic : hint_default_white, filter_linear_mipmap, repeat_enable;
13 | uniform vec4 metallic_texture_channel;
14 | uniform sampler2D texture_roughness : hint_roughness_r, filter_linear_mipmap, repeat_enable;
15 |
16 | uniform float specular : hint_range(0.0, 1.0, 0.01);
17 | uniform float metallic : hint_range(0.0, 1.0, 0.01);
18 |
19 | uniform int particles_anim_h_frames : hint_range(1, 128);
20 | uniform int particles_anim_v_frames : hint_range(1, 128);
21 | uniform bool particles_anim_loop;
22 |
23 | uniform vec3 uv1_scale;
24 | uniform vec3 uv1_offset;
25 | uniform vec3 uv2_scale;
26 | uniform vec3 uv2_offset;
27 |
28 | void vertex() {
29 | UV = UV * uv1_scale.xy + uv1_offset.xy;
30 |
31 | // Billboard Mode: Particles
32 | mat4 mat_world = mat4(
33 | normalize(INV_VIEW_MATRIX[0]),
34 | normalize(INV_VIEW_MATRIX[1]),
35 | normalize(INV_VIEW_MATRIX[2]),
36 | MODEL_MATRIX[3]);
37 | mat_world = mat_world * mat4(
38 | vec4(cos(INSTANCE_CUSTOM.x), -sin(INSTANCE_CUSTOM.x), 0.0, 0.0),
39 | vec4(sin(INSTANCE_CUSTOM.x), cos(INSTANCE_CUSTOM.x), 0.0, 0.0),
40 | vec4(0.0, 0.0, 1.0, 0.0),
41 | vec4(0.0, 0.0, 0.0, 1.0));
42 | MODELVIEW_MATRIX = VIEW_MATRIX * mat_world;
43 |
44 | MODELVIEW_NORMAL_MATRIX = mat3(MODELVIEW_MATRIX);
45 |
46 | float h_frames = float(particles_anim_h_frames);
47 | float v_frames = float(particles_anim_v_frames);
48 | float particle_total_frames = float(particles_anim_h_frames * particles_anim_v_frames);
49 | float particle_frame = floor(INSTANCE_CUSTOM.z * float(particle_total_frames));
50 | if (!particles_anim_loop) {
51 | particle_frame = clamp(particle_frame, 0.0, particle_total_frames - 1.0);
52 | } else {
53 | particle_frame = mod(particle_frame, particle_total_frames);
54 | }
55 | UV /= vec2(h_frames, v_frames);
56 | UV += vec2(mod(particle_frame, h_frames) / h_frames, floor((particle_frame + 0.5) / h_frames) / v_frames);
57 | }
58 |
59 | void fragment() {
60 | vec2 base_uv = UV;
61 |
62 | vec4 albedo_tex = texture(texture_albedo, base_uv);
63 |
64 | // Vertex Color Use as Albedo: Enabled
65 | albedo_tex *= COLOR;
66 |
67 | ALBEDO = albedo.rgb * albedo_tex.rgb;
68 |
69 | float metallic_tex = dot(texture(texture_metallic, base_uv), metallic_texture_channel);
70 | METALLIC = metallic_tex * metallic;
71 | SPECULAR = specular;
72 |
73 | vec4 roughness_texture_channel = vec4(1.0, 0.0, 0.0, 0.0);
74 | float roughness_tex = dot(texture(texture_roughness, base_uv), roughness_texture_channel);
75 | ROUGHNESS = roughness_tex * roughness;
76 | ALPHA *= albedo.a * albedo_tex.a;
77 |
78 | // Distance Fade: Pixel Alpha
E 79-> ALPHA *= clamp(smoothstep(distance_fade_min, distance_fade_max, length(VERTEX)), 0.0, 1.0);
80 | }
81 |
SHADER ERROR: Unknown identifier in expression: 'distance_fade_min'.
at: (null) (:79)
ERROR: Shader compilation failed.
at: set_code (servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp:152)
ERROR: 1 RID allocations of type 'N10RendererRD14TextureStorage7TextureE' were leaked at exit.
ERROR: Parameter "RenderingServer::get_singleton()" is null.
at: ~CompressedTexture2D (scene/resources/compressed_texture.cpp:464)
WARNING: 2 RIDs of type "Texture" were leaked.
at: finalize (servers/rendering/rendering_device.cpp:7130)
r/godot • u/SharkChew • 1d ago
help me How can I make jumping animations work correctly? (4.4)
I've decided to make a 2D platformer from scratch and I got the walking and idle animations work but I need help with jumping animations.
The character has a fall animation that plays regardless if it's jumping or falling and I wanna make separate sprites for when it's jumping and falling (like in Super Mario World).
Here's how it looks like (only the interesting part):
func _physics_process(delta: float) -> void:
# Sprite orientation
if Input.is_action_pressed("walk_right"):
$Sprite2D.flip_h = false
elif Input.is_action_pressed("walk_left"):
$Sprite2D.flip_h = true
# Add the gravity.
if not is_on_floor():
velocity += get_gravity() * delta
$AnimationPlayer.play("fall")
# Handle jump.
if Input.is_action_just_pressed("jump") and is_on_floor():
velocity.y = jump_velocity * jump_mult
$AnimationPlayer.play("jumping")
# Get the input direction and handle the movement/deceleration.
var direction := Input.get_axis("walk_left", "walk_right")
if direction:
velocity.x = direction * speed * speed_mult
if is_on_floor():
$AnimationPlayer.play("walk")
else:
velocity.x = move_toward(velocity.x, 0, speed_mult)
if is_on_floor():
$AnimationPlayer.play("idle")
move_and_slide()
r/godot • u/prettycoolducks • 1d ago
help me (solved) Creating a 2D platformer similar to "Thank Goodness You're Here!"
Hello! I'm fairly new to game dev. I just released my first game a couple months ago. It was a click and point adventure made in unity, and now I'm branching off into 2D platformers using Godot (which is already WAY easier to use, btw).
For my current work, I was really inspired by the game "Thank Goodness You're Here!" and how it uses a mix of larger, sprawling "flat" environments and smaller, more 2D platforming segments. I want to use a similar style in my game, but I'm struggling on how to have the character function in these two different environments. I currently have the player set to fall from gravity when not on a collision object (among with all the basic 2D platforming code stuff, etc.), which works absolutely fine for the 2D platforming, but not so good for the flat segments. I've seen people make isometric platformers where the "jump" is not actually a jump but just sprite movement, which would work well for the flat portions, but not for the 2D segments. You get the picture.
My current thought would just be to make a new player character with new code for the different segments, but I'm thinking there definitely has to be a better way, right? Because that would create a whole host of other issues in the long run, I'm sure.
Thank you in advance for any help. It would be greatly appreciated!! T_T
EDIT: Slowly figuring some stuff out. I know I have to change the motion_mode for the different segments. "Flat" segments would be MOTION_MODE_FLOATING and "platforming" areas would be MOTION_MODE_GROUNDED. I'm made variables for these that I can use.
var flat = MOTION_MODE_FLOATING
var platforming = MOTION_MODE_GROUNDED
(And then of course there would still be additional code I have to make for each movement style. That, I think should be simple.)
I'm still at a loss for how to change these per scene. I know it has to be something simple I'm missing, especially since I'm so new to the program.
EDIT 2: I found a couple people doing similar things, but the answers were a bit too vague for me to parse at my level. One solution I found was people creating multiple scenes for the player, keeping stats and info in a separate scene, while each control style was separated as well? I'm still confused, but I'm going to keep working at it. Help still appreciated!!
EDIT 3: Welp, I solved it! Only took like 3 hours lmao... As always, it's simpler than expected. Made a different scene for player for the top down sections. I'll keep things like inventory in a separate scene.
r/godot • u/McCyberroy • 1d ago
help me Sfx Caching System
To reduce memory usage of preload() and to reduce overhead by constantly loading sfx from disc using load(), I was tasked by programming lead to develop a sfx caching system.
While I kinda understand the purpose and functionality of a cache, I'm unsure if I'm approaching this the right way and would appreciate some opinions/tips.
Here's the current architectural attempt:
- class Sfx
- static func play(parent: Node, stream: String)
- subclass Library
- a bunch of const: String holding stream file paths
- subclass Cache
- static var stream_path: Array[String]
- static var stream_file: Array[AudioStream]
- a bunch of static func for internal logic
Architecture and naming were chosen with syntax in mind. So to play a sfx from anywhere, you'd write Sfx.play(self, Sfx.Library.SFX_SOMETHING)
Cache is operating on 2 Arrays simultaneously. Sfx.Cache.stream_path[0] is the String file path of Sfx.Cache.stream_file[0].
When Sfx.play() is called, it'll be checked whether or not the supplied String file path is inside Cache.stream_path and if it is not, it'll be cached, which basically looks like this: stream_path.append(stream_to_cache) stream_file.append(load(stream_to_cache))
As none of all this exists as an instance in any scene tree, I can't use timers inside Sfx to do cache flushes every once in a while, so I did set up a max cache size and just delete the oldest index when it reaches capacity.
I could set up a timer elsewhere, but I hesitate bc it'd violate LoD.
r/godot • u/Jesrra_GM • 1d ago
help me How can I export to Android if I am an Android user?
I recently did some small game tests and I think what I haven't tried until now is exporting my game. When I searched on YouTube for how to do it, it didn't help me at all since the videos were either outdated or all from the Godot for PC. Is there a solution?
r/godot • u/Kalkatos • 1d ago
help me Found a bug with Input.set_default_cursor_shape
On an Area3D node, I was getting ‘mouse_enter’ and ‘mouse_exit’ spam calls when the cursor went out of the bounds of the window, as shown in gif below.
After some investigation, I found out that the function ‘Input.set_default_cursor_shape’ was the culprit. I was calling it to set the cursor shape to a pointing hand on mouse enter, and back to an arrow on mouse exit. Without them, the code works fine.
Is this a bug, or am I using it wrong?
Code is (Godot 4.4.1):
func mouse_enter():
Input.set_default_cursor_shape(Input.CURSOR_POINTING_HAND)
(spawn enter particles)
func mouse_exit():
Input.set_default_cursor_shape(Input.CURSOR_ARROW)
(spawn exit particles)

discussion This feels... sinful
The problem:
I'm making a game that will have dozens, if not maybe a hundred different types of characters eventually or more. So rather than create a new scene for each one, I found out via searching and asking around that using .tres files to make different configurations of one base scene would be better. I guess the benefit of doing this is that if you ever decide to add nodes to the base scene, it's easier to deal with. (Let me know if there are other advantages, because I'm still honestly not sure, but it does FEEL better somehow).
Anyway, there's one issue with this in my game... characters are all different sizes. With different collision shapes. With different transforms in the inspector after I move them around to line things up. Oh, and I have a "selection area" which also has a shape. I was starting to lament making a resource to save all this for each character. This would mean I'd have to export:
- The texture of the sprite
- The local transform of the sprite
- The frames of the sprite
- The collision shape
- The collision shape size
- The collision shape local transform
- The selection area shape
- The selection area shape local transform
- ...And maybe more, in addition to the normal things like character stats, states, and anything else I'll add later. Yeesh. That seemed tedious.
The solution:
I was looking around to learn about this whole "resource configuration for multiple characters" thing, and I found some video where the person was using the animation player... to initialize certain values. For example, the texture for the sprite.
I laughed at the thought. Preposterous. The animation player?? They were doing it in kind of a strange way to me, putting ALL of their animations into the base scene. So basically, every character would have access to ALL animations in the game in their animation player. That couldn't be good, I thought. But then I got to thinking...
Animations are also a resource that can be saved. And so are AnimationLibraries. So, I thought I'd try my own version of that idea.
- Use the base scene to set up the character, like the sprite, frames, collision shapes, etc.
- Make an animation called "init" and key everything you changed from the base scene (you can also use the RESET animation for this, but I found it less annoying in the editor to just create my own right away)
- Create any other ACTUAL animations the character has, like idle, run, whatever
- Save the whole animation library as a resource for that character
- Delete all your changes in the base scene, returning it to its original blank state
- Create a CharacterData resource for configuring characters that takes an AnimationLibrary as one of its export variables
- Drop your saved library in there
- In the base character _ready function, play the "init" animation. You'll actually have to do so as shown in the image, by giving the library a StringName like "main", then accessing each animation with "main/animation_name". So in my case in the ready function, that's "main/init"
- Have your character play their other actual animations after that as normal. So for example, my character immediately enters one of its states after _ready, which plays another animation.
...And everything loads in. Like magic. The AnimationLibrary initializes everything.
Someone who's more experienced than me, PLEASE tell me this is okay. Because it feels like black magic. It's so simple and so... WEIRD. Like a cheat code.
If it's okay or only slightly okay, tell me how it can be done better. Maybe I'm doing something I don't need to be doing in my code in the image. But it DOES work. Thought I should share and ask... "is this really okay?"
r/godot • u/Altruistic-Light5275 • 2d ago
selfpromo (games) New staples and cotton plant textures in my open world colony sim
r/godot • u/lostgen_arity • 1d ago
selfpromo (games) I'm frequently updating the demo for my minimalist platformer BLOCK'D.
Would appreciate any plays and feedback!
Play it here (Windows only for now): https://lostgenerationgames.itch.io/blockd
r/godot • u/SingerLuch • 2d ago
free tutorial Tutorial series to make a generic FPS game from scratch.
r/godot • u/glennmelenhorst • 1d ago
help me Stuttering in my UFO game.
Hi guys. I am seeking your wisdom once again.
I have been developing my game on my dsesktop, a RTX3080. I just bought a gaming laptop with a RTX4060 laptop GPU and on it, my player stutters when I move around my levels.
Are there any gotchas I should know about in the settings of godot? I’m not very sure what to check.
Any help appreciated.
Glenn
r/godot • u/drilkmops • 2d ago
selfpromo (games) Models for my Barista simulator! Pretty happy with it for a days work.
r/godot • u/Lucky_Ferret4036 • 1d ago
selfpromo (games) Far Gone Frontier Trailer! fan made
this is a fan made trailer as an admiration to u/mz_eth game Far gone frontier
the game was made with only:
.One Gun
.One Level
.One Enemy
// I am no artists in pixel art , I like coding and scripting that is why I played on my strengths and focused on logic and polish
the game was made in 8 none consecutive hours
all art is made by u/mz_eth
Engine: Godot4.4
this video is either a cool thing that is liked or something I will have nightmares for uploading it in the r/godot
I will never know until I do it
r/godot • u/2cool4afool • 1d ago
help me (solved) Is there a better way to use Dialogic 2 with C#? (Godot 4.4.1/Dialogic2 Alpha16)
This is the only way I have found to start a timeline using C# code rather than GDScript. I need to be able to do it in C# to work with my other nodes but this method of calling those functions on dialogic is very restrictive and kinda awful to work with. I don't know if someone has made a separate plugin that allows you to directly access Dialogic in C# but I was unable to find anything.

r/godot • u/Krawuzikrabuzi • 1d ago
help me Duplicating complex class structures
Hi everyone,
I'm looking for a clean way to duplicate a nested class structure in GDScript.
Let's say I have three classes:
- Class A holds some standard values (string, int, bool) as well as an
Array
of ClassB. - Class B also holds some standard values and a reference to an object of type ClassC.
- Class C just has some basic values.
Example code:
# class_c.gd
extends Resource
class_name ClassC
u/export var name: String = ""
@export var value: int = 0
@export var is_active: bool = false
# class_b.gd
extends Resource
class_name ClassB
@export var id: int = 0
@export var description: String = ""
@export var data_c: ClassC
# class_a.gd
extends Resource
class_name ClassA
@export var title: String = ""
@export var count: int = 0
@export var enabled: bool = true
@export var items: Array[ClassB]
All of these classes extend Resource
.
When I try to duplicate ClassA
with a.duplicate(true)
, the basic values are copied correctly, but nested structures (like the items
array of ClassB
) do not seem to duplicate properly. Instead, I get a bunch of NULL
errors when accessing them.
I’ve seen some forum posts suggesting this is a known limitation, with the usual advice being to implement a custom copy function.
Is that really the only option, or is there a better/cleaner way to handle deep duplication of nested resources?
I hope you guys can help me :)
r/godot • u/Drunkinall50states • 1d ago
help me How to select a current scene for the dialogue manager (plugin)
It is currently thinking the wrong scene is the current scene when dialogue is initiated and I don’t know the code for how to switch it