Unofficial client for the HTML5 browser game HaxBall, built with a custom build of nativefier in order for the browser extension HaxBall All-in-one Tool to be supported.
The client works on Windows, macOS and Linux, and is 64-bit only.
The client comes in two versions which only differ for one thing:
- Standard: the game plays at un unlimited framerate (as many FPS as your computer can handle)
- Lite: the framerate will be limited to your monitor's refresh rate (e.g. 60fps with a 60Hz monitor, 144fps with a 144Hz monitor, etc)
Only a good PC can handle unlimited FPS, so download the Lite version if the Standard gives you any ping/performance issue!
Download from the main website or from the Releases page the .zip file with the version for your OS and unzip it.
Then
-
if you're on Windows, move the folder wherever you want and double-click on
HaxBall Client
-
if you're on macOS, move the
HaxBall Client.app
in yourApplications
folder and then double-click on itif you get a "The app is damaged and can't be opened", follow Method 4 from this guide
-
if you're on Linux, move the folder wherever you want,
cd
into that folder and then type./HaxBallClient
in the terminal (you may need to install some libraries first)
- Every feature of the All-in-one Tool, including
- Auto-join
- Room search
- Kick/Ban quick buttons
- Local mute
- Hide chat toggle
- R as a REC hotkey
- Chat shortcuts*
- Favourite Rooms
- Dedicated button to make the UI transparent
- Unlockable extrapolation
- Unlimited FPS**
- Automatic updates
- Custom command-line (see below)
- No ads
* these were originally featured in the All-in-one Tool, but given that they do not work in the client they have been rewritten from scratch (see below)
** only in the Standard version of the client
Two new buttons have been added to the Room list view: Add Room and Show Rooms.
By selecting a room in the list and then clicking the Add Room button, such room will be added to the list of your Favourite Rooms, and will be easily accessible by clicking the Show Rooms button.
In addition to the Search feature provided by the All-in-one Tool, this functionality comes very handy when you only are interested in a few rooms, and some of these are distant from your geographical position or not close to each other.
A room will stay among your Favourites (use the favrooms
command in the command-line to see them all) regardless of it being online or not, as long as its name doesn't change.
The horizontal bar on the top has two functions: redirect you to a room given its link and launch custom commands.
Shortcuts let you type frequent commands/messages by expanding a shorter piece of text.
shortcut add A,B
shortcut remove A
shortcut list
For example, you may be someone who often changes extrapolation and you'd prefer not to type the full command each time. To do so, you can create a new shortcut by entering in the command bar
shortcut add /e,/extrapolation
so that every time you type in the game chat /e
you will instead get /extrapolation
.
If you wish to remove it, you can then use
shortcut remove /e
This particular shortcut is included by the default in the client, but you can create whatever shortcut you want (even entire messages)!
Notes let you store text snippets you may want to save up for later.
notes add yournote
notes remove notenumber
notes list
For instance, you could save links to private rooms, different private keys for different rooms, a Discord invite someone linked in chat, or some longer chat commands you don't want to create a shortcut for (like team colors).
To remove a saved note, check its number with list
and then use remove
.
Your Player Auth is often used by headless rooms' admins to authenticate you or to save your in-game statistics. If you want to view your Public Auth or Private Key, or change the latter, type the commands
auth
auth yournewprivatekey
If you want to view your extrapolation without entering a room or opening the console, type in the command bar
extra
Although I don't support the choice, since it was highly requested a command to uncap the extrapolation is also available
extraunlock
You only need to launch this command once.
If you want to view or change your avatar without entering a room or opening the console, type in the command bar
avatar
avatar newavatar
clearavatar
Use the favrooms
command to have a list of every room currently marked as Favourite.
help
info
version
In order to build the client you will need to have git and npm installed; there are plenty of tutorials on how to install them on your platform so it won't be explained here.
Open a terminal and clone both this repository and nativefier in the same parent directory (e.g on your Desktop)
git clone https://github.com/oghb/haxball-client.git
git clone https://github.com/nativefier/nativefier.git
Open the nativefier
repository you just cloned and go to app/src
, where you'll find a file called main.ts
: replace it with the main.ts
in this repository.
Note: if you don't want unlimited FPS (it may increase ping or worsen performance on older PC's), put two slashes //
in front of the appropriate line in main.ts
.
You can now build the modified nativefier with
npm install
(make sure the working directory of the terminal is nativefier
) and when it's done building, launch
npm link
so when you launch nativefier
your system will actually use this one.
Now launch cd ..
to go in the parent directory of nativefier
(the one where you cloned the two repositories to), and launch these commands to build the client and copy the HaxBall All-in-one tool within:
- Windows client
nativefier https://www.haxball.com/play --internal-urls ".*?\.haxball\.*?" --name "HaxBall Client" --inject haxball-client/inject.js --inject haxball-client/inject.css --icon haxball-client/icon.png --tray start-in-tray --fast-quit --file-download-options '{"openFolderWhenDone": true}' --arch x64 --platform windows --app-version 0.3.4 --build-version 0.3.4 --win32metadata '{"ProductName": "HaxBall Client", "InternalName": "HaxBall Client", "FileDescription": "Unofficial client for haxball.com"}'
git clone https://github.com/xenonsb/Haxball-Room-Extension.git ./HaxBall\ Client-win32-x64/resources/app/Haxball-Room-Extension
- macOS (M1) client
nativefier https://www.haxball.com/play --browserwindow-options '{"fullscreenable": true}' --internal-urls ".*?\.haxball\.*?" --name "HaxBall Client" --inject haxball-client/inject.js --inject haxball-client/inject.css --icon haxball-client/icon.png --tray start-in-tray --fast-quit --file-download-options '{"openFolderWhenDone": true}' --arch arm64 --platform osx --app-version 0.3.4 --build-version 0.3.4
git clone https://github.com/xenonsb/Haxball-Room-Extension.git ./HaxBall\ Client-darwin-arm64/HaxBall\ Client.app/Contents/Resources/app/Haxball-Room-Extension
- macOS (Intel) client
nativefier https://www.haxball.com/play --browserwindow-options '{"fullscreenable": true}' --internal-urls ".*?\.haxball\.*?" --name "HaxBall Client" --inject haxball-client/inject.js --inject haxball-client/inject.css --icon haxball-client/icon.png --tray start-in-tray --fast-quit --file-download-options '{"openFolderWhenDone": true}' --arch x64 --platform osx --app-version 0.3.4 --build-version 0.3.4
git clone https://github.com/xenonsb/Haxball-Room-Extension.git ./HaxBall\ Client-darwin-x64/HaxBall\ Client.app/Contents/Resources/app/Haxball-Room-Extension
- Linux client
nativefier https://www.haxball.com/play --internal-urls ".*?\.haxball\.*?" --name "HaxBall Client" --inject haxball-client/inject.js --inject haxball-client/inject.css --icon haxball-client/icon.png --tray start-in-tray --fast-quit --arch x64 --platform linux --file-download-options '{"openFolderWhenDone": true}' --app-version 0.3.4 --build-version 0.3.4
git clone https://github.com/xenonsb/Haxball-Room-Extension.git ./HaxBallClient-linux-x64/resources/app/Haxball-Room-Extension