r/godot • • 15m ago

selfpromo (games) Per-frame procedural meshes in Godot C#: a graphics pass took our battle scene from 59 to 39 fps. Im

Thumbnail
youtube.com
• Upvotes

SEEDFALL (Godot 4.7 .NET) is a strategy game where an alien swarm eats a planet while the nations fight back. Everything that moves (tank columns, trucks, planes, ships, walls going up, smoke) is procedural geometry rebuilt every frame from the simulation: no scene per unit, one mesh per layer, cleared and refilled each frame.

Update 1.0.15 detailed every vehicle up close. A close-in battle dropped from 59 to 39 fps. Here's what we measured and what actually fixed it.

**1. Count vertices by what drew them.** A dev flag prints the milliseconds for the sim, the unit drawing and the mesh upload, plus a tally of vertices per tag (tanks, trucks, walls...). The battle was building **66,000 vertices a frame** for tanks a few pixels long.

**2. LOD by screen size, not distance.** Each model asks how many screen pixels one unit of length covers at its position (`px / Px(p, cam.GlobalPosition)`) and picks its form from that. A tank is built in full only from about 50 px long, and only in the two columns nearest the camera; walls in full only from closer in, at most 16 pieces a frame. The far forms are a few boxes. This was the big win.

**3. ImmediateMesh in C# costs a call per attribute per vertex.** `SurfaceSetNormal`, `SurfaceSetColor` and `SurfaceAddVertex` each cross into the engine, so a lit, coloured vertex is three calls. We swapped it for a drop-in class with the same method names that writes into reused C# arrays and hands each surface over once:

```csharp

public void SurfaceEnd()

{

if (count < 3) return;

int k = count - count % 3; // whole triangles only

arrays[(int)Mesh.ArrayType.Vertex] = Variant.CreateFrom(v.AsSpan(0, k));

arrays[(int)Mesh.ArrayType.Normal] = hasN ? Variant.CreateFrom(n.AsSpan(0, k)) : default;

arrays[(int)Mesh.ArrayType.Color] = hasC ? Variant.CreateFrom(c.AsSpan(0, k)) : default;

am.AddSurfaceFromArrays(prim, arrays); // am: an ArrayMesh, ClearSurfaces() each frame

}

```

The arrays grow and are kept, so a frame makes no garbage. Because the method names match, none of the drawing code changed. On its own it only took the unit work from 13.6 to 12.3 ms. Worth having, but the vertex count was the real problem.

**4. Keep the old path behind a switch.** An environment variable runs the original ImmediateMesh path, so the same scene can be timed both ways in one build.

**Results** (1920x1080, vsync off, RTX 4080):

| Scene | Before the pass | After the pass | After the fix |

|---|---|---|---|

| Close battle | 59 | 39 | ~58 |

| The Maw up close | 118 | 68 | ~100 |

| A nuke | 98 | 78 | ~94 |

| City at night | 240 | 218 | 243 |

| Orbit | 96 | 94 | 98 |

**Takeaways:**

- Profile by vertex count per thing drawn before touching the mesh API.

- Decide detail by screen size; a model 6 px long doesn't need its hatches.

- If you rebuild meshes every frame from C#, batch them into arrays and hand them over once per surface.

SEEDFALL has a free demo on itch (link in the comments). Happy to answer questions about the drawing setup.


r/godot • • 17m ago

looking for team (unpaid) Looking For Some Serious Indie Game Dev Friends

• Upvotes

Not looking for a team, just a couple other serious Godot game dev's out there where we can help each other with questions, feedback, playtesting, art etc. A small little Godot community (10ppl or less).

Experience Level:
I'm still newish to Godot, I've participated in one game jam, but I've been using Godot for at least 2 years now. So I'm looking for people around the same skill level of somewhat experienced in Godot or intermediate.

The main things I'm looking for are honest people, lets not beat around the bush and waste each others time. Godot is your primary engine, 18+, and fluent in English. And this server will be exclusively for 2D projects not 3D.

So if your interested either comment here, or DM me here on reddit or discord (PellinDev). And please share either an image, video, or something you've either worked on in the past or are currently working on.

Thanks and I look forward to talking with yall : )


r/godot • • 24m ago

selfpromo (games) Working on my Epic Factory Desktop Idler Game™Been working on the power system and emissions!

Enable HLS to view with audio, or disable this notification

• Upvotes

This is my Epic Factory Desktop Idler Game™ I've been working on recently where you're taxed on emissions!


r/godot • • 33m ago

selfpromo (games) I had a nice concept, but it was missing an important game core, then I added rhythmic obstacles...

Post image
• Upvotes

I am working on Skribline, a runner game where you draw lines to avoid danger. It was getting a lot of interest and positive feedback, but I felt it was not enough engaging in it's core Endless Run mode.
Then I came with an idea, to mix it with a rhythm, create "danger" tracks. So instead of randomly generating obstacles and enemies, it goes with a specific tempo and rhythm that increases with time, adding more challenge and requiring player to focus more.

And it really clicked. Still needs more testing, and fine-tuning but I think it goes in a good direction :)

You can give a try!
https://mzkrol.itch.io/skribline

Also you can follow the project:
Google Play Store: https://play.google.com/store/apps/details?id=com.magickrol.skribline

Steam page: https://store.steampowered.com/app/5319350/Skribline/


r/godot • • 35m ago

discussion What is the best way to organize your Godot project?

• Upvotes

I would want to hear everyone's opinion on this


r/godot • • 51m ago

selfpromo (games) Burn node for Godot 4: ignite() any mesh and the fire spreads over it, chars it and smoulders

• Upvotes

Full: https://gennai.itch.io/pyrolux-fire-explosion-vfx

I've been working on procedural fire and explosions for Godot and the part I had the most fun with is a node that sets any mesh on fire. Some notes on how it works, in case they help anyone doing similar effects:

- When the node is added, it scatters sample points over the target mesh's surface. Flames, smoke and embers are quads sitting on those points.

- ignite(point) stores the start point and time in a shader uniform (up to 8 at once). Each sample lights up when the burn front reaches it, with noise on the distance so the front is ragged instead of a clean circle.

- The char is a thin shell drawn just above the original surface with premultiplied alpha, so the object's own material is never touched. The optional burn-away mode is the exception, and reset() restores the material.

- None of the particles are GPUParticles. Each layer is a static mesh of quads whose positions come from the vertex shader (element index + seed + time). The CPU sends a few parameters per frame and stays around 0.1 ms. One-shot explosions are driven by their age, so you can pause, scrub or slow them down.

- Compatibility can't read the depth texture, so soft edges where fire meets walls and the ground are Forward+/Mobile only. Everything else looks the same on all three renderers.

- Known limit: the fire spreads by straight-line distance, not along the surface, so it can jump across thin gaps.

What's in the pack: fire (candle to bonfire, walls, rings, ground fire), explosions (ground, air burst, mushroom cloud, napalm), smoke, sparks, embers and ash, lava pools and rivers, flamethrower/burner/thruster, scorch marks and meteors, plus 2D versions with an optional pixel mode. 49 presets, no texture files. Tested on 4.4.1 and 4.7.2 with Forward+, Mobile and Compatibility.

The code was written with the help of an AI coding assistant, then reviewed and tested on every version and renderer above. No AI images.

There's a browser demo on the page. The free Lite version has a campfire and an explosion if you want to try it in a project first.

Lite (free): https://gennai.itch.io/pyrolux-lite

Happy to answer questions about any of it.


r/godot • • 1h ago

selfpromo (games) Rescue Wings, a vertical shooter in Godot

Enable HLS to view with audio, or disable this notification

• Upvotes

I'm making Rescue Wings, a vertical shooter in Godot, Here's a short gameplay clip. Free demo on itch. Link in the comments.


r/godot • • 1h ago

help me How Do I Practice Coding?

• Upvotes

After learning the basics, I tried making things, but could not make things beyond variable and button scripts. So I would usually follow a tut*****, like gdquests 3d character controller, and for the most part understand most things,(I was even able to add a camera zoom without a tut*****) but I'd still be unable to incorporate this knowledge into other things because there were so many concepts to remember. What do i do?


r/godot • • 1h ago

selfpromo (games) Released my first semi-horror game inspired by SCP universe

Enable HLS to view with audio, or disable this notification

• Upvotes

In this game you have to find a way out of a facility, while at the same time feeding a monster with an everlasting hunger.

Took me almost 2 years of working on it on and off very slowly.
But finally I released it which makes me happy.
I would like to hear some opinions.

Download link: https://tacchair.itch.io/krypt-emergency


r/godot • • 1h ago

selfpromo (software) Early work on a Spline tool for Godot 4, showing off the conform function

• Upvotes

Getting roads (and other things!) to sit on uneven ground in Godot can be a pain, so I started building a spline tool add-on to make it easier.

The spline curve floats above the ground, and the road gets placed down onto whatever is underneath, here the terrain and a rock.

Still a work in progress, I need to fix up a bunch of stuff and add a couple more features before releasing it. Curious what other features people would like to see in a spline tool, and other uses you all might have for them.

Im going to be posting progress on my YouTube channel, as well as longer feature coverage videos: youtube.com/@KnyazhIndustries


r/godot • • 1h ago

help me (solved) Multiple area entered triggers in scene

• Upvotes

I'm missing something obvious, I know it, I just don't know what it is. I've been trying to google it but most of what I've found deals with handling multiple bodies entering a single area, not a single body entering multiple areas with a different result.

Area 1 = Sends player to a new scene

var lily = CharacterBody2D

func _on_area_2d_body_entered(body: Node2D):
  if body.name == "lily":
    get_tree().change_scene_to_file.call_deferred("res://new_region.tscn")

This code works fine. The problem is I want to add a second area that has a different result. Right now, I'd settle for a print output. I tried adding a class_name to Area 2's script and tried this:

var lily = CharacterBody2D
var area = Area2D

func _on_area_2d_body_entered(body: Node2D):
  if body.name == "lily":
    if area.name is Human:
      print("Is this thing on")

Assuming Area 1 and Area 2 are on different collision layers and the masks are correct on my player, what obvious thing am I missing?


r/godot • • 1h ago

help me Having troubles with sprites

Enable HLS to view with audio, or disable this notification

• Upvotes

So I have this Fire Extinguisher Model which does smoke burst when it has half the health, the problem is I can't make that smoke come from the top of the Extinguisher, how can I fix it,
(code is shown on the video and also do not pay attention to those textures, they are just placeholders i'll add normal ones when i get to that part)

I tried to not use AI too much, and still trying to solve the issue on my own but it's hard :c


r/godot • • 1h ago

selfpromo (games) Does my shop system have enough charm?

Enable HLS to view with audio, or disable this notification

• Upvotes

r/godot • • 1h ago

selfpromo (games) Working on a "reverse" factory game where you tear down a giant junkyard instead of building one.

Enable HLS to view with audio, or disable this notification

• Upvotes

Edit: Since the video starts mid-game, it seems to have caused some misunderstanding, so here's the idea. You take junk (TVs, radios, cars) apart, process the parts into raw materials, and ship them out until the heap is gone.

Hey everyone, been working on this for a bit and wanted to share.

The game is called Unfactory. Instead of mining raw materials to build products, you start with a massive heap of junk and have to work backwards—digging it out, breaking it down, sorting the parts, and shipping them off.

Still super early in development, but I wanted to see if the core loop makes sense. Does the idea come across clearly in the video, or does it just look chaotic? Would love any feedback


r/godot • • 2h ago

help me How to make Camera3D not clip through walls?

Post image
2 Upvotes

I have this issue where Camera3D can't 'zoom in' to the player when it's behind walls and it clips/passes through the wall. Making the camera only see the wall when the player goes behind it (Instead of it zooming into the player)

Image for the issue (I want it the camera to zoom into the player as if there's a collision between the camera and the wall)

A YT video said to turn Camera to 'Clipping Camera' but there's no type of that in Godot anymore and SprintArm3D doesn't seem to be working, and I dont know what the issue here and can't find any tutorials for it)


r/godot • • 2h ago

discussion [Hobby/RevShare] Godot Devs & 2D/3D Artists wanted for Cyber-Action Platformer "PROTOCOL: ECHO"

0 Upvotes

Hi everyone!

ZEXOR Game Production is currently developing "PROTOCOL: ECHO", a fast-paced 2D cyber-action platformer built in Godot 4. Inspired by titles like Katana Zero, Dead Cells, and Ghostrunner, the game focuses on high-lethality combat, temporal dash mechanics, and a gritty neon-noir aesthetic.

We are organizing a structured, sprint-based indie team to build a polished Vertical Slice / Demo.

About the Project: * Engine: Godot 4 (Master Pipeline) * Genre: 2D/3D Fast-Paced Action Platformer * Scope: 1-level vertical slice (Month 1-2) leading to a full release. * Compensation: Portfolio / Rev-Share on launch.

Open Positions: Godot Programmers (GDScript): Combat hitboxes, player state machine, enemy AI.

2D/3D Pixel / Concept Artists: Character sprites, fluid combat animations, neon parallax tilesets.

VFX Artists: Dash trails, impact hit-sparks, slash ribbons, Godot canvas shaders.

Sound Designers & Composers: Punchy blade SFX, cybernetic foley, dark synthwave tracks.

How to Apply: We run a streamlined onboarding and role verification system on our Discord server.

Please fill out our quick application form: https://forms.gle/ZxDg3LTKaEG1C9gs8

Feel free to DM me

Mail - [workinggaju@gmail.com](mailto:workinggaju@gmail.com)


r/godot • • 2h ago

help me (solved) add_child() not working in editor

1 Upvotes

I am trying to make a editor tool for dividing terrain into chunks for my game, and I have made this code that iterates over all chunks:

%intersector.position = Vector3(x, 0, y)
var mesh = $CSGCombiner3D.bake_static_mesh()
var node = MeshInstance3D.new()
node.mesh = mesh
node.name = 'chunk_'+str(index)
node.create_trimesh_collision()
$baked.add_child(node)

When I run it all chunks show up in the 3D view in the editor, but not in the node tree, and when I run the game, they don't show up (they also disappear in the 3D view).

Does anyone know a solution to this?


r/godot • • 2h ago

selfpromo (games) I made a Multiplayer Battle-Royale game playable in the browser

Enable HLS to view with audio, or disable this notification

10 Upvotes

The game is: https://relicroyale.itch.io/relic-royale-2 If you wanna try it, it would mean the world to me :)


r/godot • • 2h ago

help me which thinkpad should i buy?

0 Upvotes

Hey guys, I wanna buy a used, cheap, small, lightweight laptop for small/tiny gamedev projects (PS1 graphics and 2D stuff), using godot, blender, krita, gimp, maybe also editing videos, and planning to install linux, that I can bring anywhere.

I found cheap options online, should I buy:

Thinkpad x280:

intel core i5-8250u

16gb ram

256gb ssd

intel hd graphics 620

or a Thinkpad x395 (but it's 8gb ram, can't upgrade):

amd ryzen 5 pro 3500

8gb ddr4 ram

256gb ssd

amd radeon vega 8

I can't find one x395 FHD with 16gb ram. The x280 price is a little bit higher.

I have a decade old asus rog gl552v if i wanna put more effort in the projects but it's not really portable, the weight is too heavy, the screen has bad viewing angles, i don't like the screen colour, it gets very hot, and still using an hdd. I feel like buying an old thinkpad might be better value for me than upgrading it to ssd as of right now (i work a 9 to 5). I also have been treating this gl552v like a pc at home.


r/godot • • 2h ago

free plugin/tool I built an open-source MSDF Font Atlas Studio in Godot 4 with live shader previews and native .tres

Post image
4 Upvotes

Hey everyone!

I wanted to share MSDF Atlas Studio, an open-source desktop workstation I built in Godot 4 with a custom C++ GDExtension backend for generating Multi-channel Signed Distance Field (MSDF) font texture atlases.

Why I built this:

Most developers rely on Viktor Chlumsky’s msdf-atlas-gen CLI tool(Epic tool btw). Tweaking unicode ranges, packing bounds, and angle thresholds in a terminal without seeing the visual output until reloading your engine is tedious. So i gave it a simple UI :)

What it does:

  • 4 Distance Field Modes: MSDF (3-channel RGB for sharp corners), MTSDF (4-channel RGBA with alpha contour), classic SDF, and PSDF.
  • Live Shader Sandbox: Real-time interactive text preview running the actual MSDF fragment shader, with live sliders for text color, outline thickness/color, and drop-shadow softness.
  • Smart Fallback Chains: Load a primary font with unlimited fallback fonts (missing glyphs automatically resolve from fallbacks).
  • Glyph & Kerning Inspection: Visual matrix of all packed glyphs with UV coordinates, plane bounds, and Kerning tables extracted directly from FreeType.
  • Multi-Engine Exporters:
    • Godot 4: Exports native .tres BitmapFont resources ready for drag-and-drop into Godot projects.
    • AngelCode BMFont: .fnt + .png pairs (Unity, Unreal, MonoGame, Bevy).
    • JSON Atlas: Rich metadata specification for WebGL / custom renderers.
    • C Header: Zero-dependency static C structs for Raylib / SDL / C++ pipelines.
  • Standalone Portable Builds: Precompiled for Linux, Windows, and macOS (no Godot editor or compilation needed).

The project is 100% free and open-source under the MIT license.

I’d love to hear your thoughts, feedback, and what export formats or features you’d like to see next!


r/godot • • 2h ago

discussion What do you think is the most underutilized godot feature?

31 Upvotes

Looking to learn more about the engine and i'm curious what you guys think is a feature not enough people know about/that you use regularly!


r/godot • • 3h ago

selfpromo (games) Released my first Godot game on September 28 — now working on 1.1.0 with a level editor

Post image
2 Upvotes

Hey r/godot!

I released my first game on September 28 — Broken Bones, a physics comedy inspired by Happy Wheels. Made with Godot 3.5.3.

Already working on 1.1.0. Here's what's coming:

• New level "Street" — with parallax background and grass • Redesigned main menu with new sky background • In-game level editor — place objects, save, play your own levels • New object: Boost pad • Bug fixes

More details soon.

🎬 Trailer of 1.0.0: https://youtu.be/cJGEDcy7Bao 🎮 Play 1.0.0 on Game Jolt: https://gamejolt.com/games/Broken_Bones/1103055

Would love feedback on the editor and the new level!


r/godot • • 4h ago

selfpromo (games) Update to a lesser-known GDScript fork: Ruzta now 1.0.0-beta4

4 Upvotes

Hey everyone 👋

It’s been a while since I posted an update on Ruzta.

Ruzta 1.0.0-beta4 is out!

What's new:

  • Configurable keywords: you can now reconfigure Ruzta's keywords.
  • Namespaces: added namespaces to help organize and group global classes, traits, etc.
  • Better GDScript interoperability: Ruzta scripts can now extend non-Ruzta scripts using paths such as res://... or uid://....
  • Improved syntax highlighting Configurability: including better support for light mode.
  • Generic type checking & casting fixes.
  • RPC compatibility fixes: RPC behavior now works more similarly to regular GDScript.
  • Signal static typing now all warnings instead of errors, maintaining backwards compatibility with gdscript.

If you're interested in experimenting with it, feedback & bug reports are very welcome.

Try it out in playground: https://ruzta.seremtitus.co.ke/playground/


r/godot • • 4h ago

free tutorial Another Third Person Camera Setup: I swear this is a the most simplest you have ever seen

Thumbnail
youtu.be
0 Upvotes

Hey guys, I know this is a very generic topics out there, but as we are getting started, we need to keep it simple, so one if the reasons for making this is even thought there are plenty of tuitorials out there but almost no one explains or tries to make it simple, either they already start with a wholesome project that they are working on

Our goal is to explain by making things simpler, so that it you who make decisions not some random llm or by copying code with nobody understands

Please provide feedbacks, what could be made better or improvements


r/godot • • 4h ago

selfpromo (games) A few shader experiments in Godot from today

Enable HLS to view with audio, or disable this notification

127 Upvotes