To have an overlay in a non-Steam (or another launcher with an overlay) game, you have to add every single game as a shortcut to get the overlay. This makes it frustrating for people who want an overlay in every game, but don't want to fiddle with another launcher's overlay. So a built-in Playnite overlay with the time, a web browser and #1264 integrated would be super useful.
I think using Firefox (or a version of it) would be a good idea for the browser. Gecko is very fast.
@PopeRigby Playnite already uses CefSharp, why introduce GeckoFX as second dependency for the same tasks? Also, CefSharp claims to have superior performance.
Why help the Chromium monopoly? Also, you could probably used a very stripped down version of Gecko for better performance?
CefSharp is by far more mature project with superior WPF integration (at least it was when I was integrating it into Playnite), which is critical for Playnite.
Overall don't expect in-game overlay any time soon since it's quite complex feature and I don't have necessary OpenGL, DirectX and Vulkan knowledge to implement it reliably and efficiently (and currently I don't have enough time learn it, although I would like to). Somebody else would have to do it.
@PopeRigby That's opinionated. I'm not necessarily saying that CefSharp is faster than GeckoFX. It would just take a tremendous amount of work to use it, because Playnite already uses CefSharp. If anything, this should be made a seperate issue, since it's not much related with in-game overlays.
I'll admit I don't know much about web rendering engines. I was suggesting Gecko because it seems to be very fast and Chromium has a monopoly on the engine market.
If you do go down the Chromium path, please use ungoogled-chromium since it removes the tracking and all the google spyware
The best way to go for this in my opinion would be to implement a way to use the steam overlay for all games in a similar approach to this https://forums.launchbox-app.com/topic/43142-steamlauncher/
Mantaining, bug fixing and developing for all the different Graphics APIs would be a nightmare, why not just use something that already exists and is developed by another party and has all the features people want? An exclusive Overlay, while a good idea, would be a waste of resources considering Crow is almost the sole developer of Playnite.
Launching all games via Steam would come with some serious disadvantages (mainly in terms of play time tracking). I also don't like an idea of some Playnite feature being directly tied to another launcher (unless it's a game import).
I also don't like an idea of some Playnite feature being directly tied to another launcher (unless it's a game import).
Yeah. Also, Steam's overlay isn't that good. An open source overlay would be better. How difficult would this be to develop? I'm working on learning some Python and I could take a crack at it at one point.
Yeah I agree, an exclusive overlay would be the best option. I was just thinking that developing a new one from scratch would be fairly difficult, maybe you would need a dedicated developer focused exclusively at least for a while in the overlay and with enough knowledge of Graphics API to make one and mantaining it. I mean, games can run in vulkan, the different DirectX versions, OpenGL and that means a whole lot of issues. I don't know anything about coding but that's just my guess.
@darklinkpower It might be worth to take a look at existing projects which already utilize multiple Graphics API hooking.
ImGUI contains a bunch of examples, excluding the actual hooking
ReShade's code contains pretty much everything what's needed
I'm not exactly sure how would hooking work in a managed process. Would a library such as EasyHook be enough to accomplish this or it would be needed to implement a native helper binary?
Mumble has an open source overlay. I haven't ever taken a look at it, but could it be used for reference?
It would be cool to have the ability to close the game when you launch the overlay. Also have the ability to load/save state