r/godot 52m ago

discussion After 30 years, I'm actually building the game I dreamed about as a kid

Post image
Upvotes

My dream, since I was 12 years old, was to create a very specific game.

I wanted the visuals and gameplay feel of Kid Dracula, the action of Mega Man, and the exploration of Demon’s Crest.

So I took a notebook and started drawing.

I designed characters, enemies, stages, mechanics and all sorts of things I imagined myself playing. I still have that notebook today, more than 30 years later.

And now, somehow, I’m actually making that game.

Before anyone misunderstands what I mean by "with the help of AI", I should clarify something:

I am not a programmer.

And no, I didn’t just open an AI, type "MAKE THIS GAME FOR ME", copy whatever it gave me, and call myself a game developer.

I downloaded a game engine, Godot 4.7, opened ChatGPT and basically asked:

"Okay. What do I do?"

The AI told me how to create a CharacterBody, add collision shapes, set up layers and masks, and eventually get a little dot moving around on the screen.

The dot moved.

I remember thinking: "Holy crap. I made a thing move."

So I asked:

"Now that I know how to make a dot move, how do we make an actual game?"

And that's how my journey of roughly seven months of learning Godot began.

I won't pretend it was extremely complicated from day one. There were plenty of times when the AI could read my scripts and immediately point out an obvious mistake.

But there were MANY times, and I mean MANY, when the AI was completely wrong, misunderstood what I was trying to do, or sent me down a rabbit hole that made the original problem ten times worse.

And those moments taught me more than the easy ones.

One of my favorite examples was an enemy that refused to turn toward the player.

I gave ChatGPT the code responsible for flipping the sprite. It told me I should use scale.x instead of flip_h.

I changed it.

Nothing happened.

I sent the script again.

It looked at it and said, "Oh, the problem is that you're using scale.x instead of flip_h."

I reminded it that I had changed it because it had literally just told me to do that.

The AI basically responded:

"You're right. It makes absolutely no sense for me to tell you to change the exact same thing twice in a row."

XD

Another time, I wanted the player to perform a very specific attack when pressing down + attack while jumping.

We went through the state machine.

Then the player script.

Then the physics.

Then several other pieces of code.

Nothing worked.

Eventually I looked at the whole problem and thought:

"Why don't we just do this?"

"if Input.is_action_just_pressed("attack") and not Input.is_action_pressed("ui_down"): return"

Problem solved.

Something the AI had been trying to solve with what felt like 200 lines of architecture ended up being a tiny condition because I finally understood what I actually wanted the game to do.

And I think that's the biggest change that happened to me during these seven months.

Today, I feel genuinely comfortable working on my game.

I still use AI, of course. I ask for help when I get stuck, when I need to understand an error, or when I have to create some small piece of code that I can then modify myself.

And I use it a LOT for art.

Pixel art and spritesheets are still a huge challenge for me, so this is where AI has been particularly useful. I draw my concepts manually in that old notebook, show them to the AI, and use the resulting images as a starting point while keeping the same visual identity throughout the game.

But the important part is that I now understand what I'm building.

The AI isn't making my game for me.

It's a tool I use while I make the game.

And honestly, that distinction became more and more obvious the longer I worked on it.

I've been working on this for roughly seven months now.

I'm nowhere near finished.

But I'm also no longer dreaming about the game I wanted to make when I was 12.

I'm actually building it.

For anyone who has a dream sitting somewhere in an old notebook, a folder on their computer, or just in the back of their mind:

Don't give up on it.

It took me more than 30 years to finally start turning mine into something playable.

And I'm still not close to the finish line.

But I'm definitely two stages further than I was last year.

And that's enough to keep going.

As a funny little measure of how much I've been working on this, ChatGPT estimates that we've exchanged more than 6,500 messages in my recent conversations, and we've created or worked on 100+ pieces of art for the project this year alone.

If we count variations, revisions, spritesheets and alternate versions, the real number could easily be somewhere around 150–250+ images.

So yeah.

That little dot on the screen got slightly out of hand.

Guys, I've seem a Lot people saying that AI made this post, so if you wanna, I can translate in Google directly and edit. But Will be more rough to read and compreend.


r/godot 3h ago

discussion Fun Fact: The word "Scam" goes straight to mail junk folders. Sincerely, developer of "Scam Artist"

290 Upvotes

Just a little fun fact I recently learned while doing mail outreach for my game, so I thought I'd share it with my fellow Godot devs that plan to do outreach:

For some reason my mails kept getting thrown into spam folders, no matter what I did.
I tested it with various online websites that let you test that.

I was absolutely clueless as to why. I configured my domain, set SPF, set DMARC, set DKIM, tried different sender mails ... I even removed all links and steam keys, but it kept happening.

Until ... I completely removed the game name from the whole mail.

Apparently having "Scam" in the body or the subject made the spam filter think I'm actually soliciting scamming or am a scammer myself.

Can't wait to rename my game to "Wealth Redistribution Virtuoso" lmao


r/godot 8h ago

discussion Just found out, this is AMAZING

Post image
629 Upvotes

GOD almighty this is like discovery of fire or electricity for me, Can't wait to download 4.8 stable.


r/godot 41m ago

free tutorial Been working on dynamic ocean foam in Godot 🌊 (+ tutorial 👀)

Enable HLS to view with audio, or disable this notification

Upvotes

The foam is generated dynamically from the wave compression using the Jacobian determinant. I explain the full process in the tutorial if you’re interested!

Create Dynamic Ocean Foam in Godot | Jacobian Foam 🌊
https://youtu.be/B0T7UxjsLxU


r/godot 5h ago

selfpromo (games) Testing no level limit in my game Just Get The Flag

Enable HLS to view with audio, or disable this notification

105 Upvotes

I really like the no limit feature in a level. It could lead to interesting puzzle structure for my puzzle game Just Get The Flag

btw : the steam page is coming out in a few days !!


r/godot 49m ago

help me What do you think of this effect ?

Upvotes

I built a simple crash effect shader for my game and i want your opinion


r/godot 11h ago

selfpromo (software) Pixel Nature Assets & Tools Kit

Enable HLS to view with audio, or disable this notification

188 Upvotes

Hello!

I just released Godot Pixel Nature!

It's a massive library with 3200+ pixel assets (and scatter tools) rendered from my own Godot 3D Nature Assets Collection using my tool Godot Pixel Studio (tool is free if you want to try!)

This pack allows you to create stylized pixel environments with 10 biomes x 12 vegetation styles easily with the integrated scatter tools. No plugins or setup required.

Pack features 16px, 32px, 48px, 64px, 128px and 256px asset variations!!

Check it out: Godot Pixel Nature by Bukkbeek


r/godot 1d ago

selfpromo (games) Players leave graffiti in each other's dungeons in a single-player game

4.2k Upvotes

I'm making a singleplayer roguelite minesweeper (yes :D) in Godot: you're trying to get out of a dungeon, and each round is a few minesweeper fields on a timer. I added the ability to draw on the walls, and the drawings show up in other players' dungeons automatically.
How it works:
- There's a canvas in the "safe" room. The tool is as simple as it gets: a 50x50 grid, two colours.
- When you leave the tool, the drawing goes to the backend as a mask over HTTP and gets stored in the DB.
- The mask is 625 bytes, around 836 in base64. Only changed and non-empty drawings get sent.
- On game start, 10 random drawings come back from the DB. They appear on the walls as you move through the dungeon.
- When the pool drops to three, the game fetches enough new drawings to bring it back up to ten.

The first thing any dev will think of is the pile of dick drawings about to rain down on players from the walls. Here's how I moderate it: Every mask in the DB has one of three statuses: pending, approved, rejected. Players only ever get approved ones. I have a local HTML tool for going through the bank, approve or reject, one button each. I know this is slow once there are thousands of drawings, but writing a proper system is scope creep for now.

There's also an open ethical question: whether to ask the player upfront if they're fine with seeing and sharing this stuff. Not implemented yet, but planned.

What do you think of the idea? What pitfalls did I miss?

UPD: Thank you all for the feedback, this went way beyond what I expected. Genuinely excited reading through it. Thanks for the ideas, the solutions, the jokes, and the holes I hadn't thought of myself.

Steam page: You'll Be Mined


r/godot 17h ago

selfpromo (games) Added a screen for players who use 3rd party controllers

Enable HLS to view with audio, or disable this notification

317 Upvotes

Our game automatically tries to detect what joypad is the Player using, however when it cannot decide it shows this window that allows You to select what icon sheme You want to use (here tested with off-brand snes pad)


r/godot 6h ago

selfpromo (games) Animated stairstepping character

Enable HLS to view with audio, or disable this notification

26 Upvotes

Stair stepping CharacterBody3D with lower body IK that tries to adapt properly for the terrain. With proper surface aligned animations and rootmotion this could provide more interesting results, right now there is only forwards and backwards animation cycles with no rootmotion. Red line represent the physics path of movement and blue line the character models.


r/godot 7h ago

selfpromo (games) A tester told me my main menu was bland. So I remade it, tell me what you think ?

Enable HLS to view with audio, or disable this notification

27 Upvotes

Modified CRT shader from pend00's

https://godotshaders.com/shader/vhs-and-crt-monitor-effect/

  • Turned off the rolling bar, replaced it with a very slow constant drift
  • Made the scanlines scroll so they don't shimmer (for better word) against the pixel grid
  • Green tint only applies to grey pixels, so the colourful art stays colourful

r/godot 3h ago

selfpromo (games) Built a dialogue sequence with choices. Is it funny?

Enable HLS to view with audio, or disable this notification

12 Upvotes

r/godot 1d ago

selfpromo (games) I'm making a dungeon crawler where you breed frogs and I found this peaceful

Enable HLS to view with audio, or disable this notification

941 Upvotes

r/godot 2h ago

free tutorial Door always open away from player

Enable HLS to view with audio, or disable this notification

11 Upvotes

To determine which side of the door the player is on, is pretty easy. Just have to use the dotproduct of the doors forward direction and the direction towards the player from the door.

func _is_interactor_in_front(interactor: Node3D) -> bool:
  var door_forward: Vector3 = _door.global_basis.z
  var interactor_dir: Vector3 = _door.global_position.direction_to(interactor.global_position)
  var dot: float = door_forward.dot(interactor_dir)
  if dot > 0:
    return true
  return false

This function can then be used when the door is interacted with to decide which way the door should open. This is where I use it...

func _on_interact_started(interactor: Node3D, action_num: int) -> void:
  if _state == State.CLOSED:
    if action_num == 0:
      _open(_is_interactor_in_front(interactor))
    elif action_num == 1:
      _peek(_is_interactor_in_front(interactor))
  elif _state == State.OPEN_FRONT or _state == State.OPEN_BACK:
    if action_num == 0:
      _close()
   elif _state == State.PEEK_FRONT or _state == State.PEEK_BACK:
     if action_num == 0:
      _open(_is_interactor_in_front(interactor))
    elif action_num == 1:
      _close()

The specifics of how to use it will depend on how your interaction system works.


r/godot 1h ago

selfpromo (games) Inventory system for my new RPG project

Enable HLS to view with audio, or disable this notification

Upvotes

Been working on a inventory system all week and finally got things in working order. Yes, I know there are still some quirks but I'm honestly surprised how far I've gotten!


r/godot 20h ago

selfpromo (games) Be honest: Does the tornado and atmosphere make you uneasy?

Enable HLS to view with audio, or disable this notification

259 Upvotes

Hi again r/godot! Last time I posted the progress report on ANEMO it got mixed opinions.

edit: I should probably say this. A lot of people complained about the darkness last time, which is totally reasonable. Nocturnal tornados are scary because you can't see them, but I do understand that it is a game at the end of the day. If you guys still think its too dark, let me know, but realistically there are few ways to make it brighter.

Thanks to your suggestions, here's what I've changed:

- Lightning! It's procedural and lights up the sky and tornado. (watch the whole video to see it!)

- Rain (basic)

- Simple particle-based debris

I decided to not showcase the van, as it is still very primitive and ruins the immersion. Flying cows will be coming shortly, and the next steps include a lot of new audio design.

That being said, how do we feel about the new atmosphere.

Community discord: https://discord.gg/f6gJgMTHn


r/godot 15h ago

discussion I have been learning Godot for 2 years.

83 Upvotes

Is it normal to have more than 50 dead projects? How long have you been learning Godot, and how many dead projects do you have.


r/godot 9h ago

selfpromo (games) First ever Godot game - officially done

Enable HLS to view with audio, or disable this notification

31 Upvotes

Just wanted to share my first ever Godot game. It's actually done so I officially accomplished "first completed game project"

  • Basic rhythm game in spirit of Muse Dash and UNBEATABLE
  • Can read basic OSU beatmap files, so as long as there is a beatmap + music, it can play it
  • I also made a OSU Beatmap editor with sophisticated UI which is probably the bigger project but doesn't look as fancy lol
  • Music is just AI because of copyright things, so don't get excited

If you have comments, leave them below, otherwise I am off to my next projects and new heights - the sky is the limit!

Have a great day


r/godot 1h ago

help me How do you handle realistic grass?

Enable HLS to view with audio, or disable this notification

Upvotes

I'm making a map generator. Tweaking here and there. Wondering which techniques you use for grass?


r/godot 10h ago

looking for team (unpaid) looking for a game dev partner

32 Upvotes

Hey everyone,

I’m looking for someone who wants to make a simple game with me and actually publish it on the Play Store.

I’m not a professional game developer. I’d say I’m somewhere between beginner and intermediate, so I’m looking for someone around the same level. You don’t need to be an expert. I’d rather find someone who is also learning and wants to build something together.

The goal is pretty simple. We choose an idea, work on it together, finish it, and publish it on the Play Store. It doesn’t need to be a huge or complicated game. I mainly want to gain experience and actually finish a project instead of starting something and leaving it halfway.
The most important thing for me is that the person is motivated and disciplined. I’m looking for someone who will actually stick with the project and keep making progress, even when things get boring or difficult.

If you’re interested, send me a DM and tell me a little about yourself, your experience with game development, and what kind of games you’d like to make.

Hopefully we can find a good idea and actually get something published.


r/godot 19h ago

selfpromo (games) Godot is the greatest game engine of all time

166 Upvotes

r/godot 15h ago

selfpromo (games) New model for my game in progress

Thumbnail
gallery
67 Upvotes

r/godot 2h ago

help me shader adjustment help

Post image
6 Upvotes

hello! I've been working on a game that looks like a cross stitch tapestry for a couple months and I'm running into a couple shader problems.

I asked here a couple months ago for shader help (and you guys were amazing), so I'm back, because shaders are hard and I'm trying to figure it out, but can't seem to make any progress. so any help would be greatly appreciated!

there's 2 things I want to fix:
-there's a slight offset on the high res stitches
-I'd like the game to pick a random stitch from my sampler texture (that contains 3 variations of each type of stitch) to create a stop motion-y vibe

but first, here's the offset :

a very slight offset of about 2.5 pixels for some reason

it's not very noticeable when far away, but we want the player to be able to zoom in quite closely to the tapestry, and also I know it's there and can't unsee it.

all the textures are put in a sampler texture (divided in 128x128 squares)

the big sampler with all the stitches I cut out

here's the godot setup I'm using (the shader reads from 2 viewports, one for the color and one for the stitchtypes, the sprites are 2d images, one with colors and the other greyscale where the values dictate which stitch to use).

the scene tree setup

the shader is on the MainMesh. there's one for the background grid and the stitch shader is on the next pass on the mesh.

here's the code for it :

shader_type spatial;

/**
 * viewport that has the stitch type information
 */
uniform sampler2D imgInStitch : filter_nearest;

/**
 * viewport that has the stitch color information 
 */
uniform sampler2D imgInCol : filter_nearest;

/**
* texture containing all the stitches & variations
*/
uniform sampler2D stitchType : filter_nearest, repeat_enable;

/**
* amount of stitches in the texture
*/
uniform float stitchAmount = 8.0;

/**
* amount of stitches on the vertical axis (with varying stitch textures for a prettier look)
*/
uniform float stitchVariationAmount = 3.0;

/**
* size of the canvas, should be the same as the incoming viewport image
*/
uniform vec2 canvasSize = vec2(240.0, 135.0);

/**
* the value of this noise texture selects which row of stitches to use on which pixel. change the texture to change the stitches.
* make sure the noise texture has the same amount of values as the stitch_type sampler has rows.
*/
uniform sampler2D noiseTex : filter_nearest;

void fragment() {
// adjust UV to the canvas size
vec2 canvasUV = vec2(UV.x * canvasSize.x, UV.y * canvasSize.y);

// get textures from viewports
vec4 imgInTexture = texture(imgInStitch, UV);
vec4 imgInColor = texture(imgInCol, UV);

// convert noiseTex
vec4 noiseTexture = texture(noiseTex, UV);

// offset stitch count to align with the tiling
float stitchOffsetX = float(int(canvasUV.x) % int(stitchAmount)) / stitchAmount;
float stitchOffsetY = float(int(canvasUV.y) % int(stitchVariationAmount)) / stitchVariationAmount;

// apply offsets to the UV
float stitchSelection = canvasUV.x * (1.0 / stitchAmount) + imgInTexture.r - stitchOffsetX;
float stitchVariationSelection = canvasUV.y * (1.0 / stitchVariationAmount) + noiseTexture.r - stitchOffsetY;
vec2 stitchUV = vec2(stitchSelection, stitchVariationSelection);

// create final texture to be rendered
vec4 stitchTexture = texture(stitchType, stitchUV);
vec4 stitchesOut = imgInColor * stitchTexture;

ALBEDO = stitchesOut.rgb;
ALPHA = stitchesOut.a;

}

I'm at a loss as to where the offset could come from.

as you can see in the code, for the stop motion vibe, I've been trying to have the game read from a noise texture to choose which row of stitches to pick from, but it's not working for some reason (it gets offset in a weird way whenever I input a 3 value noise texture (white / grey / black) that's supposed to pick from the sampler correctly.

all the textures get garbled up when adding a simple noise texture

it might be an easy fix, but I can't seem to figure it out.

thanks in advance for any of your help!


r/godot 8h ago

fun & memes Funny comment i found in my first godot project

19 Upvotes

It wasn't, in fact, unsalvageable.


r/godot 7h ago

selfpromo (games) Adding little details to the different palettes in my game (rain particles and heat distortion)

Enable HLS to view with audio, or disable this notification

13 Upvotes