HaxBall News Play About Community Flash

HaxBall News


Mar 20, 2020

Small update that gives room hosts the ability to require joining players to complete a recaptcha challenge.

I recommend only enabling this feature when you notice the room is under attack, a headless host should probably automatically activate and deactivate this depending on how many players joined the room in the last minute.


  • Added /recaptcha chat command.
  • Added setRequireRecaptcha to headless host room object.
  • Improved message shown when failing to connect to a room. Instead of just saying “Failed” it now links to the connection issues wiki page.
  • Improved message shown when trying to join a room that has already been closed.

Jul 29, 2019

This update is pretty big and involved some considerable internal restructuring, I’d not be surprized if I broke some custom stadiums in the process. Please report if you notice anything has broken.

Edit: The negative reception to the extrapolation limit was stronger than I expected so I’m reverting those changes.

Game changes:

  • Implemented a video setting for disabling custom avatars.
  • Improved the order in which players will appear in the chat autocompletion list.
  • Implemented a ball kicking ratelimit option which lets you configure how often players can kick the ball. This might be useful to level the playing field between people who are using key repeat macros and players that simply use their fingers. This can be accessed with the /kick_ratelimit chat command (which only admin players can use)
  • Added a lot of new physics features. Among them gravity vectors, a new physics object called “Joint” which can join two discs together, the ability to make any disc kickable or scorable (including players), a configurable kickback force and more. Here’s a video showing gravity and joints
  • Changed the maximum value of extrapolation to 50ms. This feature has been quite a controversial feature and while I don't believe it gives players any advantage it was also never meant to be used with values higher than this anyway.

Headless Host Changes:

You can read full changelog here.

  • Added the ability to remove the headless host player from the player list.
  • Added room announcements with configurable styling and sounds.
  • Added the ability to get and modify all properties of any disc in the game.
  • Added the ability to override the avatar of a player.
  • Added a convinient way to reorder the list of players.
  • Added the ability to set the new ball kicking rate limit options.

Stadium (.hbs) File Changes:

There’s a lot of changes, the full changelog is here.

The stadium files documentation has been revamped and completed, you can read it here.

Update: Resolution Scaling Setting

May 7, 2019

A resolution scaling setting has been added. By selecting a value lower than 100% the game will be drawn at lower resolutions and then the resulting image is scaled up by the browser. This could improve the performance of the game for some people.

Update: Stadium Store And Export

Jan 22, 2019

The /store chat command is back! With it you can store the currently loaded stadium in your hard drive, it will then become available in the stadium list.

You can now also export stored stadiums as .hbs files using the export button in the stadium selection menu.


Flash Stored Stadium Exporter

Jan 15, 2019

The flash version allowed you to store stadiums and some people had their favourite stadiums stored there but didn’t have the original .hbs file.

You can now extract the stadiums that you have in flash storage using this tool.

Update: Nickname Autocompletion

Nov 6, 2018

Typing ‘@’ in the chat will now open a list of all players. You can then select a player with the arrow keys and press TAB to autocomplete. Continuing to type will also filter the list, making it easier to quickly find the player you are looking for.

If someone mentions your nick using this system you will get a highlighted text and a different chat sound (Which can be disabled in the settings). This feature will probably be useful when trying to call the attention of players that are perhaps distracted browsing a on a different tab.

Also, pressing # will do a similar thing but the TAB key will autocomplete using the player’s id number. This should be helpful for referring players when issuing commands to headless room scripts since the id will be unambiguous and easy to parse by the headless room’s script.


Oct 12, 2018

Game changes:

  • Implemented an indicator that shows when a player is typing in the chat.
  • The /extrapolation command is now saved as a setting and persists between games.
  • Added a new zoom option called Dynamic, which dynamically changes the zoom according to the window height. This is now the default zoom option that users see if they load haxball for the first time.
  • Improved error reporting when loading a stadium file fails. If there’s a syntax error it will tell the line and column where the problem is. It will also say in which vertex, segment, plane or disc an error happened if the data is invalid.
  • Added goal markers to HaxBall replay files. They appear as vertical lines in the replay time bar.
  • A few miscellaneous optimizations and bugfixes.

Headless Host API changes:

The full list is here but there’s two notable changes:

1 - Added headless room opening token for solving recaptcha in a different machine, it will help when trying to start a room using a headless browser.

2 - Implemented player auth functionality that lets players identify themselves when joining a room. The id is validated by using cryptographic signing.

The game will now automatically generate a unique Public ID and a Private Key for every player. You can see your own public id and private key here.

This id and key are stored in local storage and reused every time you join a room.

You can use this auth id to make sure that a player is who he says he is, as long as he keeps his private key safe there’s no way to impersonate someone elses id.

Stadium File changes (.hbs)

  • Added a Background color property.
  • Added a cameraFollow property that now lets you make stadiums where the camera will center on the player and ignore the ball. Probably useful for obstacle courses or racing maps.
  • Added a bias property to segments that lets you make one-way walls with configurable thickness. Useful for making bounds of maps with small and fast moving balls that would usually go through normal thin segments.

Stadium File documentation can be found here.

Update: Configurable Keys and more Headless API

Jun 5, 2018


  • Expanded headless host api, changelog is here.
  • Implemented configurable key bindings, accessible from the Input tab in the settings menu.
  • Added higher zoom level options accessible through the Video tab in the settings menu.
  • When you are kicked or banned from a room the game will now tell you who did it.
  • New /extrapolation command which could be useful for players with input lag.
  • And a few miscellaneous bugfixes.
Update: Netcode Improvements

May 30, 2018

As mentioned in the last update, netcode bugs have now been fixed and the game will now be more robust in the face of packet loss.

You might also notice red bars appearing in the ping graph, these red bars signify a ping packet being lost. Packet loss is bad mkay, but not so bad now thanks to the netcode improvements.

Update: Expanded Headless Host API and other things.

May 21, 2018

The Headless Host API has been expanded, check the full changelog here.

Also a few small changes to the haxball client:


  • Fixed bugged /handicap feature. (This was only working correctly if you were the room host, now it should work for clients too.)
  • Added chat log notifications for when a player is given admin rights.
  • Very minor improvements to netcode.

What I’ll be working on next:

I’ve spotted a small bug in the netcode which is basically disabling a fairly significant optimization I had made. Unfortunately fixing this bug seemed to cause new bugs to pop up elsewhere that actually break the game and not just make it less optimal.

So until next update, I’ll be focusing on getting these bugs fixed.

Older posts »