
Godot Workshop: Nodes, Scenes, Signals, Exports, and Friendly Engine Chaos
Welcome to Game Dev → Godot — the Fyrbloc place for Godot projects, prototypes, GDScript questions, 2D games, 3D tests, UI systems, exports, scenes, nodes, signals, tilesets, collisions, animations, and that classic moment where the bug was caused by one node being in the wrong place.
Godot is fast, flexible, lightweight, and brilliant for builders who want to make games without needing a giant machine, a 90-page setup ritual, or a launcher that needs emotional support.
This section is for:
Godot prototypes
2D games
3D games
RPG systems
Platformers
Top-down games
UI menus
Input problems
Export issues
GDScript help
Scene/node architecture
Animation problems
Collision bugs
Performance checks
If you are building a game in Godot, post it here.
Even if the player currently slides through walls like a haunted shopping trolley.
That still counts as progress.

What belongs here?
Use Game Dev → Godot for topics like:
- Godot 4 projects
- Godot 3 projects
- GDScript
- C# in Godot
- Scenes and nodes
- Signals
- Input maps
- Character movement
- Camera systems
- TileMaps
- 2D platformers
- Top-down games
- 3D prototypes
- RPG systems
- Inventories
- Dialogue systems
- Enemy AI
- AnimationPlayer
- AnimationTree
- Collision shapes
- Physics bugs
- UI/HUD
- Menus
- Save/load systems
- Audio
- Particles
- Shaders
- Mobile exports
- Windows/Linux/macOS exports
- Web exports
- Performance
- “Why is my signal not firing?” mysteries
Godot is friendly.
But it still expects your nodes, paths, signals, and scripts to behave.
They often do not.
That is why this section exists.
Godot project template
Copy this when sharing your Godot project:
Project name:
Godot version:
Game type:
2D / 3D / top-down / platformer / RPG / puzzle / other
What I am building:
Current stage:
What works now:
What is broken:
What I need help with:
Main systems:
Input/controls:
Target platform:
Screenshots/video:
Project link/build:
Example:
Project name:
Tiny Island Quest
Godot version:
Godot 4.x
Game type:
Top-down 2D adventure RPG
What I am building:
A small island exploration game with enemies, items, caves, NPCs, and simple quests.
Current stage:
Early prototype.
What works now:
Player movement, camera follow, item pickup, basic enemy chase, and one test map.
What is broken:
Enemy collision sometimes pushes the player into walls.
What I need help with:
Enemy movement, collision layers, and better map layout.
Main systems:
Movement, combat, inventory, dialogue, item pickup.
Input/controls:
WASD to move, E to interact, left click to attack.
Target platform:
PC and web demo.
Screenshots/video:
Added below.
Project link/build:
Coming soon.
That gives people enough context to help properly.
Much better than:
Godot broke.
Godot may be innocent.
Maybe.

The big Godot idea: scenes and nodes
Godot projects are built from scenes and nodes.
A simple player might look like:
Player
├── Sprite2D
├── CollisionShape2D
├── Camera2D
└── AnimationPlayer
A simple enemy might look like:
Enemy
├── Sprite2D
├── CollisionShape2D
├── Area2D
└── Timer
A simple level might look like:
Level01
├── TileMap
├── Player
├── Enemies
├── Items
├── CameraLimit
└── UI
When asking for help, show your node tree if it matters.
In Godot, the problem is often not only the script.
Sometimes the script is fine.
The node tree is the tiny villain wearing a cape.
Godot help template
Use this when asking for help:
Godot issue:
Godot version:
2D or 3D:
What I expected:
What happened:
Exact error:
Scene/node setup:
Script involved:
What I already tried:
Screenshot/video:
Example:
Godot issue:
Player does not detect item pickup.
Godot version:
Godot 4.x
2D or 3D:
2D
What I expected:
When the player touches the coin, the coin disappears and score increases.
What happened:
Nothing happens.
Exact error:
No error shown.
Scene/node setup:
Player has CharacterBody2D and CollisionShape2D.
Coin has Area2D and CollisionShape2D.
Script involved:
Coin pickup script added below.
What I already tried:
Checked collision layers and connected body_entered signal.
Screenshot/video:
Added below.
That is a useful Godot post.
It shows the version, node setup, expectation, result, and script.
Very fixable.

Common Godot problems
1. Signal not firing
Check:
Is the signal connected?
Is the correct node connected?
Is the function name correct?
Is the node path correct?
Are collision layers/masks correct?
Is monitoring enabled for Area2D/Area3D?
Is the object actually touching?
Common signal example:
func _on_area_2d_body_entered(body):
print("Body entered:", body.name)
Add print() first.
Do not guess.
Make the game confess.
2. Collision not working
Check:
CollisionShape exists
CollisionShape is not disabled
Layer/mask setup is correct
Area2D monitoring is enabled
Body type is correct
Shape size matches sprite
Node is in the right place
Collision layers can be confusing.
A player can be on one layer.
An enemy can be watching another layer.
Then both walk past each other like awkward strangers at a bus stop.
3. Player movement feels wrong
For movement posts, include:
Node type:
CharacterBody2D / RigidBody2D / CharacterBody3D / other
Movement style:
Top-down / platformer / physics / grid / click-to-move
Speed:
Current value
Problem:
Too floaty / too fast / stuck / sliding / jittery
Example:
extends CharacterBody2D
var speed := 220.0
func _physics_process(delta):
var input_direction = Vector2.ZERO
input_direction.x = Input.get_action_strength("move_right") - Input.get_action_strength("move_left")
input_direction.y = Input.get_action_strength("move_down") - Input.get_action_strength("move_up")
velocity = input_direction.normalized() * speed
move_and_slide()
If movement feels bad, show the code and describe the feel.
“Feels weird” is real feedback.
But “feels like the player is sliding after I stop pressing keys” is better.
Input map problems
Godot input actions are managed in:
Project Settings → Input Map
Common actions:
move_up
move_down
move_left
move_right
jump
attack
interact
pause
dash
inventory
If input is not working, check:
Action exists in Input Map
Key/button is assigned
Spelling matches script
Using correct method
Game window is focused
Input code runs in _process or _physics_process
Example:
if Input.is_action_just_pressed("interact"):
print("Interact pressed")
If the action name in code is interact, but the Input Map says interact_action, Godot will not guess.
Godot is many things.
Psychic is not one of them.

GDScript help
When posting GDScript, include:
What the script is attached to
Relevant node tree
Expected behaviour
Actual behaviour
Exact error
Godot version
Good code post:
extends CharacterBody2D
@export var speed := 200.0
func _physics_process(delta):
var direction = Input.get_vector("move_left", "move_right", "move_up", "move_down")
velocity = direction * speed
move_and_slide()
Then explain:
This script is attached to Player.
Player is a CharacterBody2D.
Expected: player moves with WASD.
Actual: player does not move.
No console error.
That is clear.
Bad code post:
My code does not work.
That post has entered the cave without a torch.
Scene organisation tips
Good structure helps.
Example:
res://
├── scenes/
│ ├── player/
│ ├── enemies/
│ ├── levels/
│ ├── ui/
│ └── items/
├── scripts/
├── assets/
│ ├── sprites/
│ ├── audio/
│ └── fonts/
└── autoload/
Keep things named clearly.
Bad:
NewScene.tscn
NewScene2.tscn
PlayerFinalActually.tscn
enemytestreal.gd
thing.gd
We have all done it.
Still bad.
Future you deserves better filenames.
Future you already has enough problems.

Autoloads and global state
Godot autoloads are useful for:
Game state
Player stats
Inventory
Settings
Save data
Scene switching
Audio manager
Global events
But do not put everything in one giant global script unless you enjoy debugging spaghetti with a lantern.
Good autoload examples:
GameState
AudioManager
SaveManager
SceneManager
InventoryData
Avoid:
GlobalEverything
That file starts small.
Then it becomes the village elder.
Then nobody questions it.
Dangerous.
UI and menus
Godot UI posts can include:
Main menu
Pause menu
Inventory
Health bar
Dialogue box
Settings screen
Mobile controls
HUD
Quest tracker
Shop menu
When asking for UI help, include:
Control node setup
Anchors/layout
Screen size
Target platform
What looks wrong
Screenshot
Common UI problems:
Wrong anchors
Not scaling
Buttons not clickable
Text too small
Panel not centered
HUD overlaps gameplay
Mobile controls too cramped
UI bugs are often layout bugs.
The code may be innocent.
The anchors may be guilty.
Anchors know what they did.
Animation problems
For animation issues, include:
AnimationPlayer or AnimationTree?
Sprite2D or AnimatedSprite2D?
What triggers animation?
What should play?
What actually plays?
Does it loop?
Any errors?
Example:
Animation issue:
Attack animation starts but immediately returns to idle.
Setup:
Player uses AnimationPlayer.
Expected:
Attack animation finishes before idle returns.
Actual:
Idle overrides attack instantly.
What I tried:
Added is_attacking variable but it still resets too soon.
This is a common game issue.
The idle animation is impatient.
Tell it to wait its turn.

TileMap and level design posts
For TileMap issues, include:
Godot version
TileMap setup
Tileset collision
Layer setup
Navigation if used
Screenshot
What is broken
Common TileMap problems:
Collision not working
Player gets stuck
Tile size mismatch
Wrong layer
Navigation not baking/working
Y-sort problems
Tiles look blurry
Wrong import settings
For level feedback, include:
Map size
Game type
Player objective
Main path
Enemy locations
Item locations
Screenshots
Feedback wanted
A level should guide the player.
Not make them wander around like they lost their keys in a forest.
Unless that is the game.
Then carry on.
Save/load systems
Save systems need careful design.
When asking for save help, include:
What needs saving?
Player position?
Inventory?
Quest progress?
Settings?
Unlocked levels?
Enemy states?
Simple save data example:
player_position
health
items
current_level
settings
Common save problems:
File path wrong
Data not serialised correctly
Load runs before scene is ready
Node paths changed
Missing default values
Old save files break new version
Save bugs feel personal.
Because they delete progress.
Players do not forgive that quickly.
Neither should you.
Test saves early.

Export problems
Godot export posts should include:
Godot version
Target platform
Export preset
Error message
Does it run in editor?
Does exported build open?
Any console output?
Files missing?
Common targets:
Windows
Linux
macOS
Android
iOS
Web
Common export problems:
Export template missing
Wrong architecture
File permissions
Assets not included
Web export not loading
Android signing issue
Missing icon
Antivirus false positive
Path/case issue
If a game works in editor but not exported, mention that clearly.
That is a different bug shape.
Bug shapes matter.
Tiny phrase.
Big difference.
Performance posts
For performance issues, include:
Godot version
2D or 3D
Target platform
FPS
Scene size
Enemy/entity count
Particles/shaders
Resolution
Profiler info if possible
What causes lag
Common causes:
Too many nodes
Too many physics bodies
Large textures
Unoptimised particles
Heavy shaders
Expensive _process code
Too many draw calls
Pathfinding too often
Not pooling objects
If lag happens when 300 enemies spawn, the answer may be:
Do not spawn 300 enemies like that.
Harsh.
Fair.

Good Godot post titles
Use clear titles like:
Godot 4: Area2D signal not firing for item pickup
Need Help: CharacterBody2D slides after movement stops
Godot Export: Web build loads black screen
TileMap collision works in editor but not in level
AnimationPlayer attack gets interrupted by idle
Top-down RPG prototype feedback: first island map
Avoid:
Godot help
Broken
Why
Question
Those titles need more signal.
A good title tells people the engine, area, and problem.
Very efficient.
Very unglamorous.
Very useful.
Good replies in Godot threads
Helpful replies:
Check the collision layer and mask on both the player and Area2D.
The signal may be connected to the wrong node. Show the node tree.
Your idle animation is probably overriding attack every frame.
For movement, use _physics_process and move_and_slide with CharacterBody2D.
If it works in editor but not export, check file paths and export templates.
Less useful replies:
Use Unity.
Use Unreal.
Godot is bad.
Just remake it.
No.
This is the Godot section.
Help with Godot.
Engine wars can go stand outside in the rain.
Godot feedback checklist
When asking for feedback, choose a focus:
Movement feel
Combat feel
Map layout
Enemy behaviour
UI clarity
Art style
Animation timing
Difficulty
Level pacing
Export testing
Performance
Controls
Tutorial clarity
Better:
I need feedback on movement feel and first level layout.
Worse:
Thoughts?
“Thoughts?” often gets:
Cool.
Nice.
Not actionable.
Ask for the exact kind of feedback you want.

Godot playtest template
Use this when asking for testers:
Playtest name:
Godot version:
Build version:
Platform:
What to test:
Controls:
How long it takes:
Known bugs:
Feedback questions:
Download/play link:
Bug report format:
Example:
Playtest name:
Island RPG Movement Test
Godot version:
Godot 4.x
Build version:
0.1
Platform:
Windows / Web
What to test:
Movement, item pickup, enemy chase, and first map layout.
Controls:
WASD move, E interact, left click attack.
How long it takes:
5 minutes.
Known bugs:
Enemy sometimes gets stuck near rocks.
Feedback questions:
Does movement feel good?
Is the map readable?
Did item pickup feel clear?
Download/play link:
Added below.
Bug report format:
Screenshot/video, what happened, steps to reproduce.
Small playtests are good.
Do not ask testers to test the entire game, the economy, the story, the UI, the combat, and the spiritual meaning of the pause menu in one go.
Pick targets.
Quick Godot starter format
Use this:
Godot post:
Project:
Godot version:
2D or 3D:
Current stage:
What works:
Problem/question:
Feedback wanted:
Screenshots/video:
Example:
Godot post:
Top-down RPG movement and item pickup test.
Project:
Tiny Island Quest
Godot version:
Godot 4.x
2D or 3D:
2D
Current stage:
Early prototype.
What works:
Player moves, camera follows, coins can be placed in the level.
Problem/question:
Coin pickup signal does not always fire.
Feedback wanted:
Collision layer setup and better pickup logic.
Screenshots/video:
Added below.
Clean.
Useful.
Debuggable.
No haunted node fog.
Godot safety notes
When sharing a Godot project, do not post:
Private keys
Paid assets you cannot redistribute
Personal data
Private server URLs
Unlicensed ripped assets
Full commercial asset packs
Account tokens
Mention asset status:
Original
Placeholder
Licensed
Public domain
AI-generated
Temporary
Purchased asset pack
“Found online” is not a licence.
That phrase has very weak legs.
It will not carry your project far.

Final note
Godot is excellent for builders who want to prototype quickly and ship real games without heavy machinery.
But good Godot development still needs structure:
Clean scenes
Clear node names
Good input actions
Correct collision layers
Small scripts
Useful signals
Test builds
Version control
Backups
Focused playtests
Start small.
Make one mechanic work.
Test it.
Then add the next system.
Do not build the full RPG, multiplayer system, crafting tree, quest engine, and weather cycle before the player can pick up a coin.
One thing at a time.
The coin is watching.
Build. Node. Signal. Test. Export. Ship.