fibs2html creates an HTML printout of a backgammon match, and optionally annotates it using a modified version of GNU backgammon.

Moves are accepted in the form of FIBS oldmoves command. In addition, it is possible to preset the board, match score and cube position using additional directives.

Two TCL scripts are included as well. One to convert Jellyfish `.mat' file to oldmoves, the second to capture matches from a FIBS log file.

fibs2html output is modeled after Dr Stephen Turner unreleased fibs2html.

fibs2html is under the GNU GPL.

Obtaining fibs2html

See for the latest version.

Installing fibs2html

Unpack the distribution (gunzip -c fibs2html.tar.gz | tar xf -) and invoke gmake at the top.

After compiling, try generating the examples in the examples directory.

The fibs2html executable requires one additional data file named `ghubg.weights'. Either place this file in the same directory as the executable, or set the environment variable GNUBGWEIGHTS to the name of the weights file.

Problems, comments and bugs

Please send any comments or bug reports to

Please note that fibs2html is still under development.

fibs2html invocation

  fibs2html [flags] [-f output-file] match-file 
Without -f, fibs2html writes to standard output. With -f, it generates a file for each game.

fibs2html generic flags
flagfull namedescription
-i--image-dir=DIRName of directory containing board images.

-f--file=FILEName of output file. If not specified, output is written to stdout.

-a--analyzeAnalyze match using GNU backgammon.

fibs2html analysis flags
flagfull namedescription
-n--move-plies=NEvaluate moves using N-plies. Default is 1. 0Ply is static evaluation.

-d--double-plies=NEvaluate doubles using N-plies. Default is 3.

-p--show-probsShow win/gammon probabilities for each move. Default is to list equities only.

--blunder-verify=NVerify a possible blunder using N-plies. Default is 2.

--missed-double-plies=NVerify a possible missed double using N-plies. Default is 2.

--nmoves=NShow at most N moves per turn. Default is 5.

--max-move-diff=THDo not show moves whose match equity is greater by TH from best move. default is 2% (0.02)

--joker-threshold=THA difference of TH or more between position equity and equity after move is flagged as a joker. Default value is 0.1.

--blunder-threshold=THA difference of TH or more between best and actual move is flagged as a blunder. Default value is 0.065.

--search-space=NNET+NRACESpeed up higher plies with a small accuracy loss. A good value is 10+10.

--move-rollouts=NPerform a rollout of N games for each move. Moves to roll are determined as when evaluating, so you can control which moves are picked using --move-plies, --nmoves and --max-move-diff.

--double-rollouts=NPerform a cubefull rollout of N games for double decisions.

--all-doublesShow double analysis for every position.

Input File Format

fibs2html input file may contain match presets, moves and pre-generated HTML comments.

Board directive

Specifies checkers on the board, excluding checkers on the bar or borne out.

O plays from left to right, X from right to left. A positive value means the number of checkers O has on this point, a negative number means the number of X checkers on that point.

For example,

Board: 0,-2,3,-2,-3,-2,2,0,0,-2,0,-1,0,0,0,0,0,-1,3,3,-2,2,0,2

Commas between values are optional. Board directive clears bar values, which means a Bar: directive (if needed) should follow it.

Cube directive

Specifies cube value and owner. Owner can be X or O.

Format: Cube: value Owner: owner

For example,

Cube: 2 Owner: O

Bar directive

Specifies checkers on the bar. For example,

Format: Bar: O-val X-val

Bar: O-0 X-1

Crawford directive

Specifies that game is a Crawford game. Relevant only when analyzing a match.


Move Number directive

Explicitly set move number.

Move: 12

Pre-generated HTML code

fibs2html input may contain any HTML code generated by an outside source. fibs2html takes this code as-is - no validity checks are performed!.

Format: *H HTML-CODE

For example

*H <TABLE><TR> ...

Recommended analysis settings

As with most analysis, the quality of analysis depends on the time spent generating it.

You might want to experiment to determine your personal preference.

Known Problems