Comment by Lucasoato

10 hours ago

Just to let you know, CEF was used for Riot and League of Legends client as well [0]. The results haven't been nice, but I'm not aware if this was a problem with the CEF technology itself or other component/processes are to be blamed.

[0]: https://www.riotgames.com/en/news/architecture-league-client...

When the new client was built, microservices were the hot new buzzword.

The new client is some weird plugins/services based architecture. Things that'd barely warrant their own class in a boring OOP-based UI framework are instead now "isolated" services. The reality of this isolation being that if one piece breaks, the whole UI becomes unusable anyways. Dozens of things that in another app would've been just a simple synchronous call now behave like remote procedure calls and messages, forcing all the complexity of distributed systems into a local application for no reason.

That's why it runs like ass, breaks if you look at it wrong, and your CPU draws more power when using the client than when playing the game at 200FPS.

CEF is + has been the de-facto standard when you have a native app and want to do a web UI.

It's not the only option, but it's the most mature with the largest amount of docs + stack overflow questions, so it's a "safe" choice.

If you peek into the native resources files of most games/desktop apps, you'll find a good portion of them bundle + use the CEF dll.

Also Spotify. I believe Spotify was one of the earliest adopters of CEF, maybe the first major adopter?

The desktop app was originally a native C++ app, but they switched to CEF around 2011-2012. (It caused a very noticeable drop in performance!)

Both Steam and Battle.net use CEF for their UI as well. And IMO they are on 2 ends of the "nice to use" from the implementation side (Steam being a sluggish hell and B.net being nice). Though then again B.net is only for Blizzard games, so they can also optimise for the limited set games.

  • > Steam being a sluggish hell

    news to me. Been using steam since it launched. Never noticed it being sluggish

    • You haven't? Steam has been a miserable experience for years. Great way to make a monster gaming rig replicate the eMachines 1998 experience.

On the gaming side, last I checked Steam's client was using CEF too and it doesn't get widespread blame for anything.

No shortage of games using it for in-game browser stuff, too.

This is more a function of how mismanaged the project was at Riot (the iron client days, choosing Ember, etc.) which led to the current state of the launcher.

I regularly install and uninstall the league client on Mac based on how I play that game (require fresh installs to raise the playing cost) and their client really sucks. Even freshly installing it, the client inhibits and hijacks mouse clicks from the full screen game when it's open. It took me months to figure out I would have to minimize the game, open and minimize the client (separate app) open, and then clicks would sometimes properly return.

Before that I was closing both and playing a game of roulette. By the the time my game was working, I may have already been reported for being afk and the game ended. Edit: other bugs have included starting to download the game and then signing in afterwards (their UI doesn't stop you) and then download progress disappearing, perhaps hanging, and you having no way to know it for a 40gb file unless over an hour has passed and you check disk size and then realize the client doesn't know how to load it. Start over and do a fresh install again, clear cache etc because their cache of the client still thinks somethings being downloaded even though it's not. Also having chat permanently off, results in weird glitches with friends requests and being unable to add new friends.

Horrible experience. But since the game is so optimized for addiction and dark patterns these days, and sunk cost, its a game I find myself returning to every once in a while.