Fluorine: a Halite 3 replay viewer


This year I was given a bit of advanced warning about the replay file format, and thus present to you Fluorine, an offline replay viewer for Halite 3.


  • Many realtime statistics
  • Ship finder (search by ship ID)
  • Ship fate finder
  • Collision finder
  • And more


Great Job. Thank you. Works for me. Looks like the only option on Linux by now.


Awesome tool, easier to see what’s going on.

What is the “burned” stat?


When a ship moves, it costs 10% of the halite underneath them to do so.


I don’t know what I’m doing wrong, but I can’t get it to work.

I installed npm and electron, then I start the player with “electron .” and I get the window, but I can’t play any replays with it. The window stays black and I only have the menu at the top.


When you try to load a file, does the open file dialog appear? And after that, does any information appear in the Dev Console (see “Extra” menu)?

I suppose the first thing to check is, did you run npm install (while being in the directory) - this is needed to download the zstd decompressor for the replays.


The npm install did the trick. Now everything is working. Thanks a lot, and thanks for the great viewer!


In Ubuntu 16.04 app doesn’t react on any key press. I can interact only with top menu


Hi @fohristiwhirl,

It is very useful especially for the f_log feature. Thank you very much!
It will be great if there is graph visualization for the right side stats like the web version (but web version only have “profit” view which is not enough). But without that it is still very useful :slight_smile:


Hi @fohristiwhirl,

May I know what is the “+” sign in the Ship id?
like [Ship 0+] .
Ahh…it means the ship is inspired. Thanks.


If anyone’s using OS X, user DomNomNom recently added monitoring of a folder for new replays to be opened automatically, which seems to struggle on OS X, and we’ll be trying a fix soon, but express your interest in testing it here, if you like. :slight_smile:


I think we’ve fixed OS X support for the live folder monitoring – just pull the latest and try it out!


I’ve had a report of total-failure-to-start on Ubuntu 16.04 now. Anyone else experiencing this?


Thanks for making this. Works great. Couldn’t get the official viewer to work on linux.


I don’t understand how to launch replays on ubuntu. Can you help me?

# clone the repo
git clone https://github.com/fohristiwhirl/fluorine
cd fluorine

# install fluorine dependencies (requires node installed)
npm install

You then need electron to actually run the app. You can install electron globally or locally into fluorine:


npm install -g electron
# to run fluorine
electron . -o replay_file.hlt

Locally (i.e. in fluorine directory)

npm install electron
# to run fluorine
./node_modules/.bin/electron . -o replay_file.hlt


What does it mean when it says “Discrepancy”?

Is that a problem with my bot or the viewer?

In the viewer it looks like one of my ships dies when it crosses an enemy spawn, but the ship keeps reporting stuff in the log as if it’s still alive and doing stuff.

replay-20181031-125958 0000-1540913747-32-32.hlt (116.3 KB)

I’ve attached the replay file in case you’re interested. Happens on turn 77


Discrepancy means the numbers in the replay don’t quite add up to what the viewer expects.

I can’t download the replay, it seems. But is it this game? I don’t think you’ll get a discrepancy message with a recent version of Fluorine, what version do you have?


I was using an old version but I’ve updated to 1.2.2 and it still happens with that replay. Not a big deal now I know what it means.

Was just a local test game, not the one you linked

Hopefully this link should work


Ah. This game was played with a fairly old engine - there was a bug that caused the location of a collision to be reported in the wrong place, it’s fixed in the current engine.

What happens is that your ship 6 passes over an enemy factory at the same time as a spawn, causing a collision, but the old engine would put the collision in the wrong place (over your own factory). The viewer therefore thinks the dropped halite should go to you, sees that it goes to the other player instead, and notes the discrepancy.

This will not occur with the current engine.