r/godot 8h ago

discussion Building a tiny $1 Godot game this week to fund my Steam Direct fee. What short mechanic should I im

9 Upvotes

Hey everyone!

I’m an indie developer working in Godot, and I've reached a big milestone: my main project is finally ready for Steam! However, as a solo dev starting out on a tight budget, covering the $100 Steam Direct submission fee is a bit of a wall.

Instead of setting up a donation page or asking for hand-outs, I want to earn that fee by actually making something cool for the community. I’ve set myself a challenge: build a small, highly polished mini-game in Godot over the next few days, put it on Itch.io for $1 (with a "pay-what-you-want" option), and use the earnings to cover the Steam fee!

I want to build an idea directly suggested by you guys.

### What I'm looking for:

- **Scope:** Completely doable in Godot within 3-5 days.

- **Playtime:** Short experience (15-30 minutes), but super fun or replayable.

- **Style:** Focused on ONE strong core mechanic. It can be a fast 2D action game (think Superhot/Hotline Miami), a creepy retro/PSX simulator, or a chaotic mini-game.

- **Reward:** If your idea is chosen and built, I’ll credit your Reddit name in the game and send you a free key!

Drop your best micro-concepts, fun mechanics, or weird ideas in the comments. I'll be checking this thread and picking the most upvoted feasible concept to start coding right away.

Thanks for the support and happy game dev!


r/godot 14h ago

free tutorial Shipping a 300MB Godot game as a web build: why it's worth it, and the gotchas the docs skip

0 Upvotes

I'm working on a tactical RPG (The Chronicles of Nesis) built as a Godot 4 WebAssembly build that runs in a browser tab. I had it working as a desktop build. Getting from desktop build to a web game surfaced a long list of failures the official web-export docs don't mention including many silent errors. In this post I walk through why a browser build is nice, why a browser build is technically different than other builds, and the gotchas I ran into.

Why A Browser Build Is Nice

Why I want a browser build is deeper than it seems on the nose. If you read my devlogs you'll get the full picture, but the key points:

  1. One build runs everywhere: Windows, Mac, Linux, Chromebook, mobile and all with nothing to install.
  2. A link is the demo (and the full game). No (executable) download, no installer. Someone clicks and they're playing in a tab.
  3. It installs as a PWA and behaves like a real app, without ever touching an app store or Steam store (its own post, later).
  4. I serve it directly, so I'm not handing a storefront a cut or my player relationship, and when I push a fix, every player is on it instantly: no review queue, no patch download.
  5. A browser game is automatable end-to-end, which let me build far more thorough testing than a native build (another post later on that).

Before I go into the deep technicals, I figure it's worth explaining a bit of why web builds bring complexity.

Why A Browser Build is Technically Different

On a PC or console, your game gets the whole machine: several CPU cores, direct access to the disk, the network, the GPU driver, and a window manager. The OS hands you all of that and stays out of the way. A web build throws most of it out. The entire Godot engine is compiled to WebAssembly and dropped into a locked-down sandbox inside a single browser tab.

Three consequences drive basically every gotcha below:

  1. One thread, and you're sharing it with the browser. Native Godot spreads work across cores and can block for a second on a load without anyone noticing; the OS just schedules around it. In the browser the whole engine runs on the tab's single JavaScript thread and that same thread is the ONLY thing that can paint a frame, read input, or tell the browser "I'm still alive." On desktop builds you have threading options, but on web there is nothing simple to offload to.
  2. It's a sandbox, not an OS. No real filesystem `user://` like on a desktop. Default memory is a virtual in-memory FS backed by IndexedDB that can silently fail to persist in numerous web scenarios: incognito, blocked cookies, cleared data. Other hardware is gated by security: fullscreen, pointer lock, and audio.
  3. You ship the entire game over the wire, on demand. A native install sits on disk; a web build downloads every byte on first visit, and the browser has to compile the WASM before anything runs. That's the real reason for pack-splitting and it isn't an optimization, it's a requirement. Every `class_name` script has to register at engine init (they can't be lazily loaded), and with ~90+ of them the registration alone blocks that single thread past the tab-alive threshold.

Big Gotchas I Ran Into

• COOP/COEP or nothing loads. Without `Cross-Origin-Opener-Policy: same-origin` + `Cross-Origin-Embedder-Policy: require-corp` on every response, SharedArrayBuffer is blocked and you get a blank canvas, no error. NOTE: New_Seaworthiness819 correctly pointed out this is unnecessary on Godot 4.4 and earlier versions.

•':=' can silently kill things if left to compile for web, which is painful. TheDuriel pointed out simply fixing the := syntax specifically is what can solve the painful part, so simpliy modifying := to Variant = in place of any implied inferencing and you'll be gifted a list of what needs attention instead of a blank screen.

• The first play() of any OGG blocks the main thread on vorbis_init. load() is cheap; the decoder state is materialized lazily on first play. One theme cost me ~640ms, a half-second freeze mid-animation. What actually works: a resident AudioStreamPlayer per OGG, played at -80db under the loading screen then paused and KEPT ALIVE (stop()/queue_free() and the cache goes cold again).

• Cross-pack ext_resource references resolve to null. If a .tscn in one .pck references a sprite that lives in another pack, the path is preserved but no bytes are bundled, texture comes back null, no warning. Assign at runtime via load() guarded by ResourceLoader.exists(), not through the scene's ext_resource.

• ~30 class_name scripts / ~50MB is roughly where direct export stops booting at all, hence the bootstrap split above.

• GLES2, not GLES3. And a loading screen literally can't animate over an atomic blocking call, because there's no background thread to animate from.

Links

Happy to answer any questions.


r/godot 19h ago

help me is this normal or did i do somthing wrong

Post image
4 Upvotes

i just downloded godot and try to install it but this window popped up.

i just wanted to make sure that i did not make any mistake

can you guys help me


r/godot 9h ago

fun & memes Don't question my code, I am a very lucky man

Post image
0 Upvotes

I wrote that code yesterday and randomly had that error when I launched my game at one point, fact that that happened is.. 1 in 2147483648..

Maybe I should play the lottery?


r/godot 11h ago

help me Want Advice to make a game on a Very Tight Deadline.

0 Upvotes

Hey r/godot! I’m a student currently on a tight deadline to build a short 2D atmospheric sci-fi platformer (Limbo style, high-contrast silhouettes, dynamic 2D lights, pitch-black world) called UNDERCOSM. Because of school fest deadline (where Godot is the only allowed engine), I don't have the luxury of taking weeks to learn the engine step-by-step from scratch. I’m essentially "rush-learning" Godot 4 on the fly to get a playable, high-polish 3-to-5-minute prototype built. For those who have been using Godot for a while: What are the absolute core Godot 4 features I should rely on to save time? (e.g., built-in nodes, signals, basic state machines).

What are the subtle beginner "traps" that waste hours of debugging time? (Things that catch new users off guard in Godot 4 specifically).

If you had to build a simple, highly atmospheric 2D game in just a few sittings, what rules would you follow to keep your project scope realistic?

Any advice, workflow shortcuts, or "wish I knew this on day one" tips for someone in crunch mode would be incredible!


r/godot 4h ago

help me I'm making a game and I need a little help

1 Upvotes

When it comes to blocking things out, making the fundamentals, getting the coding and script already, I can understand that, right? That comes with time but how the hell do you make it so that your game doesn't look like shit? It just looks like absolute ass. It plays well, it feels nice, but it just looks bad. How do you go from blocky, untextured, unappealing basics, whatever, to something that looks impressive, has shaders, has texture, has life, something that you can be proud of.

Does Godot have the capability of making a next-gen title? Will it look basic? Can you make it look amazing? I really don't know. Did I pick the right engine? I feel like I'm limiting myself. I feel I'm is not hitting the potential that Godot can do.


r/godot 19h ago

help me Need advice on learning Godot

9 Upvotes

Hello.

I am looking to make a short first person horror game in Godot.

I'm a bit lost because I don't really know where to start and I get overwhelmed pretty easily. For example, it feels really complicated to even make a simple first person Character move and be able to look around. I've looked at some tutorials, but it feels impossible to write code on my own and I don't want to plagiarise someone else's code. I can't even estimate what I can copy from someone else's code and what I shouldn't.

I know I can use AI but I'm not really sure if this is the way to go.

I'm already a pro-noob at Blender so 3D modeling is already taken care of mostly. I am only unsure about the programming part in Godot.

Any advice from you guys would be a great help.

Thanks in advance!


r/godot 18h ago

help me I'm making a platformer game with power-ups and need a way to keep power ups between rooms

0 Upvotes

different rooms are essentially different scenes but since I instantiate the player manually every time, it doesn't keep the power up and instead immediately goes into idle mode.

I tried to fix the problem by creating a singleton with a variable (to store the power up to keep) and a signal (to check if the door has been entered).

The way the code works is that the moment the player is colliding with the door's area2d it checks what the current power up is with a match statement and put the power up string inside of the singleton's poweruptokeep variable.

after that inside of the player states I checked for every "important" state (idle, the power up) what the poweruptokeep variable was and changed the state (still with a match case), according to the variable.

This seems almost fine (a little bit convoluted maybe) and it almost worked for me aside from the fact that the player when absorbing the power up, the moment it tries to remove it it comes back so I tried another solution with the signal from the single (doorentered)

Though another problem rises with using the signal, since the signal plays when the door is entered (when it's still in the first scene), the moment the next scene is on and the player is instantiated again it doesn't keep the power up.

I will be attaching the code I used under here, if anybody wants to have a shot at solving this problem,thanks in advance.

THE CODE FOR THE SINGLETON

extends Node

var coins = 0

var playerHealth: int

var PlayerPowerUpToKeep: String

signal DoorEntered

THE CODE FOR THE DOOR

extends Node2D

@ export var NextScene: PackedScene #reddit automatically assumes the tag is for tagging other users so I put a space on here right now (just for the post)

var PlayerInside = false

# Called when the node enters the scene tree for the first time.

func _ready() -> void:

`pass # Replace with function body.`

# Called every frame. 'delta' is the elapsed time since the previous frame.

func _process(delta: float) -> void:

`if PlayerInside == true:`



    `if Input.is_action_pressed("ui_up"):`

        `GameManager.emit_signal("DoorEntered")`

        `get_tree().change_scene_to_packed(NextScene)`

func _on_area_2d_body_entered(body: Node2D):

`if body.is_in_group("Player"):`

    `PlayerInside = true`

    `MatchPowerUp(body)`

Also the current power up is stored inside of the characterbody2d parent script of every state node (im using a little node based state machine from a tutorial)

THE CODE FOR THE PLAYER IN IDLE STATE

extends State

@ export var JumpState: State

@ export var AbsorbState: State

@ export var DamagedState: State

@ export var DuckState: State

@ export var CupidState: State

const DOUBLETAP_DELAY = .25

var doubletap_time = DOUBLETAP_DELAY

var last_keycode = ""

func on_enter():

`player.SPEED= 500`

`player.CurrentPowerUp = "idle"`

`print(GameManager.PlayerPowerUpToKeep)`

`GameManager.connect("DoorEntered", KeepPowerUp)`

#then theres the keep power up function

func KeepPowerUp():

`print("this function Starts")`

`match GameManager.PlayerPowerUpToKeep:`

    `"cupid":`

        `next_state = CupidState`

        `print("yeah I should be cupid technically")`

    `"idle":`

        `pass`

INSIDE OF THE CUPID NODE (THE POWER UP NODE STATE)

extends State

@ export var IdleState: State

@ export var JumpState: State

@ onready var Arrow = preload("res://POWERUPS/Cupid/cupid_projectile.tscn")

var CanShoot = true

enum attackstates {RESET, NORMALSHOOT, GOINGDOWN, DOWNSHOOT}

var lastattack = attackstates.RESET

func on_enter():

    `player.CurrentPowerUp = "cupid"`

    `$"../../AnimatedSprite2D".play("CupidIdlde")`

    `$"../../AnimatedSprite2D".stop()`



    `GameManager.connect("DoorEntered", KeepPowerUp)`

#the keep power up function in the cupid node

func KeepPowerUp():

    `print("this function Starts")`

    `match GameManager.PlayerPowerUpToKeep:`

        `"cupid":`

pass

        `"idle":`

next_state = IdleState

(let me know if you think the code I've posted is too vague Ill be glad to share more)


r/godot 16h ago

help me AnimationPlayer Preview vs Running Project

Thumbnail
gallery
0 Upvotes

I'm following this tutorial to get a grasp on how to make a simple top-down 2D game https://www.youtube.com/watch?v=fLzmZPNJNDk so far, so good.

For the enemy animation, it uses the proper frames to walk but it doesn't use the "position" keys I added to have the sprite move up and look like it's jumping (using position keys on the transform position).

It works perfect when I use the animation player preview, the little slime guy hops as he should! Just not when I run the program I tried double and triple checking the coding and can't find my error compared to the video, any ideas?

I wasn't sure what code to show, this is the enemy script that mentions using the animation player.


r/godot 13h ago

help me How to make effect like this? I need it for 3d mesh

Post image
2 Upvotes

I need to have fill animation for a trailer with grain. So I think to have a mesh of fully loaded grain pile, and to make filling animation I will just move this mesh up and down. But for this to actually work, mesh need to became invisible after crossing floor of trailer

So how it can be done?


r/godot 18h ago

discussion Godot Multiplayer Framework?

0 Upvotes

Hi, is there a need for a Godot multiplayer framework?
Long story short; We have an internal framework for making multiplayer games that we currently use it a few "GaaS" projects in production.

It handles authentication, player inventory, matchmaking, leaderboards, store purchases, audit log for support panel etc (the entire meta game) and can spin up lobbies (game servers) near the players.

It's somewhat a competitor to Azure PlayFab that we often sell as a package deal when we sell game projects. It's currently a bit enterprise and we only sell bundled with development.

I have been wondering for a while if it makes sense to make it more beginner friendly and tailor to a specific game engine so it could be sold a self-serve shelf product. Is there a need for something like that in the Godot community?


r/godot 13h ago

selfpromo (games) Released my first godot game, what do you guys think?

0 Upvotes

Link is https://krebbler-studios.itch.io/cryogenic, no ai was used at all.

I would attach a screenshot or a clip but the graphics arent exactly the most breathtaking lol


r/godot 19h ago

help me Would you play a game with a Clay-style marketing but* Toon Shaders in gameplay?

Thumbnail
gallery
0 Upvotes

Do you think players will encounter an unfortunate dissonance, or will this style only heighten interest in the game? Of course, the illustrations will be faithful to the models and mechanics shown.


r/godot 15h ago

discussion Await Timer or Tween, what will you choose?

0 Upvotes

Would you rather, Choose one and don't use another for your entire life,

await get_tree().create_timer(TIME).timeout

or

create_tween().tween_property(OBJ, "PROPERTY", FINAL_VALUE, TIME).set_other_tween_features

r/godot 4h ago

discussion ¿Puedo compartir aqui los avances de mi juego experimental?

0 Upvotes

Hi. I recently started developing a video game in Godot 4.7. The thing is, I’m not a programmer—I only have some basic knowledge of Python—and I’m developing all of the code with the help of AI.

My game includes 3D models, which I’m creating myself in Blender. Before sharing my progress—which is still very basic and nothing spectacular yet—I wanted to ask whether this thread allows people to share material developed with AI assistance, or if it is only meant for projects created entirely through human talent.

Thank you for your comments.


r/godot 18h ago

help me (solved) Having a bug trying to instantly turn around during a "move_toward()" function

Enable HLS to view with audio, or disable this notification

1 Upvotes

EDIT: I figured it out, though I unfortunately had to resort to asking an AI for help.

This is the code I ended up using:

if direction != 0:
  bob.facing_dir = sign(direction)

if sign(bob.velocity.x) != bob.facing_dir:
  bob.velocity.x = bob.facing_dir * abs(bob.velocity.x)

ORIGINAL POST:

Basically, what I'm trying to do is code a movement system similar to Pizza Tower as my first project. In that game, you have different "mach states" based on your speed and the amount of time you've been running. I've already made a few different states for player movement, including idling, walking, jumping, and falling.

I'm currently making an early acceleration stage (aptly named "smoldashin"), for when the player first starts dashing. I want the player to be able to instantly turn around in this state. Right now, if the player turns around, the "move_toward" function will slow him down, and then speed up to the new target speed (which is multiplied by the facing direction), effectively creating a skidding state. I do want to have the player skid while dashing, but in a later state when he's amassed more speed.

The bug I'm running into is that I can't just multiply the player's movement speed by the direction that's being held, as doing so causes this weird bug that makes the player stutter in place while holding left. It acts exactly the same as before when holding right, though. This should be basic, but it's evaded me for about two hours now.

I can't find anything on this online except for shoddy AI overviews, so I was hoping somebody with experience in 2D platformers could help me out here

TLDR; I need instant turning while the player is moving using the "move_toward" function.

Here's the code:

extends State

class_name SMOLDASHIN

onready var state_label: Label = $"../../../CanvasLayer/MarginContainer/StateLabel"

export var animated_sprite: AnimatedSprite2D

var state = "SMOLDASHIN"

var init_speed = 180.0

var SPEED = 120.0

const max_speed = 200.0

const GRAV = 900

const ACCEL = 150.0

func enter():

`# for debugging`

`state_label.text = "state: " + str(state)`

func physics_update(delta: float):

`# Applies gravity`

`var bob = state_machine.get_parent()`

`if not bob.is_on_floor():`

    `bob.velocity.y += GRAV * delta`



`var direction := Input.get_axis("moveleft", "moveright")`

`var target_speed = bob.facing_dir * max_speed`

    `# Flips sprite and facing direction depending on which direction is held`

`if direction > 0:`

    `animated_sprite.flip_h = false`

    `bob.facing_dir = 1`

`elif direction < 0:`

    `animated_sprite.flip_h = true`

    `bob.facing_dir = -1`



`# Dashes in the facing direction regardless of input`

`if direction == 0:`

    `bob.velocity.x = move_toward(bob.velocity.x, target_speed, ACCEL * delta)`

`# Supposed to handle turning while speeding up`

`elif direction != 0:`

    `bob.velocity.x = move_toward(direction * bob.velocity.x, target_speed, ACCEL * delta)`









`bob.move_and_slide()`

func handle_input(event: InputEvent):

`pass`

r/godot 23h ago

help me 100% Lost

0 Upvotes

I am struggling with this. I can't navigate the UI because it doesn't function consistently. The correct items don't open when clicked. Variables and objects don't save after changing between screens. I only have three menus and can't make navigation and state between them work. I don't even know how anything more complex would even work. I have watched tutorials and if you follow them exactly it's fine. But any deviation or changes beyond the tutorial just fail. I have done coding for 20 years. I have developed multiple web apps. I work in IT and do scripting and complex troubleshooting. I'm not new to programming but Godot makes me feel broken. Half of making things work is code. Great, I can sort of get that part. But the other half is clicking on 'things' that supposedly link them but then break when you refactor and everything crashes. Beyond that, there's no real structure to organizing code.

I'm missing something big. This is (maybe) not a Godot problem but I'm missing something fundamental about how this operates that is wildly different compared to all other programming environments. I don't want someone to fix my problems, I need a list of resources that walk through why this doesn't work like other languages. I need to have the 'oh now I see' moment that makes it click.

I think my three biggest frustrations are: the development UI is inconsistent, code is split between creating functions and 'linking signals' to objects, and the the whole node/scene thing is difficult to understand.

Help me Godot-be-wan Kenobi, you're my only hope.

To comply with the rules: My concrete question is: what resources will help a programmer with existing skills understand Godot when the language/IDE environment does not work like other IDEs/languages? I have reviewed the Getting Started guides and do not see any similarity with an implementation of object-oriented design which may be why this has been challenging.


r/godot 3h ago

selfpromo (games) Just learned you could stack Viewports with Canvas Layers

Enable HLS to view with audio, or disable this notification

3 Upvotes

r/godot 3h ago

help me (solved) I am able to disable visibility but not enable it (See body)

Thumbnail
gallery
0 Upvotes

I have checked using print an all are recieving updates, controlscript is global and the clocktype does infact change


r/godot 21h ago

help me _on_area_entered not working

Enable HLS to view with audio, or disable this notification

2 Upvotes

func _on_area_entered(area: Area3D) -> void:

print("yogurt gurt: yo")

the player and the area3D are both on the same collision layer, so i dont know what else could be wrong.


r/godot 14h ago

help me Is Godot 3 still the best for web builds?

12 Upvotes

I’m participating in a game jam this weekend. I bet a lot of you can guess which one. And I have found a web build let’s more people play your game. Therefore I want to make a game with a web build. I know when Godot 4 for dropped, it’s web build capabilities were worse than Godot 3 and I’m wondering if that’s still the case? Thanks!


r/godot 17h ago

help me (solved) how should i fix it

Post image
0 Upvotes

r/godot 8h ago

selfpromo (games) I released my first Android arcade game, SkyRush Pro – Looking for honest feedback!

0 Upvotes

Game Title: SkyRush Pro

Playable Link:
SkyRush Pro Game Link

Platform: Android

Description:
SkyRush Pro is a free-to-play arcade flying game that I built using the Godot Engine. The objective is simple: fly as far as you can while avoiding obstacles, collecting coins, and beating your highest score. As you progress, you can unlock different planes, unique backgrounds, and helpful power-ups such as shields, magnets, and score boosts.
I created this project to learn mobile game development and have spent several months improving the gameplay, UI, performance, and overall experience. The game also includes rewarded ads for optional rewards, a leaderboard, achievements, and regular updates with bug fixes and new content.
I’m looking for honest feedback from the community on:
Gameplay and controls
Difficulty progression
UI/UX
Performance on different devices
Features or improvements you’d like to see
Every suggestion will help make the game better.

Free to Play Status:
☑ Free to Play

Involvement:
I am the solo developer. I designed, programmed, tested, and published the game myself using Godot.


r/godot 9h ago

discussion AMD/Linux PC for Godot

0 Upvotes

Hello, I'm starting to build a PC for game development, as I currently work on my Mac Mini and often run into quirks when making builds. (works on my machine, doesn't work at all on other platforms, etc).

So I was wondering if someone here is running Godot on an AMD machine with a Linux distro and how's your experience so far? any pain points?


r/godot 11h ago

selfpromo (games) Bunker Break 2 (Sequel of Bunker Break)

Thumbnail
gallery
0 Upvotes

I'm the solo developer of Bunker Break, a survival horror game currently in development.

To introduce the world before the full Steam release, I made Bunker Break 2—a short, free sequel that takes place after the events of the main game. It's intended to give players a feel for the atmosphere and gameplay, even though the full story begins in Bunker Break.

I'd appreciate any feedback on the gameplay, atmosphere, performance, or anything else you notice.

You can download it for free here:
https://zare-games.itch.io/bunker-break-2-sequel

If you're interested in the main game, here's the devlog:
https://zarkotamburic17.wixsite.com/zare-games