Install & first game

You'll need Rust 1.75 or newer. Everything else comes from cargo.

1. Install Rust

If you don't already have it:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# or: brew install rustup-init && rustup-init

2. Clone and build

git clone https://github.com/jakenherman/full-count.git
cd full-count
cargo build --release
# want the opt-in stats? use:
# cargo build --release --features advanced-stats

The binary ends up at target/release/full-count. Symlink or move it onto your PATH if you like.

Tip

During development, cargo run --release works fine. The release profile matters: a debug build will feel sluggish on every keystroke.

3. Start a new game

full-count

You'll land on the title screen. Use / (or j/k) to move the cursor, Enter to select. Choose New game to jump into setup.

Setup

Fill in the away and home team names, pick a color for each (/), then type the lineup for both teams. Tab moves forward, Shift+Tab moves back. With the advanced-stats feature you'll also be prompted for a season batting average per hitter — see Advanced stats.

Once every field is filled, F3 starts the game.

4. Your first at-bat

The scoring screen shows five panels: the scoreboard, the current at-bat, batter/pitcher lines, the play log, and a prompt bar. You type keystrokes; the prompt bar tells you what's legal at any moment. Here's a line-off homerun and an easy strikeout:

# Leadoff batter takes a ball, then a strike, then yanks one over the wall.
B                   # 1-0
S                   # 1-1
H                   # home run — RBI prompt appears
1 Enter             # 1 RBI (nobody on base)

# Next batter watches three go by.
S S L               # strike, strike, strikeout looking

After every play the scoreboard, stat lines, and play log update. If you made a mistake, press U to undo — you can walk backward up to 100 steps.

Esc

Any prompt that accepts typed input — fielder positions, RBI, batter names, save filenames — can be cancelled with Esc, which returns you to the normal at-bat state without changing anything.

5. Save and quit

Press F2 at any point to open the save prompt. Type a name (or accept the suggestion) and Enter. The game is written to ~/.full-count/saves/<name>.json.

Q quits at any point. X ends the game and jumps to the summary screen where you can export the paper-style scorecard.

6. Resume a game

full-count --load cubs-vs-sox                # resume scoring
full-count --load cubs-vs-sox --replay      # walk through it pitch-by-pitch

--load accepts a bare name (cubs-vs-sox), a file name with extension (cubs-vs-sox.json), or an absolute/relative path. Bare names are looked up inside ~/.full-count/saves/.

That's the whole loop. For the full set of keystrokes, see the scoring reference.