https://medium.com/swlh/what-makes-godot-engine-great-for-ad...
https://medium.com/swlh/what-makes-godot-engine-great-for-ad...
Productive applications require extremely robust text editing, something that game engines don't spend a lot of time with. Stuff like selection, text input for non-English keyboards, IME popups, that sort of thing. Even RTL text display is usually minimally unsupported.
I also don't know of any game engine that supports multi-window display in any coherent way.
I can imagine IME support being integrated, but a giant pain, due to the wide variety of APIs across platforms, the fundamental disconnect in how text input is done in games vs. elsewhere, not to mention the "Linux wars": will you support ibus or fcitx?
So it requires someone to step up and do the work, and don't be fooled: it's a lot of work.
Looking at the github issues they seem to have made a lot of progress with non-English inputs. Again, not perfect but improving.
Godot 4 is adding multi window support. I would hesitate to judge it until it stabilizes but there's some hope there. It looks good from what we have seen so far.
The rate this engine is improving is incredible, i'm finding a lot of reasons to be optimistic.
Is it the right solution for all UIs? Clearly not but IMO the UI landscape is a mess at the moment for anyone who wants to be able to build cross platform applications. There aren't really any adequate solutions as far as I can tell.
It's not impossible, but apparently very hard.
Let's say that you're working on a 3d model viewer or some AR app.
In Godot, you can set an option to redraw only when something change like in UI libs (for e.g Godot Editor use this option)
However , I think one main aspect missing from UI libs is damage tracking (=redraw only the part of the screen that changed and tell the compositor to also only redraw that part).
In terms of architecture, Godot is all I want. I wish I could build general purpose apps with it. Everything is a node & just simple trees. Abstraction of everything you need over all platforms. GDNative let you access everything from any language.
I really wish I could build everything with Godot. I enjoy it so much more than web dev or android dev even for UI
Why can't you?
I mentioned this in the previous thread about this, people build general purpose apps in Unity all the time. And Godot's own UI is a Godot application. There may be some edge cases where it doesn't work, but considering the current standard for native applications is to wrap webapps in individual Chrome instances, I can't see Godot being subpar.
Electron/Web might eat lots of ram but I think the renderer is more optimised for UI and will use less CPU/Battery.
Also Godot has an internal architecture made for games which might be a bit overkill/less elegant for UI-only apps :
https://godotengine.org/article/why-does-godot-use-servers-a...
I'm not sure if the separation of logic and rendering in separate threads like that is the way you would build a high perf UI library
That article mentions one example, the Trello clone (frontend?), but there are others like in this Reddit article: https://www.reddit.com/r/godot/comments/a809ij/godot_for_app...
* The Godot editor itself: https://docs.godotengine.org/en/stable/getting_started/step_...
* GUI Toolkit: https://github.com/Quark-Toolkit/Quark
* Pixel art editor: https://www.orama-interactive.com/pixelorama
* Particle effects editor: https://benhickling.itch.io/blastfx
* RPG builder: https://www.rpginabox.com/overview/
* Fantasy map editor: https://www.wonderdraft.net/
* Brainfuck IDE: https://github.com/wmww/BrainfuckIDE
* 3D presentation editor: https://github.com/janparkio/3d-presentation-godotengine
I've looked in to this myself and noted the following:
* It's easy to compile out features you don't want (3D, physics, etc.): https://docs.godotengine.org/en/stable/development/compiling...
* While Godot has a small file size, it's Hello World memory usage is ~300MB, which I think is even more than a Hello World in Electron (perhaps fixable by removing features)
* There is a setting to stop UI updates when the window loses focus which means it doesn't chomp CPU/GPU while not in use
Game engines are designed around game loops executing code every frame and not around power efficient layout caching.
Orthrographic hierarchies are how UIs are usually laid out and its a mild pain to move to a system that's depth sorted, with custom shaders etc. You can do more but you need to think about more and its harder for the UI system to know what parts of the screen can be redrawn. Games usually just draw it all every frame.
Specifically for a game engines, they usually don't do things like OS integration for accessibility, subpixel font rendering, that sort of thing. In theory they could but usually game engines seem to roll their own system for this.
It's actually quite difficult to hack to make it not need 60+ fps updating; I've tried and was not really successful, wrote about some of the issues on reddit: https://www.reddit.com/r/cpp/comments/hcpoc0/how_to_add_a_gu...
"""
Unimplemented functionality
The following functionality is currently unavailable on the HTML5 platform:
- Threads
- GDNative
- C#
- Clipboard synchronization between engine and operating system
- Networking other than HTTPClient and WebSocketClient
"""
https://docs.godotengine.org/en/stable/getting_started/workf...
GDNative by definition is for native.
My game using C# exports to web fine, So that's working. Still a fairly huge download for a web game though, not really any worse than the Unity ones though.