Making (Non-Game) Software With Godot - Benjamin Oesterle - GodotCon 2024

Поділитися
Вставка
  • Опубліковано 23 гру 2024

КОМЕНТАРІ •

  • @btarg1
    @btarg1 Місяць тому +44

    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

    • @TheMattyStefa
      @TheMattyStefa Місяць тому +4

      Why didn't you use a ScrollContainer? Do you need something that handles a lot of nodes? Something like a RecyclerView?

    • @dugtrioramen
      @dugtrioramen 26 днів тому

      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

  • @dueddel
    @dueddel Місяць тому +14

    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.

    • @NoctorOnwood
      @NoctorOnwood 26 днів тому

      That's great! Can you share you experience about the sleep period?

    • @dueddel
      @dueddel 26 днів тому

      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. 😘

  • @grymmjack
    @grymmjack Місяць тому +4

    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.

  • @frankhuurman3955
    @frankhuurman3955 Місяць тому +9

    very helpful talk!
    hopefully the maintainers can implement a few of those "reinvent the wheel" features like the checkbox.

  • @dugtrioramen
    @dugtrioramen 26 днів тому +3

    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

  • @ZacharyHelm
    @ZacharyHelm Місяць тому +7

    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.

    • @MuffinMan_Ken
      @MuffinMan_Ken 29 днів тому +1

      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.

    • @brodriguez11000
      @brodriguez11000 27 днів тому +1

      @@MuffinMan_Ken Right, abusing a side-effect isn't a good thing.

  • @Zarocksx
    @Zarocksx Місяць тому +5

    Super cool talk

  • @Eliasdbr
    @Eliasdbr Місяць тому +4

    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

    • @wolfiechica
      @wolfiechica Місяць тому

      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

    • @dovos8572
      @dovos8572 23 дні тому

      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

  • @SiMeGamer
    @SiMeGamer Місяць тому +7

    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 :]

  • @elModo7
    @elModo7 23 дні тому

    I use godot mostly for UIs actually, so finding people doing the same is always pleasing.

  • @skeleton_craftGaming
    @skeleton_craftGaming Місяць тому +1

    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...

  • @skaruts
    @skaruts 5 днів тому

    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.

  • @theBSH
    @theBSH Місяць тому +28

    i have used winform and godot for ui and godot is much better.

    • @Beryesa.
      @Beryesa. Місяць тому +10

      Everything is better than winforms tho lol

    • @jmvr
      @jmvr Місяць тому +1

      ​@@Beryesa. even making a UI with Unity or Unreal would be better than WinForms lmao

    • @dukemagus
      @dukemagus 28 днів тому +2

      Winform's biggest perk is that it works. It might not work as you want, it might not work well, but it works.

  • @Thiagola92
    @Thiagola92 Місяць тому

    10:06 nothing happened after enabling debug canvas redraws and changing to mobile... I'm missing something?

  • @ewerybody
    @ewerybody 29 днів тому

    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...

  • @dukemagus
    @dukemagus 28 днів тому

    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

  • @MrUltyx
    @MrUltyx Місяць тому

    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
      @MrEliteXXL 26 днів тому

      Can’t you do a tab named “+” that when opened it creates a new tab?

    • @MrUltyx
      @MrUltyx 26 днів тому +1

      ​@@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...

  • @eliot-b8i
    @eliot-b8i Місяць тому +1

    does it mean i can build android app using godot? is it similar to flutter &/ another crossplatform frameworks?

  • @AlekseyLoykuts
    @AlekseyLoykuts Місяць тому +5

    I'm using Godot for simple photo manipulations app right now (add text bubble, stickers, logo etc.) and it's super easy

  • @ErikBod
    @ErikBod Місяць тому +2

    This motivated me to start making the ultimate meme maker

    • @ewerybody
      @ewerybody 29 днів тому

      As a standalone app? 🤔
      I just feel like meme maker screams "web-app" :D

  • @bc4198
    @bc4198 Місяць тому

    One of my favorite ideas! 🧠💭

  • @RandomGuyyy
    @RandomGuyyy Місяць тому +5

    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.

  • @_prothegee
    @_prothegee Місяць тому +1

    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

  • @ulrich-tonmoy
    @ulrich-tonmoy Місяць тому +4

    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

  • @RenderingUser
    @RenderingUser 24 дні тому +1

    Someone give us ui-node-only export templates already
    also, 2d-only export templates along with that too

  • @vasiliigulevich9202
    @vasiliigulevich9202 29 днів тому +1

    Coded business logic in C++. That's the main con.

  • @davidj3048
    @davidj3048 Місяць тому +1

    Perfect timing! I just started making an application today that is not a game.

  • @mrkaratedo
    @mrkaratedo Місяць тому

    🦁Como programador siempre es bienvenido ver nuevos avances!🦁

  • @GoblinArmyInYourWalls
    @GoblinArmyInYourWalls Місяць тому +1

    Im making android apps myself. Im making an app launcher currently

  • @YouSupPop
    @YouSupPop 2 дні тому

    I've made a voting system for my project in school using godot. I passed it

  • @ZyICjdUXAHCwLUDHlFk5yFVe
    @ZyICjdUXAHCwLUDHlFk5yFVe Місяць тому

    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.

  • @thatanimeweirdo
    @thatanimeweirdo 28 днів тому

    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.

    • @NoctorOnwood
      @NoctorOnwood 26 днів тому

      I think you won’t think so after you have used Unity’s 3 UI systems.

    • @thatanimeweirdo
      @thatanimeweirdo 26 днів тому

      @@NoctorOnwood UI Toolkit is by far the best UI system for a game engine so far (Besides Panorama for Source 2)

    • @NoctorOnwood
      @NoctorOnwood 26 днів тому

      @@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.

  • @flyingdogwithapencil
    @flyingdogwithapencil 27 днів тому

    For some reason I got an unreal engine ad...

  • @rechroniclePlays
    @rechroniclePlays Місяць тому +3

    some of software that I use made with Godot 🎉🎉

  • @nathanfranck5822
    @nathanfranck5822 Місяць тому +2

    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

    • @seannewell397
      @seannewell397 Місяць тому +2

      I hope more folks reach for tauri+solid as a web container. But Godot would be cool too!

  • @hbiblia
    @hbiblia 24 дні тому

    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.

    • @Cheetaqueue
      @Cheetaqueue 20 днів тому

      The game engine must have fast low-level api access to the system. GPU, HDD/SDD, network, IO devices, etc.

    • @hbiblia
      @hbiblia 19 днів тому

      @@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.

    • @angulinhiduje6093
      @angulinhiduje6093 7 днів тому

      ​@@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.

  • @i_dont_know_my_name
    @i_dont_know_my_name Місяць тому +4

    Yea,advance ui u need implement urself.

  • @lorenzozapaton4031
    @lorenzozapaton4031 Місяць тому +5

    Did the Godot Fiasco end?

    • @poleve5409
      @poleve5409 Місяць тому +6

      literally everyone forgot

    • @lorenzozapaton4031
      @lorenzozapaton4031 Місяць тому +3

      @@poleve5409 I hope not, these things are only a symptom of something larger.
      There is already a fork of Godot because of this.

    • @GoblinArmyInYourWalls
      @GoblinArmyInYourWalls Місяць тому +1

      ​@@lorenzozapaton4031 redot turned out to be a scam, lol

    • @GoblinArmyInYourWalls
      @GoblinArmyInYourWalls Місяць тому +12

      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

    • @martinrocket1436
      @martinrocket1436 28 днів тому +4

      ​@@GoblinArmyInYourWalls the dorks with the forks. They *were* the fiasco.