Blades & Biscuits comes with the BBHL, but it'll play any league you give it. A custom roster set is a few plain text files: your teams, their colours, and players with names, numbers, sizes and ratings. Friends install it from Settings ▸ Rosters. Then it shows up in team select beside the BBHL, and LT / RT switches between leagues.
This guide covers everything the game reads, with a complete example to start from.
What you'll make
Custom rosters are JSON files, a common format for text that programs read. There are three kinds:
| File | What it holds |
|---|---|
roster-pack.json |
One league at one moment: its teams, their lines and their players. You'll spend most of your time in this one. |
roster-set.json |
A league's packs, one per date. People install the newest, or go back to an older one. |
roster-repository.json |
The front page: who made it, and the leagues (sets) in it. |
Together they make a roster repository: a folder you can zip up and send, or put on the web.
my-rosters/
roster-repository.json the front page
pond/ a folder for each set
roster-set.json its updates, by date
2026-10-05/
roster-pack.json the teams and players as of that day
changes.md (optional) what changed since the last one
Quick start
The fastest way in is to change the example and import it.
- Download the example repository and unzip it. It's the Pond League: the Pinecrest Porcupines and the Saltmarsh Sturgeon, 20 players each.
- Open
pond/2026-10-05/roster-pack.jsonin a text editor (TextEdit, Notepad and VS Code all work). Rename a team, change itscolors, or give a player a new name and number. - Update its checksum. The game checks every pack against the
sha256inroster-set.json, and your edit just changed it. Drop the pack onto the checker and copy the newsha256andsizeinto that update inpond/roster-set.json. Or delete thesha256line while you experiment, and the game skips the check. - Zip the folder again (on a Mac: right-click ▸ Compress; on Windows: right-click ▸ Send to ▸ Compressed folder).
- Import it: in the game, open Settings ▸ Rosters ▸ Import a zip. Pick Open the inbox
folder and put the zip there, then back out and open Import a zip again: it's in the
list. You can also type the zip's path, or an
https://address where it's online (the easy way on a phone, a tablet or an Apple TV). - Play it: in team select, press LT or RT until you reach POND.
When that works, start your own: copy the example, rename the pond folder and its id, and fill
in your league. The roster pack and ratings pages say what
every field does.
Sharing it
There are two ways to get a roster set to other people:
- Send the zip. They use Import a zip, just like you did. When you update it, you send a new zip.
- Put it on the web (GitHub, GitHub Pages or any web server) and give them the address. They use Add a repository once, and Check for updates shows them each new update you post.
Publishing walks through both.
What a roster set can change
| You choose | The game takes care of |
|---|---|
| Each team's name, short name (the scoreboard's letters) and colours | The home and away jerseys, made from the colours |
| Each team's logo | Showing it in team select, on the scoreboard and on the jersey |
| Three forward lines, three defence pairs and a starting goalie | Line changes, power plays and penalty kills |
| Each player's name, number, position and shooting hand | The jersey's name and number |
| Each player's height and weight | How big they look, how hard they hit, how much net a goalie covers |
| 22 ratings for skaters and 7 for goalies | How each player skates, shoots, passes, hits and saves |
The game picks a jersey design for each team from its name. Textures for uniforms, helmets, masks, sticks and faces are coming with the new player models.
Whose rosters?
The game doesn't host roster repositories, check them or vouch for them. It only reads the address you give it. Before anyone's first import, it shows a notice saying so. If you share a roster set, make sure it's yours to share.
In this guide
- The roster pack: teams, colours, lines and players.
- Ratings: every rating, and what it does on the ice.
- Logos and art: each team's logo, and the textures that are coming.
- Repositories: the two index files, dates and history, and zips.
- Publishing: sharing a zip, GitHub, GitHub Pages, your own server, and private servers.
- Examples: files to download and copy from.
- Checker: checks your files the way the game does, and works out checksums.
- Troubleshooting: what the game's messages mean.