Skip to content
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 workaround for Elden Ring multiplayer for players that don't own the DLC #87

Merged
merged 4 commits into from
Jul 3, 2024

Conversation

UsernamesAreNotMyThing
Copy link
Contributor

@UsernamesAreNotMyThing UsernamesAreNotMyThing commented Jul 2, 2024

Looking around online and at ProtonDB, the game's Easy Anticheat expects the Game/DLC.bdt file to be present for Linux players in order to work correctly, regardless of whether they actually own the DLC that file comes from, and as a result players that don't have the DLC are getting an "Inappropriate activity detected" error when trying to play online.

This workaround simply creates a blank DLC.bdt file under Elden Ring/Game, which is known to fix the multiplayer for those that don't own the Shadow of the Erdtree DLC.

More information: ValveSoftware/Proton#5613 (comment), ValveSoftware/Proton#5613 (comment)

if not pathlib.Path(f"{util.get_game_install_path()}/Game/DLC.bdt").exists():
# Create the DLC.bdt file if it doesn't already exist, which is known to fix Easy AntiCheat not working for players that don't own the DLC
# A blank file is enough to get multiplayer working
open(f"{util.get_game_install_path()}/Game/DLC.bdt", 'w').close()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Prefer either:
Path(f"{util.get_game_install_path()}/Game/DLC.bdt").write_text()
or
Path(f"{util.get_game_install_path()}", "Game", "DLC.bdt").write_text()

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Whoops. I meant using Path.touch().

gamefixes-steam/1245620.py Outdated Show resolved Hide resolved
from protonfixes import util

def main():
if not pathlib.Path(f"{util.get_game_install_path()}/Game/DLC.bdt").exists():
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After import Path, would prefer either:
Path(f"{util.get_game_install_path()}/Game/DLC.bdt")
or
Path(f"{util.get_game_install_path()}", "Game", "DLC.bdt")

@R1kaB3rN
Copy link
Member

R1kaB3rN commented Jul 2, 2024

Wow, it's this simple to workaround EAC? Let's just hope that this doesn't get fixed, and I'll try to merge this ASAP after you apply my feedback.

Edit:
Applying my feedback as well as addressing the errors caught by the linter.

@R1kaB3rN
Copy link
Member

R1kaB3rN commented Jul 3, 2024

This is good enough. Don't mind the CI failures this time because that's something I'll have to correct later.

@R1kaB3rN R1kaB3rN merged commit ad07482 into Open-Wine-Components:master Jul 3, 2024
1 check failed
@antme0
Copy link

antme0 commented Sep 12, 2024

The recent Elden Ring patch 1.14 has broken multiplayer again.

When I launch the game, the connection is lost after a second or so and the game requests that I fix the network issues and log in again.

Seems like you now also need to create DLC.bhd in addition to DLC.bdt. When I went into the Game folder and created DLC.bhd, and started the game again, the connection issue was resolved.

@UsernamesAreNotMyThing
Copy link
Contributor Author

Done: #129

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants