Yet More Year Zero

Posted: 2020-02-11
Word Count: 1356
Tags: lua-code rpg year-zero-system

Table of Contents

After having read (half) the PDF of Tales from the Loop (TFL), I’ve had a few remaining thoughts about the Year Zero Engine.

Conflict Without Combat

Since the focus of TFL is Kids having Adventures rather than murderhobos adventurers questing for loot, TFL is a bit of an outlier among Year Zero Engine games.

The net result is that TFL lacks “combat” as most RPGs define it. Kids get into fights with each other, but the results are a few bruises and hurt feelings. With stakes so low, TFL doesn’t need to track rounds or “initiative”, especially with players making all the rolls. The GM sets the scene, the players describe what they’re doing, the dice decide how well or badly they’re doing it as necessary, the GM describes how that affects the opposition (human, mechanical, or natural), and the cycle repeats.

TFL isn’t really my cup of Ovaltine. But I really appreciate an RPG in which player characters aren’t in life-or-death circumstances, much less seeking to kill things and take their stuff1. Taking a minute or more of play for each second of “combat” sometimes feels like a waste of time, even in “rules light” systems.

Difficulty Factors

The Year Zero System’s central mechanic – roll a pool of six-siders, at least one six is a success – already skews against success. Unlike most systems, TFL has little need to define difficulty factors. Non-player characters and machines are merely narrative devices, usually with no associated characteristics.

However, the GM may require two or even three sixes on the dice to overcome a specific Trouble. (Two is “Extremely Difficult”, three is “Almost Impossible”.) A few NPCs may have “special attributes” that indicate certain kinds of Trouble require extra successes. For example, a robot may have Powerful Hydraulics 2, which means any Kid who pits their own strength against the robot must have two successes to win. In one of the Mysteries that make up more than half of the book, a particular crowd requires 3 successes to push through.

So, how difficult is Extremely Difficult or Almost Impossible? As usual, I turned to programming to understand a tabletop game, and came up with this chart.

Dice Normal Extremely Difficult Almost Impossible
1d 16.67% 0.00% 0.00%
2d 30.56% 2.78% 0.00%
3d 42.13% 7.41% 0.46%
4d 51.77% 13.19% 1.62%
5d 59.81% 19.62% 3.55%
6d 66.51% 26.32% 6.23%
7d 72.09% 33.02% 9.58%
8d 76.74% 39.53% 13.48%
9d 80.62% 45.73% 17.83%
10d 83.85% 51.55% 22.48%
11d 86.54% 56.93% 27.32%
12d 88.78% 61.87% 32.26%
13d 90.65% 66.35% 37.19%
14d 92.21% 70.40% 42.05%
15d 93.51% 74.04% 46.78%
16d 94.59% 77.28% 51.32%
17d 95.49% 80.17% 55.65%
18d 96.24% 82.72% 59.73%
19d 96.87% 84.98% 63.57%
20d 97.39% 86.96% 67.13%

Short answer? Pretty damn hard.

Even with rerolls from pushing and Luck Points (another TFL thing), even competent Kids will struggle. For example, say a Kid would roll 6 dice for Trouble, which puts their chance of success at 67%. This drops to 26% for “Extremely Difficult” and 6% for “Almost Impossible”. If they pushed that roll – about equal to rolling 12d – chances would rise to 62% and 32%, respectively. Pushing an Almost Impossible roll and using a Luck Point – perfectly legal, if I read the rules right – puts the Almost Impossible at 60% (equivalent to rolling 18 dice).

With enough dice, the Almost Impossible becomes doable … but to get those dice one must gain a Condition and/or lose a Luck Point, of which the average kid has 32. And what about the next Trouble?

Other Year Zero games subtract 1-3 dice from the dice pool to reflect difficulty. As far as I can tell, TFL doesn’t. Number of successes is a very coarse-grained mechanic; as the sole difficulty gauge it may be simpler and less arbitrary but some GMs may miss the fine control.


If I’m probably never going to play this game, let alone run it, why take an entire blog post to analyze probability curves and rules?

Ultimately TFL demonstrates how few rules an RPG really requires. All but about 20 pages of the rules are background, description, adventure hooks, and fully worked adventures. Over half the 190+ pages are the Mysteries themselves, which but for a few scattered special attributes consist entirely of exposition, maps, diagrams, and NPC profiles in purely descriptive terms.

Program Listing

Most of this should be familiar from a previous article. Note that I’m using a different and faster defiinition of choose().

#!/usr/bin/env lua

-- Chances of success on a single die
local SUCCESS = 1/6

local function choose(n, k)
    if n < 1 or k < 0 or k > n then
        return 0

    local result = 1
    for i = 1, k do
        result = result * (n + 1 - i) / i
    return result

local function binomial(n, k, p)
    return choose(n, k) * (p)^k * (1-p)^(n-k)

-- chance of rolling at least `k` successes on `n` dice
local function success_at_least(n, k)
    local result = 0
    for i = k, n do
        result = result + binomial(n, i, SUCCESS)
    return result

local function format_percent(p)
    return string.format(" %5.2f%% ", p * 100)

local function print_table(maxdice)
    local md = (maxdice or 10)
    local rowbuf

    -- print header
    rowbuf = { "Dice ", " Normal ", "Extremely Difficult", "Almost Impossible" }
    print(table.concat(rowbuf, '|'))

    rowbuf = { ":---:" }
    for n = 1, 3 do
        table.insert(rowbuf, "-------:")
    table.insert(rowbuf, "")
    print(table.concat(rowbuf, '|'))

    -- print each row

    for n = 1, md do
        rowbuf = { string.format(" %2dd ", n) }

        for k = 1, 3 do
            table.insert(rowbuf, format_percent(success_at_least(n, k)))

        table.insert(rowbuf, "")
        print(table.concat(rowbuf, '|'))


  1. Or even threaten them with death in order to take their stuff. ↩︎

  2. A Kid has (15 - age) Luck Points, and leaves the game at age 16. A Kid also has their age in total Attribute points to spend, so it’s a tradeoff. ↩︎

  3. In literature and their own minds, not in reality nor even Things from the Flood↩︎