Your experience with desktop runtimes?

Hi everyone,

There is this overview here. They all in one way or another provide a runtime that can execute your web code. Then they differ in whether they ship the entire runtime stack (e.g. Chromium) or whether they use what is there on the users’ systems (e.g. webview).

In comparing them and trying to choose one, I was thinking:

Building

Tauri, e.g., requires you to build binaries (couldnt find prebuilt). That means you need an entire additional build environment and will have additional build time (of a binary, not just a (web)-pack).

Code signing

What’s that? Afaik, this is a form of protection racket (albeit legal) where you have to pay money to Microsoft, and if not, whenever a user wants to open your executable there will be a giant error screen (“Smart Screen”) warning the user to open this executable. This error screen uses dark patterns to make granting exceptions as difficult as possible.

As far as I could research, Steam (maybe even itch.io) gets you a pass. But I am not there yet to test it.

Anyway, since code signing is based on trust (in some way; tldr), using prebuilt binaries of large open source projects, in my mind, this will increase the chance that the Smart Screen will give you a pass.

Misc

Nwjs is basically zero setup. You dump your web files into a dir and be done. Electron needs backend setup code (in js though).

Nwjs theoretically offers “code protection” in that it converts your js sources into some sort of binary package. But I cannot get this to work with a hello-world script.

Electron seems to be the biggest project. So getting help will likely be easiest here.


What do you think? How did you decide and what did you choose? If I remember right, @bitmo_games @phaselock @TiagoSilvaPereira @mise you guys are on Steam already, right? May I ping you for advice :smiley:

Best wishes
Joe

3 Likes

Hi, I used Tauri and all my tests passed without problems.

2 Likes

Seedborn is not on Steam, other projects are well…not web apps so can’t compare :man_shrugging:. Used Electron almost a decade ago, janky, huge files, works but I found it tedious to manage for a solo dev.

Setup my own domain + server and haven’t looked back since. No need to wait for 3rd party approval for every update, no need to lock to one userbase, no need to wrangle with user OSes/installers/anti-virus etc. YMMV.

Hope it helps, cheers!

2 Likes

I haven’t deployed any production projects with NW.js, Electron or Tauri yet, but I like NW.js and there’s also Electrobun which looks interesting. Capacitor looks good for mobile apps.

2 Likes

Electron works fine for me.. the only thing I haven’t gotten to work was Steam overlay on MacOS.

Also, don’t use sentry for Electron, it slows down the start up of your app tremendously and gives a huge amount of false positives.

1 Like

I use Tauri, and when you run it using “npx tauri dev” - it is auto updated on every save so you can quickly jump in and out of VR or Desktop app to test it, a bit like just using vite. Once I want a complete binary I can do a full build. It works surprisingly well.

One thing I have noticed though, and I am not sure if it is WebXR only problem. It was struggling to hitting refresh rates in PCVR (72 hz on my Quest 3), and the main reason was that Chromium engine in WebView2 (and Chrome in general) was being GPU throttled for power saving reasons. You have to go into Nvidia control panel and add special rules to WebView2 (for Edge that Tauri uses) to set the power management to max performance. I have been tearing whatever hair I had left for weeks until I found this fix. It seemed to be somewhat random to when I had a good WebXR day, it seems depending on your system your browser environment would be getting enough GPU time or not. This at least ensured I have stable 72hz in my setup every time I start it up. I wish WebXR wasn’t so niche and I am hoping Valve has some focus on that with their new Frame headset.

1 Like

Hi @Joe_Kerr , I hope you are well!

Unfortunately, I didn’t finish the game I was developing, so I didn’t get to publish it on Steam (I want to finish it at some point). My original idea was to use Electron, since I have a lot of experience with it. Currently, I’m working on another, simpler game using Babylon.js, and I’ll be creating the Steam page very soon. This time, I’m thinking of using Tauri or NeutralinoJS since the builds are smaller (~2 MB vs. ~200 MB). I know Electron and Tauri work well for Steam (there are a lot of published games), but I know that Tauri has some problems managing the Steam Overlay (because the GPU process runs separately while the Steam Overlay needs to run in the main process, something that can be forced in Electron but not in Tauri because it uses the system’s native WebApp). Therefore, I believe Neutralino will suffer from the same problem, but I’m thinking of simply abandoning the Steam Overlay, since a simple game with Electron and more than 200MB probably won’t perform very well, haha.

Since the Babylon.js team is from Microsoft, perhaps they could take a look at this post from the creator of Construct:

https://www.construct.net/en/blogs/ashleys-blog-2/trying-show-steam-overlay-1861

From what I understand, either Steam or Microsoft could address this Steam Overlay problem, greatly facilitating the lives of web developers who want to publish their games on Steam without having to bundle an entire browser.

Best regards, and have a great week!

5 Likes