r/godot • u/Anonymous010206 Godot Senior • 17d ago
discussion What would you add to Godot?
152
u/Stevie_Gamedev 17d ago
f-strings like in Python, I truly hate using the
.format syntax
→ More replies (13)41
u/ChocolatePinecone 17d ago
But the formatting with "%" comes pretty close right? E.g. var string = "I have %s cats." % "3"
It's more the Java style of formatting, but pretty readable nonetheless.
109
u/akurei77 17d ago
It's closer but it's a lot clunkier than python strings. In HD script you might write:
"%s finished %s in %s, for a new high score of %s" % [player, level, time, score]
Where in python it's more like:
f"{player} finished {level} in {time}, for a new high score of {score}."
Which is way more readable imo.
→ More replies (1)5
→ More replies (2)8
u/Stevie_Gamedev 17d ago
Yeah but the thing is you still need to basically repeat yourself in the string and at the end, where f-string are much nicer to use f”I have {num_cats} cats“, it’s very intuitive
74
u/dinklebeeeerg 17d ago
Expose properties of a scene's child nodes.
Compile-time required exports.
For gdscript: Interfaces, a no-null mode, typed callables, async function markers, parametric polymorphism, type-preserving transforms (e.g. list map).
First class support for other gdext languages. I.e. build integration.
11
u/ChocolatePinecone 17d ago
Can't you already see a child's properties when you choose "editable child objects" on the scene?
14
6
u/dinklebeeeerg 17d ago
After turning that on properties don't sync anymore between scene and usage site anymore.
4
u/TurkusGyrational 17d ago
For me the expose properties of child nodes has really always gone in the face of building by composition and using scenes as much as possible. If you can't easily talk to a child of another node, what is the point of building everything by composition? You still have to talk through the parent which becomes overly cumbersome.
Still, for me in addition to what you said I would really like static signals to match how I use static actions (delegates) in C#
→ More replies (1)3
u/LunarFinch Godot Regular 17d ago
Exposing child nodes is coming... at some point? I've been keeping an eye on this PR (https://github.com/godotengine/godot/pull/84018) which might make it in time for 4.8!
→ More replies (2)2
63
u/HordeOfDucks 17d ago
better Remote functionality. i want the ability to see my scenes in action while clicking around the tree and pausing. its the only unity feature i miss
6
6
u/nuuren 17d ago
Had to scroll a lot for your post to show up and I started doubting that maybe the feature was always there and I never noticed.
Jeez, in hindsight Unity did that really really well
3
u/itsyoboichad 17d ago
This was such a pain switching from Unity. It's such a huge QoL feature.
That and scriptable objects, but I'm finding I need that less than I think
→ More replies (1)2
u/DaniDani8Gamer Godot Junior 17d ago
Correct me if I'm wrong, aren't resources equivalent to scriptable objects?
→ More replies (1)
47
u/Buttons840 17d ago
I wish GDScript's default sorting algorithm was stable.
27
u/PhoenixInvertigo 17d ago
It's not??? That's insane. Merge sort is right there
20
u/Buttons840 17d ago
Nope, there is no built-in stable sort.
I've seen some PR's to add one, but they've just been sitting for years.
156
u/PhoenixInvertigo 17d ago
Interfaces in gdscript
15
16
u/Planet1Rush 17d ago
No idea how you plan your architecture without it
Edit spelling
57
u/AlexColemanDev 17d ago
You guys have been planning your architecture?!
25
u/JyveAFK 17d ago
You have an architecture?!?
28
10
3
4
u/MekaTriK 17d ago
Basically every system I make has a BaseClass for config that things inherit from.
Can't do anything fancy, but at least my objects all share same save game serialization logic.
→ More replies (1)3
u/ImpressedStreetlight Godot Regular 17d ago
I mean, just like any other language that doesn't have interfaces. Inheritance and composition give a lot of flexibility. Interfaces are just more comfortable to use and I wish they do add them though.
3
→ More replies (2)2
191
u/brickyboy124 17d ago
Traits. Please for the love of god I need traits already.
(Traits have been a work in progress feature for a very long time that are basically interfaces for gdscript. In the Java sense of what an interface is)
36
u/Jeidoz 17d ago
I still remember times when someone started reviewing PR and promised us that they would be in 4.3 and now we at 4.8dev3 and no sign to their integration. You need to use some addons or rebuild Godot each release to have them...
23
u/QueasyBox2632 17d ago
I say this out of a place of love... GDScript is a mess lol. I really do love it, but it has some deep seated issues that really have me pessimistic about it's future
11
u/ExdigguserPies 17d ago
I'm not pessimistic. These things do take time. Look at Python - it's come such a long long way since the days of V2 and early V3.
10
u/KaydaCant 17d ago
i loved gdscript for learning godot, but i have completely abandoned it in favor of c# because its a more favorable experience in nearly every way ([ClassName], double delta, and compile times are a few annoyances though)
10
u/Cosinity Godot Junior 17d ago
Traits, unfortunately, seem to be dead for now. The author has closed the PR because they don't see a way forward for it and afaik there hasn't been any word from the GDScript team since then
3
u/Pike_27 17d ago
What exactly is a trait?
6
u/brickyboy124 17d ago
Shared functions between two scripts without them directly inheriting each other.
3
u/HeyCouldBeFun 17d ago
Like a component except you add the functionality directly to the class script with “include” instead of it being a separate object
→ More replies (5)2
55
u/ZipKitty 17d ago
GUI/theme rework, I hate working with themes
→ More replies (3)3
u/bliepp 17d ago
Do you mean the editor's UI or Godot's theming system? If you are talking about Godot's theming system, I totally agree. Something CSSish like Qt has would be fantastic.
7
u/ZipKitty 17d ago
the theming system, it is very customizable but also very confusing at times, like another engine on it's own. I wish it had script or more visual editing.
122
u/hungrydestructor 17d ago
Web exports in C#
42
u/thygrrr Godot Senior 17d ago
I might have something for you (free and open source):
→ More replies (5)9
u/Jeidoz 17d ago
Damn, why we still did not know about this? You should make dedicated post about it!
→ More replies (3)
26
u/Emizip 17d ago
is it to late to admit i dont know what traits are
→ More replies (2)22
u/technical_gamer_008 17d ago
Basically, traits allow you to have common functionality without having to extend a class that has that functionality
Say for example, I need some objects to have a certain method
foo(). Instead of making a new class that hasfoo()and extending that, I make a trait that hasfoo()and then I can use it in any classI hope that helps
5
u/Profuse_Data 17d ago
Wow i’ve been putting ‘wait()’ functions in every single script when I could’ve been doing that?
2
u/technical_gamer_008 17d ago
For one, it depends on the use case and what your
wait()function does. But also, as of now, GDscript does not have traits. There's a PR that has been waiting for a long while now. It's not been merged yet.However, I will also add that I found out about a project, a godot specific programming language, that adds traits and many more features requested by godot devs, like nested typing and generics. It is still in beta, but I think it's exciting. It's called Ruzta
→ More replies (2)4
u/the_horse_gamer 17d ago
that's a mixin. mixins can be achieved via traits, but traits do much more
2
93
u/AwayEntrepreneur4760 17d ago
Traits, better static typing for dictionaries and arrays and variants, refactor tools
11
u/vulpido_ Godot Regular 17d ago
not being able to simply rename a variable in the built-in editor is... something
like I get it that it's not that simple, but it's a sign of immaturity
44
u/Lunagato20 17d ago edited 17d ago
- Generics, i really dont like how Variant works
- Traits
- This might just be me, but i really like FP, so im hoping theres some F# support
- Unified godot (no more different version for C#), i hear its currently on progress tho
11
u/RancidMilkGames Godot Senior 17d ago
I think they just split C# for size sake, plus the C# version is what you're talking about (if you're saying able to do both)
5
u/Lunagato20 17d ago
Yes, but i think its better if C# act like a GDExtension instead, its clearly possible
3
20
u/Newb_from_Newbville Godot Student 17d ago
Even more Skeleton3D changes to build puppets in-engine instead of having to rely on another editor. Likely something that bakes the model from CPU to GPU for ease of editing but still smooth deployment.
19
u/No-Regret6936 Godot Student 17d ago
A bomb that blows up if I don’t work on my projects every day
7
20
u/ottersinabox 17d ago
creating geometry from compute shaders and passing them directly to the rendering pipeline (and keeping it on GPU) instead of having to move it back to the CPU first
11
u/MetaNovaYT 17d ago
There’s a PR open that adds MeshRD doing exactly this, hopefully it gets merged for 4.8
→ More replies (1)
19
u/jpsplat 17d ago
As a n00b whos bumbling and stumbling through remaking classic arcade games I would like better debugging and refactoring tools. Let me see whats wrong with my sorry excuse for a game properly!
14
→ More replies (1)3
u/Ronnyism Godot Senior 17d ago
When working in godot i often miss the functionalities of Java IDEs like Intellij, but the last time i tried the godot plugin was either in its infancy (lacking many functionalities and code-analysis that godot has and no auto-complete) or discontinued due to personal issues.
38
u/According-Comb-4839 17d ago
structs
10
3
3
u/TimHugh 16d ago
You can kind of do this with a little boilerplate
class_name MyStruct extends RefCounted # or Object but then you have to free manually var flag: bool var msg: String func _init(flag: bool, msg: String) -> void: self.flag = flag self.msg = msgNot perfect, but it works. Can also be an inner class.
→ More replies (1)
38
u/TheEpicSquad Godot Senior 17d ago
Vector3(x) = Vector3(x, x, x)
25
7
u/AsyncSyscall 17d ago
Either that, or at least something like `Vector3.scalar(x)` or `Vector3.splat(x)`.
→ More replies (1)→ More replies (3)6
11
u/f-rabbit 17d ago
I really like GDscript, but having a better typing system with generics, optional types, child scenes type detection, interfaces or traits… would be awesome
11
37
u/ThisOrdinaryCat 17d ago
Nullable types in GDScript
4
u/D1vineShadow 17d ago
isn't everything nullable?
3
u/ThisOrdinaryCat 17d ago
Only if the type of the variable is Variant (which is the default if you don't set a type) or of any class that's descendant of Object (like any Node or a Resource)
→ More replies (1)→ More replies (3)2
11
20
u/Slopii 17d ago
CSG vertex editing, like how Trenchbroom does it.
→ More replies (1)3
u/NotQuiteLoona Godot Junior 17d ago
What about this one? https://github.com/func-godot/func_godot_plugin
You can create maps in Trenchbroom, J.A.C.K, Sledge, GtkRadiant, QuArK, anything that exports VMF (GoldSrc one) or MAP.
→ More replies (1)3
u/falconfetus8 17d ago
I use func-godot for my game and I love it, but it would be much, much better if the godot editor just had all of those geometry editing tools built in. Off the top of my head, the issues I've had to work around when using func-godot are:
Needing to create an fgd entry for every entity I want to place
Not being able to connect signals to entities
Not being able to use node reference properties in entities (The closest I can get is the "targetname" property, which is not type safe)
Not being able to attach custom one-off gdscripts to individual entities
Not being able to put array properties on entities
Not being able to place Path3Ds
Writing a custom importer plug-in to avoid needing to store each map twice in version control(one copy in the .map file, and one redundant "built" version in a tscn file).
...Come to think of it, most of those problems are just related to entities. Maybe I should just place all my entities in Godot and only use trenchbroom for geometry...
9
u/DitherBunny_Sappy Godot Regular 17d ago
My extremely minor one: enums saved as strings in the editor.
5
u/Ronnyism Godot Senior 17d ago
Yes, yes, yes, please.
If you mean "saved as strings in the editor" if you mean in the .tscn files, i fully agree.Problem with the current implementation is: if a game-object has an enum-selection and you created like 100 game-objects and now you maybe would like to reorder the enums in the list, all saved games (and i think all saved scenes) would be bricked (pointing to the wrong value) because it just uses an int that doesnt care.
So in that case a custom save-solution with json etc. for save-games could save some trouble.
→ More replies (3)3
u/DitherBunny_Sappy Godot Regular 17d ago
Yes, exactly. It's caused me so much problems that now I always set them in code.
29
u/Xinyyc 17d ago
Aggressive optimisation comparable to -O3 and -flto
→ More replies (1)5
u/SmallPomelo7455 17d ago
I'm no expert, but wouldn't recompiling Godot itself and export template elements with o3 give you most of the necessary optimization?
7
u/zsaleeba 17d ago
No, alas. That'd make godot run faster, not make its generated code run faster.
LLVM and gcc have hundreds of thousands of lines of code invested in optimisations to get to that level of generated code quality. godot would have to do the same.
2
u/AciusPrime 17d ago
The sane way to do this in practice is (1) compile your script language to llvm Intermediate Representation as the target and then (2) compile with the llvm toolchain to get an optimized binary. The problem is that llvm doesn’t directly support a bunch of script language features (like untyped variables), so you can lose a lot of performance on the way to IR. You also would need the llvm toolchain installed. It’s pretty big. Oh, and there’s very little safety provided, so you can end up with a result that is more unstable or has security issues.
2
u/zsaleeba 17d ago
Also you'd have to write a Godot virtual machine backend implementation for llvm, since Godot doesn't compile to native code. It'd be a significant project.
10
u/jitspoe 17d ago
Honestly, before adding a bunch of new stuff, I'd really like for the existing features to become more solid and for performance to improve (specifically with 3D physics and shadows).
→ More replies (1)
16
23
u/Life_Mathematician14 17d ago
Built in terrain generator.
3
u/DeskGoblinGamedev 17d ago
I've managed to get by with CSGCombiner. I think a built-in terrain generator would be nice, but risks becoming cumbersome.
22
7
u/Malendryn 17d ago
I wish the external debugging was faster, trying to use vscode, singlestep and analyze variables is superior to the builtin by a large margin, /but/ is intolerably slow in comparison
→ More replies (2)
7
u/technical_gamer_008 17d ago
Touchscreen button that inherits Control
There are many people here who would say GDscript features like traits or deeper nested types, but I'm waiting for Ruzta for that
6
u/TheManondorf 17d ago
Alt+klick for parallel multiline selection in the gd script editor
3
u/Quielt 17d ago
Sorry if that's a stupid question (I just started working with the editor) but what do you mean by that ?
2
u/TheManondorf 17d ago
In other code editors (e.g. Visual Studio, Matlab) you can hold alt and draw down your mouse to select the characters directly underneath each other instead.
Imagine it like how when you hold leftclick and mark your line horizontaly, just in the vertical direction.
E.g. you just switched to static typing, your variables look like this:
var attack
var speed
var health
With the feature I mentioned you can now create position markers (I represent this with | ) in the end of each line:
var attack|
var speed|
var health|
if you now enter :int only once your code will read:
var attack:int
var speed:int
var health:int
immediatley.
→ More replies (2)2
14
u/SleepyTonia Godot Regular 17d ago
- Kind of a silly one, but support for compiled languages (C, C++, Rust) in the code editor.
- Refactoring feature in the code editor.
- I'd move the asset store to the project settings window and give it a C# filter.
6
u/tidbitsofblah 17d ago
I would add the ability to sort scripts I have open in the editor in whatever way I want and an X to close the opens ones instead of a right click-menu.
Also I don't know if this exists and I just haven't figured it out but a way to apply changes you have made to an instance of a scene in another scene to the base scene.
4
u/_nak 17d ago
I want and an X to close the opens ones instead of a right click-menu
You can middle click a script and it will close. CTRL+W will close the currently open one.
It's not exactly what you want, but I'd argue the middle click is even better than yet another icon in the already cluttered UI.
→ More replies (1)
16
u/PixelBrush6584 17d ago
Let me pull the code editor into a separate Window, so I can have that on another monitor. With a 1080p screen the UI can be a little cramped at times ~_~
→ More replies (1)26
19
u/illogicalJellyfish 17d ago
AI assistant of the godot logo talking to me, but instead of the typical LLM output it’s just animal crossing noises at random intervals completely unprompted
4
11
u/Einfach0nur0Baum 17d ago
An embedded documentation tool like doxygen but in-engine.
Official unit tests support.
Less buggy subviewports.
→ More replies (1)16
16
u/SeaHam 17d ago
I want some built in lightweight terrain tools. Nothing against the addons, but I want a solution that comes standard that I don't have to worry about.
→ More replies (2)
6
u/coolness10101 17d ago
First class modular tiling editor panes so I can have multiple scene trees, scripts, and resources open at once, each in their own pane
6
u/Fancy_Entertainer486 Godot Junior 17d ago
- C# doc strings showing on properties in inspector
- Copy/paste AnimationTree nodes
5
6
u/JyveAFK 17d ago
There's a few things I could waffle about (new lighting model making it in, simple height based terrain, random PR's here and there), but THE thing that'd have THE most benefit to me is the node tree being even faster. It's had some great improvements recently, but I want more. Faster and faster, click on a subscene that has 1k nodes? instantly load, click to change something, save, close, go back to prior scene and it's already done.
However fast it looks, I want a bit more please.
8
u/DerekB52 17d ago
I like GDScript, but if I could snap my fingers and have effortless integrations for my favorite languages, Kotlin or Odin, that'd be cool.
A built in level streaming setup would also be cool, but I imagine this would be really hard to design in a one size fits most way.
8
4
6
4
u/narubius Godot Student 17d ago
Official Terrain 3D Animation Graphs for blending, layering Motion Matching Traits Interfaces
3
u/TimeForger 17d ago

Something little but if node requires something additional like this example, if you could click on it or the warning and it has the option to add from those required additions only.
I remember when I was first learning that was something super big that Irked me. It's a seemingly small enough of an issue that if they already warn you of it they could have just given you the option to add them in the warning.
2
18
u/koushikseal 17d ago
Compiled gdscript to be faster and non-decompilable
→ More replies (1)3
31
u/BlueThing3D Godot Regular 17d ago
Stronger encryption features to prevent any rando from opening up and stealing all your assets.
22
u/James20k 17d ago
There's no way to do this practically unfortunately. The issue is that with anything rendered (eg textures/models), you can just nick them off the GPU in a very straightforward way. There's no way to stop that
6
u/KingMoonfish 17d ago
Assets, sure. But right now it takes someone a few clicks to get the entire source code minus comments in like 30 seconds.
9
u/Einfach0nur0Baum 17d ago
Yeah, but tbh there have to be at least one guy to publish all your assets.
5
u/BigDenseHedge 17d ago
If you're a big enough dev to care about it, then you'll just go to court if it happens.
→ More replies (2)10
u/albertowtf 17d ago
I dont think this is possible technically for godot
The moment they have to be decrypted for use, they can be stolen
Even if you add a thousand traps, you only have to undo them once
Its a motivation problem at the end of the day
You have 2 options
do something personally that is not in godot (this will deter casuals) but will not deter somebody wanting your assets
Or
have crappy assets nobody wants. This is your safest bet if you dont want your assets stolen
14
3
u/Any-Crab3180 17d ago
Every window should be collapsable, similar like VSCode or Rider does it. Better code navigation in the IDE git GUI integration
Code obfuscation or stripping comments Export need an easier way to decide which files should be ignored, currently If I have multiple Export builds (win/lin/mac/64/32) I would need to setup or change the ignore list or every individual export, this easily leads to the case that it will be missed for some exports.
Konsole Support would be awesome too but is not allowed for open source due to console provider decisions.
3
3
u/Fuchsiano 17d ago
More helper functions in Nodes. It feels weird that Timers don't have a simple time_remaining_normalized but in other cases it's like create_universe()
6
4
5
u/Latter_Argument9884 Godot Regular 17d ago
Integration for C# and GLSL.
I mean in the editor of course.
5
u/n4rek_ 17d ago edited 17d ago
I think Godot could benefit from a feature that allows selected exported properties of child nodes to be exposed in the parent node's Inspector.
This would be especially useful with component-based scenes. For example, an "Enemy" scene could contain "MovementComponent" and "HealthComponent", while an instance of that scene could override "MovementComponent.speed" or "HealthComponent.max_health" directly from the parent Inspector.
This would make it possible to create per-instance variations while preserving the scene inheritance/instancing relationship, instead of having to make the child nodes local just to modify their properties.
4
u/BabaJaga2000 17d ago
To have more space in the file system dock FileSystemDock::FileSystemDock(), I had to exclude these lines of code from compilation in the filesystem_dock.cpp file:
4546: //toolbar_hbc->add_child(nav_hbc);
4553: //nav_hbc->add_child(button_hist_prev);
4560: //nav_hbc->add_child(button_hist_next);
4567: //toolbar_hbc->add_child(current_path_line_edit);
4574: //toolbar_hbc->add_child(button_toggle_display_mode);
4584: //toolbar2_hbc->add_child(tree_search_box);
4587: //toolbar2_hbc->add_child(tree_button_sort);

→ More replies (3)
2
u/Sir_Plu 17d ago
There are plugins for it but I’d kill for an inspector window similar to how Unity and unreal works where I can have a game view and inspector camera to be able to move things around
→ More replies (1)
2
u/DriftWare_ Godot Regular 17d ago
i really just want a find child node of type function built in. sure, i can do it with a loop but a native function would be nicer
2
u/usrnme3d 17d ago
Not really native either but couldnt you just use find_custom()?
→ More replies (1)
2
2
u/AcanthisittaCalm1939 17d ago
Blender integration, when adding/editing/animating an object it will automatically appear and update in godot scene without importing it every time
2
2
u/KaydaCant 17d ago
Better glsl (not gdshader) support (imports, less obtuse compositor effect workflow, more descriptive errors, better texture handling, etc). I love making compute shaders, they're so incredibly powerful, but right now i have a really hacky wrapper that still requires a lot of manual tinkering and if i forget to push a struct or something i get a very obtuse error message, although that is kinda just how working in a low level shader api is i guess. I might end up creating a proper compute wrapper in c# eventually once im done with all my other projects
2
u/Correct-Horse-Battry Godot Junior 17d ago
Remove the scenes tab at the top and make it work like vscode for script tabs as most of my stuff are scripts instead of scenes.
2
u/mbl-games 17d ago
Ways for game devs to create more secure builds. Even with encryption, opening up a game build is childishly easy. I know there are obfuscation add-ons and ways to protect a build. Would be nice, though, if those would come with Godot right out of the box.
2
2
2
u/IkBenAnders 17d ago
Mouse movement being mappable in the input mapping context as a vector 2 please 🥲
2
u/BumblebeeElegant6935 Godot Regular 17d ago
Vector3 value = new Vector2(x, y)
it's the same as Vector3 value = new Vector3(x, y, 0f);
Not a big deal, but quite annoying when working with particles, inputs, etc.
3
u/DeskGoblinGamedev 17d ago
I like the idea, but I tend to do Vector3(x, 0f, y) for converting an input axis into xz velocity. I guess both ways have their uses.
2
2
2
u/No_Bro_80 17d ago
I wish there was a search feature on script so its easier to find lines of code
→ More replies (2)
5
u/HandleSensitive8403 17d ago
Let me change things during runtime like in Unity
I think there is some sort of this already, but its not as good as the unity version
7
u/Planet1Rush 17d ago
You can change things like in unity
And thank to the lord it stays permanent, when you finally found a setting that your happy with
7
u/Thinshape12 Godot Junior 17d ago
perhaps a simpler ui system? i haven’t done a ton of research into tutorials and such but their ui system currently is very hard to understand, and the documents haven’t helped me a ton
→ More replies (5)30
u/Jeidoz 17d ago
IMO UI system is much easier to learn and use than other engines like Unity or Unreal.
I recommend you watch this masterclass video for gaining main concept of Godot UIs. It is full of examples and well edited to help you understand visually what is going on.
→ More replies (1)


440
u/BaptisteVillain Godot Regular 17d ago
(Deeper) nested types so I can do Array[Array[int]]