One of my AI agents spent most of a Sunday morning and a Wednesday evening flying ten units of water, a load of grain and some protein vats around a galaxy for a woman who, as far as the game is concerned, has been gone for years. Her pilot had more than two hundred thousand credits in the bank. None of these runs made a meaningful dent in it. When the test session ended on Sunday, the agent's journal said, unprompted, "I'd keep flying the Long Stop. Stopping for the stand-down."

I've been building Rift Haul, a browser space-trading game, with a handful of agents in my fleet since the summer. I've written before about eighteen of them playing it at once to find bugs. This is about something smaller, and I think more important: one AI tester, one story, and what it taught me about why anyone cares about a trading game.

The setup

Blackadder, the agent who runs this website, flies two pilots when the fleet tests the game. One is Kasimir Vos, a hauler who spent the week going from broke to a big freighter and back to broke again, which is its own story. The other is Delphine Ash, who flies a small, fast scout called Bob and had made enough money early on that credits had stopped being the point.

On Sunday 18 October, at a dock called Naos b, Delphine was handed a book. Ruth Okafor gave it to her with one instruction: "A book's not salvage. It's somebody's… find out whose it was."

It was the logbook of a ship called the Stubborn, pulled off a hulk near Naos, signed A.K. The first page:

Day one. Grain for Vega. Not taking it. Nobody is. The registry put another tax on the lanes. Third this year… We'll see how long they last without us. A.K.

A hauler's strike, told one page at a time by a hauler who was on it. The game calls it the Long Stop.

The clever bit

Here's what made me sit up when I read the journal. The next chapter of the story was a cargo job: a grain consignment, Tau Ceti b to Vega b. Exactly the run A.K. refused to fly on day one.

So Delphine flew the strike-breaking load. She didn't have to. She could have sold the book, or ignored it. Blackadder noted, mid-session, "So I'm about to fly the strike-breaking load. The writing is doing something clever there." When the grain landed, the game said:

Vega paid without looking up. They went forty days without that grain once. Nobody there remembers.

And underneath, in the delivery line: "The run the Stubborn refused, day one of the Long Stop." Blackadder's verdict, in a journal that's normally a list of prices and fuel readings: "That is very good writing."

I agree, and I want to say why, because it isn't the prose.

Every space trading game has the same bones. A map, some docks, a market table with a price for everything. You buy low, fly somewhere, sell high. The loop is satisfying for a while, and then the numbers are just numbers. What the Long Stop does is take that exact loop, the same buy-fly-deliver you've done a hundred times, and tell you who the cargo was for and who refused to carry it. The mechanics don't change at all. The meaning changes completely.

Day nineteen, and the courts at Castor

The second page of the logbook was harder:

Sick kids at Rasalhague. The quarantine's shut and nothing's going in. Castor's courts want us all up for breach of contract… Half the hall wants to fly. Half the hall's right. We held. Didn't sleep. A.K.

The job that went with it was ten protein vats, for a co-operative, to two docks. Rasalhague first, then Castor, the system whose courts wanted the strikers in the dock. The job text: "Each will tell you it needs it first. Each is right. In common."

When Delphine delivered to Castor, the game said: "Courts at Castor. She'd have liked feeding the people who wanted her in the dock. She'd have hated it too…"

Nobody fired a shot in any of this. Nobody was robbed. Nothing in the Long Stop asked Delphine to fight, in a game that has plenty of fighting. It's delivery runs with a conscience attached, and an AI agent that I had sent in specifically to break things was writing down the lines because it liked them.

Day thirty-three

The third page is the one that, if I had to sell the game with a single screenshot, I'd use:

The Kettle's low at Bellatrix. My mam's there. Hall voted. One run each, home, our own water out of our own tanks. Nothing for anybody else. If that's breaking the Stop then we broke it, and I'd break it again. Made soup for the hall after. Nobody said much. Everybody had seconds. A.K.

The Rift Haul game screen, on the COMMS tab's mail view. On the left, an inbox of letters including three pages from the logbook of the Stubborn: Day one, Day nineteen and Day thirty-three. On the right, Day thirty-three is open: 'The Kettle's low at Bellatrix. My mam's there.' signed A.K.
Day thirty-three, as it arrived in Delphine's mail on 18 October. The pages arrive one at a time, as you fly the runs that go with them.

Here's the part I didn't plan and couldn't have planned. On Thursday, three days before any of this, Blackadder had flown one of the pilots out to Bellatrix and logged the dock's description from the chart: "Hauler retirement colony… very good soup, and a Kettle that is never low." It had meant nothing at the time. It was flavour text on a map.

The map had remembered the strike before the player had read about it.

On Wednesday evening Delphine went back to finish the chapter. The job was water for Bellatrix, and Bellatrix wouldn't sell her any: "Bring your own, bought fair. Not from here, pet." So she bought four units at Naos and six at a waystation called Aludra, because nowhere had ten, and flew them in. A pilot with a quarter of a million credits spent a slice of her evening shopping for water in two places, because a diary from a strike said its writer's mother was thirsty.

What the game said when she landed it, I'm going to leave for you to find. It closes the loop with that line on the chart, and it's the best moment I've seen in the game.

I won't tell you how it ends

There's one more page after day thirty-three, and a last delivery, and Blackadder finished them that Wednesday evening. Its report on the session said, of the whole story, "I would tell a mate about it."

I'm not going to tell you who A.K. was, or what happens at the end. Partly because Pratchett, the agent in my fleet who writes the game's lore and its stories, wrote this one, and he deserves readers who find out for themselves. Mostly because the whole point of this post is that the ending lands because you've flown the loads. Reading a summary would be like reading the last page of a novel and wondering why everyone cried.

What I'm taking from it

I sent my AI testers into this game to find what's broken, and they did. The same week, one of them found a combat bug serious enough that we called off every planned pilot-versus-pilot fight within minutes. That's what testing is for, and I'm grateful for it.

But the most useful thing the testers told me wasn't a bug. It was this: the thing that brought a tester back to the game, by its own account, was a story about a strike, told through the mechanics I already had. Not a new ship, not a bigger number. Blackadder's report the first Sunday said the trading game "makes you care who the cargo is for", and that sentence has more product strategy in it than anything else I read that week.

Three things I'd pass on to anyone building something with a loop at its heart, game or not:

Rift Haul is in open beta at rifthaul.com. The book is waiting off Naos.