ScoreGeek

Writing a scoring sheet

A scoring sheet is what ScoreGeek puts on screen when you score a game. It is a list of things to fill in, plus the arithmetic that turns them into a score.

This walks through building one, from a sheet you can finish in two minutes to the awkward games that need real work. You do not need to be able to program. You do need to know how your game is scored.

One idea underpins everything here: a sheet is a list of fields, in order, and each field does exactly one thing. Anything complicated is several simple fields in a row. That is the whole model, and once it clicks the rest is detail.


Before you start: is there one already?

Open the game, look at Scoring templates. If there is one marked (Official), it has been checked by hand: use it. If there is a community one close to what you want, Duplicate it and change what you need rather than starting from nothing.

Write a new sheet when the game is not covered, when you play a variant that scores differently, or when an existing sheet is wrong.


Your first sheet, in two minutes

The simplest useful sheet is one field.

  1. From the game's page, choose Scoring templates → New.
  2. Give it a Name ("Standard scoring") and a Description; one line on what it covers, which is what other people see in the list.
  3. Add a field: Label Points, Key points, type Counter.
  4. Save, then press Test.

That is a working sheet. Everyone gets a Points box, highest total wins.

Most games deserve better, because a single box means doing the arithmetic in your head, which is the thing you wanted the app for.

Label and Key

Every field has both, and they are for different readers.

If nothing else in the sheet does arithmetic, the key never matters: set it and forget it. Once something does, renaming a key will stop the formulas that point at it from finding it, and a field it cannot find counts as zero.

Note

Optional, and the most under-used setting in the builder. It puts a line of instruction under the label while people are scoring: the place for the warning that saves an argument. The official 7 Wonders sheet says "count total coins, not points" on its treasury field, because counting the points is the mistake everyone makes.


The ten kinds of field

Grouped by what they are for, rather than alphabetically.

Things people fill in

TypeUse it for
CounterA number, with + and − buttons. The workhorse: points, cards, coins, victory tokens.
TallyA number built up from separate entries, each kept. Use it when scores arrive one at a time (a round of Cribbage, a contract) and you want to see the parts afterwards. Pass records a turn that scored nothing, and the list icon beside the total shows every entry numbered, with a running total.
Hidden TallyThe same, but the running total is concealed until the reveal. For games where knowing the score changes how people play.
Math TallyA tally whose every entry is a few numbers worked together: Kingdomino's territories, each its squares × crowns. Name the numbers (two to four) and choose how they combine (multiply, add, subtract, divide, the largest or the smallest); each entry then reads "7 × 2 = 14", and the field is their sum.
ComboA dropdown of named options, each worth a value. Good for a fixed set: a wonder, a difficulty level, a scenario.
ToggleTwo states, each worth a value, and the off state can score too, which is useful for a penalty. "First to finish", "built the monument".

Things worked out for you

TypeUse it for
MathArithmetic on other fields. See Doing arithmetic below.
FootnoteNot a field at all: a line of text, used as a heading to break a long sheet into sections.

Things that decide the outcome

TypeUse it for
TiebreakerWhat settles two players on the same score. Takes several values in priority order, so "most gold, then most cards" is one field.
Win ConditionMeeting it wins the game outright, whatever the scores say.
Potential WinMarks someone as able to win: used in co-operative games.

The last three only run once everybody has been scored, so they need Postgame ticked in Advanced Options. The builder refuses to save them otherwise, rather than letting them sit there doing nothing.


"Add to total": the mistake everyone makes once

Under Advanced Options, every field has Add to total. It decides whether the field's value is part of the score.

Leave it on for anything that is points. Turn it off for anything that only feeds a calculation.

Here is the trap. Say a game scores one point per three coins. You make a Counter called coins, and a Math field that divides it by three. If coins still has Add to total on, you score the coins and the points: eight coins become 8 + 2 = 10 instead of 2. The sheet saves happily and every total is wrong.

So: a field that exists to be read by another field should not add to the total.

On a Math field, the same checkbox does one more thing. An untallied Math field becomes working: still calculated, but hidden while scoring and shown in the results breakdown. That is how you keep a sheet with nine intermediate steps from looking like a tax return.


Doing arithmetic

A Math field performs one operation. Not an expression; one operation, on operands that are either other fields or plain numbers.

sum, subtract, multiply, divide, square, largest, smallest, greaterthan, lessthan, isequal, inrange, ifelse, lookup, and two that compare players (greatest, least).

So a compound rule becomes a chain of fields. "Two points per set of three different symbols" is: count each symbol, take the smallest count, multiply by two.

Order is what makes a chain work

Fields are evaluated top to bottom. A field can only read something above it. A formula pointing at a field further down gets zero, because it has not been worked out yet, and zero is a plausible-looking wrong answer rather than an error. If a calculation stubbornly reads 0, this is the first thing to check.

Two formulas worth knowing about

ifelse takes a test, a then, and an else. Anything other than zero counts as true. It turns four fields of arithmetic into one, and the comparison formulas (greaterthan, isequal, inrange) exist to produce its test.

lookup reads a step table: a value, then threshold/result pairs, and it takes the result for the highest threshold reached. Azul's floor line (−1, −1, −2, −2, −2, −3, −3 depending on how many tiles you dropped) is one lookup field instead of about fifteen.

A worked chain: 7 Wonders science

Science scores the square of each symbol type, plus seven for every complete set of three. This is how the official sheet does it: go and look at it, it is the clearest example in the app:

OrderFieldWhat it isAdd to total
7sci_notefootnote: "Count symbols of each kind. Sets and squares are calculated automatically."-
8–10tablet, compass, gearcounters: all you actually typeoff
11sci_lowestsmallest of the threeoff
12sci_setsmultiply: sci_lowest × 7off
13–15sci_sq_tablet, sci_sq_compass, sci_sq_gearsquare of each counteroff
16sci_squaressum of those threeoff
17sciencesum: sci_sets, sci_squareson

Ten fields, three of which anyone types into, and exactly one that scores.

Read it from the bottom: science is the only thing that adds to the total, so everything above it is working: calculated, hidden while scoring, and listed in the breakdown afterwards. sci_lowest is how many complete sets you have, since a set needs one of each and the smallest count is the limit. The three sci_sq_* fields square each symbol count separately, because a formula does one operation and squaring three things is three operations.

The footnote at the top earns its place: without it, somebody counts the sets themselves and types the answer into tablet.


Counter settings worth understanding

Open a Counter's Configuration and there are eight boxes. Every one has a ? beside it, but three deserve saying out loud.

Square discards Multiplier and Divide By: the squared value is the score. The builder refuses that combination rather than silently dropping one.


Scoring round by round

Some games are not one sheet but the same small sheet repeated: a hand of Wizard, a deal of Canasta, a leg of a race.

Tick Score in rounds in Template Details, then tick Per round on each field that takes a value every round. The scoring screen then shows a card per round instead of one box per field, and the field's score is the sum of its rounds.

Rounds grow as you play. The Rounds setting is only where the grid starts, because a game played to a target does not know its own length. There is an Add round button.

A round sees only itself. A formula on a per-round field gets that round's values and ROUND (which round it is, counting from 1), and nothing from any other round. This is deliberate: a round that could read the one before it would make evaluation order part of your sheet's meaning, and sheets are hard enough.

Wizard, properly

Each hand you bid how many tricks you will take. Make it exactly and you score 20 plus 10 a trick; miss it either way and you lose 10 for every trick you were out by. Every field here is Per round, and only the last adds to the total:

OrderFieldFormula
1bidcounter
2trickscounter
3madeisequal: bid, tricks
4oversubtract: tricks, bid
5undersubtract: bid, tricks
6out_bylargest: over, under
7trick_ptsmultiply: tricks, 10
8bonussum: 20, trick_pts
9penaltymultiply: out_by, -10
10handifelse: made, bonus, penalty. Add to total on

Bid 3 and take 3 scores 50. Bid 5 and take 2, or bid 1 and take 4, loses 30 either way.

Nine fields to express one sentence of rules looks like a lot, and it is worth seeing why. out_by is how you write "the difference, ignoring direction" when there is no such operation: the larger of a difference and its negation. That is the shape of most of the work in a complicated sheet: not difficult, just patient.


Deciding the winner

In Template Details:

Tiebreakers

A Tiebreaker field (with Postgame on) says what settles equal scores: most often "whoever had the most of something".

When the sheet cannot settle it, the host says who won. A game still tied after every tiebreaker, or on a sheet with none, stops at "It's a tie!" and shows the host the players who are tied, all ticked. Leaving them ticked shares the win; unticking names the winner. The result then says the table decided, so it never looks as though the sheet worked it out.

Many games end their tie rules on something no sheet records: who took the last turn, who is earliest in turn order, or simply that the win is shared. Write that rule in If still tied, under Template Details, as a sentence the table can act on: "If still tied, the player who took the last turn wins." It is shown on that screen, so nobody has to find the rulebook. Nothing reads it to score.

Win conditions

A Win Condition means meeting this wins outright, regardless of score. A Potential Win marks a player as able to win, which is how co-operative games express the group's result.


What a sheet cannot know

Worth knowing before you plan around something that is not there.

The sheet does know: PLAYERS (how many are at the table), SEAT (where this player sat, counting from 1), FACTION (which faction they took), and ROUND inside a per-round field. Those are usable in any formula like any other value.


Test it by playing it

Press Test and ScoreGeek starts a real game on your sheet, with two players, on the actual scoring screen. It is not a preview or a simulation; it is the same screen, the same arithmetic and the same results page your players will see. Nothing it produces is recorded: it stays out of your history and statistics, earns nobody an award, moves nobody's rating, and is thrown away when you are done.

Worth doing before you publish, in this order:

  1. Enter a realistic game. Not all ones; numbers that could happen.
  2. Watch the running total as you type. If a number moves when it should not, you have an Add to total on something that only feeds a calculation.
  3. Reload the page. Everything you entered should still be there.
  4. Finish the game. This is the only way to exercise a tiebreaker or a win condition; they run at the end and nowhere else. Check the breakdown: every intermediate step is listed, which is where a wrong chain becomes obvious.
  5. Discard the test.

If your sheet will not save at all, read the message: it names the field and says what is wrong with it. The builder refuses sheets that would score incorrectly rather than letting you find out from a confused table three weeks later.


Publishing

A saved sheet is immediately usable; it appears under that game for everyone, not just you. Other people can upvote it, and the list is ordered official first, then by votes, so a good sheet rises.

(Official) is applied by an administrator after checking the sheet by hand; you cannot set it yourself. Official sheets sort above everything else and are what the app recommends, so a well-made community sheet becoming official is the goal.


Checklist before you publish


Campaign games

A campaign game (Pandemic Legacy, Dorfromantik, Gloomhaven) scores like any other game. What changes between plays is the board, not the arithmetic, so there is nothing special to do to the sheet.

What you do get is the sequence. Starting a game lets you say it continues a campaign, and the campaign's own page lists its games in order with everyone's running totals across them. That covers the games that keep a cumulative score (Charterstone over twelve games, Risk Legacy being first to three wins) without the sheet needing to know anything about it.

Several campaigns of one game is the normal case: Dorfromantik with one group and Dorfromantik with another are separate runs, each with their own history.

If a game's progress is tracked on a paper sheet, photograph it. Photos attach to a game and are kept, which is how a lost Dorfromantik sheet becomes recoverable.

Co-operative games

Tick Co-op and the whole table wins or loses together.

Two things follow. First, ticking it adds "Did you win?" to your sheet, because a co-operative sheet that names no win condition is read as "finishing is the win": right for Spirit Island, wrong for Pandemic. Delete it if finishing really is the win.

Second, you can tick Score as a group. The table then gets one sheet, labelled with everybody's names, which anyone at the table can fill in, and the result is recorded as each player's own, so it still counts towards their personal bests.

A co-operative game deliberately does not move anybody's skill rating or earn the awards that are about outscoring the other players, because the only people at the table were on your side.

When a game does not fit

One shape is still awkward:

A known gap rather than an oversight.