Linking to replay files - haxball/haxball-issues GitHub Wiki

You can link to replay files hosted in your own site. This kind of link will continue to work even between backwards-incompatible updates.

Example

https://www.haxball.com/replay?v=3#https://haxball.github.io/haxball-replays/sample_replay.hbr2

Link Anatomy

https://www.haxball.com/replay?v= replayer_version # url_to_replay_file

replayer_version: This is an integer that lets haxball know which replayer to use for this file, the version changes with each backwards incompatible update. Read below how find out the version of a .hbr2 file.

url_to_replay_file: This is the url to your .hbr2 file.

Obtaining the replay version of a .hbr2 file

The current version of .hbr2 files produced today is 3.

To obtain the version of any .hbr2 file you must read it's header as a binary file:

.hbr2 binary header

The format of this header remains unchanged between HaxBall updates and is safe to read.

The header is written in big endian.

magic_number uint8[4];
version uint32;
replay_duration uint32;

magin_number: This is the string "HBR2" or alternatively it can be interpreted as an uint32 0x48425232. It is advisable to verify that this number matches.

version: This is the replay version that should be included in the ?v=<replayer_version> part of the url.

replay_duration: This is the duration of the replay in logic frames, each frame is 1/60th of a second.

Troubleshooting

Cross-Origin Resource Sharing (CORS)

For the replays to work the replay file url must allow cross origin requests from https://www.haxball.com.

To allow this your server must include the header Access-Control-Allow-Origin and set it to either "*" or "https://www.haxball.com"

HTTP vs HTTPS urls

If your file url is HTTP instead of HTTPS then change HaxBall's url to match or it will fail to load.

For example:

This won't work: https://www.haxball.com/replay?v=3#http://haxball.github.io/haxball-replays/sample_replay.hbr2

But this will: http://www.haxball.com/replay?v=3#http://haxball.github.io/haxball-replays/sample_replay.hbr2