GithubHelp home page GithubHelp logo

0xf4b1 / hearthstone-linux Goto Github PK

View Code? Open in Web Editor NEW
96.0 5.0 14.0 55 KB

Play Hearthstone from Blizzard Entertainment natively on Linux without the Battle.net Desktop App and Wine

Shell 40.76% C 27.75% Makefile 4.65% C# 26.84%
hearthstone linux native unity blizzard entertainment

hearthstone-linux's Introduction

hearthstone-linux

The files in this repository give you the power to craft a Linux-native Hearthstone client. The core game runs perfectly, but the in-game shop remains closed.

Hearthstone is based on the Unity engine, which allows the game to run on multiple platforms, including Linux. The platform-specific engine files are mostly generic, so we take the official game files and run them with Unity's Linux binaries. The macOS version of the game uses the OpenGLCore renderer, which we can use perfectly on Linux!

Even though we don't have to modify any of the game internals, please note that this is unofficial and you might risk a ban when using this method.

None of the proprietary files are distributed here, you can retrieve them from the official locations for free.

Hearthstone is ©2014 Blizzard Entertainment, Inc. All rights reserved. Heroes of Warcraft is a trademark, and Hearthstone is a registered trademark of Blizzard Entertainment, Inc. in the U.S. and/or other countries.

Installation

1) Preparation

Install the required packages:

  • Debian/Ubuntu

    $ sudo apt install build-essential libcrypto++-dev libwebkit2gtk-4.0-dev git curl wget python3 python3-venv python-is-python3
    
  • Arch Linux/Manjaro

    $ sudo pacman -S base-devel crypto++ webkit2gtk git curl wget python python-virtualenv
    

Then clone the repository:

$ git clone --recursive https://github.com/0xf4b1/hearthstone-linux.git && cd hearthstone-linux

2) Hearthstone installation

Just execute the crafting script.

$ ./craft.sh
Have a Hearthstone installation from macOS handy?

If you have an up-to-date Hearthstone installation folder from your Mac /Applications/Hearthstone somewhere in place, you can specify the path as the first argument and skip the download. If you also have the needed Unity files, but not at the default location ~/Unity, you can specify the path as second argument.

$ ./craft.sh [<path of the MacOS installation>] [<Unity path>]

The script will download the game in the hearthstone directory, so change to this directory after the script succeeds.

$ cd hearthstone

3) Login

Use the login app inside the hearthstone directory to retrieve the authentication token for your account.

$ ./login

If the login was successful, the app will create a token file in the current directory.

4) Launch the game!

Simply launch the game via the desktop entry :)

You can also run it from terminal directly via the executable from within the hearthstone directory. It is important that your current working directory is the hearthstone directory in which the token and client.config files are present, otherwise the login will not work!

$ Bin/Hearthstone.x86_64

Notice: There is an issue if you have not completed the introductions for the different game modes with your account. The animations/videos can't be played, but since newer game versions you don't get stuck anymore and can proceed into the game modes.

Updating

When you start the game, you get a message that a newer version is available?

Just execute the crafting script again.

$ ./craft.sh

FAQ

Closed

The game was unable to log you in through the Blizzard services. Please wait a few minutes and try again.

Closed

Oops! Playful sprites have disrupted Hearthstone as it was connecting to our servers. Please wait a few minutes for them to disperse and try again later.

These two messages usually appear when something is wrong with your login token or the way you start the game.

  • Did you forget to log in?

Please make sure the file token is present inside the hearthstone directory.

  • Running from terminal?

Please make sure you are in the hearthstone directory in which the token and client.config files are present.

  • Did you created the token with a different user?

The token is associated with the username that created it, so you will need to log in again with your new user.

Updating to a newer version takes more time and bandwidth

To download the game files we use keg. It is not a full-fledged client and does not support actual patching of the game. Instead, it downloads each changed file again to bring the game up to date.

The hearthstone directory consumes a lot of disk space

To download the game files, we use keg. It downloads all files in the hearthstone/.ngdp directory from which it creates the Hearthstone installation. When updating, it downloads all changed files and reuses old files to bring the game to the latest state. Since old files are never removed, it can consume a lot of space. However, if we would clean up the directory entirely, we would have to re-download the full game with every update.

If you have other issues, have a look through the existing issues and if that does not help create a new issue. Don't forget to add logs from Bin/Logs/ that might be helpful for troubleshooting.

How does it work?

The craft.sh script copies and rearranges the needed files for your Linux client and additionally does the following tasks:

A file named client.config is used by the client for configuration. It will be added with some predefined values, including the option Aurora.ClientCheck=false to be able to run the client without the official launcher.

The macOS version has some platform-specific dependencies that we don't have on Linux and prevent the game from launching. The script builds some very simple stubs for the missing libraries, namely CoreFoundation and OSXWindowManagement.

When the game client is started without the launcher, the game hangs on the title screen and offers no login. This happens even on macOS with the normal installation. But since it tries to read an existing login token from the macOS registry, the CoreFoundation stub is used to provide our manually requested token.

The game tries to read the authentication token from the registry AES encrypted with some static parameters. Based on that logic, a small login tool will be built that encrypts and stores it in a file named token from which the CoreFoundation stub reads it.

hearthstone-linux's People

Contributors

0xf4b1 avatar cyruskao avatar ilia1 avatar justinkb avatar levbernstein avatar lexanz avatar remoblaser avatar richardmoe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

hearthstone-linux's Issues

DNF requirements

Can you add DNF commands for the requirements or at least a better way of listing the exact packages needed?

I tried adding the ones listed but I think crpyto++ and cryptopp packages are different.

I am receiving this error.

 File "/run/media/xx/Backup/hearthstone-linux/keg/bin/ngdp", line 18, in <module>
    from keg.build import BuildManager

  File "/run/media/xx/Backup/hearthstone-linux/keg/keg/build.py", line 5, in <module>
    from .cdn import LocalCDN

  File "/run/media/xx/Backup/hearthstone-linux/keg/keg/cdn.py", line 10, in <module>
    from .armadillo import ArmadilloKey

  File "/run/media/xx/Backup/hearthstone-linux/keg/keg/armadillo.py", line 5, in <module>
    from Crypto.Cipher import Salsa20  # type: ignore

ImportError: cannot import name 'Salsa20' from 'Crypto.Cipher' (/usr/local/lib64/python3.10/site-packages/Crypto/Cipher/__init__.py)

note i tried pip install crpyto or pycrypto as well as uninstalling them both. This is Fedora 36 btw

When generating a new token, null username is used

Before version 23.6 the game was installed and started. I downloaded the latest version of scripts from this repository. The game stopped running. I tried clearing all folders and installing again. It did not help. At startup, no logs are displayed and the logs folder is not created. Launch looks like this

ilia:hearthstone> ./Bin/Hearthstone.x86_64 
ilia:hearthstone> 

Unable to log in through Blizzard Services

Been super excited to try out this project as my lutris hs install stopped working recently. No luck salvaging that so having gone through each of the automated steps I was pretty disappointed by being greeted with the words "The game was unable to log you in through the Blizzard services. Please wait a few minutes and try again." This happened both with my older account and a new one for testing. I'm guessing Blizzard may have changed something which broke everything again. The log is provided below and I'd be glad to be at all helpful in any way.

hearthstone_2022_07_25_16_01_46.log:

2022-07-25 16:01:46.766: Current working dir=/media/fuck/Gamer/hearthstone-linux/hearthstone
2022-07-25 16:01:46.932: Error.AddDevWarning() - header=GameStrings Error message=GameStringTable.Load() - There are no entries for category GLOBAL - path: .
2022-07-25 16:01:46.932: GameStrings.LoadCategory() - GLOBAL failed to load
2022-07-25 16:01:46.932: Error.AddDevWarningNonRepeating() - header=GameStrings Error message=GameStringTable.Load() - There are no entries for category GLUE - path: .
2022-07-25 16:01:46.932: GameStrings.LoadCategory() - GLUE failed to load
2022-07-25 16:01:47.268: Command Line: 
2022-07-25 16:01:47.281: UberText LoadCachedData() failed: The output char buffer is too small to contain the decoded characters, encoding 'Unicode (UTF-8)' fallback 'System.Text.DecoderReplacementFallback'.
Parameter name: chars
2022-07-25 16:01:47.556: [ExceptionReporter] Version 1.1.3
2022-07-25 16:01:47.557: [ExceptionReporter] ScreenshotPath: /home/fuck/.config/unity3d/Blizzard Entertainment/Hearthstone/Screenshot.png
2022-07-25 16:01:47.564: [ExceptionReporter] Loaded exception data from '/home/fuck/Library/Preferences/Blizzard/Hearthstone/Exceptions/ExceptionReporter.json'
2022-07-25 16:01:47.570: [ExceptionReporter] User UUID: d478768d0bac476f8f1fb36ae7959dbe
2022-07-25 16:01:47.590: System Info:
2022-07-25 16:01:47.590: SystemInfo - Device Name: redacted
2022-07-25 16:01:47.591: SystemInfo - Device Model: PC
2022-07-25 16:01:47.591: SystemInfo - OS: Linux 5.4 Ubuntu 20.04 64bit
2022-07-25 16:01:47.611: SystemInfo - CPU Type: Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz
2022-07-25 16:01:47.611: SystemInfo - CPU Cores: 4
2022-07-25 16:01:47.612: SystemInfo - System Memory: 7843
2022-07-25 16:01:47.612: SystemInfo - Screen Resolution: 1366x768
2022-07-25 16:01:47.612: SystemInfo - Screen DPI: 0
2022-07-25 16:01:47.612: SystemInfo - GPU ID: 278
2022-07-25 16:01:47.613: SystemInfo - GPU Name: Mesa DRI Intel(R) HD Graphics 3000 (SNB GT2)
2022-07-25 16:01:47.613: SystemInfo - GPU Vendor: Intel Open Source Technology Center
2022-07-25 16:01:47.614: SystemInfo - GPU Memory: 512
2022-07-25 16:01:47.614: SystemInfo - GPU Shader Level: 45
2022-07-25 16:01:47.615: SystemInfo - GPU NPOT Support: Full
2022-07-25 16:01:47.615: SystemInfo - Graphics API (version): OpenGL 3.3 (Core Profile) Mesa 21.2.6
2022-07-25 16:01:47.616: SystemInfo - Graphics API (type): OpenGLCore
2022-07-25 16:01:47.616: SystemInfo - Graphics Supported Render Target Count: 8
2022-07-25 16:01:47.617: SystemInfo - Graphics Supports 3D Textures: True
2022-07-25 16:01:47.619: SystemInfo - Graphics Supports Compute Shaders: False
2022-07-25 16:01:47.619: SystemInfo - Graphics Supports Shadows: True
2022-07-25 16:01:47.620: SystemInfo - Graphics Supports Sparse Textures: False
2022-07-25 16:01:47.622: SystemInfo - Graphics RenderTextureFormat.ARGBHalf: True
2022-07-25 16:01:47.622: SystemInfo - Graphics Metal Support: False
2022-07-25 16:01:47.654: [Downloader] Try to delete the old asset bundles
2022-07-25 16:01:51.803: [ExceptionReporter] Checking the exceptions from previous launch.
2022-07-25 16:01:52.462: [ExceptionReporter] Saved exception data(Count: 0) to '/home/fuck/Library/Preferences/Blizzard/Hearthstone/Exceptions/ExceptionReporter.json'
2022-07-25 16:01:57.309: GAME_SAVE_SUBKEY DBF Asset has 0 records! Something went wrong generating it. Try checking the generated XMLs in the DBF folder.
2022-07-25 16:01:57.310: GLOBAL DBF Asset has 0 records! Something went wrong generating it. Try checking the generated XMLs in the DBF folder.
2022-07-25 16:01:57.379: LETTUCE_MAP_BONUS_REWARDS DBF Asset has 0 records! Something went wrong generating it. Try checking the generated XMLs in the DBF folder.
2022-07-25 16:01:58.228: [Lettuce] GameDbFIndex.OnVisitorTaskAdded(): Default ArtVariationID [0] is already unlocked by Unlock Type VisitorTask Ice Sculpting 1
2022-07-25 16:01:58.228: [Lettuce] GameDbFIndex.OnVisitorTaskAdded(): Default ArtVariationID [0] is already unlocked by Unlock Type VisitorTask Sustained No More 1
2022-07-25 16:01:58.231: [Lettuce] GameDbFIndex.OnVisitorTaskAdded(): Default ArtVariationID [0] is already unlocked by Unlock Type VisitorTask Sacred Groove 2
2022-07-25 16:01:58.376: *** BattleNet version: Product = 23.6.0.0, Data = 23600
2022-07-25 16:01:58.424: *** BattleNet version: Product = 23.6.0.0, Data = 23600
2022-07-25 16:01:58.759: [Login] Beginning processing login challenges
2022-07-25 16:02:06.629: [Login] Processing challenge, previous login challenge attempts 0
2022-07-25 16:02:08.711: [Login] Failed to get token to respond to login challenge
2022-07-25 16:02:08.713: Setting delayed error for Error Message: GLOBAL_ERROR_NETWORK_LOGIN_FAILURE and prevent reset for 0 seconds
2022-07-25 16:02:08.715: Error.AddFatal() - message=The game was unable to log you in through the Blizzard services. Please wait a few minutes and try again.
2022-07-25 16:02:09.139: [BattleNet] [] Error 07/25/2022 20:02 >> PresenceUpdate failed, cannot send presence update while connection is not ready. (D:\builders\work\source\23.6.2\Pegasus\Client\Contrib\LocalUnityPackages\BGS\Package\Runtime\BGS Client Integration\APIs\PresenceApi.cs PublishField:225) (Void LogError(System.String, System.String) at :0)
2022-07-25 16:02:09.141: [BattleNet] [] Error 07/25/2022 20:02 >> PresenceUpdate failed, cannot send presence update while connection is not ready. (D:\builders\work\source\23.6.2\Pegasus\Client\Contrib\LocalUnityPackages\BGS\Package\Runtime\BGS Client Integration\APIs\PresenceApi.cs PublishField:225) (Void LogError(System.String, System.String) at :0)
2022-07-25 16:02:09.141: [BattleNet] [] Error 07/25/2022 20:02 >> PresenceUpdate failed, cannot send presence update while connection is not ready. (D:\builders\work\source\23.6.2\Pegasus\Client\Contrib\LocalUnityPackages\BGS\Package\Runtime\BGS Client Integration\APIs\PresenceApi.cs PublishField:225) (Void LogError(System.String, System.String) at :0)
2022-07-25 16:02:09.141: [BattleNet] [] Error 07/25/2022 20:02 >> PresenceUpdate failed, cannot send presence update while connection is not ready. (D:\builders\work\source\23.6.2\Pegasus\Client\Contrib\LocalUnityPackages\BGS\Package\Runtime\BGS Client Integration\APIs\PresenceApi.cs PublishField:225) (Void LogError(System.String, System.String) at :0)
2022-07-25 16:02:09.142: [BattleNet] [] Error 07/25/2022 20:02 >> PresenceUpdate failed, cannot send presence update while connection is not ready. (D:\builders\work\source\23.6.2\Pegasus\Client\Contrib\LocalUnityPackages\BGS\Package\Runtime\BGS Client Integration\APIs\PresenceApi.cs PublishField:225) (Void LogError(System.String, System.String) at :0)
2022-07-25 16:02:09.142: [BattleNet] [] Error 07/25/2022 20:02 >> PresenceUpdate failed, cannot send presence update while connection is not ready. (D:\builders\work\source\23.6.2\Pegasus\Client\Contrib\LocalUnityPackages\BGS\Package\Runtime\BGS Client Integration\APIs\PresenceApi.cs PublishField:225) (Void LogError(System.String, System.String) at :0)
2022-07-25 16:02:09.143: [BattleNet] [] Error 07/25/2022 20:02 >> PresenceUpdate failed, cannot send presence update while connection is not ready. (D:\builders\work\source\23.6.2\Pegasus\Client\Contrib\LocalUnityPackages\BGS\Package\Runtime\BGS Client Integration\APIs\PresenceApi.cs PublishField:225) (Void LogError(System.String, System.String) at :0)
2022-07-25 16:02:09.145: [BattleNet] [] Error 07/25/2022 20:02 >> PresenceUpdate failed, cannot send presence update while connection is not ready. (D:\builders\work\source\23.6.2\Pegasus\Client\Contrib\LocalUnityPackages\BGS\Package\Runtime\BGS Client Integration\APIs\PresenceApi.cs PublishField:225) (Void LogError(System.String, System.String) at :0)
2022-07-25 16:02:09.147: [BattleNet] [] Error 07/25/2022 20:02 >> PresenceUpdate failed, cannot send presence update while connection is not ready. (D:\builders\work\source\23.6.2\Pegasus\Client\Contrib\LocalUnityPackages\BGS\Package\Runtime\BGS Client Integration\APIs\PresenceApi.cs PublishField:225) (Void LogError(System.String, System.String) at :0)
2022-07-25 16:02:09.159: [BattleNet] [] Warn 07/25/2022 20:02 >> Unexpected state changes WaitForLogon -> Disconnected (D:\builders\work\source\23.6.2\Pegasus\Client\Contrib\LocalUnityPackages\BGS\Package\Runtime\BGS Client Integration\Service\Wrapper\BattleNetCSharp.cs SwitchToState:1065) (Void LogWarning(System.String, System.String) at :0)
2022-07-25 16:02:09.187: Setting delayed error for Error Message: GLOBAL_ERROR_NETWORK_LOGIN_FAILURE and prevent reset for 5.941139 seconds
2022-07-25 16:02:09.187: Error.AddFatal() - message=The game was unable to log you in through the Blizzard services. Please wait a few minutes and try again.
2022-07-25 16:02:09.271: show postition = (0.0, 0.0, 0.0) (7.0, 7.0, 7.0)
2022-07-25 16:02:10.198: Target for callback OnFatalErrorScreenLoaded is null.

Move ~/Library to ~/.config/Hearthstone ?

Kia ora,

First thing first, thank you so much for this project ! I can enjoy my preferred game on my preferred OS !!

Wonder if it's possible to get the 'Library' directory written in ~/.config/Hearthstone rather than in ~/

An option in client.config ?

Cheers

mono linux player not found

when i run the "craft.sh" i have encountered this error
cp: cannot stat '/home/ziyao/Unity-2018.4.10f1/Hub/Editor/2018.4.10f1/Editor/Data/PlaybackEngines/LinuxStandaloneSupport/Variations/linux64_withgfx_nondevelopment_mono/LinuxPlayer': No such file or directory

i have the latest version of hearthstone installed using ngdp and unity version Unity-2018.4.10f1
what seems to be the problem?

python module requirements

not sure if anyone else ran into this, but I had to install several python modules that weren't already on my system (system not venv)

python-click
python-humanize
python-tabulate
python-tqdm
python-parsimonious
python-bitarray

I would provide a pip freeze but I think that'd be a lot of noise.
Might consider creating a requirements.txt for this project.

Hearthstone opens but doesn't redirect me to the menu

I updated the unity version according to #40 and ran craft.sh after deleting the hearthstone directory. The game opens, but only shows the load screen, so I can't play. I took a look to the ~/.config/unity3d/Blizzard Entertainment/Hearthstone/Player.Log to see what was happening and I found some errors.

[Hearthstone] Failed to load config file: 
Failed to load config file: 
Set current working dir from=/media/frank/Datos/hearthstone-linux/hearthstone/Bin to=/media/frank/Datos/hearthstone-linux/hearthstone
[Jobs Fallback logger]: [JobQueue.QueueJob] Job (DeeplinkService.PostFullLoginJobs(ID:1)) QUEUED
[Jobs Fallback logger]: [JobQueue.QueueJob] Dependency (WaitForFullLoginFlowComplete) added for queued job (DeeplinkService.PostFullLoginJobs(ID:1))
Error.AddDevWarning() - header=GameStrings Error message=GameStringTable.Load() - There are no entries for category GLOBAL - path: .
[Hearthstone] GameStrings.LoadCategory() - GLOBAL failed to load
GameStrings.LoadCategory() - GLOBAL failed to load
Error.AddDevWarningNonRepeating() - header=GameStrings Error message=GameStringTable.Load() - There are no entries for category GLUE - path: .
[Hearthstone] GameStrings.LoadCategory() - GLUE failed to load
GameStrings.LoadCategory() - GLUE failed to load
Unable to open archive file: /media/frank/Datos/hearthstone-linux/hearthstone/Data/OSX/dbf_enus.unity3d
[ExceptionReporter] Checking the exceptions from previous launch.
[ExceptionReporter] Saved exception data(Count: 0) to '/home/frank/Library/Preferences/Blizzard/Hearthstone/Exceptions/ExceptionReporter.json'
[Hearthstone] Failed to read data for the AssetBundle 'dbf_enus.unity3d'.
Failed to read data for the AssetBundle 'dbf_enus.unity3d'.
[Hearthstone] [Jobs] [JobQueue.ProcessJob] Job (GameDbf.LoadDBFSharedAssetBundle(ID:108)) FAILED due to dependency failure: LoadAssetBundleFromFile: AssetBundlePath - /media/frank/Datos/hearthstone-linux/hearthstone/Data/OSX/dbf_enus.unity3d
[Jobs] [JobQueue.ProcessJob] Job (GameDbf.LoadDBFSharedAssetBundle(ID:108)) FAILED due to dependency failure: LoadAssetBundleFromFile: AssetBundlePath - /media/frank/Datos/hearthstone-linux/hearthstone/Data/OSX/dbf_enus.unity3d

I looked to the /media/frank/Datos/hearthstone-linux/hearthstone/Data/OSX/ and there isn't any archive named dbf_enus.unity3d. I don't know if these are the problem although.

Just in case I attach the Player.log file.
Player.log

If I have to upload anything else tell me, It's my first issue.
Thanks in advance

Unity Hub is icky

Hi guys,

I'm super interested in helping update this project to make the installation and use a bit more seamless.

One quick question, is there a specific reason you use Unity hub instead of downloading the unity.tar.xz directly?

direct link for that is: https://netstorage.unity3d.com/unity/a0470569e97b/LinuxEditorInstaller/Unity.tar.xz | Version 2018.4.10f1

It would be a much quicker and a much more efficient process to directly download the tar, move the files we need and then dump the rest to save space, especially if users don't want the hub hanging around if they don't use it.

I'd also recommend a ngdp download clean-up at the end as well as having 14.9GB of files isn't always fun.

I can work on this later, just wanted your input on the ideas first.

Thanks.

can't figure out how to login

I'm running on arch, the installation was successful and I can launch Bin/Hearthstone.x86_64
but the games kicks me out cause I was not able to login through the blizzard services.
I tried running the login executable (both in the /hearthstone and in the /login folder) but it does nothing, without any errors or outputs.
I also tried to login in manually as per the README file. But the link I followed goes to a website that doesn't load and I can't login in through that either.

craft.sh error arch

Hearthstone installation not found

error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try 'pacman -S
python-xyz', where xyz is the package you are trying to
install.

If you wish to install a non-Arch-packaged Python package,
create a virtual environment using 'python -m venv path/to/venv'.
Then use path/to/venv/bin/python and path/to/venv/bin/pip.

If you wish to install a non-Arch packaged Python application,
it may be easiest to use 'pipx install xyz', which will manage a
virtual environment for you. Make sure you have python-pipx
installed via pacman.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

I'm not totally sure where to proceed from here. I had been using it for a long time before I had issues updating the game so I decided to reinstall and now it throws this error when I run ./craft.sh

Can't launch the game

I did everything step by step according to readme. tried launching the game and got this.The game doesn't launch. I looked for issues and changed everything according to the #40 but output remains the same

Unity version was updated (Patch 26.6)

It seems like they silently updated the Unity version in the latest path (26.6 - adding new Twist mode, announcement of Titans, etc.).

The new version is 2021.3.25f1 and the download link is https://download.unity3d.com/download_unity/68ef2c4f8861/LinuxEditorInstaller/Unity.tar.xz.

For people coming to this before the main branch gets updated, you need to update the version and download link in 'craft.sh' as given above, and delete three files/directories before running craft.sh, to make sure they get update to the new Unity version:
Bin/Hearthstone.x86_64
Bin/UnityPlayer.so
Bin/Hearthstone_Data/MonoBleedingEdge/

Refer here for more detailed instructions from last time there was a similar issue: #37 (comment)

looks like the Unity version changed with 26.2

2021.3.19f1 (maybe)

$ git diff
diff --git a/craft.sh b/craft.sh
index ee439a2..bb7e81a 100755
--- a/craft.sh
+++ b/craft.sh
@@ -76,7 +76,7 @@ download_hearthstone() {
 }

 UNITY_ENGINE=Editor/Data/PlaybackEngines/LinuxStandaloneSupport/Variations/linux64_withgfx_nondevelopment_mono
-UNITY_VER=2019.4.37f1
+UNITY_VER=2021.3.19f1
 UNITY_INSTALLER_URL=https://download.unity3d.com/download_unity/019e31cfdb15/LinuxEditorInstaller/Unity.tar.xz
 UNITY_HUB=/Hub/Editor/$UNITY_VER/$UNITY_ENGINE

unable to launch

Hi, I'm trying to launch heartstone but this is the output I'm receiving:

The output from craft.sh:

Region: eu
Online version: 25.6.0.168788
Downloaded version: 25.6.0.168788
Moving files & running cleanup ...

mv: cannot stat '.../hearthstone-linux/hearthstone/Hearthstone.app/Contents/Resources/Data': No such file or directory

Launch behavior:

2023-03-16.13-22-14.mp4

I have already tried to reinstall the game from scratch, but it hasn't work.

Thanks

23.6 issues

Still uses the same unity engine, but it gets stuck on startup now

 2022-06-28 09:45:19.307: Error.AddDevWarning() - header=GameStrings Error message=GameStringTable.Load() - There are    no entries for category GLOBAL - path: .
 2022-06-28 09:45:19.307: GameStrings.LoadCategory() - GLOBAL failed to load
 2022-06-28 09:45:19.307: Error.AddDevWarningNonRepeating() - header=GameStrings Error message=GameStringTable.Load() -  There are no entries for category GLUE - path: .
 2022-06-28 09:45:19.307: GameStrings.LoadCategory() - GLUE failed to load

hearthstone.log has the above kind of errors

edit: these errors might not be relevant tho, I just checked my windows hearthstone log and it has the exact same errors while it works fine

is it possible they finally made the blz_commerce_sdk_plugin not loading a fatal error it gets stuck on? if so, can you stub that?

I tried stubbing it, but the blz_commerce_sdk_plugin is actually expected to return some kind of object a unity script does something with. If I just stub a few of the functions to not return anything, the script running on startup still fails with

2022-06-28 10:21:14.816: [Login] Beginning processing login challenges
 2022-06-28 10:21:14.848: NullReferenceException: Object reference not set to an instance of an object
 HearthstoneCheckout.Update () (at <88b35f3bd2074c49b0165c897a169734>:0)
 Blizzard.T5.Services.ServiceLocator+ServiceInfo.Update () (at <eea339da6b5e4d4bb255bfef95601890>:0)
 Blizzard.T5.Services.ServiceLocator.UpdateServices () (at <eea339da6b5e4d4bb255bfef95601890>:0)
 Hearthstone.Core.Processor.ProcessUpdateDelegates () (at <eea339da6b5e4d4bb255bfef95601890>:0)
 Hearthstone.Core.Processor.Update () (at <eea339da6b5e4d4bb255bfef95601890>:0)

I think we will need to patch a game dll to stop this entire thing from taking place at startup

Updating

Hello, any idea how to update the app as the new update came out? Sorry I'm a newbie, but I've never had a better experience with Hearthstone on Linux, so I desire to carry this on :)

Progress Wiped/Store Closed

I was confused to see that after I gave it a login token that my progress in the game had been wiped. I double checked on my mobile device and I had still had all the packs and progress I had made. I still have my friends, just not my game progress. I decided just to restart, however it's worth noting in case it happens to somebody else.

I was also curious if there was a way to emulate the missing resources in regards to the shop so that it can be used.

Crashing regularly

This is still workable, but the client does crash regularly these days.

Often when the game is displaying heavy animations (from a minion with an elaborate effect being played, for example).

Does this happen for anyone else?

Doesn’t start after latest update

Well, title. Had to update today, now it just prints out Unity configuration and exits(1).

No idea how to even start troubleshooting this :)

[2022] Build is broken on Arch for EU/enGB

This project doesn't seem to be working anymore, at least it doesn't work under Arch Linux with all the dependencies installed when choosing the EU region and enGB language.

Seems like a problem in the ngdp protocol implementation. Maybe it changed? Might otherwise be the python version. Looking at the keg repository it has't been updated for quite some years so it might be the most likely reason.

Here's the log:

Downloading: 45216b8ef8f4b503051f41f17f530d84: 429 [01:10,  4.63s/]Traceback (most recent call last):
  File "/usr/lib/python3.10/site-packages/urllib3/response.py", line 443, in _error_catcher
    yield
  File "/usr/lib/python3.10/site-packages/urllib3/response.py", line 566, in read
    data = self._fp_read(amt) if not fp_closed else b""
  File "/usr/lib/python3.10/site-packages/urllib3/response.py", line 532, in _fp_read
    return self._fp.read(amt) if amt is not None else self._fp.read()
  File "/usr/lib/python3.10/http/client.py", line 481, in read
    s = self._safe_read(self.length)
  File "/usr/lib/python3.10/http/client.py", line 632, in _safe_read
    raise IncompleteRead(data, amt-len(data))
http.client.IncompleteRead: IncompleteRead(102400000 bytes read, 12489276 more expected)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/andre/hearthstone-linux/keg/bin/ngdp", line 1048, in <module>
    main()
  File "/usr/lib/python3.10/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python3.10/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3.10/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3.10/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python3.10/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/usr/lib/python3.10/site-packages/click/decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/home/andre/hearthstone-linux/keg/bin/ngdp", line 309, in fetch
    ctx.obj.fetch_versions(versions, blobs, remote_cdn, metadata_only, tags)
  File "/home/andre/hearthstone-linux/keg/bin/ngdp", line 263, in fetch_versions
    item.fetch()
  File "/home/andre/.local/lib/python3.10/site-packages/keg/core/fetcher.py", line 54, in fetch
    temp_path = self.fetcher.local_cdn.write_temp_file(item.read())
  File "/usr/lib/python3.10/site-packages/urllib3/response.py", line 565, in read
    with self._error_catcher():
  File "/usr/lib/python3.10/contextlib.py", line 153, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/usr/lib/python3.10/site-packages/urllib3/response.py", line 460, in _error_catcher
    raise ProtocolError("Connection broken: %r" % e, e)
urllib3.exceptions.ProtocolError: ('Connection broken: IncompleteRead(102400000 bytes read, 12489276 more expected)', IncompleteRead(102400000 bytes read, 12489276 more expected))

Broken by server side update

Looks like Blizzard broke it for good, now getting the following when starting Hearthstone:

Closed: Hearthstone requires the Blizzard desktop app, but cannot find it. Please visit www.battle.net to re-install.

Running login again does not help, trying craft seems to also fatal with:

Region: eu
Online version: 193541_28.6.0
Installed version: 193541_28.6.0
strings: 'Hearthstone.app/Contents/Resources/Data/level0': No such file
Can not determine required Unity version!

This was such an awesome hack, but looks like game over?

Preparation step update for ubuntu

Hi,

When using the instructions as is in the readme, this will not work due to:

Creating python venv for keg ...
The virtual environment was not created successfully because ensurepip is not
available.  On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.

    apt install python3.11-venv

You may need to use sudo with that command.  After installing the python3-venv
package, recreate your virtual environment.

The Python3.11-venv needs to be added to the preparation section under Ubuntu (I haven't tested on Debian, but afaik venv is not a part of the python3 default meta packages there either).

When I ran the craft.sh without this package, some artifacts was created which prevented the venv to be properly created even after installing the venv package. This might be non obvious to rectify for new users.

Cursor is way too large

Hi! Cool project :)

Is there a way to force scale the cursor or to force the game to use like your default system cursor instead of its own? Cause the default one is … quite large.

image

This is on Fedora/Wayland/sway if it matters.

Login Issue

Hello I can't seem to login, did something change ? I can't even retrieve the token, the somethingWTCG url hangs after login been typed in. I tried by terminal and it says incorrect
Is this an issue on their end ?

Application won't start after update

Hi, I'm using Linux Mint 21.1 x86_64 and after the last hs update (26.6.0.179020) the game just won't start. I get this message when I run the console.

vetras@vetras-Lenovo-ideapad-330S-14IKB ~/h/h/Bin (master)> ./Hearthstone.x86_64 
[UnityMemory] Configuration Parameters - Can be set up in boot.config
    "memorysetup-bucket-allocator-granularity=16"
    "memorysetup-bucket-allocator-bucket-count=8"
    "memorysetup-bucket-allocator-block-size=4194304"
    "memorysetup-bucket-allocator-block-count=1"
    "memorysetup-main-allocator-block-size=16777216"
    "memorysetup-thread-allocator-block-size=16777216"
    "memorysetup-gfx-main-allocator-block-size=16777216"
    "memorysetup-gfx-thread-allocator-block-size=16777216"
    "memorysetup-cache-allocator-block-size=4194304"
    "memorysetup-typetree-allocator-block-size=2097152"
    "memorysetup-profiler-bucket-allocator-granularity=16"
    "memorysetup-profiler-bucket-allocator-bucket-count=8"
    "memorysetup-profiler-bucket-allocator-block-size=4194304"
    "memorysetup-profiler-bucket-allocator-block-count=1"
    "memorysetup-profiler-allocator-block-size=16777216"
    "memorysetup-profiler-editor-allocator-block-size=1048576"
    "memorysetup-temp-allocator-size-main=4194304"
    "memorysetup-job-temp-allocator-block-size=2097152"
    "memorysetup-job-temp-allocator-block-size-background=1048576"
    "memorysetup-job-temp-allocator-reduction-small-platforms=262144"
    "memorysetup-temp-allocator-size-background-worker=32768"
    "memorysetup-temp-allocator-size-job-worker=262144"
    "memorysetup-temp-allocator-size-preload-manager=262144"
    "memorysetup-temp-allocator-size-nav-mesh-worker=65536"
    "memorysetup-temp-allocator-size-audio-worker=65536"
    "memorysetup-temp-allocator-size-cloud-worker=32768"
    "memorysetup-temp-allocator-size-gfx=262144"
fish: Job 1, './Hearthstone.x86_64' terminated by signal SIGSEGV (Address boundary error)

i tried reinstalling and run as admin but it doesn't help and i have no idea how to fix it especially since the game was running before without any problems

Thanks

Create full ready package

What do you think about creating an AppImage package? You can create automatic assembly through github actions.

Gameplay Unavailable for New Accounts

The game launches and appears to log me in. Navigating the Options menu also appears to work. Getting into a game, however, is not possible. Clicking any of the 3 buttons on the main menu causes the camera to zoom in a bit and to the right, then does nothing. That's as far as I've gotten. Here's a paste of Unity's Player.log.

These may or may not be known, but other notable differences include:

  • No daily popup on login
  • No gold counter
  • No Shop button
  • No Journal button
  • No Modes button
  • Social button and time appear briefly, then disappear
  • The bottom shelf does not open
    • No Open Packs button
    • No Collection button

Here's how the game looks in Wine
Here's how the game looks just before the social/time elements disappear
Here's how the game looks afterwards
Here's how the game looks when clicking on any of the gameplay buttons

License?

Just wondering what kind of license you are distributing the stuff in this repo under?

Do you have any objection if I adapt craft.sh into a nix package? This would necessitate publishing it (the nix pkg) under MIT licensing.

problem with ./craft.sh

I am facing the following issue when trying to install using ./craft.sh:

Downloading Hearthstone via keg ...

Fetching http://us.patch.battle.net:1119/hsb
Downloading: 2fee0e37f96e78fd34d5e581ccfb76ac: 650 [09:05, 1.92s/]Traceback (most recent call last):
File "/usr/lib/python3.10/site-packages/urllib3/connection.py", line 174, in _new_conn
conn = connection.create_connection(: Waiting for data...
File "/usr/lib/python3.10/site-packages/urllib3/util/connection.py", line 72, in create_connection
for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
File "/usr/lib/python3.10/socket.py", line 955, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -3] Temporary failure in name resolution

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/lib/python3.10/site-packages/urllib3/connectionpool.py", line 703, in urlopen
httplib_response = self._make_request(
File "/usr/lib/python3.10/site-packages/urllib3/connectionpool.py", line 398, in _make_request
conn.request(method, url, **httplib_request_kw)
File "/usr/lib/python3.10/site-packages/urllib3/connection.py", line 244, in request
super(HTTPConnection, self).request(method, url, body=body, headers=headers)
File "/usr/lib/python3.10/http/client.py", line 1282, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/usr/lib/python3.10/http/client.py", line 1328, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/usr/lib/python3.10/http/client.py", line 1277, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/usr/lib/python3.10/http/client.py", line 1037, in _send_output
self.send(msg)
File "/usr/lib/python3.10/http/client.py", line 975, in send
self.connect()
File "/usr/lib/python3.10/site-packages/urllib3/connection.py", line 205, in connect
conn = self._new_conn()
File "/usr/lib/python3.10/site-packages/urllib3/connection.py", line 186, in _new_conn
raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7f87c91f6da0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/lib/python3.10/site-packages/requests/adapters.py", line 489, in send
resp = conn.urlopen(
File "/usr/lib/python3.10/site-packages/urllib3/connectionpool.py", line 787, in urlopen
retries = retries.increment(
File "/usr/lib/python3.10/site-packages/urllib3/util/retry.py", line 592, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='level3.blizzard.com', port=80): Max retries exceeded with url: /tpr/hs/data/2f/ee/2fee0e37f96e78fd34d5e581ccfb76ac (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f87c91f6da0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/paulo/hearthstone-linux/keg/bin/ngdp", line 1048, in
main()
File "/usr/lib/python3.10/site-packages/click/core.py", line 1130, in call
return self.main(*args, **kwargs)
File "/usr/lib/python3.10/site-packages/click/core.py", line 1055, in main
rv = self.invoke(ctx)
File "/usr/lib/python3.10/site-packages/click/core.py", line 1657, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/lib/python3.10/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/lib/python3.10/site-packages/click/core.py", line 760, in invoke
return __callback(*args, **kwargs)
File "/usr/lib/python3.10/site-packages/click/decorators.py", line 26, in new_func
return f(get_current_context(), *args, **kwargs)
File "/home/paulo/hearthstone-linux/keg/bin/ngdp", line 309, in fetch
ctx.obj.fetch_versions(versions, blobs, remote_cdn, metadata_only, tags)
File "/home/paulo/hearthstone-linux/keg/bin/ngdp", line 263, in fetch_versions
item.fetch()
File "/usr/lib/python3.10/site-packages/keg/core/fetcher.py", line 43, in fetch
item = self.fetcher.remote_cdn.get_item(path)
File "/usr/lib/python3.10/site-packages/keg/cdn.py", line 124, in get_item
return self.get_response(final_path).raw
File "/usr/lib/python3.10/site-packages/keg/cdn.py", line 117, in get_response
ret = requests.get(url, stream=True)
File "/usr/lib/python3.10/site-packages/requests/api.py", line 73, in get
return request("get", url, params=params, **kwargs)
File "/usr/lib/python3.10/site-packages/requests/api.py", line 59, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python3.10/site-packages/requests/sessions.py", line 587, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3.10/site-packages/requests/sessions.py", line 701, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3.10/site-packages/requests/adapters.py", line 565, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='level3.blizzard.com', port=80): Max retries exceeded with url: /tpr/hs/data/2f/ee/2fee0e37f96e78fd34d5e581ccfb76ac (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f87c91f6da0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'))

Doesnt work

This method worked great until about a week ago now, now im only met with an error message when trying to log in.
"CLOSED, the game was unable to log you in through the blizzzard services. Please wait a few minutes and try again"

The token should look like this

I just managed to do all steps on the README, but the token I got is different from the token that is required. My account ID has one less number than it is set on the token.exe. My account ID looks like this: YYYYYYYY. So when I put the token I got it doesn't works.
Example Token:
XX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXX
My token:
XX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-YYYYYYYY

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.