DuoStream / Duo

An HDR-compatible multiseat streaming solution based around RdpWrap, Sunshine, Moonlight, and a variety of custom driver and library patches
419 stars 1 forks source link

[PARTIALLY SOLVED] Controllers Locking up on Multiple Instances (Depending On Games) #129

Open warlordianx3 opened 4 months ago

warlordianx3 commented 4 months ago

I've been using the new Patreon Version of duo 1.4.6 Here's what I notice Tested on GTA V and Tekken 8 I can use controllers independently without locking up on different instances

Armored Core 6 or Diablo 4 will cause a glitch to lock the other controller on other instance

It seems the controller drivers on some games causing locking up

Black-Seraph commented 4 months ago

Are we talking physical controllers hooked up to the host PC or virtual ones passed through via Moonlight?

Also: How many controllers total?

warlordianx3 commented 4 months ago

Tried with two controllers. Or two Virtual pad

No issues no matter what I used, Physical or Virtual controller.

Everything Is Almost Perfect.

It's just some games locking the controls of other games or instances.

Example of these games are Diablo 4 and Armored Core 6.

GTA V and Tekken 8 works fine

I think it's something to do with the control schemes of these games or the way they work.

No locking everything is good. In this Video I can play 2 tekken 8 independently at each other https://youtube.com/shorts/oZWMZ-7wrnA?si=K49rFyaWPv-OvL0r

Other instance's control stop working.
When I start diablo 4 the controls for armored core 6 stops also tried 2 instances of diablo 4 (I have two accounts) same thing happens

https://youtube.com/shorts/Z0nffV0ptzQ?si=2uxTAjkS0NhzhF0I

Last Note: I will try with more games to test.

warlordianx3 commented 4 months ago

GamestreamPC1.txt

GamestreamPC2..txt

Here's my log files just in case

POLICE SIMULATOR 2022 (Controller Locking Issue) GamestreamPC1.log [2024:06:29:18:00:11]: Info: Gamepad 0 will be Xbox 360 controller (manual selection) [2024:06:29:18:00:11]: Info: Jailed USB\VID_045E&PID_028E\01 into session 2

GamestreamPC2.log [2024:06:29:18:00:49]: Info: Gamepad 0 will be Xbox 360 controller (manual selection) [2024:06:29:18:00:49]: Info: Jailed USB\VID_045E&PID_028E\02 into session 3

Tekken 8 (Without Locking Issue)

GamestreamPC1.log [2024:06:29:18:12:47]: Info: Gamepad 0 will be Xbox 360 controller (manual selection) [2024:06:29:18:12:47]: Info: Jailed USB\VID_045E&PID_028E\02 into session 2

GamestreamPC2.log [2024:06:29:18:12:39]: Info: Gamepad 0 will be Xbox 360 controller (manual selection) [2024:06:29:18:12:39]: Info: Jailed USB\VID_045E&PID_028E\01 into session 3

Black-Seraph commented 4 months ago

I can't say much about most of these but I've played two instances of Diablo 4 just fine.

That was on the Battle.net version though.

warlordianx3 commented 4 months ago

I Played two instances of diablo 4 too , with two separate PC and it's fine with keyboard and mouse

I use multiple instances of battle.net so that I can play two separate instances on DUO

It's just when I fired the first instance of Diablo 4 , it locks up the second instance's gamepad control

anyway how did you do it from your end ? Are you using two separate game folders? Or same game folder

Are you also using two PC or Two Mobile devices like IOS or android?

warlordianx3 commented 4 months ago

https://youtu.be/ihASZLtx_50?si=FQ7nNPjz0EAVAc6T

DUDE It's a Miracle I managed it to work on DIABLO 4 Instance 1 = use PS input Instance 2 = use XBOX input

I think I can live with it, wohooo i can now play D4 with my friend now

Instance 1 [2024:06:29:18:43:03]: Warning: Gamepad 0 is emulating a DualShock 4 controller, but the client gamepad doesn't have a touchpad [2024:06:29:18:43:03]: Info: Jailed USB\VID_054C&PID_05C4&REV_0100\1&79F5D87&3&02 into session 2 GamestreamPC1.txt

Instance 2 [2024:06:29:18:47:00]: Info: Gamepad 0 will be Xbox 360 controller (manual selection) [2024:06:29:18:47:00]: Info: Jailed USB\VID_045E&PID_028E\01 into session 3 GamestreamPC2.txt

Black-Seraph commented 4 months ago

anyway how did you do it from your end ? Are you using two separate game folders? Or same game folder

Two Battle.net instances with two separate Diablo 4 folders (as Battle.net didn't let me start D4 twice without a second copy on disk at the time).

Are you also using two PC or Two Mobile devices like IOS or android?

One Steam Deck and one LG C9 TV actually, so both clients were playing remotely.

Finished all of the Eternal Realm that way with my wife.

Both instances were set to XBOX gamepad mode at the time.

warlordianx3 commented 4 months ago

I therefore conclude that Your Software is Really Good at Jailing Gamepads.

I tried with other games , it works but needs more testing on other games

I think it's something to do with the Unique device ID of the controller emulator. Can't be the same to run.

That's why I put separate inputs

I'm using two androids. Anyway I'm sure it will work this way with my other two PCs

The reason I use DUO is to play DIABLO 4 with my friend remotely we can't be together on PS5 unfortunately

I will try and play around using STEAM and two separate folders for Diablo 4

Hey if you have time come play with me on Seasonal Realm this is where the fun starts. Season 4 is so good right now :))

Black-Seraph commented 4 months ago

I haven't had time to touch the other season stuff yet sadly.

Too much work to go around and not enough time to play.

Slowly working my way through Jedi Survivor still...

Black-Seraph commented 3 months ago

@warlordianx3 It would be great if you could revisit this issue with version 1.4.8 and report whether the problem persist.

warlordianx3 commented 3 months ago

Hey I would love too however my Patreon subscription is already expired I'm still using 1.4.6 and I had an issue with Palworld too. Not Jailing properly

samkitty commented 3 months ago

@warlordianx3 You can update your Duo build using the Github version without losing your Patreon license.

warlordianx3 commented 3 months ago

Okay I re-subscribed on Patreon

Tried both Virtual and Physical controllers

Here's my Findings in Palworld , some games doesn't like to have controllers with the same PID (example VID_045E&PID_028E) to be played on multiple instances

GamestreamPC1.txt GamestreamPC2.txt

Client 1 [2024:07:09:07:22:10]: Info: Gamepad 0 will be Xbox 360 controller (manual selection) [2024:07:09:07:22:10]: Info: Jailed USB\VID_045E&PID_028E\01 into session 2

Client 2 [2024:07:09:07:27:28]: Info: Gamepad 0 will be Xbox 360 controller (manual selection) [2024:07:09:07:27:28]: Info: Jailed USB\VID_045E&PID_028E\02 into session 3

----------------- (edit 1) ------------------------

but if you set the other input to DS4 (Duo Web Interface) it works. Btw Palworld doesn't have xinput so I test it on ghost of tsushima that supports hybrid controls

Ghost of Tsushima DS4 and DS4 works XBOX and DS4 works XBOX and XBOX won't work

----------------- (edit 2) ------------------------ for Diablo 4 DS4 and DS4 works XBOX and DS4 works XBOX and XBOX won't work

----------------- (edit 3) ------------------------

Tekken 8 (everything works no lock up)
DS4 and DS4 works XBOX and DS4 works XBOX and XBOX works

Black-Seraph commented 3 months ago

Thanks for your detailed report @warlordianx3.

I've looked into what you've posted and think I might have an idea why this issue occurs.

If I'm correct we'll have to make a few changes to how Sunshine communicates with ViGEmBus.

warlordianx3 commented 3 months ago

I also noticed that , even if we play a different games. It locks out at each other

Armored Core 6 and Diablo 4

Gonna test other games too

Black-Seraph commented 3 months ago

I think the issue here is about how a game interfaces with the gamepad.

Windows has 3 ways a gamepad can be interfaced with:

Given how only XBOX gamepads seem to be affected I figure it must be an issue with XInput interfacing.

warlordianx3 commented 3 months ago

We can try like a controller wrapper

like DS4 Mode in Duo and put a wrapper to run it like x360 for games

Sorry I'm not good at programming

Btw current controller jailing has improved a bit on current version

warlordianx3 commented 3 months ago

@warlordianx3 You can update your Duo build using the Github version without losing your Patreon license.

how? Sorry how to do that?

samkitty commented 3 months ago

how? Sorry how to do that?

Simply head over to releases and download the latest version from there. As long as you've installed the patreon version on your system at least once, all subsequent versions you install will be the full version of Duo, regardless of where you get it from.

Keep hold of 1 of the setup.exe files you got off Patreon in case you need to install the premium version on a different system after your subscription expires.

warlordianx3 commented 3 months ago

how? Sorry how to do that?

Simply head over to releases and download the latest version from there. As long as you've installed the patreon version on your system at least once, all subsequent versions you install will be the full version of Duo, regardless of where you get it from.

Keep hold of 1 of the setup.exe files you got off Patreon in case you need to install the premium version on a different system after your subscription expires.

Thanks for letting me know

But it's fine I re-subscribed for supporting his project

Black-Seraph commented 3 months ago

how? Sorry how to do that?

Simply head over to releases and download the latest version from there. As long as you've installed the patreon version on your system at least once, all subsequent versions you install will be the full version of Duo, regardless of where you get it from.

Keep hold of 1 of the setup.exe files you got off Patreon in case you need to install the premium version on a different system after your subscription expires.

If people can afford it to support my projects long term it's always welcome but I'll never force people to stay.

At the end of the day I want to build cool stuff.

As long as I can do that I'm fine.

warlordianx3 commented 3 months ago

I will try with Emulators too if they are locking at each other

Also there's another software that might help with capturing or jailing controllers over the network. It's called virtual here but man it's $50 and bad after sales support

warlordianx3 commented 3 months ago

Here's my Interesting Findings on RPCS3 Emulator

I found out that emulators like RPCS3 have a VERY GOOD JAILING capabilities for both DS4 and XBOX for multiple instances.

RPCS3 - Everything Works no matter what configuration you use, you can mix and match it's automated or you can manually set it up.

Tried Virtual and Physical Supports dinput (ds4) and xinput (xbox)

DS4 and DS4 works XBOX and DS4 works XBOX and XBOX works

DS4 supports upto 8 controllers XINPUT supports 4 only

I'm gonna try other emulators like RYUJINX , XBOX and PCSX2 and other nintento emulators

warlordianx3 commented 2 months ago

Another Conclusion:

Tested it again on xinput games.

Same Instance and Second Instance (Xinput) Singleplayer games doesn't like a second Xinput Controller (affects physical and virtual)

Same Instance and Second instance (Xinput) couch or split screen Multiplayer Games loves multiple xinput controllers

Same Instance and Second Instance(Dinput Support) Singleplayer or multiplayer games it doesn't matter it always works how many instances or controllers you have, just don't mix it with xinput controller

Only exception is Tekken 8 and GTA V the control jailing works flawlessly for xinput