xzxADIxzx / Join-and-kill-em-together

Multikill is still in development, so I created my own multiplayer mod for Ultrakill
GNU Affero General Public License v3.0
138 stars 25 forks source link

Steam Invite Doesn't Work on Linux Native (Not Proton) #12

Open coatlessali opened 1 year ago

coatlessali commented 1 year ago

CLARIFICATION: There are no official ports of ULTRAKILL for Linux/MacOS. I just maintain a script that lets you trick the Linux/MacOS Unity Player into playing the game. 99% of the ULTRAKILL players on either platform will use a compatibility layer like Proton or Crossover to play the game. No help is expected, but would be appreciated.

On a fresh install of ULTRAKILL, set up with UltraNix, UMM, and Jaket on Linux, the "invite to game" function does not work. Other people can send invites and you can accept them, but you cannot send them. Clicking the "Send" button will show an indicator stating that an invite has been sent, but nothing will actually happen. No errors in logs.

Speculatory solutions/Workarounds:

coatlessali commented 1 year ago

I feel like I should also add that due to the Steam dependency, the mod is unusable on MacOS, as having BepInEx and the Steamworks SDK loaded simultaneously causes a hang. This is at no fault of Jaket, but is probably the less fixable of the two.

xzxADIxzx commented 1 year ago

May I know exactly how you invite friends? I just couldn't add the "invite" button to the steam overlay itself and moved it to the mod's interface.

coatlessali commented 1 year ago

Step 1: Start ULTRAKILL from Steam (required), and enter a level. Step 2: Press F1 to open the menu, create a lobby, and attempt to invite a friend. Step 3: Steam overlay pops up, select the friends you'd like to send an invite to. Step 4: Steam overlay shows that the invite was sent, but checking chat logs shows that nothing has been sent.

For the record, you have to trick Steam into launching the native port for this to work. My launch options look like this: /home/ali/ULTRAKILL/run_bepinex.sh; echo %command%

/home/ali/ULTRAKILL/run_bepinex.sh is the actual script for launching ULTRAKILL with BepInEx. ; echo %command% echoes the launch command to prevent it from executing Proton and running the Windows version. Without this, the previous text would be interpreted as a launch option for ULTRAKILL.exe.

xzxADIxzx commented 1 year ago

Can you send me a script so i can test it on my linux?

coatlessali commented 1 year ago

UltraNix is my personal script for setting up ULTRAKILL on Native Linux. You will need to download v1.48a of the Steamworks SDK, and v2.5.6 of the Discord SDK for this to work. More instructions are included in the Wiki.

You will also need the UNIX version of BepInEx, and to set it up to run properly.

m00n-l1k3 commented 9 months ago

I've been trying to game with friends using this mod on the same port of ultrakill made by @coatlessali and I ran into the same issue with the invite function not working.

It's a bit disappointing that this issue has been inactive for about 6 months without a resolution.

Considering the challenges with the invite functionality on Linux, would it be possible to explore adding a simple LAN connection functionality as a workaround that doesn't relay on steam to work?

Appreciate your efforts and looking forward to any updates.

xzxADIxzx commented 9 months ago

I just forgot about Linux x-x

PyroGabrielKotzell commented 9 months ago
  1. Don't lobby codes work?
  2. Isn't this really an issue of the steam overlay and not a mod's one?
  3. Why do you not want to use proton or other softwares to play correctly?
xzxADIxzx commented 9 months ago

Proton doesn't work. This is why I'm playing on Windows. I just don't want to go through all these steps to run Ultrakill on Linux when I can just reboot to Windows.

zUltimaPG3D commented 9 months ago

jaket works fine on proton?

m00n-l1k3 commented 9 months ago

I just forgot about Linux x-x

You don't have to change anything specifically for the UltraNix port, Adding an alternative connection option such as LAN should resolve the problem and also contribute to the mod's overall versatility.

Making a LAN connectivity option might not be as complex as it seems. The multiplayer code foundations are already in place, and adding LAN functionality could use the existing structure. And also there are some great and detailed documentation resources available for implementing LAN multiplayer in Unity.

While I believe a LAN option would be a valuable addition, at the end it's still your choice whether to implement it or not. And I respect whatever choices you make for the mod's development.

xzxADIxzx commented 9 months ago

I know how to implement LAN, I just ain't do that. But if I could find any other option, I'd add it.

coatlessali commented 9 months ago

UltraNix "developer" here. It seems Guilty Gear XX Accent Core Plus R uses Invite Links in its lobbies that can be copied to the clipboard. I'm not sure if this functionality is built into the Steamworks SDK, but is it possible we could have the invite button automatically copy a link to the clipboard as a fallback for when the overlay doesn't work?

xzxADIxzx commented 9 months ago

There are two buttons: one copies the current lobby code and one joins by the code from the clipboard, so if this works on Linux, you can use it

xzxADIxzx commented 9 months ago

https://github.com/xzxADIxzx/Join-and-kill-em-together/blob/428fe0d9202c553e40fc7338ac2719cedb71da53/ui/LobbyTab.cs#L45

xzxADIxzx commented 9 months ago

And you can also use the lobbies browser

coatlessali commented 9 months ago

I'll test it when I'm home. I forgot the mod has probably changed quite a bit since I last messed with it.

Twig6943 commented 7 months ago

It's been over 2 months soo @coatlessali how did that go? (I'm thinking of playing this mod with ultranix.)

coatlessali commented 1 month ago

@Twig6943 UltraNix is dead and I'm half a year late.

With that being said, here's how it's going:

coatlessali commented 1 month ago

Nevermind, got into a public lobby. It seems to work fine, but the trails behind players don't have shaders compiled for OpenGL in Unity and appear purple. Opening a separate issue.