-
-
Notifications
You must be signed in to change notification settings - Fork 662
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for splitscreen players #3109
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a quick pass-through. I'm not sure if I like the proposed workaround for users with no Xbox UUIDs - if this bug just affects guest accounts, then maybe we shouldn't support those for now anyway because it won't cooperate with Floodgate as-is.
core/src/main/java/org/geysermc/geyser/network/LoggingPacketHandler.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/geysermc/geyser/session/UpstreamSession.java
Outdated
Show resolved
Hide resolved
@Camotoy I found that this issue affects any account used for splitscreen on PS4, even if the PS4 account is logged into a valid Microsoft account in Minecraft and has a PSN account. I agree with you that this isn't ideal - this is very much a temporary workaround. I plan to revisit this and improve it so that Geyser automatically fetches gamertag & xbox user ID information from the Xbox API rather than having the server owner manually defining the mappings. |
It seems quite similar to Switch: with a family subscription to Nintendo Online, there's still no ID sent for the second player. And Switch doesn't even have guest users, afaik you can only play with precreated users.
The ticket I was following was this one https://bugs.mojang.com/browse/MCPE-71033 , which has since been closed for 'Awaiting response' (a response by Mojang, maybe?). Maybe it's worth trying to get it reopened? The thing is, it's also a problem (or at least was, last I tested it) with the official Realms. |
@mtsr Yeah it definitely would be good to get that ticket reopened. I'm not hugely optimistic that it would get fixed anytime soon though, not because of past experience with Mojang or anything, just a gut feeling. |
79f754c
to
d662aa8
Compare
Associated language strings added in this PR: GeyserMC/languages#100 |
Agreed. The fact that such a relatively significant bug hasn't gotten attention previously at least suggests it's not a priority. What I don't understand is the lack of feedback. Oh well. |
for what it's worth, I think that ticket was closed simply because no one confirmed whether or not the issue was still present in the latest version of the game. I agree with your concern that the reopened ticket likely won't result in much happening on Mojang's end, though. |
@Camotoy I've updated this PR with your suggested changes, and I've also renamed the config settings values from |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for doing this! I've been waiting for so long.
core/src/main/java/org/geysermc/geyser/network/LoggingPacketHandler.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/geysermc/geyser/network/LoggingPacketHandler.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/geysermc/geyser/util/LoginEncryptionUtils.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/geysermc/geyser/util/LoginEncryptionUtils.java
Outdated
Show resolved
Hide resolved
You don't need to keep force-pushing; it makes checking diffs a little annoying. ^^ We'll squash-merge the change when it's ready. |
core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
Show resolved
Hide resolved
core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
Outdated
Show resolved
Hide resolved
Ok will do from now on |
1c3cbca
to
1f8b51e
Compare
@Camotoy Have addressed your comments - could you take a look again? cheers |
We only need the Xbox UUID for Floodgate, right? We can just set it to -1 for other platforms and bypass the need for a config option then. |
Also - how is split-screen handled normally, say in a singleplayer world? If I join as Camotoy2 and then leave and then join as Camotoy3 is my progress saved between those two now? |
@Camotoy Is the current state of this PR acceptable to you? I'm quite keen to get this merged ASAP, as I am currently borrowing my friend's PS4 to develop & test this change (Basically my whole reason for doing this is so that my friends and I can play splitscreen together when over at another house). If this takes more time, I'm afraid someone else will have to take over development of this. Hopefully these answers make sense:
I haven't investigated this, but I would assume this wouldn't be possible since you'd need some way of associating an auth token with a player, and I'm not sure how that would be done in a secure fashion. Although I have limited knowledge of how all the authentication stuff works in general. I've only ever used Geyser in conjunction with Floodgate. In my opinion I think we could just add documentation in the Wiki saying that splitscreen can only be used if Floodgate is enabled. Then support for vanilla Geyser without Floodgate can be added in a future PR.
Player data is tied to your profile/account, so in your example progress would not be saved between them. However, with this XUID mapping I've done, you could theory do this:
Where you have multiple console profiles tied to the same bedrock account. So logging in with either profile would use the same user. Floodgate would enforce it so that both profiles couldn't be playing simultaneously because they would be using the same bedrock account however. |
And how do I do that?, I really don't know what to do :( |
Mark: I can test splitscreen myself, so don't worry too much about time crunch. |
00d73a8
to
e7ab884
Compare
Have rebased on top of master to support 1.19.2 |
…into splitscreen � Conflicts: � core/src/main/java/org/geysermc/geyser/network/ConnectorServerEventHandler.java � core/src/main/java/org/geysermc/geyser/network/LoggingPacketHandler.java � core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java � core/src/main/java/org/geysermc/geyser/session/GeyserSession.java � core/src/main/java/org/geysermc/geyser/session/UpstreamSession.java � core/src/main/java/org/geysermc/geyser/util/LoginEncryptionUtils.java � core/src/main/resources/languages
I made a couple changes on my branch here: https://github.com/Camotoy/Geyser/tree/splitscreen |
@Camotoy Great, I've merged your changes into this branch. I've also updated this branch with the latest master to support 1.19.21 |
Hi, I tried the steps here descripted #750 (comment) but the second player stuck in terrain is building Screen. Any ideas? |
I may have messed something up. Can you attach a Geyser dump? Are there any logs? |
Hi, I am having the same issue as MaPa: My config (changed real Data but to show configuration) First player can join, second player is stuck at terrain is being built. I am really interested whether my configuration is set up wrong or whether the (switch) console is the issue. Some feedback for troubleshooting would be highly appreciated. I tried for many hours with different configurations and have no more ideas. |
Great. Another one who has the same problem. |
Any Updates? |
Unfortunately this fix is no longer working due to a recent update. I no longer have access to a console, so I'm not able to get this working again. I'll close this PR for now, but anyone else is very welcome to create a new branch/PR based upon this and fix it. |
Our Bedrock protocol dependency should have better split-screen support anyway, which would require a refactor for this PR. |
Hello, am now a little confused. Does this now mean that with a current stable version of Spigot, Geyser and Minecraft the split screen should work on the consoles (PS4/PS5)? If I now create a pure server without additional plugins and mods splitscreen should work? |
It means that is does NOT work, We recently made changes that broke split screen. You will have to wait till someone implement a new system. |
Ok thanks for the info. Are there any ways to support this? I am not a programmer but welcome a solution being designed here in a timely manner. |
Hello, everyone, Unfortunately, it still doesn't work that a second player logs on to the same console and a split screen is then generated. As before, the second player gets stuck in the building step and nothing else happens. Since my family and I love playing Minecraft on the console, we have been waiting for this bug to be fixed for a long time. can anyone help us Thanks everyone for your time and support here. Kind regards |
Im sorry to say, but I wouldn't hold your breath. I'm in the same shape. My family loves playing Minecraft together too and the Xbox slipt screen is our only option, and we've been waiting for this fix for about 2 years now. I've been dying to show them the cool plugins I use to use years ago when Bukkit was active. You'll just have to settle for vanilla for now. I've even offered a bounty for getting this fixed and was told that was a no. |
Chances are this will be revived once we move to an updated version of the protocol library we are on. This is expected to happen in the comings months. |
Hi there. Why is this closed? Is the dependencie upgrade of the Protocol Library allready Done? |
This PR is closed. The underlying issue that's asking for the implementation is open. If you look at the comments/conversation here, you'll see why it's closed - it may get reopened, it may not be. The new protocol, is, to my knowledge, not fully here yet |
Ok, im a total NOOB. Is this working, and how can i implement it?? <3 |
Hello I tried this workaround last year and it didn't work anymore. Apparently this is due to a dependency that has not yet been processed further. Unfortunately, it is not clear whether and when this topic will be continued. Maybe a developer can give us more information here? |
Is there any way to make this theoretically work? Maybe through a plugin? I could even try to implement it myself if I would know the underlying problem. |
The issue is the bug that has been mentioned here before: https://bugs.mojang.com/browse/MCPE-71033 |
This is an updated version of mtsr@9f32f59 for 1.19 (thanks @mtsr for your work!)
Because the bug with console subclients not sending a XUID through still exists, I've had to implement a hack where the XUIDs (xbox IDs) need to be manually stored in the Geyser config settings. An example of what this might look like is:
I have tested this on Playstation 4, with 3 users able to play simultaneously via splitscreen. I have tested this on paper and waterfall, and I haven't noticed any issues.
This will fix #750