I've had to make custom control nodes for my game, "reinventing the wheel" just to have a scrollable list node. This talk raises some good points about Godot's limiting UI control nodes, we should really be working to improve the state of UI! Overall love the idea of making apps in Godot, especially if they have 3D elements!! Some easy PRs for future consideration: - on scrolled signal for scroll containers - swap checkbox option - custom tooltip positioning
Actually scrolled signal already exists but it's in the scrollbar, which you get with get_v_scroll_bar(), and the value_changed signal since it's a range slider The only downside is you can't connect from the editor, only code, since the scrollbar nodes are hidden/internal there
I also made a few tools for myself that I use in my daily life at work, for instance. One of them is a time tracker tool (based on which I write invoices to my clients for how long I worked on their projects that they hired me for). For that time tracker tool however I not only activated the `low_processor_mode` but I also dynamically change the value of the `low_processor_usage_mode_sleep_usec` field in the project settings depending on the application being focused or being in background. Because I once recognized that my application is eating surprisingly much CPU time when actually being idling around in background. So, my application now recognizes whenever it loses focus (e.g. when the user switches to another program or when he minimizes the software) and it instantly throttles the CPU usage (by increasing the sleep time between frames using that said setting, you can find it in the `OS` class, by the way). The value will be reset as soon as the application gets back the focus. Long story short, in order to lower the CPU consumption even more, especially if your non-game software is in background, I can recommend to adjust the "Low Processor Mode Sleep µsec" value.
Hi @@NoctorOnwood, in coincidence I published a (really small) plugin recently. Search for "Idle Energy Saver" in Godot's AssetLib. It's the exact same code that I am using in my time tracking tool, I just extracted it into a plugin a few days ago to be able to share it. The source code is MIT licensed, you can have a look at it. Don't get a shock, though, it's more documentation than actual code, the code itself is only a bunch of lines. 😅 Since you asked for my experience with it, I can only repeat myself: I'm using it with a time tracking tool that I once built. The tool is running all day long on my Macbook when I am at work (most of the time without having focus and therefore with CPU usage being throttled by the plugin). I never really close the tool unless I restart my Macbook (which also happens only once every few weeks). It's running fine and not causing any issues for me. Feel free to try it out and tell me. Either open an issue on GitHub if you got any problems or be invited to search for my "⚡ Idle Energy Saver" post on Reddit and reply to it. Hope this is the answer you expected. 😘
Thanks for the talk. One option that wasn't discussed was using add-ons for extending/customizing things. In example, the habituary app could improve things for others by making the scroll container that was customized as an add-on for others to use. By taking this approach, we can help each other make things better. Granted there will always be exceptions, but I was surprised that in the talk this wasn't mentioned. The ecosystem for tools and add-ons is well made and plentiful. There is no reason we couldn't do the same for UI components, etc.
For the scroll signal, it's in the ScrollBar, not scroll container So get_v_scroll_bar().value_changed, since scroll bar is just a range slider And in fact you probably didn't even have to recreate it because there are theme properties for the scroll bar. The grabber is a stylebox, which you can just set as a StyleBoxEmpty if you don't want them
Exhibit 1 with right-to-left support sounded like an easy first PR so I checked annnd... Godot already supports it! The commit is 4 years old so it's not a new feature. On your CheckButton node, scroll down to Control > Layout, expand that and override Layout Direction with Right-to-Left.
That feature is meant for supporting RtL languages like Arabic, so while it does swap the order of the checkbox and the text, it also reverses the anchors and places the icon at the end rather than the beginning.
As an App developer, I've been tempted to make something in Godot, but I think a major feature that Godot doesn't have out of the box is a robust navigation between screen
There are definitely solutions to this, just you have to look for them. Its one of Godot's larger hurdles, but as it is becoming more used, it gets better with time. This one is pretty customizable, you can dream up any number of tween properties to plug into something like this and the world is your oyster: ua-cam.com/video/2uYaoQj_6o0/v-deo.html
it's actually super easy. the trick is to use the .hide() and .show() funcitons to open and close screens. (hidden nodes don't receive input or get processed) so for example my main menu is always ready and only in .hide() in the tree. any sub menu/screen just hides the screen from before and shows it back when it deletes itself. or hides itself and opens another sub screen with that method alone you can make very complex button menues that go pretty deep into sub stuff. for games it can be done the same way if memory isn't an issue. hide the main world scene when you enter a small sub scene and that's it. when you exit it you show the main world again, adjust the player placement and enemies if needed and move on
Actually we've been seeing a few applications. Built-in Godot [material maker comes to mind] 4:06 part of why I think godot is so good for application development is exactly that...
Godot takes a bit to load up and takes up too much memory, but other than that it's actually quite good for apps. I think it's generally a whole lot easier to work with immediate ui frameworks (like Dear Imgui), but Godot's UI comes with some major advantages too. One that's quite relevant to me is the TextEdit/CodeEdit nodes and the syntax highlighting tools, because one of my app projects will have some code editing in it (already has a tiny bit). So Godot was an obvious choice.
I wonder what the executable file size turns out to be!? So I'm looking into making tiny apps with dialogs and Progress bars. PySide is awesome but humongous...
Is there an easy way to decouple the app logic from the UI scenes? It still feel "weird" to add a bunch of dummy nodes just to plug multiple scripts and making a big singleton to carry everything is harder to debug
Here are some issues I have found with the control nodes: * The Editor has a Plus next to the tabs to create a new scene, when you use the tab container there is no way to add a Plus like that. * Tool-tip I wish you could change the default Tool-tip node from Label into a RichTextLabel so BBCODE works and you can make colored text and tables in it without having to give every node a custom tool-tip. * The PopupMenus of MenuButtons are very sluggish when you move between submenus until they close one submenu and open another.
@@MrEliteXXL Sure, there are lots of other methods of creating something functionally similar, but I wanted the same simple plus button without the tab theming around it. As a workaround for now I just add a button to the last tab in the row with a plus icon in it. Its a bit of extra work to keep it always in last place as the user can add/remove tabs, but it works. Still wish the whole godot uses godot ui for the editor was more completely exposed to the user, so this would just work and look as it does in the editor...
I've had plenty of occasions where I've thought, "I could just make this simple UI app in Godot". It would be a small, single .exe file and it has every UI element you could want with a Theme Editor.
Camera device able to acces on Apple devices, Out that, people might need some media library Current pr now has native dialog The next great things prolly something really important for native interactions
For crossplatform development game engine are really viable as you can build for any OS from single codebase specially light Engine like godot But since they are not specifically made for app dev some feature what we get by default from these framework might not be available but i think godot should focus in this area too it can become a viable crossplatform app dev tool
I recently created a password manager using Godot. Because, well, all other crossplatform UI frameworks really didn't appeal to me much. With Godot, I can package it all into a single executable. My manager is open source but I haven't opened the repo up to the public yet. I may yet do that. At some point in the next few months.
I think the biggest flaw with Godot's UI system is easily the stupid complexity of the theming system. It's actually quite hard to learn and understand it beyond the node overrides and it drove me nuts.
Electron apps are for web devs wanting to make apps, and now we have godot for game devs, go figure! Electron is still a good option given you get access to a more "complete" language and a super hardacore ultra battle tested UI framework. Really though, it matters what you are comfortable with and how your brain works
Giving too much freedom in a game engine can be dangerous. If the engine allows for creating software with direct system access, it could lead to the creation of malicious tools. A game engine should focus exclusively on game development and, possibly, the production of videos or movies if desired. However, a game should never interact outside its project folder, except for saving and loading related files, such as .sav files.
@@hbibliait's open source, a malicious user will always have access. I hard disagree that its godot job to handicap the user. People who want to create mallard will find tools to do so.
What fiasco? You mean when all the dorks got mad on Twitter and a bunch of low rate nothing youtubers tried to capitalize on it? That lasted a few days. Redot turned out to be a scam, too
I've had to make custom control nodes for my game, "reinventing the wheel" just to have a scrollable list node. This talk raises some good points about Godot's limiting UI control nodes, we should really be working to improve the state of UI!
Overall love the idea of making apps in Godot, especially if they have 3D elements!!
Some easy PRs for future consideration:
- on scrolled signal for scroll containers
- swap checkbox option
- custom tooltip positioning
Why didn't you use a ScrollContainer? Do you need something that handles a lot of nodes? Something like a RecyclerView?
Actually scrolled signal already exists but it's in the scrollbar, which you get with get_v_scroll_bar(), and the value_changed signal since it's a range slider
The only downside is you can't connect from the editor, only code, since the scrollbar nodes are hidden/internal there
I also made a few tools for myself that I use in my daily life at work, for instance. One of them is a time tracker tool (based on which I write invoices to my clients for how long I worked on their projects that they hired me for).
For that time tracker tool however I not only activated the `low_processor_mode` but I also dynamically change the value of the `low_processor_usage_mode_sleep_usec` field in the project settings depending on the application being focused or being in background. Because I once recognized that my application is eating surprisingly much CPU time when actually being idling around in background. So, my application now recognizes whenever it loses focus (e.g. when the user switches to another program or when he minimizes the software) and it instantly throttles the CPU usage (by increasing the sleep time between frames using that said setting, you can find it in the `OS` class, by the way). The value will be reset as soon as the application gets back the focus.
Long story short, in order to lower the CPU consumption even more, especially if your non-game software is in background, I can recommend to adjust the "Low Processor Mode Sleep µsec" value.
That's great! Can you share you experience about the sleep period?
Hi @@NoctorOnwood, in coincidence I published a (really small) plugin recently. Search for "Idle Energy Saver" in Godot's AssetLib. It's the exact same code that I am using in my time tracking tool, I just extracted it into a plugin a few days ago to be able to share it.
The source code is MIT licensed, you can have a look at it. Don't get a shock, though, it's more documentation than actual code, the code itself is only a bunch of lines. 😅
Since you asked for my experience with it, I can only repeat myself: I'm using it with a time tracking tool that I once built.
The tool is running all day long on my Macbook when I am at work (most of the time without having focus and therefore with CPU usage being throttled by the plugin). I never really close the tool unless I restart my Macbook (which also happens only once every few weeks).
It's running fine and not causing any issues for me. Feel free to try it out and tell me. Either open an issue on GitHub if you got any problems or be invited to search for my "⚡ Idle Energy Saver" post on Reddit and reply to it.
Hope this is the answer you expected. 😘
Thanks for the talk. One option that wasn't discussed was using add-ons for extending/customizing things. In example, the habituary app could improve things for others by making the scroll container that was customized as an add-on for others to use. By taking this approach, we can help each other make things better. Granted there will always be exceptions, but I was surprised that in the talk this wasn't mentioned. The ecosystem for tools and add-ons is well made and plentiful. There is no reason we couldn't do the same for UI components, etc.
very helpful talk!
hopefully the maintainers can implement a few of those "reinvent the wheel" features like the checkbox.
For the scroll signal, it's in the ScrollBar, not scroll container
So get_v_scroll_bar().value_changed, since scroll bar is just a range slider
And in fact you probably didn't even have to recreate it because there are theme properties for the scroll bar. The grabber is a stylebox, which you can just set as a StyleBoxEmpty if you don't want them
Exhibit 1 with right-to-left support sounded like an easy first PR so I checked annnd... Godot already supports it! The commit is 4 years old so it's not a new feature. On your CheckButton node, scroll down to Control > Layout, expand that and override Layout Direction with Right-to-Left.
That feature is meant for supporting RtL languages like Arabic, so while it does swap the order of the checkbox and the text, it also reverses the anchors and places the icon at the end rather than the beginning.
@@MuffinMan_Ken Right, abusing a side-effect isn't a good thing.
Super cool talk
As an App developer, I've been tempted to make something in Godot, but I think a major feature that Godot doesn't have out of the box is a robust navigation between screen
There are definitely solutions to this, just you have to look for them. Its one of Godot's larger hurdles, but as it is becoming more used, it gets better with time. This one is pretty customizable, you can dream up any number of tween properties to plug into something like this and the world is your oyster: ua-cam.com/video/2uYaoQj_6o0/v-deo.html
it's actually super easy.
the trick is to use the .hide() and .show() funcitons to open and close screens. (hidden nodes don't receive input or get processed)
so for example my main menu is always ready and only in .hide() in the tree.
any sub menu/screen just hides the screen from before and shows it back when it deletes itself. or hides itself and opens another sub screen
with that method alone you can make very complex button menues that go pretty deep into sub stuff.
for games it can be done the same way if memory isn't an issue.
hide the main world scene when you enter a small sub scene and that's it. when you exit it you show the main world again, adjust the player placement and enemies if needed and move on
I'm working on a few software apps and I find Godot to be great for it.
Some really nice tips!
Thanks for the talk :]
I use godot mostly for UIs actually, so finding people doing the same is always pleasing.
Actually we've been seeing a few applications. Built-in Godot [material maker comes to mind]
4:06 part of why I think godot is so good for application development is exactly that...
Godot takes a bit to load up and takes up too much memory, but other than that it's actually quite good for apps. I think it's generally a whole lot easier to work with immediate ui frameworks (like Dear Imgui), but Godot's UI comes with some major advantages too. One that's quite relevant to me is the TextEdit/CodeEdit nodes and the syntax highlighting tools, because one of my app projects will have some code editing in it (already has a tiny bit). So Godot was an obvious choice.
i have used winform and godot for ui and godot is much better.
Everything is better than winforms tho lol
@@Beryesa. even making a UI with Unity or Unreal would be better than WinForms lmao
Winform's biggest perk is that it works. It might not work as you want, it might not work well, but it works.
10:06 nothing happened after enabling debug canvas redraws and changing to mobile... I'm missing something?
I wonder what the executable file size turns out to be!?
So I'm looking into making tiny apps with dialogs and Progress bars. PySide is awesome but humongous...
Is there an easy way to decouple the app logic from the UI scenes? It still feel "weird" to add a bunch of dummy nodes just to plug multiple scripts and making a big singleton to carry everything is harder to debug
Here are some issues I have found with the control nodes:
* The Editor has a Plus next to the tabs to create a new scene, when you use the tab container there is no way to add a Plus like that.
* Tool-tip I wish you could change the default Tool-tip node from Label into a RichTextLabel so BBCODE works and you can make colored text and tables in it without having to give every node a custom tool-tip.
* The PopupMenus of MenuButtons are very sluggish when you move between submenus until they close one submenu and open another.
Can’t you do a tab named “+” that when opened it creates a new tab?
@@MrEliteXXL Sure, there are lots of other methods of creating something functionally similar, but I wanted the same simple plus button without the tab theming around it. As a workaround for now I just add a button to the last tab in the row with a plus icon in it. Its a bit of extra work to keep it always in last place as the user can add/remove tabs, but it works. Still wish the whole godot uses godot ui for the editor was more completely exposed to the user, so this would just work and look as it does in the editor...
does it mean i can build android app using godot? is it similar to flutter &/ another crossplatform frameworks?
I'm using Godot for simple photo manipulations app right now (add text bubble, stickers, logo etc.) and it's super easy
This motivated me to start making the ultimate meme maker
As a standalone app? 🤔
I just feel like meme maker screams "web-app" :D
One of my favorite ideas! 🧠💭
I've had plenty of occasions where I've thought, "I could just make this simple UI app in Godot". It would be a small, single .exe file and it has every UI element you could want with a Theme Editor.
Camera device able to acces on Apple devices,
Out that, people might need some media library
Current pr now has native dialog
The next great things prolly something really important for native interactions
For crossplatform development game engine are really viable as you can build for any OS from single codebase specially light Engine like godot
But since they are not specifically made for app dev some feature what we get by default from these framework might not be available but i think godot should focus in this area too it can become a viable crossplatform app dev tool
Someone give us ui-node-only export templates already
also, 2d-only export templates along with that too
Coded business logic in C++. That's the main con.
Perfect timing! I just started making an application today that is not a game.
🦁Como programador siempre es bienvenido ver nuevos avances!🦁
Im making android apps myself. Im making an app launcher currently
I've made a voting system for my project in school using godot. I passed it
I recently created a password manager using Godot. Because, well, all other crossplatform UI frameworks really didn't appeal to me much. With Godot, I can package it all into a single executable. My manager is open source but I haven't opened the repo up to the public yet. I may yet do that. At some point in the next few months.
I think the biggest flaw with Godot's UI system is easily the stupid complexity of the theming system. It's actually quite hard to learn and understand it beyond the node overrides and it drove me nuts.
I think you won’t think so after you have used Unity’s 3 UI systems.
@@NoctorOnwood UI Toolkit is by far the best UI system for a game engine so far (Besides Panorama for Source 2)
@@thatanimeweirdo In the time I used Unity, at least there were still a lot of things it couldn't do, and I had to use two other UI systems.
For some reason I got an unreal engine ad...
some of software that I use made with Godot 🎉🎉
Electron apps are for web devs wanting to make apps, and now we have godot for game devs, go figure! Electron is still a good option given you get access to a more "complete" language and a super hardacore ultra battle tested UI framework. Really though, it matters what you are comfortable with and how your brain works
I hope more folks reach for tauri+solid as a web container. But Godot would be cool too!
Giving too much freedom in a game engine can be dangerous. If the engine allows for creating software with direct system access, it could lead to the creation of malicious tools. A game engine should focus exclusively on game development and, possibly, the production of videos or movies if desired. However, a game should never interact outside its project folder, except for saving and loading related files, such as .sav files.
The game engine must have fast low-level api access to the system. GPU, HDD/SDD, network, IO devices, etc.
@@Cheetaqueue I’m talking about the user who will use the engine: they don’t need to write files outside the project or execute system commands.
@@hbibliait's open source, a malicious user will always have access.
I hard disagree that its godot job to handicap the user.
People who want to create mallard will find tools to do so.
Yea,advance ui u need implement urself.
Did the Godot Fiasco end?
literally everyone forgot
@@poleve5409 I hope not, these things are only a symptom of something larger.
There is already a fork of Godot because of this.
@@lorenzozapaton4031 redot turned out to be a scam, lol
What fiasco? You mean when all the dorks got mad on Twitter and a bunch of low rate nothing youtubers tried to capitalize on it? That lasted a few days. Redot turned out to be a scam, too
@@GoblinArmyInYourWalls the dorks with the forks. They *were* the fiasco.