HaxBall News Play About Community Flash

HaxBall News

Input lag improvements

May 1, 2023

This update focuses on improving input lag.

HaxBall now makes use of a canvas rendering feature that reduces rendering latency called desynchronized canvas. So far this feature is only implemented in chromium. This means it works in Chrome, Opera, Brave, Edge and any other chromium based browsers but doesn’t do anything on firefox yet. This browser feature is relatively new so if you are using an old version of a browser there’s a good chance it will not work.

The use of this feature is enabled by default but there’s a new video setting called “Use low latency canvas” that can be used to disable it.

Additionally a small change to input handling was made. In previous versions HaxBall would process player input during the rendering phase. In this new version the input is processed directly in the html input event. This should save a few milliseconds of input lag. It is not as significant as the low latency canvas rendering but this improvement will work in all browsers.


  • Implemented support for low latency canvas rendering.
  • Added “Use low latency canvas” setting to settings menu.
  • Improved player input handling latency.

As an added unintended bonus, it seems the low latency canvas fixes an issue where the latest version of chrome running with the --disable-frame-rate-limit option would freeze and crash. If you were running an old version of chrome in order to use this feature please give the latest chrome a try.

Edit: As of chrome 113 the desynchronized canvas doesn’t fix the frame rate limit disabled issue. However there’s a new fix, simply add –use-angle=d3d9 to the chrome command line. Read more detailed instructions here.

More UI

Apr 28, 2023

More UI changes and some bug fixes.


  • Moved menu and settings button to the top right corner of the screen.
  • Added volume slider next to menu button.
  • Added ToggleChat key in input settings. When bound pressing this key will toggle the chat visibility. Pressing enter or tab to focus the chat will make the chat visible while focused but will hide again after you are done.
  • Added an Empty rooms filter in the rooms menu screen.
  • Made the hardcoded view mode keys (1,2,3,4 and 0) deactivate themselves if you have bound those keys to something else in the input settings.
  • Score and timer bar no longer disappear when looking at the room’s lobby menu (Esc menu).
  • Fixed visual bugs that were happening in older versions of chrome.
  • Fixed bug where loading certain broken maps would crash a host. Headless rooms that don’t update to this new release will still be vulnerable but at least the game interface wont let you load invalid maps anymore.

The menu and settings button in the top right is in my opinion a more logical place for it to be. With the ability to fully collapse the chat I wanted the buttons to still be visible. I’m considering moving the Link Rec and Leave buttons from the esc menu over there too.

UI Update follow-up #2

Apr 26, 2023

By popular demand the restricted view mode is back, however it is now bound to number 0 instead of number 4.


  • Brings back restricted view mode.
  • Adds hardcoded key binding of number 0 to set the restricted view mode.
  • Extrapolation limits have been increased to 1000.
  • Fixed bug where overtime text was visible when the game lobby menu is visible.
UI Update follow-up

Apr 25, 2023

This update adds an option to make the chat background have a very similar look to how it was before while retaining the new features like being resizeable and having configurable opacity.


  • Added Chat background width option to settings -> video. Selecting ‘Full’ will make the chat look a lot like it did before.
  • Fixed a problem where defocusing the chat with tab would cause the menu button to silently be focused. Players using the spacebar to kick would open the menu without intending to.

I’ve heard a lot of feedback and I’ll be addressing more points soon.

UI Update and some bugfixes

Apr 24, 2023

This update focuses on improving the utilization of the screen’s real estate. It should be specially useful for anyone playing on a small screen.


  • The chat box is now resizable by dragging from the top.
  • The chat box will expand when the chat text field is focused. (Height configurable from video settings)
  • The chat box is now translucent. (Opacity configurable from video settings)
  • The game viewport will now occupy the whole screen.
  • The game viewport will continue to render even when accessing the room’s lobby menu.
  • The site’s nav bar will now disappear when you join a room, freeing up 35 pixels for the actual game.
  • Removed the chat box send button.
  • Removed ‘restricted’ view mode option. This was an artifact of the move from flash to html5, I don’t believe anyone was using it.
  • Pressing number 4 will now select 1.75x Zoom instead of the now removed ‘restricted’ view mode.
  • Nicer scrollbars in the room’s teams lists.
  • Fixed bug where the game camera would stop working permanently until leaving the room after witnessing the game physics going awry.
  • Fixed bug where some browsers would be wrongly detected as not supporting datachannels.

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.

Older posts »