/r/godot
The official subreddit for the Godot Engine.
Meet your fellow game developers as well as engine contributors, stay up to date on Godot news, and share your projects and resources with each other.
Maintained by the Godot Foundation, the non-profit taking good care of the Godot project - consider donating to https://fund.godotengine.org/ to keep us going!
Looking for Godot?
Download the engine, Donate to the fund, Follow us on socials & more! Official Link-Collection
Subreddit rules:
1. English only, please
For moderation purposes, please stick to the official language of this subreddit, both for posts and comments.
You may link to sites in different languages, if you add a clear explanation what the content is about.
2. Code of Conduct
Read it here
Breaching the code is a ban-able offence. In particular, we won't tolerate discrimination or bullying of any kind.
3. Use appropriate flairs for your posts
If you don't, we maintain the right to delete the post in violation of this rule. Flair descriptions: https://www.reddit.com/r/godot/wiki/index/flairs/
4. Help rules
Repeated neglect can result in a ban.
1. Consult the documentation first
2. Search for your question before posting
3. Concrete questions/issues only! Don't ask "How to make X" before doing research
4. "Can Godot be used to make this game?" Yes.
5. Don't post photos of your screen, screenshots are okay, direct code with formatting or a pastebin is best
6. We recommend checking the official forum for solutions as well. Make sure to link between the platforms when you cross-post questions.
5. Promotion rules
You are required to use the promotion flair whenever you want to showcase your game. Do NOT use the "discussion" flair. You may use "fun & memes" when applicable, but do so sparingly and tailor your post to match the category.
6. Discussion rules
This flair is for constructive conversations, not for venting your frustrations. Should you have feedback for the engine development team directly, please open an issue or proposal on GitHub instead. Email the Code of Conduct team at conduct@godotengine.org for any "people problems" you might have. For reddit-specific problems, please use the ModMail or report functions. Do NOT use this flair to showcase your game, see the rule above.
7. Post memes with consideration
They must have the "fun & memes" flair, be related to Game Development, and the topic/content cannot breach the Code of Conduct. Do not spam memes.
8. Stay on topic
This is a subreddit about the Godot Engine. While related Game Development topics are not forbidden, please make sure to tailor them towards the Godot project. This means NO ART posts unless you are talking about the technical side of things - there are enough other outlets to post your pretty renders and concepts.
9. Getting started
Reference this https://docs.godotengine.org/en/stable/getting_started/introduction/index.html before asking for general advice/help. Posts asking "Where do I start?" will automatically be locked, due to this subreddit overflowing with them in the past
10. Copyright & AI-generated content
For legal reasons, you may only post content that you are the rights-holder of. This means you are required to credit assets according to the licenses you acquired them under. Some licenses permit sharing content without listing your sources, others do not. In particular, this means that AI-generated content needs to verifiable stem from a model which was trained only on data submitted with the original creator's consent. If you cannot prove this to be the case upon request, we remove your post.
/r/godot
I have this brick wall in blender, and I configured the material in such a way that, when scaled, the texture repeats without being stretched (see picture 1 below) - the vector input of the mapping node is assigned the object's texture coordinates (so I'm not using an UV map) and the projection mode of each of the textures is set to box (not sure why this is needed for this to work.)
However, when I open this .blend file in godot, the material appears scaled incorrectly (picture 2 - the bricks are much bigger), when I'd like it to be the same as in blender.
I'd like to find out if this is a limitation of godot's blender support (is mapping by object not allowed?), or if there is another way of doing what I intend to do.
Also, I'm not the most well-versed in modeling, so let me know if I maybe missed a step somewhere in this process.
Note: I've tried exporting the .blend files as .gltf instead, but when opening them in godot the result is the exact same.
Finally decided to dip my toes into game dev with some Lua scripting for Tabletop Simulator (TTS) and I'm loving it!! (I'm making custom dice rollers to help speed up my games a bit).
TTS allows players to import their own Unity assets into the game, which is cool but I'd rather use Godot.
I know there are tools to import unity assets into Godot, but my question is: are there any tools to export/convert Godot assets to Unity?
Thanks!
I'm trying to warp a sprite from one side of the viewport to the other. While I can do this based on its position:
# pseudo code
position = position % viewport.size
This works at the "whole sprite" level: the sprite is either one side or the other, but never "half-on-both-sides" at the same time. I would like that say, when the sprite is partly hidden on the right side of the screen, its right side already shows up on the left side of the screen.
I am looking for a solution at the display/rendering level, not a trick on the scene level (my scene is complex enough that I'd rather avoid duplicating the sprite into 9 instances like this).
Apart from a silver-bullet setting I didn't find, one possible solution would be to make the viewport larger than it actually is, copy its "outer band" back into an "effective" viewport, like this (arrows show each part of the "outer band" being copied into the "inner band"), and have a camera setup to only display that inner effective viewport.
Questions:
I want to make a 3D game. No fancy movements like wallclimbing, just walking running and crawling.
I will also not be making any fancy graphics. And I will need to be able to make a few enemies that can have particle effects, and also some NPC pathfinding. Which version should I use? 3.5 or 4.x? Thanks in advance
Hi, I'm using Godot 4.3 and Dialogic 2. I want to add a custom textbox I drew in procreate, I exported it as a PNG. Godot won't show the textbox I made but it's standard one. How can I put my own textbox and namelabel? Is the PNG type not right? I don't know if I need the .tres type and how to convert to that. I'm thankful for any help.
I’m working on a real-time multiplayer game in Godot, and I'm encountering performance issues related to network latency. Specifically, the physics engine can cause noticeable discrepancies between clients, especially in fast-paced scenarios where low-latency and precise synchronization are critical. I’m wondering if there are strategies to optimize Godot’s physics engine for smoother gameplay, reduce the lag between clients, and handle the synchronization of physics state efficiently without causing performance hits or discrepancies. I would appreciate any insights or best practices to solve these challenges
so i'm working on a desktop goose-type thing but the window keeps running off the screen. any help please?
extends TextureButton
var random = 1
var rng = RandomNumberGenerator.new
var debounce = false
var squish = false
# Called when the node enters the scene tree for the first time.
func _ready():
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
if not squish:
if debounce:
if randi_range(1, 20) == 6:
debounce = false
random = randi_range(1, 5)
if random == 1:
get_window().position.y += 1
if random == 2:
get_window().position.y -= 1
if random == 3:
get_window().position.x += 1
self.flip_h = false
if random == 4:
get_window().position.x -= 1
self.flip_h = true
if random == 4:
pass
debounce = true
func _on_button_down():
self.texture_normal = load("res://Assets/Textures/bunnsquish.png")
squish = true
$AudioStreamPlayer2D.play()
await get_tree().create_timer(1).timeout
self.texture_normal = load("res://Assets/Textures/bunnwander.png")
squish = false
I completed the beginner tutorial on gdquest but all puzzle where almost the same. "func run():
things to do"
Something like this where i had to push the run button to make "things to do"... now i'm starting my own program... how i can build a button like this? And how to connect with the action i would create?
First off, I haven't seen any posts with this flair, but according to the rules it seemed I was OK to post this so here it goes!
Board Game Box Prototype Cover
Amalgam Board Game TLDR: I am looking for a programmer, preferably with multiplayer experience to help turn an abstract competitive board game into a multiplayer video game.
NOTE: This is a passion project for me - not something I intend to make money off of. If by some miracle, in the far future the game becomes a huge hit, I would still intend on this game being free to play, with *maybe* the possibility of in game micro transactions for "skins" or something. But that is a BIG maybe - this game is just a hobby/passion project so if you are hoping for a "job", this isn't for you. I'm just looking for other hobbyist who are looking for a fun passion project as well - or maybe some experience for their resume/portfolio?
DISCLAIMER: I am working as well to pitch this game to publishers as a physical board game, and I would not be willing to share ownership on the copyright of the actual physical boardgame. The collaboration project would be for the digital implementation of the physical game.
Current Progress:
I have been working on an abstract board game on and off for about 10 years and am finally putting in the time and effort to really get it to go somewhere (It's available on tabletop simulator, Screentop.gg, and rules documents/website are set up) Due to the technical nature of the game -- chess-like -- I need lots of prototyping to make sure everything is balanced as I continue to tweak rules to fit strategies and etc. Because of this I have started to build up a playtesting discord server, and will continue to do so. I state all this to show that the game is slowly building a player base, and it's not a project I plan on abandoning. I do have a very early stage of the game on Github @ https://github.com/GreenAnts/Amalgam-Godot - but this is simple piece movement. I have mostly been focusing my time on getting the rules, Tabletop Simulator, Screentop.gg up to par while I also try to find play-testers for the discord server (discord server in my bio).
Tabletop Simulator implementation
Skills:
I have a small amount of programming, 3d art, and graphic design experience - but only from a hobby perspective. Also, I have another talented artist that is also committed to this project (although not as much free time to work on it lately). I am mostly contributing in the game design - the board game is fully playable and pretty much finished, with mostly just small tweaks to ensure balanced play. I also will contribute to programming if wanted, but my progress is slow - as I am a beginner. Even if I don't find anyone to collaborate with, I will likely finish this project myself (very slowly) over time - or eventually just hire someone.
The Goal(s):
The end goal, although it would need to accomplished in small increments, would be to have a multiplayer game where players can get matched with other players through a lobby or ranked matchmaking queue. The game is competitive in nature, similar to chess, so I would like to have an ELO system where players are able to climb ranks (leaderboards). The option to switch between 3d and 2d top down would be ideal, although 2d may be the easier option. Connecting the game to Steam would be nice as well.
Obviously the above "goal" is a pretty big ask, and I am not expecting someone to come here and want to accomplish all that, but that is the "dream". Anything that gets me a little bit closer to that goal would be great. Whether that is a simple networking connection for players to have a "sandbox" connection to others, or no networking at all but implementing the mechanics to enforce the game rules. Even if someone is just starting out and wants to try their hand at implementing something small, I would be happy to let them try their hand at something. As mentioned before, this is simply a passion project, and am treating the digital version basically as open source.
Links to for more information about the game:
Game Website: https://www.amalgamboardgame.com/
Rules Document: https://imgur.com/a/amalgam-board-game-rules-0lTmlgR Screentop.gg
Game Page: https://screentop.gg/@Anthony/Amalgam
Tabletop Simulator Workshop: https://steamcommunity.com/sharedfiles/filedetails/?id=1402132394&searchtext=amalgam
Video Tutorial (How to Play): https://youtu.be/qRPrGfseCU4
Github - Very bare bones: https://github.com/GreenAnts/Amalgam-Godot
The journey of making the game (story time): https://www.patreon.com/posts/amalgam-board-113134314?utm_medium=clipboard_copy&utm_source=copyLink&utm_campaign=postshare_creator&utm_content=join_link
If you made it this far, thanks for reading!
I was wondering how.since I don't know how to program and I love fnaf
hi everyone, I've been trying to export a project to ios from a mac. However I'm getting caught at the first step. I've gotten personal free dev certificate but whenever i try to export project, godot throws up this error: No profiles for 'com.name.game' were found: Xcode couldn't find any iOS App Development provisioning profiles matching 'com.name.game'. (in target 'game_export' from project 'game_export'). I have a unique name setup on the bundle identifier but for some reason it just isnt working. Can yall help?
Hey, I'm making a game about walking on a tightrope, and the code works, but when I walk on the rope to balance, the game lags. Here is the code for the Rope
extends Area3D
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
`self.body_entered.connect(_on_body_entered)`
`self.body_exited.connect(_on_body_exited)`
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
`Input.mouse_mode = Input.MOUSE_MODE_VISIBLE`
func _on_body_entered(body):
`if body is CharacterBody3D:`
`Input.warp_mouse(Vector2(0,0))`
`Globals.onrope = true`
`%CurlyBoi.rotation.y = $End.global_rotation.y+1.55`
`%CurlyBoi.global_position = Vector3($End.global_position.x, $End.global_position.y+0.1, $End.global_position.z)`
func _on_body_exited(body):
`if body is CharacterBody3D:`
`Globals.onrope = false`
Could you help me please?
Hello, I have the next code for the Walkiing State for my NPC. How can i make that based on the target direction to see what animations needs to be played? (up, down, left, right).
extends NodeState
@export var character: NonPlayableCharacter
@export var animated_sprite_2d: AnimatedSprite2D
@export var navigation_agent_2d: NavigationAgent2D
@export var min_speed: float = 5.0
@export var max_speed: float = 10.0
var speed: float
func _ready() -> void:
navigation\_agent\_2d.velocity\_computed.connect(on\_safe\_velocity\_computed)
call\_deferred("character\_setup")
func character_setup() -> void:
await get\_tree().physics\_frame
set\_movement\_target()
func set_movement_target() -> void:
var target\_position: Vector2 = NavigationServer2D.map\_get\_random\_point(navigation\_agent\_2d.get\_navigation\_map(), navigation\_agent\_2d.navigation\_layers, false)
navigation\_agent\_2d.target\_position = target\_position
speed = randf\_range(min\_speed, max\_speed)
func _on_process(_delta : float) -> void:
pass
func _on_physics_process(_delta : float) -> void:
if navigation\_agent\_2d.is\_navigation\_finished():
character.current\_walk\_cycle += 1
set\_movement\_target()
return
var target\_position: Vector2 = navigation\_agent\_2d.get\_next\_path\_position()
var target\_direction: Vector2 = character.global\_position.direction\_to(target\_position)
\#animated\_sprite\_2d.flip\_h = target\_direction.x < 0
print("Target direction is: ", target\_direction)
var velocity: Vector2 = target\_direction \* speed
if navigation\_agent\_2d.avoidance\_enabled:
navigation\_agent\_2d.velocity = velocity
else:
character.velocity = velocity
character.move\_and\_slide()
func on_safe_velocity_computed(safe_velocity: Vector2) -> void:
character.velocity = safe\_velocity
character.move\_and\_slide()
func _on_next_transitions() -> void:
if character.current\_walk\_cycle == character.walk\_cycles:
character.velocity = Vector2.ZERO
transition.emit("Idle")
func _on_enter() -> void:
animated\_sprite\_2d.play("walk")
func _on_exit() -> void:
animated\_sprite\_2d.stop()
so i'm making an overlay window (similar to software like desktop goose for instance). i have already set up the window's transparency, but you cannot interact with anything while it is active. some help here?
I work with tilemaps a lot but so far I've only either made single levels or simple sequences of levels, all in Godot's built-in editor.
What kind of workflow would I need if I wanted to make larger game worlds? Especially ones where I'd have smaller individual levels (I doubt jamming the entire game world into a single scene would go well) that need to fit together coherently, e.g. like in metroidvanias. I'm worried using Godot's own editor would prove awkward since I wouldn't see how a single level would fit with its "neighbour" levels, and I'm wondering if I'd be better off using a separate tool with world support like LDtk instead.
Long story short, I keep trying to make games that I'd like to play/join Pirate Software gamejams but that always fall through. Should I just make a generic Vampire survivors clone to get the hang of it? And if so, where might I find some learning resources for a project like that
Cheers
As in, a menu where players can view art and animations they've unlocked over the course of play. In other engines I've used, there were always premade scripts I could use, so I never really thought about their construction. I figured I'd ask.
Im an absolute beginner so I dont't know much about animation tree or 3d person controllers but very tutorial I see on youtube about making one always has the character itself turning when going in different directions but I want to have separate animations for going sideways or backwards and the player to be always facing forward (like a TPS) but I don't know how to do that and theres no proper tutorials so Im asking for help here
I am developing a 2D game and have been using frame-by-frame animation so far. However, I believe that rigging could optimize my workflow and reduce memory usage, so I want to give it a try. I've heard about a software called Spine, which is supposed to be compatible with Godot. However, most of the tutorial videos I've found are quite old, and I'm unsure if it's compatible with the latest version of Godot. Additionally, an old tutorial mentioned that making it compatible with AnimationPlayer is an experimental feature, which is concerning because I use AnimationTree for all my animations, and it significantly simplifies the process.
I know there are Skeleton2D and Bone2D nodes in Godot used for rigging, but they don't seem as powerful, and from what I've seen the resulting animations don't look as polished as those created with Spine.
Do you have any advice on this? Are there any software options that are more affordable or compatible with Godot than Spine but equally powerful? Thank you so much!
I just finished my Suika-inspired project, and I’ve learned so much throughout the process! A big thank you to everyone who shared tips and guidance along the way—it really helped me improve. If you're a beginner like me looking to practice and learn, feel free to check out the game and grab the code. I hope it inspires you to start your own projects. Thanks again, everyone, for the support https://gamelearner.itch.io/chubby-chums
Imagine following script is attached to the root node of a scene with no further code anywhere. What happens when you run this scene?
extends Node
@export var poll: bool= true:
set(b):
print("Polling")
Image below for example of what I'm dealing with.
I am very lost as to what's causing this.
The maps are in GL format, and from what I looked up that is the correct format for godot.
I have tried maps from two different sites, they both behaved the same way.
for my shader code, I'm very simply applying the normal maps as follows:
uniform sampler2D nrmlMap;
...
void fragment() {
NORMAL = texture(nrmlMap, UV).rgb;
}
One strange thing, I have imported meshes with their own textures and normal maps already applied, and they appear to render normally (for example that tree stump in the pictures) But if I take the normal map from those object and apply it to a plain or other mesh via the shader, it will still behave in the same way, (very strange changes between light and shadow, weird blobs of dark)
I thought maybe the problem could be transforming the scale of mesh instance 3ds was causing this, but I tried reverting the scale to normal and the problem persisted.
I have no idea what's causing this and have been trying to fix it for weeks now. Does anyone know what could be causing this?
EDIT: here is the full shader code:
shader_type spatial;
uniform sampler2D woodTexture;
uniform sampler2D roughness;
uniform sampler2D nrmlMap;
void vertex() {
// Called for every vertex the material is visible on.
}
void fragment() {
ALBEDO = texture(woodTexture, UV).rgb;
ROUGHNESS = texture(roughness, UV).r;
NORMAL = texture(nrmlMap, UV).rgb;
// Called for every pixel the material is visible on.
}
I am looking for a team of 5 people for a fun no comunication game(Its when you do a game for a certain amount of time and pass it to another member of the team and dont say anything). And i am looking for people that are basic in godot. So if you are interested dm me. Also it is good if you have discord account.
Hello, I just finished a game that I had been working on for a few months. It is the first game that I had made. And after exporting it today and submitting it on itch I realized I needed to change something in the game. But when I tried to find the game in my project manager it said the project was "missing" and I couldn't reopen it. I might have messed with some export options while trying to export the game to a zip file, but after reopening the project manager the "missing project" had been deleted, or I just can't see it anymore in the manager. And I have zip files of the game for an "In browser" player in itch, but I don't know Godot accepts these files. I am really sad and frustrated, did I just lose all of my progress? Is there any way to fix this? I tried google searching this, but not a lot of results came up. I also use the steam version of Godot its version 4.3. Idk if that changes anything. Is there any way for me to fix this? This game was due for a club and the deadline is in a few days.
The problem looked like this, but this isn't my photo, just one off the internet
Topic. I have always wondered how people came up with their crazy ideas for their games. What experiences they went through, what games they played, what they tinkered with or what came up to them and made them want to commit usually big amount of time and effort to create something on their own. While thinking about myself as creative person, there was tons of things that managed to awe me when I saw some game or graphic direction ideas.
Starting with myself, it's very complicated. It's just my entire life as a gamer and as human being. My struggles, hardships, evolution of beliefs, human connection or lack of it, reevaluation of priorities, necessity to put some thing out, to create.
Then there is purely entertainment and historical inspiration. Genuine love and passion from imagining myself participating in thousands of battles using medieval soldier figurines. Multiple seances of Lord of the Ring. Hundreds of anime and manga consumed. Many RPG, strategy and MMO experiences. Fantasy books that I have read when reading was my biggest hobby and I could reread Witcher saga for 5, 7 times. Traditional Tabletop Role Playing experience I was able to get with others in real life. Everything added something to my tank of inspiration and necessity to put something out, to create something back.
It was extremally hard for me to find this special something I wanted to create. My mind wandered around ideas I already explored and mostly, they weren't original. Yet I wanted to recreate them. "Was it wrong to not be original?", I thought. I had huge internal struggle with it and procrastinated heavily. That was till I understood that everything we got is a copy of a copy. Everything is inspired, from nature and then from others work. From Bible, Mythology, native legends, books, movies, games we all repeat what we heard of or saw before because we can't create anything new without experiencing it in some shape or form, only our experiences, lives, perspective, preferences are unique. And if we create something entirely new, just for the sake of it being original, it feels alien, lacks relatability or foundations that make us understand what it is. Everything is inspired but by adding, changing, removing from existing idea, we create iteration of idea that can feel completely fresh, original, unexplored. There is also saying that imitation or recreation is the highest praise an art can receive.
Armed with these perspectives I embraced philosophy of stealing ideas, modifying them to fit my own preferences, make them fit the world I want to create and somehow feel fresh. I felt proud of doing that actually as I paid homage to titles I enjoyed so much that became part of me, long after experience I had. This along with reading audience reviews, making my own judgement on game mechanics, worlds, media I so dearly loved led to birth of original (at least partially), exciting ideas that I HAVE TO share with people in form of game in genre I love.
So yeah, those were my inspirations. I could lay fat list of all kind of art/media I cherish but it would make this post even longer.
What is your experience? Please, share with me.