A mate is building a UI for an app using a game engine. At first, I was - WTF, but now, a few hours later, I think that there could be some merit in it. Imagine the experience of excel being implemented inside a virtual world. I’m not sure that there will be adoption, but it could be quite original.
Godot uses their own engine features for the GUI of the editor itself as you’d use to make a game itself with.
https://docs.godotengine.org/en/stable/about/list_of_feature...
> Godot's GUI is built using the same Control nodes used to make games in Godot. The editor UI can easily be extended in many ways using add-ons.
And they even go as far as to explicitly say the following:
> Godot's small distribution size can make it a suitable alternative to frameworks like Electron or Qt.
I’ve only used Godot for game development, not GUI stuff yet. (The game I started making doesn’t have any menus, I’m working on gameplay and level design first.) But I’m personally keeping a mental note in the back of my mind to investigate building bona fide desktop applications with Godot also, and not just games.
Also, if you’re going to make an application instead of a game, they have a special mode they recommend that you use:
> When creating a non-game application, make sure to enable low-processor mode in the Project Settings to decrease CPU and GPU usage.
https://docs.godotengine.org/en/stable/about/faq.html#is-it-...
I've been thinking about adopting Godot for just this purpose, mainly just hung up on community language support for Python which seems unfortunately stalled
+1 I think godot has a lot of potential here. You covered all the good stuff, I'll just add that in addition to everything you also get multi platform support for free - desktop, mobile, and web. Build once deploy everywhere (sound familiar? ;))
I think the only thing holding back adoption is that web devs are largely unfamiliar with gamedev. The control node and material styling is very different from html and css and would require brand new paradigms for team level development. If you're an ambitious solo dev though it's easy enough.
IIRC, the Tesla traffic visuals use Godot. The Rivian screens use Unreal Engine.
https://www.unrealengine.com/en-US/spotlights/rivian-brings-...
For truly novel UIs with high dynamism it is probably a good decision.
For anything else it is almost certainly more work for the dev and more resource-intensive for the system.
One thing I haven't seen anyone else mention is that a game engine is generally going to be re-rendering constantly, as part of the game/render loop. This is because in a game it is almost always the case that something is changing on screen at any given moment.
In a more "normal" app UI, most things are static, so having a render loop operate like that doesn't make much sense. So instead things are optimized for the static case – if nothing is happening on screen, resources are not being used.
Another difference is that UI code is often event driven. Games poll inputs each frame and update accordingly. What or when to render is never in question - everything, every frame for simpler games.
It really depends on your App and probably the game engine.
There's a reason why a lot of people use Electron for apps and it's because the amount of effort it takes to write HTML / JS and have a functional UI is very little.
It seems like you like the idea in order to implement a novel UI and I suspect then yes a game engine is a good idea. However, do consider the UX of your app. Excel is a spreadsheet because that is pretty much the best way to display tabular data. So if the novel UI isn't a better UX than an existing way you probably don't want to do it.
Excel's a nice example for a few reasons:
(1) it wants to be a bicycle for the mind, a simulation playground where you edit something things and the environment changes -- something a game engine could "excel" at
(2) it sucks in a whole bunch of ways, but it's hard to displace. People use it to do things with CSV files that somebody would use pandas for if they wanted to get the right answer. People use it to do things they'd be better off using Access or SQLlite. And then people use it to calculate things
(3) At this moment I'm making some simple models of businesses w/ Excel, one sheet is calculating the value of a comment on this site, roughly $600B evaluation, 7% equity stake, HN responsible for 5% of that value (brings in founders and employees) with a total of 50M comments, I get a eye-popping value of $50 per comment!
It's actually ugly in Excel, for instance I don't really want things on a grid, I want to make the calculation immediately clear as a graph, I just wish that this product
https://en.wikipedia.org/wiki/TK_Solver
had a bunch of sequels. If anybody can make the next thing I'd love to see it. It's tough because Excel comes with Powerpoint, Word and other tools in Office 365 so it seems free to people. Then there's that inferior Google Sheets.
That would make accessibility hard and you'd be excluding a lot of people who could've otherwise used your product https://en.wikipedia.org/wiki/Accessibility
> Imagine the experience of excel being implemented inside a virtual world.
This already exists, and is called EVE Online.
Check out !Boring Apps by Andy.works: https://www.notboring.software In one of his blog posts he talks about prototyping his apps in Blender & Unity (I think), but for the app itself he uses Apple's SceneKit
I've recently had a lot of fun/success with Dear ImGui (C++) -- not a game engine, but originally/partly meant for use in them. https://github.com/ocornut/imgui
A bank in the UK did this and the app was nearly unusable. They used Unity.
There were many problems:
- a bank app needs a fairly basic CRUD style UI, they had to build all of that from scratch.
- users knew OS patters, like the navigation stack, they didn’t stick with these things and users couldn’t understand the information hierarchy.
- they got too creative with UI elements and it wasn’t clear what was tappable, what wasn’t, what information was, etc
- the app was slow and took ages to update for things like new screen sizes
- their response to criticism reeked of hubris, they couldn’t accept that it was a bad decision, and it took them 5 years to back track and rewrite with standard UI components. This was deeply ingrained in the company culture, not the only bad technical/product/business decision they made.
There’s a reason why most game UIs suck. If you want to incorporate 3D elements into UI, the OSes provide their own frameworks for that sort of thing. We absolutely haven’t exhausted the design space of UI with the regular tools available.
The Blockhead Digital Audio Workstation uses Godot for UI: https://www.patreon.com/colugomusic
Here’s a text editor written with LÖVE: https://akkartik.name/lines.html
Thanks, yeah I've been using LÖVE for everything since I made this.
https://akkartik.name/freewheeling
https://akkartik.name/freewheeling-apps
Only way to live, IMO. I can't make networked apps yet, but that's coming soon to LÖVE.
Which engine? I've never seen an engine that makes UI really eaiser. Actually game studios pay quite some bucks to use HTML5 in games (e.g. Coherent Gameface).
There are cars that use Unreal Engine for the dashboard.[1] This is silly, but so is the electric Hummer 2.
There is a working IBM 1401 simulator written in Unreal Engine.[2]
[1] https://www.automotiveinteriorsworld.com/videos/unreal-engin...
Why not? WoW, for instance, could be a fantastic environment for online meetings & as a help desk/corporate hot spot. For example, a dungeon instance could be the place where all the attendees for a meeting could be allowed in & interact with each other while/after the event was over. The help desk would likely grab regular users as they would have a being of a sort to interact with. This could be done on a company-by-company level, or there could be many companies available in this way, with fast travel between them. It could be a double bonus if the visitors to the site could go on small quests while they wait, with some sort of reward system built in.
https://www.gather.town/ already does this, more or less, but with an old school rpg style.
It's actually got quite a few nifty features, but my team ended up not really using it. I particularly liked the "walking into a room automatically joins you to the audio channel" bit for meetings, but it's ultimately a bit of a gimmick.
Using a game engine for UI and making the style of the interactions the game-like are two different things.
Game engines are generally capable of creating hardware accelerated 2D UIs which could be great in some cases where highly dynamic UIs are desirable. But making a business app 3D for no reason is a different story.
The later is largely what "The Metaverse" as Zuckerberg sees it is trying to accomplish. Check out Horizon Workrooms and the like.
I've worked at a number of agencies over the years and at one point years back a client insisted on Unity for their mobile app because it worked cross platform out of the box. It was an unmitigated disaster because we were trying to fit a square peg in a round hole. Tens of thousands of dollars wasted.
Don't know if this is quite the same but I worked for a company on a React SPA that was essentially an event driven CAD system using the Canvas API. It was an absolute nightmare - there were a ton of unintended event loops and side effects. When I left one of the seniors was in the process of converting it to using a game loop under the hood which sounded like it was going to solve a lot of the issues but it took him a lot of time and effort to convince management to let him do it. Tbh, I think it was more a case of the app getting so slow and buggy that it was causing them embarrassment in front of clients which made them cave to his requests than his methods of persuasion.
That's basically what the Zed editor does, so why not?
Which game engine? I don't think using Unity to make a UI app is great if you don't need the game-y features. It's UI functionally isn't the best since their UI Elements package is not quite ready for production use in games.
Something like Dear Imgui can be very nice to work with though.
There's no technical reasons why you couldn't but I'd be hesitant to give up accessible UI controls and all the other bells and whistles that come with web and app stacks, especially the UI controls because people know how to use them, software knows how to read them and operating systems know how to style them. You'll be much more "on your own" within a game engine.
There are technical reasons, although in practice I'm not sure how important they are:
Game engine UIs are usually immediate mode, which means everything is rerendered in the game loop, 60 times a second or so. Dear IMGUI is the most well known example but I think Godot works the same way.
Other UI systems (the web platform being the most famous) are event driven. Which means there is a loop, but it's just listening for events like mouse clicks or timers, and the UI is only redrawn when something changes.
You mean like Flutter? Flutter is similar to a game engine in that it draws every pixel itself originally using Skia but now also using it's own custom render engine called Impeller on some platforms. So it can work. However using something like Unity to make a UI app has a whole host of problems, many of which other commenters have already mentioned: power/CPU, poor accessibility, difficult to implement things, etc.
I think the two main issues from this approach are increased battery usage on mobile devices, and accessibility issues with things like screen readers. I’d recommend giving Flutter a try. It is the easiest way I’ve found to make a cross platform app that works everywhere, and fulfills the two criteria I mentioned above
I haven't seen a game with proper font rendering on windows yet, let alone accessibility.
I'm shocked I had to scroll this far down before I saw accessibility mentioned.
I live in Thailand and I've seen _government software_ built in Unity. Please do not do this. Convention, accessibility, and feel, is simply not there.
Look at the apps you encounter, on your desktop, at work or at service counters (points of sale, terminals at work) etc. These can certainly use aesthetic design, but dynamic flashy stuff would be irritating for the user.
However, you could use game engines for interactive exhibits and demos.
It's like building an app with Electron, but worse. At least Electron has good font rendering and some accessibility and some OS integration.
I've been thinking about doing something sort of similar for a while now, and I've done a little bit of research into it.
Key takeaways:
* It's been done before.
* It can work just fine or even be quite good.
* There are caveats to it that you should be aware of.
* It can also come out really horribly.
So, TLDR, it's really not all that different from using any other tech to do a UI.
Glad I could help ;)
Stable Projectorz uses Unity for their app. https://stableprojectorz.com/
Check out ImHex, I think that's an example of where it works.
> Imagine the experience of excel being implemented inside a virtual world.
There's nothing quite like the optimism of a VR fanboy. Is there any other thing in tech that drives such ungrounded dreams?
It can make sense. A lot of in-vehicle visualizations in a Rivian are using Unreal.
https://www.unrealengine.com/en-US/spotlights/rivian-brings-...
I've used Unity for this purpose on a project 9 years ago. It had nothing to do with games, but it had a huge 3d visualization component, and the rest of the UI was pretty simple — so building the whole thing in a game engine just made sense.
Shhh stop giving my tricks away! (more fun: 3d only interfaces)
It will drain the battery a lot faster on a laptop or phone. And use more power and CPU on a desktop machine.
Game engines and their rendering models are usually doing work every frame by nature of their design. A retained mode, event based GUI doesn't need to.
That and you can basically say goodbye to hooks for accessibility, common/standard shortcuts, etc.
The power point is not true. Game engines are forced to be efficient and can use little power if the number of game objects they're managing is limited.
The power usage I see is: web browser running a document << game engine running a simple UI << web browser running a simple UI on wasm << game engine running a serious AAA game.
The accessibility point is very valid.
Not necessarily. By default they will continuously render frames but some are capable of skipping frames when nothing is changing. However this is a manual optimization to perform whereas using a proper UI framework would handle it automatically.
In general, people must make a choice between portability, and the breadth of optimizations.
For multi-platform builds, there are single code-base frameworks available:
For MacOS, Linux Gtk, and Windows native builds there are mature free libraries that allow both FOSS and commercial static linking:
Game engines are designed to solve a single set of use-cases for optimization, and portability is usually terrible outside the current windows release.
Best of luck, =3
"It's a UNIX system! I know this!"