r/MoonlightStreaming • u/Alarming-Algae-6816 • 9d ago
Eclipse/Umbra: couch co-op by streaming two PCs to one screen (free, open-source Aurora/Apollo fork, running on webOS, Windows and Linux)
Enable HLS to view with audio, or disable this notification
I am excited to be releasing a project I've been working on with Claude and a few other AI models for a few months: Eclipse/Umbra, couch co-op re-engineered. Built as a fork of Aurora and Apollo, themselves forks of Moonlight (via Moonlight TV) and Sunshine, it is available to download for free, or to be taken and combined into your own fork or folded into current Moonlight and Sunshine forks.
If you are like me, then you've played through games like It Takes Two, Split Fiction, Castle Crashers and Nobody Saves the World and found the pickings getting slimmer and slimmer as game devs don't build co-op into their games anymore, expecting you to play online, which, while fine most of the time, falls short when you want to go back to the feeling and simplicity of playing on the couch together. Eclipse/Umbra lets you turn any game into couch co-op, be it multiplayer games or just two completely different games at the same time.
Unlike wonderful community projects such as Nucleus Co-Op, which need to support each game individually and deal with the hardware constraints of devs building games to run per PC, you can just open a stream on your client (currently supporting webOS, Windows and Linux) with two PCs acting as hosts instead of one, like with regular Moonlight and Sunshine streaming, choose if you want a vertical or horizontal split, assign your controllers and start. It is as if you have two half-resolution monitors that you can use for anything on your client device/display. Of course, in turn, it comes with the downside of needing two gaming PCs (and a copy of the game for each), and you will want your networking infrastructure to be streamlined to reduce latency as much as possible (all Ethernet and avoiding bottlenecks like routing everything through one 100 Mbps port, etc.), but with two PCs and a clear connection, the experience is hard to beat.
About the video: it's Halo: CE Anniversary from MCC (The Silent Cartographer), with each player's PC in its own half of the screen (Also sorry about the bad aim it has been a long time since we played Halo). It was recorded from the Windows client, not on a TV. I'm not able to capture my TV's output. The LG webOS app runs the same co-op mode (my own primary setup is an LG G5 on webOS 26).
For anyone already running Sunshine or Apollo/Vibepollo: Umbra is available for Windows and Linux (tested on Windows 11 only very basic testing of Linux) and installs in place of Apollo, so back up your config and pairings before switching, Vipepollo is treated an update so it should keep your config but back it up incase. Eclipse still does normal one-host streaming too.
Due to the limits of the hardware I own (two primary NVIDIA gaming PCs and one cobbled-together AMD computer from older hardware), I could not do the level of testing that I personally prefer. I expect that some combinations of hardware or software versions are going to cause issues, so please report any issues on the Eclipse or Umbra GitHub issues with the logs attached (Settings → About → Keep diagnostic logs, then Share logs) so I can refine out the edge cases that I couldn't anticipate or test. Or of course you are welcome to directly contribute to the GitHub repos as well.
Please find more information and the download links through the project hub: https://preceptorofmagic.github.io/Eclipse-Umbra-Project-Hub/
2
2
u/DiplomaticlyImmune 9d ago
Can you have one of the PCs play a game natively and then player 2 is streaming into that same PC?
1
u/Professional_Map2992 9d ago
Isso seria ótimo, eu tenho 1 PC Gamer na Sala ligado na TV e 1 PC Gamer no Quarto, no meu caso eu teria que fazer stream do PC do quarto para o da Sala
1
u/Shadyfurball 9d ago
This. I think this would be the most effective way to do this.
Either way it’s great solution. Nice!
1
u/Alarming-Algae-6816 9d ago
Yes, you can have the same pc be a client and host, just have both Eclipse and Umbra on the same pc and select the pc itself as one pc for co-op. But I am still working on making it work flawlessly. I haven’t been able to solve a problem of controller ownership. Some apps like Steam take ownership of controllers and you can’t take them back so you want to send that controller and its inputs to the streamed pc but the inputs still happen both.
1
u/Opening_Proposal8857 7d ago
I develop FocusFix for local game-window input, so this ownership problem caught my eye. I haven't tested your host/client arrangement. I'd isolate it with one physical pad: fully exit Steam, test both windows, then repeat with Steam running and change only that game's Steam Input setting. Does the local game receive the physical pad while the remote host receives a virtual pad, or are both reacting to the same virtual device? Those are different problems; focus changes alone may not isolate device visibility.
1
u/Alarming-Algae-6816 7d ago
If I close Steam and everything else that takes ownership first, then open the stream and take the ownership to then create the virtual pads it would work.
But I’m greedy and don’t consider that a valid end user solution, how would the user know what applications are currently taking ownership. whatever I do needs to seamlessly take the ownership over and pass a virtual pad back for whichever pc had controllers assigned a problem I need to keep picking at. To make it more annoying Opus 5.5 flags me doing so as essentially trying to make malware (forcing ownership over control devices) so I have to use Opus 4.8 for most of the work on it.
1
u/Opening_Proposal8857 6d ago
Agreed — closing Steam is a diagnostic, not a usable setup flow. Your result helps narrow down the startup-order problem. For regression tests I'd include Steam already running, Steam launched after the stream, a pad disconnect/reconnect, and stopping the stream while the local game stays open. In each case, the useful check is that one physical press reaches only the assigned player and that Stop restores normal local input. I haven't tested your implementation, and I can't promise FocusFix solves that device-ownership layer. A small visible physical-pad → virtual-pad → destination status would also make failures much easier for users to report.
1
1
1
1
u/nougatbyte 9d ago
I had a dual GPU VFIO Proxmox System wired to a screen and a beamer, regularly cloned my gaming VM including a Game SSD with qcow (games dont take double the space) to play non-couch coop games with one computer (Secondary player streamed audio via moonlight to his smartphone with headphones)
This would have completed the setup
1
u/Alarming-Algae-6816 9d ago
That is such a cool setup, I assume by the 'had' in there you don't use it anymore which is such a shame but I can see it being a little less then seamless. If you end up using Eclipse/Umbra let me know how it feels compared to dedicated on system hardware instead of streaming.
I'm also guessing you used moonlight for the audio to fix the echo problem, I've pretty much fixed the audio issue, the audio version in the video is actually quite out of date to the release I've got it working really well gating the duplicate audio.
1
u/nougatbyte 9d ago
In that setup audio and video was completely separate between VMs there was no echo.
Yeah I scrapped it since it was a pita to troubleshoot. Early in the boot process of the host all GPUs where disconnected from the host and reconnected to the VMs so if there was any problem that prevented the host from booting up there was no (easy) way to get any output
1
u/Alarming-Algae-6816 8d ago
For all those that end up downloading and trying Eclipse/ Umbra it would be great to know if you have it working on hardware or software versions outside my own. That way I can update the known supported hardware.
Of course let me know if you have an issue instead and attach the log file and I should be able to quickly resolve it.
1
u/RedSensei 8d ago
Does this support HDR on Linux hosts as well? I'm considering trying it out on CachyOS, but I see you only built it for Ubuntu - any chance for a flatpak release as well?
1
u/Alarming-Algae-6816 8d ago
Alright I'll give it a go making Umbra flatpak, I did Ubuntu because that was what I could test, so I'll release it on the website as experimental and you can let me know if you have any issues
1
u/Alarming-Algae-6816 4d ago
I’ve now released the Umbra flatpak version on the site, for HDR the fix can’t be apart of flatpak so I’ve made a fix for a bunch of different versions of Linux that can be downloaded and installed. For CachyOS I can’t test it directly because my pc’s have secure boot on so while it should work I couldn’t confirm directly.
1
u/stooobsy 6d ago edited 6d ago
Finally a mention of nobody saves the world, i freaking loved that game and no one seem to have played it.
Think you could get this working with an android phone(screen mirroring) and a pc(emulator) as the 2 screens
1
u/Alarming-Algae-6816 6d ago
The only problem with Nobody saves the world was it wasn’t a longer game. It is so great and while it comes up in co-op games lists I don’t ever see people mentioning it which is so sad.
On the Android idea, screen mirroring wouldn’t work I need a bunch of specific things supplied by the host. This is not just two streams being decoded, I am composing two half’s of a single decode job (have a look at the information on the site if you’re curious).
So really what you are asking for is Umbra on mobile where you don’t use the phone at all and just use it for games that support controllers. Potentially there is also a way to have a choice of still using the touch screen controls on the phone. That might be possible but would be a big build item if no one has made a host on mobile before. Either way I am currently maxing out my tokens on a HDR supported Linux flatpak wide compatibility Umbra for another request so I need to finish that first. I’ll have a look at the feasibility of this after that.
1
u/KaramTNC 5d ago
This is cool and all, but why another fork?
It is really not helpful to make a niche unique feature but keep it in a separate fork when the upstream branch receives way more support and features that your fork would need.
Im getting rather tired of open source developers just deciding to willy nilly fork the repo and make a whole new repo instead of focusing on implementing it into the existing repo.
You could get this merged into Vibepollo for example.
1
u/Alarming-Algae-6816 5d ago edited 5d ago
An update to Aurora was actually the initial plan but there are a few reasons why I felt it had to be a fork:
- The main reason fork was a need for a combination of a custom client and host. Communicating that requirement through someone else project where they only use a client and then making both sides releases stay in line would be a significant hurdle.
- In order to make Eclipse work there is a lot of fine tuned variables and components, composing two half of a stream to be one decodable signal took me months of testing and adjustments (On the site there is a project history at the bottom of the first page and a detailed project history on the development tab if you're curious), expecting another projects owner to maintain that complexity is unreasonable, I have left it up to them if they want to merge Eclipse into their own forks which they are welcome to do.
- Lastly the project I would actually contributing would be Aurora which is specifically for WebOS, I would either have to be duplicating my work contributing to multiple projects to support other OS's or have not supported them at all.
On Vibepollo as an example the major of the work is on the client side so Vibepollo could never be the supported project except as a replacement of Umbra where they would have to decide to make every user download and install a custom encoder in order to be able to work with a client they don't have a part in.
1
u/Alarming-Algae-6816 4d ago
I have now updated the Linux version of umbra to be a flatpak with wider support. It also supports HDR but that is a seperate fix that you either need to use one of the fix files I made for some select versions or apply the fix yourself. Information is on the site.
5
u/bubsterboo 9d ago
Do you have to use your host software Eclipse? Can you do split screen gaming with your client Umbra and two Vibepollo hosts?