HaxBall News

Update: Handicap feature and tuned netcode!

This update is backwards compatible, so you won’t get any rooms marked with [OLD] this time, to check if you are running on this version try typing “/handicap” on the chat, it should print “* Ping handicap requires a value in milliseconds”.


  • Added the /handicap chat command, it allows players to add lag to themselves while simultaneously reducing the lag with which other players will see their actions. Low ping players who are good sports can use this feature to level the playing field against more lagged players.
  • The netcode has been improved a bit, the game should now be a bit more stable when the ping graph is noisy. It should also recover faster from a surge of lag spikes.
  • Changed the ping display to better reflect the effective ping of the players, it will now show slightly higher ping than before if your ping is noisy.

Handicap feature explained: 

You use this feature by entering “/handicap <delay in milliseconds>” into the chat. For example “/handicap 100” will add 100 milliseconds of ping to yourself. (Even the host can add lag to himself).

Every millisecond of lag you add to yourself will also reduce the lag/warp produced by your actions for every other player on the server by the same amount.

For example: Player A and player B are in a server. A has got 100msec of ping, B 200msec. If player A sets a handicap of 50msec to himself then he will have a total of 150msec of lag/warp, while at the same time player B will see player A’s actions with 50msec less lag/warp, which means he will see him with an effective 150msec of ping, thus A and B can now play in a more level field. 

A good rule of thumb to achieve “lag fairness” is to set the handicap to half of the ping difference between you and the more lagged player you want to help out.

One very important thing to note is that by handicapping yourself you will only reduce the lag/warp other players see of your own actions/movement, it will not affect how much lag/warp other players see from anyone else’s actions/movement. It is completely impossible to use this feature to gain any kind of advantage over other players (unless you can convince them to voluntarily handicap themselves :P).

With this feature it is possible to play a 1v1 against someone across an ocean and still have it completely fair, instead of one player experiencing 300msec of lag and another player 0 it’s now possible to share the lag 50-50 as if you were playing in a host located exactly in the middle. You can also give yourself extra lag to balance against unskilled players ;)


Edit: I found a bug and released a bugfix, read the next blog post for details.

Update: Ping vision!


  • Players ping is now visible next to their nicks in the room player list. 
  • Player names in the room players list are now left aligned and the player list is slightly wider.
  • Hardware acceleration setting is ignored if you are using Chrome + Pepper Flash. (For some reason wmode=direct seems to be slower and causes lag in the new flash player used by Chrome)

About the ping being displayed:

  • It correlates to the first of the two values shown in the bottom right of the screen. (eg Ping: This / NotThis ).
  • It is less precise than the value players see in their bottom right. It will increment in steps of 16 milliseconds.
  • For everyone but the host the displayed ping value will update once every 2 seconds. The host sees the ping changes as soon as they happen.
  • The ping will appear in recorded replays, but it will also update only once every 2 seconds.

That’s it for now, more updates to come soon.


Latest Chrome update breaks HaxBall.

Chrome has recently released an automatic update which changes the flash player it uses. This new flash player (called Pepper Flash) seems to have issues with HaxBall and may cause lag and all sort of other problems.

If you are experiencing problems playing HaxBall in Chrome I highly recommend you try with another browser like Firefox or Opera

Meanwhile I’ll be trying to find a way to make HaxBall work properly in Pepper Flash.

Please help spread the word.


After doing some tests, it seems like the hardware acceleration mode might be the cause of some of the issues  (For those who know flash this option sets wmode = direct in the embed script). Interestingly enough disabling hardware acceleration doesn’t seem to decrease the rendering performance with Pepper Flash, so in the next update I’ll make that feature be ignored if Pepper Flash is detected.

I still recommend using another browser (or disabling Pepper Flash player) since it seems pepper flash is a bit more cpu intensive than the vanilla flash player, but hopefully this change will improve the situation for Chrome users.

Update: Custom stadium storage and checksums

This update is meant to help leagues and other organizations that want to play custom stadiums in a competitive environment. It also makes hosting and sharing custom stadiums way less of a hassle.


  • Added a /store chat command which stores the currently loaded stadium. Stored stadiums will appear in the stadium picker list marked yellow.
  • Added a delete button to the stadium picker list, it lets you remove previously stored custom stadiums.
  • When a custom stadium is loaded the game will now display it’s checksum in the chat. The checksum can be used to identify a custom stadium and prevent fakes.
  • Added a /checksum chat command, using it will display the checksum of the currently loaded stadium. (Useful in case you joined after the stadium was loaded)

Stored stadiums can easily be lost so don’t depend on them to be there forever, keep the .hbs files on your hard drive.


Tiny update: Improved chat log.


  • The chat log will no longer reset it’s position to the bottom when a new message arrives while you were scrolling through it.
  • Lot’s of tiny bug fixes inside the chat log which no one will notice anyway.

The chat log used to be very annoying to scroll through, almost impossible to read what was said in the log when people are still sending messages. This update hopefully addresses that problem and makes the chat log actually useful for a change.


Bug: Waiting for game state… (Probably fixed)

There seems to be a new bug in town which is causing the connection process to hang in the “Waiting for game state” stage. I have not made any changes to the game recently so I’m quite baffled about why it might have started happening.

In any case, I’m just posting to say that I’m aware of the problem and working to fix it. So don’t panic, HaxBall will return to being fully operational soon.


The bug is a tricky one, I don’t know exactly why happens and I was not able to find a good way to reproduce it reliably.

I just released an update which may fix the bug. I’m not 100% certain that it is fixed but I was unable to reproduce the bug with this new version, fingers crossed.

Update: Pause countdown and bugfixes.


  • Resuming a paused game now has a 2 seconds delay during which a progress bar is displayed.
  • Fixed a bug in which typing the letter p in the kick reason would pause the game.
  • Slightly lowered the replayer time tooltip position so that it doesn’t get cropped out if the window is too small.
  • Made some internal changes to the server to make the geolocation more robust.


Problems with geolocation

I’ve just found out about it and I’m working to fix it.


As far as I’ve seen the problem seems to fix itself if you close and open the browser again. It’s probably something going wrong on the servers of the geolocation service I’m using. So if you are having trouble try closing and opening the browser again.

Update: Game pausing and replayer tooltip.


  • Added a pause button that admins can use. It should be useful for when a player leaves, you can pause the game while you fix the teams. I understand very well that crappy room admins will be even more annoying with this feature in their power, but bad admins can be pretty annoying without it  anyway. If someone abuses it just find another room ;)
  • Added a tooltip to the replay progress bar which tells you the game time at that point. (Only works on replays made with this and future versions)


Update: Replayer improvements!


  • Added a progress bar to the replayer control panel. Clicking on it will make HaxBall fast forward until it reaches that position, this emulates some form of video seeking.

Yes, just one change! Since this change doesn’t break backwards compatibility I decided to release asap.

This feature is only available for replays recorded after the previous update.