Games on Whales - Stream multiple desktops and games from a single host (games-on-whales.github.io)
from abeltramo@lemmy.world to selfhosted@lemmy.world on 11 Jul 2024 12:33
https://lemmy.world/post/17448833

After 3 years in the making I’m excited to announce the launch of Games on Whales, an innovative open-source project that revolutionizes virtual desktops and gaming. Our mission is to enable multiple users to stream different content from a single machine, with full HW acceleration and low latency.

With Games on Whales, you can:

Interested in how this works under the hood? You can read more about it in our developer guide or deep dive into the code.

#selfhosted

threaded - newest

entropicshart@sh.itjust.works on 11 Jul 2024 12:58 next collapse

This looks awesome and something I’ve been hoping to do for a few years. Can’t wait to try this on my home server.

abeltramo@lemmy.world on 11 Jul 2024 13:29 collapse

Thanks! Let me know how it goes!

mrvictory1@lemmy.world on 11 Jul 2024 13:04 next collapse

I tried to do sth similar with limited success using Steam remote play. This is great but I have 2 questions:

  • Did you look into memory deduplication?
  • Is client software sunshine or custom software?
abeltramo@lemmy.world on 11 Jul 2024 13:28 collapse

Great questions!

Did you look into memory deduplication?

For the Steam library I suppose? There’s been some discussions around it both in Discord and Github #83 #69 It’s something that I should definitely research further but I’d really like to address it even if it’s just something that might be done outside of our container… Would you like to help us?

Is client software sunshine or custom software?

Wolf is an implementation of a full Moonlight backend from scratch; there’s has been many reasons for this but mostly it’s because Sunshine has a lot of global and intertwined state and it would be very hard to add support for multiple independent users. I try to contribute upstream where possible; for example I’ve helped merging our custom library for virtual inputs so that users of Sunshine could also benefit from the new virtual joypad implementation and support for Gyro, Acceleration and so on…

mrvictory1@lemmy.world on 11 Jul 2024 14:22 collapse

For the Steam library I suppose?

I meant RAM deduplication. duckduckgo.com/?q=linux+same+page+merging&t=fpas&…

For on disk deduplication, Steam supports user-specified locations for installing games and dependencies like Steam Linux Runtime. 2 users can theoretically use the same Steam library at the same time. To evade issues, auto updates should be disabled in the Steam clients. Steam doesn’t support completely disabling updates afaik, the best is setting update period to 3.00-4.00 AM. DXVK cache files must be located outside the Steam library folder. Otherwise if 2 people play the same game with Proton at the same time, cache files may be corrupted. (the default is the folder with game exe) Info on changing cache file location: link

kolorafa@lemmy.world on 11 Jul 2024 15:20 next collapse

Does it support multiple screen/displays?

abeltramo@lemmy.world on 11 Jul 2024 15:22 collapse

It does! It’ll automatically create new virtual displays on demand when a new client connects and it’ll match the client resolution and framerate.

poVoq@slrpnk.net on 11 Jul 2024 18:39 collapse

Is there also a way to simulate splitscreen with that?

abeltramo@lemmy.world on 11 Jul 2024 19:02 collapse

Not yet, but we are working on it!

Wuttin@lemmy.ml on 11 Jul 2024 23:53 next collapse

Looks awesome! Any idea if this will run on WSL?

interdimensionalmeme@lemmy.ml on 12 Jul 2024 00:46 next collapse

How so you force steam to run multiple instance of the same game ?

Or just multiple different games at once?

princessnorah@lemmy.blahaj.zone on 12 Jul 2024 04:09 next collapse

As far as I can tell, it’s creating container VMs that have Steam installed inside separately.

ErwinLottemann@feddit.de on 12 Jul 2024 05:13 next collapse

still steam prevents you from running more than one game at once from one account. can’t start vampire survivors on the deck and play manor lords on the other pc using the same account. family sharing and using multiple accounts should work, though 🤔

princessnorah@lemmy.blahaj.zone on 12 Jul 2024 05:35 next collapse

Yeah, I think that’s the general idea. They are seperate instances of Steam that could be signed into different accounts. So yeah, if you’re doing multiplayer of one game, each account would need to own it. That would be the exact same limitation at a LAN party anyway. This just lets you host said LAN party on a single beefy box, and use thin clients for each gamer, like an RPi4, a tablet or even an Apple/Android TV.

kambusha@sh.itjust.works on 12 Jul 2024 05:40 collapse

I believe this is akin to an open-source version of Stadia or Geforce now. Essentially, you have a powerful server that can be used by multiple users to play their own games. So, along with a couple of friends, you could purchase a powerful server, and then connect to it with a weak home computer.

abeltramo@lemmy.world on 12 Jul 2024 07:06 collapse

Well said! That’s exactly the idea!

fruitycoder@sh.itjust.works on 12 Jul 2024 06:10 collapse

It looks they are just containers. No hardware or kernel emulation needed.

princessnorah@lemmy.blahaj.zone on 12 Jul 2024 06:34 collapse

That doesn’t necessarily seem to be the case:

<img alt="https://kroki.io/plantuml/svg/eNplUEtPwzAMvudXWOWcf4CQEI8eoAIxIQ7TDqF1R0QaR07GQ4j_TuNlWyputr-H7S–Wx8Mmwl6mgJ59GmVvh0CY5-M3zpUapxhhOYyBGd7kyz52MCPAlivEpppk6tbyzjS10b9Hvkv5MYGzpzdvqVXt8O9pI2JZxGyyK7y0mgTsSh7R7sh89YdkRdl7dhhNGXzTXsvBg8BfSnbx2cY2H4gx1p0h-zRFdn1UydYuRy01hfF7PjCYlh45zKqrz3R_2Oq7gq-t6vnmvN_GasyqeqKUKWhxAm0w1GgQwCH4oQs8lh080kDffpMkkD-ACxkpww=" src="https://kroki.io/plantuml/svg/eNplUEtPwzAMvudXWOWcf4CQEI8eoAIxIQ7TDqF1R0QaR07GQ4j_TuNlWyputr-H7S--Wx8Mmwl6mgJ59GmVvh0CY5-M3zpUapxhhOYyBGd7kyz52MCPAlivEpppk6tbyzjS10b9Hvkv5MYGzpzdvqVXt8O9pI2JZxGyyK7y0mgTsSh7R7sh89YdkRdl7dhhNGXzTXsvBg8BfSnbx2cY2H4gx1p0h-zRFdn1UydYuRy01hfF7PjCYlh45zKqrz3R_2Oq7gq-t6vnmvN_GasyqeqKUKWhxAm0w1GgQwCH4oQs8lh080kDffpMkkD-ACxkpww=">

abeltramo@lemmy.world on 12 Jul 2024 07:06 collapse

I’m not sure what you are referring to but in the chart Mesa and Kernel layers are shared between the running applications and Wolf in a single host, no VMs involved. One of the main reasons behind the project was to allow exactly this so that you wouldn’t incur in the big penalty hit that incurs in GPU splitting

princessnorah@lemmy.blahaj.zone on 12 Jul 2024 07:23 collapse

Ah okay, thank you heaps for clarifying :) That’s awesome that you’ve been able to limit the overhead like that, I’m excited to test it out!

abeltramo@lemmy.world on 12 Jul 2024 07:33 collapse

No worries! Let me know how it goes, any feedback is highly appreciated!

abeltramo@lemmy.world on 12 Jul 2024 07:03 collapse

As others have pointed out below it’s going to run multiple separated instances of Steam with the limitations that Valve impose (there’s not much we can do there). This project is not limited to Steam though, you could easily run another session from a different device with something like Lutris or Pegasus.

zer0squar3d@lemmy.dbzer0.com on 12 Jul 2024 03:35 next collapse

Why MIT license and not GPL variant?

acockworkorange@mander.xyz on 12 Jul 2024 11:18 collapse

I’m really curious about the motivation behind such permissive licensing too.

The project is yours, you can always distribute a commercially licensed version of it regardless. GPL or any other license will never be a hindrance.

The only thing a permissive license does is allowing everyone else to issue commercial versions of it without even sharing source code.

princessnorah@lemmy.blahaj.zone on 12 Jul 2024 05:49 next collapse

Does this automatically use nvidia-patch in the container drivers to unlock as many NVENC streams as possible? I believe, from their documentation, that it’s possible to use the patch with docker, with an unpatched host.

Otherwise, is this something that could be implemented? I’m happy to submit a feature request if needed :)

abeltramo@lemmy.world on 12 Jul 2024 06:58 collapse

The patches aren’t included by default because I’m not sure about the legality of them and I really don’t want to get into troubles over this. I should research a bit more into this though.

Mountain_Mike_420@lemmy.ml on 12 Jul 2024 05:59 next collapse

This sounds awesome but not sure it would apply to my use case. Maybe you could elaborate.

What I want is to have 1 pc be a host for all the tvs in my house (4, master bedroom, guest room, office, and living room) each room has a video output and a usb cable with a hub that has keyboard and mouse and maybe a controller for games.

So far what I have is all the displays are mirrored and the keyboard and mice and joysticks work in each room but all the displays show the same thing.

It would be rad if each one was a vm and had its own front ends so you could watch plex in one room while someone plays Dave the diver in another.

abeltramo@lemmy.world on 12 Jul 2024 07:16 collapse

Sounds like this is exactly what this is capable of: you run Wolf on one beefy machine, and then you connect to it from multiple clients to play games or run a full desktop remotely!

couch1potato@lemmy.dbzer0.com on 12 Jul 2024 06:26 next collapse

Please submit a pre-built docker image to the unraid app store!

probableprotogen@lemmy.dbzer0.com on 12 Jul 2024 06:52 next collapse

Just what I was looking for! Good work, can’t wait to try this out.

binomialchicken@lemmy.blahaj.zone on 12 Jul 2024 12:19 next collapse

Does the server have to run headless, or can one person still run games locally on it while another has a remote session? That is, would I be able to play on the monitor/mouse/keyboard directly attached, while my partner has a session on a laptop?

abeltramo@lemmy.world on 12 Jul 2024 14:18 collapse

Yep that’s perfectly possible, the sessions that will run under Wolf will be completely isolated from the host. Besides, that’s how I run it on my desktop dev machine!

Banthex@feddit.org on 17 Jul 2024 18:24 collapse

This is something i have to test with Fedora bazzite on my Ubuntu distrobox.

Lifebandit666@feddit.uk on 12 Jul 2024 14:15 next collapse

I’ve passed my display through to a VM in Proxmox for transcoding and now I can’t get the GUI for that VM.

Is this something that would allow me to connect to that VM on another PC and use a virtual desktop?

If so, I may have to have a play with it. I mean I’m happy away using SSH but why not have UI if I can?

abeltramo@lemmy.world on 12 Jul 2024 14:20 collapse

Yep, this is one of the main reasons why I started this project in the first place: I wanted to stream games from the same VM where Jellyfin is running.

Upronn@lemmy.world on 12 Jul 2024 17:43 next collapse

Excellent work! I am glad to see this project coming along nicely.

I tested it a while back and was looking forward to updates. I have a few questions:

Is each “game entry” in moonlight a shared instance? If a player loaded it up, would they share save files with others that have already played? Also what would happen if two players loaded the app at the same time?

How would I go about making a generic linux desktop from a given Linux distro?

abeltramo@lemmy.world on 14 Jul 2024 09:34 collapse

Is each “game entry” in moonlight a shared instance?

Quite the opposite, at the moment each Moonlight client will have a completely isolated session and they can play different games. This obviously defeats co-op which is something that I’d like to work on by adding proper user management and a remote UI in the next release.

How would I go about making a generic linux desktop from a given Linux distro?

In our latest images we have default support for Sway, you could easily expand that base Dockeer image with all the apps you need or make a different image with the DE that you’d like to use. The project is very open ended and only a few base components are needed in order for any image to be streamed to a remote client.

TMP_NKcYUEoM7kXg4qYe@lemmy.world on 14 Jul 2024 12:22 collapse

It’s probably a skill issue but don’t really know how to setup desktop streaming. I’ve tried

[[apps]]

title = “Desktop”

[apps.video]

source = “pipewiresrc capture-screen-cursor=true capture-screen=true”

But it just shows black screen.

abeltramo@lemmy.world on 14 Jul 2024 14:49 collapse

Might be worth to open up an issue on Github or a thread on Discord. I haven’t tested pipewiresrc but there’s probably some clue in the Wolf logs. Besides, have you mounted the host XDG_RUNTIME_DIR, passed the right env variables and so on?

For streaming the host desktop Sunshine might be a better fit btw…