core-keeper-dedicated icon indicating copy to clipboard operation
core-keeper-dedicated copied to clipboard

Host does not allow crossplay

Open TesXter opened this issue 1 year ago • 23 comments

I run Docker in WSL (Windows 11). When I try to join the game, it shows the message "Host does not allow crossplay." I launch the game from XBOX Game Pass PC.

TesXter avatar Nov 26 '24 14:11 TesXter

I am not sure if this works now as the README of the Dedicated Server contains the following Limitations chapter:

The dedicated server is currently only available via Steam, and only allows Steam users to connect to it. This is because the dedicated server does not use a Steam user id, but the networking backend used to connect with non-Steam users needs a user ID for authentication.

Edit: Have you tried to use the SERVER_IP and SERVER_PORT variables?

Micke90s avatar Nov 26 '24 22:11 Micke90s

The dedicated server is currently only available via Steam, and only allows Steam users to connect to it. This is because the dedicated server does not use a Steam user id, but the networking backend used to connect with non-Steam users needs a user ID for authentication

Why would the team do this and hide such a restriction buried in a Readme? I just bought the game after playing on GamePass after reading that there's a dedicated server for me and my friends to log into, but after buying the GamePass version that restriction (if it actually is a Steam exclusive thing) kinda makes me want to cancel the idea and refund.

Can Windows Store <> Steam users really not play together via a dedicated server?

TreeBranches avatar Nov 27 '24 23:11 TreeBranches

The dedicated server is currently only available via Steam, and only allows Steam users to connect to it. This is because the dedicated server does not use a Steam user id, but the networking backend used to connect with non-Steam users needs a user ID for authentication

Why would the team do this and hide such a restriction buried in a Readme? I just bought the game after playing on GamePass after reading that there's a dedicated server for me and my friends to log into, but after buying the GamePass version that restriction (if it actually is a Steam exclusive thing) kinda makes me want to cancel the idea and refund.

Can Windows Store <> Steam users really not play together via a dedicated server?

Can you try setting SERVER_IP and SERVER_PORT?

TesXter avatar Nov 28 '24 05:11 TesXter

The dedicated server is currently only available via Steam, and only allows Steam users to connect to it. This is because the dedicated server does not use a Steam user id, but the networking backend used to connect with non-Steam users needs a user ID for authentication

Why would the team do this and hide such a restriction buried in a Readme? I just bought the game after playing on GamePass after reading that there's a dedicated server for me and my friends to log into, but after buying the GamePass version that restriction (if it actually is a Steam exclusive thing) kinda makes me want to cancel the idea and refund. Can Windows Store <> Steam users really not play together via a dedicated server?

Can you try setting SERVER_IP and SERVER_PORT?

Can you elaborate on this? I installed the server via the 1 line Docker CLI instructions shown in the readme, and in the game when clicking Join Game I only have the option to enter a Server ID, not an IP/Port.

TreeBranches avatar Nov 28 '24 06:11 TreeBranches

The dedicated server is currently only available via Steam, and only allows Steam users to connect to it. This is because the dedicated server does not use a Steam user id, but the networking backend used to connect with non-Steam users needs a user ID for authentication

Why would the team do this and hide such a restriction buried in a Readme? I just bought the game after playing on GamePass after reading that there's a dedicated server for me and my friends to log into, but after buying the GamePass version that restriction (if it actually is a Steam exclusive thing) kinda makes me want to cancel the idea and refund. Can Windows Store <> Steam users really not play together via a dedicated server?

Can you try setting SERVER_IP and SERVER_PORT?

Can you elaborate on this? I installed the server via the 1 line Docker CLI instructions shown in the readme, and in the game when clicking Join Game I only have the option to enter a Server ID, not an IP/Port.

I don't know either. But still sad I have XBOX Game pass version.

TesXter avatar Nov 28 '24 06:11 TesXter

The dedicated server is currently only available via Steam, and only allows Steam users to connect to it. This is because the dedicated server does not use a Steam user id, but the networking backend used to connect with non-Steam users needs a user ID for authentication

Why would the team do this and hide such a restriction buried in a Readme? I just bought the game after playing on GamePass after reading that there's a dedicated server for me and my friends to log into, but after buying the GamePass version that restriction (if it actually is a Steam exclusive thing) kinda makes me want to cancel the idea and refund. Can Windows Store <> Steam users really not play together via a dedicated server?

Can you try setting SERVER_IP and SERVER_PORT?

Can you elaborate on this? I installed the server via the 1 line Docker CLI instructions shown in the readme, and in the game when clicking Join Game I only have the option to enter a Server ID, not an IP/Port.

I don't know either. But still sad I have XBOX Game pass version.

Same. I wanted to use my character and also collect Xbox achievements, plus I know a few people who are playing this through GamePass. I do not have Steam.

It's so crazy to me that dedicated server software would be made for this otherwise excellent game, only to lock it to one specific storefront. Like... why would you do that?!

TreeBranches avatar Nov 28 '24 07:11 TreeBranches

Just found an interesting point. There seems to be a parameter "-allownosteam" which seems not to be used yet. (At least I could not find where it is used)

Also https://discord.com/channels/851842678340845600/1288555143444430919 describes cross play based on a setting in the ServerConfig.json (on Windows hosts)

Micke90s avatar Nov 28 '24 19:11 Micke90s

I don't mind trying to set those if you can tell me how to make changes to a running Docker container (my Docker knowledge is limited I'm afraid).

I'm running an Ubuntu host.

TreeBranches avatar Nov 28 '24 22:11 TreeBranches

I added the parameter to a test branch. https://github.com/Micke90s/core-keeper-dedicated/blob/d9f14e2db556d6e28e043f2acc31b267fd3d9eea/scripts/compile-parameters.sh#L22

You could build the Docker image by source.

This will pull the test branch and build the image core-keeper-dedicated

git clone https://github.com/Micke90s/core-keeper-dedicated.git
cd core-keeper-dedicated
git checkout allownosteam
docker build . --tag core-keeper-dedicated

You have to replace the image in the docker-compose.yml from escaping/core-keeper-dedicated to core-keeper-dedicated to use the created image.

To setup the server based on your docker-compose.yml you have to run docker-compose up -d

To check the second option with ServerConfig.json you have to change the file manually. Should be under /home/steam/core-keeper-data inside the container. The easiest way would be if the volume is accessible from the host system.

e.g. by setup the volume as local path

On host: (create directory and make it read an writeable, 777 is not the best but the easiest solution)

mkdir /srv/core-keeper-data
chmod 777 /srv/core-keeper-data

In docker-compose.yml

    volumes:
      - server-files:/home/steam/core-keeper-dedicated
      - /srv/core-keeper-data:/home/steam/core-keeper-data

Then docker-compose up -d to start the server. after this /srv/core-keeper-data should contain the files. Add "crossPlay":false into the ServerConfig.json. Restart the server by

docker-compose down
docker-compose up -d

I think that should be all. 🤔

Micke90s avatar Nov 28 '24 23:11 Micke90s

I added the parameter to a test branch. https://github.com/Micke90s/core-keeper-dedicated/blob/d9f14e2db556d6e28e043f2acc31b267fd3d9eea/scripts/compile-parameters.sh#L22

You could build the Docker image by source.

This will pull the test branch and build the image core-keeper-dedicated

git clone https://github.com/Micke90s/core-keeper-dedicated.git
cd core-keeper-dedicated
git checkout allownosteam
docker build . --tag core-keeper-dedicated

You have to replace the image in the docker-compose.yml from escaping/core-keeper-dedicated to core-keeper-dedicated to use the created image.

To setup the server based on your docker-compose.yml you have to run docker-compose up -d

To check the second option with ServerConfig.json you have to change the file manually. Should be under /home/steam/core-keeper-data inside the container. The easiest way would be if the volume is accessible from the host system.

e.g. by setup the volume as local path

On host: (create directory and make it read an writeable, 777 is not the best but the easiest solution)

mkdir /srv/core-keeper-data
chmod 777 /srv/core-keeper-data

In docker-compose.yml

    volumes:
      - server-files:/home/steam/core-keeper-dedicated
      - /srv/core-keeper-data:/home/steam/core-keeper-data

Then docker-compose up -d to start the server. after this /srv/core-keeper-data should contain the files. Add "crossPlay":false into the ServerConfig.json. Restart the server by

docker-compose down
docker-compose up -d

I think that should be all. 🤔

So it worked?

TesXter avatar Nov 29 '24 05:11 TesXter

Unfortunately, it will not work. We got an official feedback on the Core Keeper Discord Server: (Thread https://discord.com/channels/851842678340845600/1288555143444430919)

That's alright, I get it can be a bit confusing sometimes But you are correct, dedicated servers only accept Steam users at the moment. We will launch support for the other stores at some point as well, we know it's a highly requested feature. We just don't have an ETA on it at the moment, but we're definitely looking into it

Micke90s avatar Nov 29 '24 06:11 Micke90s

Seems that cross-play for PC (Steam, Epic Games, GoG, Microsoft Store) is activated: https://store.steampowered.com/news/app/1621690/view/591771368562885598?l=english

README:

## How to run with Direct Connections

Setting up the server for only Steam users doesn't require more than the above steps. But Direct Connections need few more extra steps.

To make the Server use Direct Connections and thus make it support cross-play, you need to:
Open port on your Servers Firewall
Port-Forward the correct port from your router to your Server
Pass the port at launch to your Game Server.

Once these has been set up, Steam players are still able to use the Game ID, but all other PC players can use the IP, port and password to join the server. 

I think this already should work without extra steps, as we already support the direct connection parameters.

EDIT: Just saw there is a new launch parameter -allowonlyplatform

## Platform

USAGE: -allowonlyplatform PLATFORM

Set the server only allow players from given platform. Effectively disables the cross-play from server. Has no effect unless -port is also set enabling Direct Connections.

Possible values are (both names and indices are valid):
- Steam (1)
- Epic (2)
- Microsoft (3)
- GOG (4)

Micke90s avatar Aug 14 '25 20:08 Micke90s

Password support also is missing

## Password

USAGE: -password "Password"

Select the password players should use when trying to join using direct connections. Most characters are allowed if provided between "quotation marks", and maximum length password can be 28 characters. If omitted or invalid, a random password will be generated. Argument only valid when using Direct Connections.

EXAMPLE: -password "PleaseChangeMe"

Diyagi avatar Aug 14 '25 20:08 Diyagi

... If omitted or invalid, a random password will be generated. ...

Sounds like the direct connection forces a password. 🤔 We may need to add this to the Discord message

Micke90s avatar Aug 14 '25 23:08 Micke90s

	// Token: 0x0400399E RID: 14750
	public static readonly char[] sessionIdCharacterPool = new char[]
	{
		'1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',
		'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L',
		'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
		'X', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
		'i', 'j', 'k', 'm', 'n', 'p', 'q', 'r', 's', 't',
		'u', 'v', 'w', 'z'
	};

I wonder if they made an mistake or the missing characters are intentional....

Diyagi avatar Aug 14 '25 23:08 Diyagi

sessionIdCharacterPool should be part of the game id.

Select the game ID clients use to connect to this server. Game ID Needs to be at least 15 but at max 28 alphanumeric characters, and may not include Y,y,x,0, or O.

I think this should just avoid characters which could be mixed up.

Micke90s avatar Aug 14 '25 23:08 Micke90s

There is more than that missing, like Upper case i and Lower case L

Diyagi avatar Aug 15 '25 00:08 Diyagi

There is more than that missing, like Upper case i and Lower case L

I missed that. Thank you. May they changed this with the current release and missed to update the README?

Just tried it on windows host:

Started CoreKeeperServer.exe Provided GameID "abcdefghijklmn" contained invalid characters. Proper GameID was created instead.

Micke90s avatar Aug 15 '25 00:08 Micke90s

May they changed this with the current release and missed to update the README?

Maybe, it is kinda annoying to use words as game id, things like mylovelycorekeeperserver wont work

Diyagi avatar Aug 15 '25 00:08 Diyagi

May they changed this with the current release and missed to update the README?

Maybe, it is kinda annoying to use words as game id, things like mylovelycorekeeperserver wont work

Yes, that’s annoying. Also, this change will break a lot existing GameIDs.

Micke90s avatar Aug 15 '25 00:08 Micke90s

Can I confirm that dedicated servers now support other storefronts + consoles? The issue is still open so I wasn't sure. I might have to set this up if so.

TreeBranches avatar Sep 01 '25 16:09 TreeBranches

@TreeBranches It still is not a full crossplay, as PlayStation and Nintendo Switch seems not to be supported yet.

Well, we’re pleased to report that PC gamers can now play Core Keeper together on the same dedicated servers, whether they’re running the game on Steam, Epic Games, GoG, or the Microsoft Store!

Source: https://store.steampowered.com/news/app/1621690/view/591771368562885598?l=english

For Steam, Epic Games, GoG, or the Microsoft Store the direct connection mode should work.

Micke90s avatar Sep 01 '25 19:09 Micke90s

@TreeBranches It still is not a full crossplay, as PlayStation and Nintendo Switch seems not to be supported yet.

Well, we’re pleased to report that PC gamers can now play Core Keeper together on the same dedicated servers, whether they’re running the game on Steam, Epic Games, GoG, or the Microsoft Store!

Source: https://store.steampowered.com/news/app/1621690/view/591771368562885598?l=english

For Steam, Epic Games, GoG, or the Microsoft Store the direct connection mode should work.

I don't care about Playstation and Nintendo, I care about Xbox and Windows Store.

But going by the post I guess it's purely "PC Only" as opposed to PC and Console.

TreeBranches avatar Sep 02 '25 07:09 TreeBranches