0xf4b1 / hearthstone-linux

Play Hearthstone from Blizzard Entertainment natively on Linux without the Battle.net Desktop App and Wine
131 stars 18 forks source link

Create full ready package #4

Open Ilia1 opened 3 years ago

Ilia1 commented 3 years ago

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

0xf4b1 commented 3 years ago

Do you think of packaging a running game including the proprietary files? I would like to avoid this due to legal concerns and it would require a lot of maintenance for the frequent game updates. But packaging the utilities in this repo for downloading a running client should be possible in the future when the whole process is better automated, especially downloading the game files via keg is a bit complicated and should be improved I think.

Ilia1 commented 3 years ago

Do you think of packaging a running game including the proprietary files?

Yes. Modifications of the game are distributed on the Internet, which seem to be not blocked and the authors are not punished.

it would require a lot of maintenance for the frequent game updates.

I am thinking of automating the build via Github Actions

0xf4b1 commented 3 years ago

Hmm, I think for the user, it is no advantage to download the game files from other locations than the official ones and updates would require downloading the full game over and over again. I prefer to have something like a launcher consisting of the tools here which is able to download and update the game files, like the official battle.net app. What do you think?

Ilia1 commented 3 years ago

If I understand correctly, then when using the keg tool:

Using the keg can not download a single patch?

0xf4b1 commented 3 years ago

keg is intended to download and keep all game files in a local repository and allows you to install any game version you have previously downloaded. Of course, it consumes a lot of storage and here, we are actually only interested in having the most recent version which makes it far from optimal. keg actually downloads patch files but is not able to apply them since it also always downloads the most recent version of the full files. When there is a new version released, it would basically download all changed files but reuse the unmodified ones that are already available locally from a previous version. When there is no better solution already available somewhere, most of the functionality of keg should allow to build something like an downloader and updater.

Edit: There is at least one other solution that might be interesting: https://github.com/d07RiV/blizzget I tried it some time ago and I worked for windows but if I remember correctly it is not buildable on linux :(

Ilia1 commented 3 years ago

The problem of kegs and getts is that

due to only using one download thread

I found a repository that uses multiprocessing https://github.com/wowdev/ngdp_checker but it doesn't seem to download files. I think should be added to the keg multiprocessing and downloading will be faster.

0xf4b1 commented 3 years ago

Hmm I will check this, but still downloading and keeping all previously downloaded files locally and then installing the latest game version is not very convenient with keg.

Ilia1 commented 3 years ago

Worth looking at SharpNGDP Compiles on Linux via dotnet. But when trying to change the platform from windows to osx it crashes with an exception System.NullReferenceException

Ilia1 commented 3 years ago

Exception I have corrected Would now reduce the cache size (now over 29Gb) and execution time (now over 40min)

0xf4b1 commented 3 years ago

This sounds great, I will have a look it this! I the meantime, I also improved and automated the script a little bit and could improve the download speed with some arguments but I still dislike the storage consumption.

So does SharpNGDP only download the required files for the installation? And do you think it can handle updates in a better way?

Ilia1 commented 3 years ago

I'm counting on the fact that in general, compiled programs are faster than scripting. But optimization is required anyway. I think that it would be possible to delete already unpacked files from the cache.

bicheTortue commented 3 months ago

Hello, I also would appreciate a real GUI. I can try and work on it myself. Is this still in the works ?