Goldfish Draft: Calculating Your Score


These are notes to assist in calculating your Goldfish Draft score, after you've drafted your cards.

General principles

Begin by going through your cards and working out what your "engine" is. You need a way to generate points, usually by dealing damage to the goldfish, but you can also get points by milling cards out of the goldfish's library, giving the goldfish poison counters, or making the goldfish lose the game.

To deal a lot of damage, you can try:

To assist with these, you will almost certainly (but not necessarily) need to:

For some engines, it will also be very useful to:

When you have an idea what your engine is, start plotting out your turns. Your first few turns will probably be building up your mana base and allowing you to draw the spells you'll need to cast to get your damage engine started. Scoring points in the first few turns is much less important that setting up your engine as fast as possible. One extra turn with a decent engine can net you enormous numbers of points, so it's (usually) not worth sweating over a handful of early points. (An exception is if your damage engine multiplies based on the damage previously done via some mechanism. For example, if you get a creature token each time you attack, and later turns double your creature tokens each turn, then it's worth attacking early to increase your number of tokens before the exponentiation kicks in. Just like compound interest, a small increase in the principal will result in big returns.)

Once you get your engine running, the points will start to stack up. Good engines will multiply or exponentiate the number of points you can score each turn, which means that the points you score in your last turn will completely overwhelm any points scored in all previous turns. A good engine will quickly rack up enough points to require scientific notation to write down. At this stage, it may be easier to keep track of the base-10 logarithm of your score.

At this point a spreadsheet may come in handy. Record numbers of important parameters on a line, and calculate how they change and how many points you score during attack phases or when casting spells. For example, you might record that you have 100 token wolf creatures, each one with power 50, and each turn your engine doubles the number of wolves and adds 50 to their power - then damage each turn is the product.

At this point it's simply not worth it to try to track your score exactly. Attacking with a bear for 2 extra damage is inconsequential when your score is 10100 - just ignore it. For that matter, when your score is that high, it doesn't matter if you attack with a million bears every turn. Additive damage becomes unimportant. Only keep track of what's multiplying your score.

To estimate your score over several turns, you can see how much your score multiplies each turn when your engine is in full swing and you're no longer making significant changes by casting more spells that ramp it up even further. For example, if by turn 5 you notice that your engine multiplies your total score by approximately 1050 each turn, you can simply take your turn 5 score and multiply by 10100 to estimate your final score after turn 7. This becomes very useful when you have thousands or bazillions of extra turns.

Sometimes your score won't multiply by a constant number each turn - it will multiply by itself, or by itself squared, or itself to the power of itself, or something else ridiculous. Now is when you turn to Knuth's up-arrow notation (see below).

Keeping track of things

Mana: You should keep track of how many of each basic land you have in play, as well as other sources of mana. Since this is the fundamental limit on how many spells you can cast and abilities you can activate, it's important to track it exactly, at least until you have so much mana that you can approximate by taking logarithms.

Cards in hand: You don't need to keep track of exactly what cards are in your hand. Because the deck is stacked and you draw whatever you want, this means your hand can (usually) be treated as a magical Schrödinger hand, and the exact card you need is in there when you choose to play it. You only need to track how many cards are in your hand. The exception is if you need to reveal your hand at some point to fulfil a condition, such as revealing 7 lands to flip Sasaya, Orochi Ascendant.

Using Knuth's up-arrow notation

Sometimes scores are so large that normal scientific notation with exponents of 10 becomes too cumbersome. The best way to write them down sensibly is using Knuth's up-arrow notation.


Interpolating up-arrow notation with non-integer operands

Knuth's notation is not defined when the operand after the arrows is a non-integer, but for purposes of comparing scores it's useful to have an interpolative definition for how to approximate such numbers. We use a "linear" interpolation based on super-logarithms:

slog(x) = log*(x) = (the number of times you need to apply the log function until the number becomes less than one, minus 1, plus the fractional number left over)

The inverse of this can suffice as a definition of fractional powers in superexponentiation (two up arrows).

I've then extended the idea to the next layers, defining log**(x) as:

log**(x)= log**(log*(x)) + 1 for x > 1
= x - 1 for 0 < x ≤ 1

This mirrors the definition for superlog but just moves one operation up the chain. Similarly:

log***(x)= log***(log**(x)) + 1 for x > 1
= x - 1 for 0 < x ≤ 1

These aren't the (hypothesised to exist) analytic continuation of the up arrow functions, but are easy to calculate and monotonically related so for the purpose of writing down a score I think they do the job perfectly fine. (As long as everyone uses the same method, the person with the higher numbers will still have the true higher score.)


Convert 10149 into 10↑↑X

149 = 102.173, so 10149 = 10102.173.

Now, 2.173 < 10, so 10102.173 is between 10↑↑2 and 10↑↑3.

To get the fractional part we use a linear approximation. Take log10(2.173), which is 0.337.

So 10149 = 10102.173 ≈ 10↑↑2.337

Converting up-arrow bases

Often large scores are created by successive doublings of numbers, which means it's easier to work them out as up-arrow expressions with a base of 2. Here are some useful conversions to base 10.

In general, to convert from X↑↑n to Y↑↑m (where m is to be found):

  1. Find N such that X↑↑N ≥ Y↑↑2 = Y↑Y. i.e., N = ceiling(slogX(Y↑Y)).
  2. Find M = slogY(X↑↑N).
  3. Approximate X↑↑n by Y↑↑(M + n - N).

Due to the linear approximations used, this is not nicely reversible. We get 2↑↑n ≈ 10↑↑(n - 2.37), but 10↑↑n ≈ 2↑↑(n + 2.30). The "proper" adjustment factor is probably somewhere between the two, if we could compute the analytic continuation of the up-arrow function.

Similarly for higher powers - basically we want to find X↑↑↑N = Y↑↑↑2 = Y↑Y, then use that as the benchmark for conversion. Chose Y↑Y on the grounds that it should be large enough to make differences wash away, but admittedly that assumes largeish Y like 10, not 2.

Wizards of the Coast, Magic: The Gathering, and their logos are trademarks of Wizards of the Coast LLC in the United States and other countries. © 2015 Wizards. All Rights Reserved.
This site is not affiliated with, endorsed, sponsored, or specifically approved by Wizards of the Coast LLC. MAGIC: THE GATHERING® is a trademark of Wizards of the Coast. For more information about Wizards of the Coast or any of Wizards' trademarks or other intellectual property, please visit their website at

mezzacotta | Comic Irregulars' Magic: The Gathering | Goldfish Draft

Last updated: Tuesday, 28 April, 2020; 00:41:41 PDT.
Original material copyright © 2015-2020, The Comic Irregulars.