Working With System Dynamics – Analysis of the Game “A Dark Room”

Below is my Sketchnote from reading the chapter about Working with System Dynamics

 

What I played

I played A Dark Room, on my chrome browser. The game is by Michael Townsend.  I would say it’s made for people who don’t mind reading and waiting. If you like slow mysteries and watching numbers climb, it’s for you. If you want action, probably not.

The setup is tiny. You wake up in a dark, freezing room and the only thing you can do is light a fire. Then a stranger stumbles in and collapses in the corner, and once she warms up she turns out to be a builder. From there I was gathering wood, building traps, trading with a nomad, and growing a village that kept adding new buildings and jobs. Eventually I bought a compass, which opened up A Dusty Path and a whole map to explore outside the village. I played for about 1 to 2 hours and made it to the crashed starship at the far edge of the map, but I didn’t lift off, so I never saw the ending.


Where I started, one line of text and one button.

Genre

Honestly, I had trouble naming the genre, and I think that’s on purpose. It starts as a one-button clicker, slowly turns into a survival and resource management game, and then, once I had the compass, becomes a roguelike-ish exploration game on a little text map. If I had to pick one label, I’d call it an incremental game told like a text adventure, but it kept changing on me the whole time.

That combo is a big reason the system dynamics are so easy to see. There’s no art covering anything up. The stores box on the right is basically a spreadsheet of what I own, and the story shows up as one-line messages in a log instead of cutscenes. Even the browser tab changes names as the game grows, from “A Dark Room” to “A Firelit Room” to “A Silent Forest” to “A Tiny Village,” and later “A Dusty Path”.

Once the fire’s lit the room, the browser tab got a new name.

As a Formal System

Almost everything on screen fits Fullerton’s objects, properties, behaviors and relationships, so I mapped out the main ones I ran into.

A lot of it runs on a mix of fixed rules and chance, kind of like the WarCraft II combat example from the reading. Building costs are fixed and climb in a set pattern: my first trap was 10 wood, the second 20, the third 30. What’s inside a trap when you check it, though, is random. The part I liked most is that the fire and the room don’t have numbers at all. I never saw a temperature. I just got lines like “the room is mild” or “the room is freezing,” and somehow that made me care more about keeping the fire going.


The log tracking the fire and room going from freezing to mild, right as the stranger shows up.


The builder’s first blueprint. Hovering shows the trap costs 10 wood.

Loops and arcs

This is where the game really clicked for me after reading Daniel Cook’s. Pretty much every arc in A Dark Room unlocks a new loop, so the little story moments are really doors into new systems.

The main loop is simple. I click gather wood, a bar fills up across the button while it cools down, my wood number goes up, and I start figuring out what wood is good for. My log shows me learning that the hard way 😂. After my first trap, I kept clicking build with 14 wood and got “not enough wood.” something like twenty times in a row, because the second trap cost 20. Looking back, that’s Cook’s interaction loop doing exactly what he describes, just not very gently.

Yeah, that’s a lot of “not enough wood.” (right before the Penrose popup).

The loops also stack into a skill chain. I had to keep the fire going before I could gather wood, gather wood before I could build traps, and check traps before I had the fur and meat for a lodge or anything to trade. They run at different speeds too. Gathering and stoking happen every few seconds, checking traps and building happen every minute or so, and the slow stuff, like the village filling out, plays out over the whole session. The slowest loop of all was the expedition.

The arcs are the story beats in between. The stranger is a mini sequence of arcs: she collapses, shivers, calms down, then offers to build, which unlocks building. The nomad unlocks trading the same way. The weirdest one was Penrose. A popup described visions of a huge machine and asked if I wanted to “give in.” I did, and it opened a new browser tab for Penrose, which is another Doublespeak game. So that arc literally left the game.

The stranger shivering and mumbling while the fire roars.


After clicking “give in,” a Penrose tab opened up top. The nomad showed up right after.

The scrolling log on the left ended up being my favorite thing to think about. It works like a parallel arc running next to all the loops, but it’s also basically Cook’s “expanded loop.” Every pass through a loop gets written down as a line, like “the fire is roaring.”, and the older lines slowly fade out. It’s a record of my one playthrough, not of everything that could have happened.

Other things from class I noticed

Once you start looking, feedback loops are everywhere. The village is a reinforcing loop, since huts bring in villagers, villagers gather wood, and more wood means more huts. But plenty pushes back. The fire is always dying down, beasts wreck traps and attack villagers, and every new trap costs more than the last. Each hut only holds 4 villagers, so my two huts capped me at exactly 8/8.

The economy fits Fullerton’s four variables pretty neatly. Product grows, but the game controls how fast, prices are fixed, and you can only trade when the nomad randomly shows up. There’s no actual money, but fur kind of works like one. Most of the nomad’s buttons were grayed out for me because I couldn’t afford anything yet, which reminded me of the system-run shopkeepers in Ultima Online.

My first trap haul, fur and meat, plus the new forest panel.


Scales show up, and the builder offers to make a cart.

Control shifts over time too. At the start I’m doing every action myself, but by the village I’m just setting jobs with little up and down arrows, which feels more like Rollercoaster Tycoon’s indirect control than a clicker. For a long time my bait stayed at 0, because I hadn’t assigned a trapper, and trappers are the only ones who turn meat into bait. Then on the map, control flips right back to direct, with me moving one tile at a time.

Values

The big values for me were survival, patience, resourcefulness and curiosity. The game really rewards paying attention, because new systems get introduced in a single line of text that’s easy to scroll right past. There’s also something about care in it. The stranger only becomes useful after I keep the room warm long enough for her to recover. And once I built the lodge, the log said “predators become prey. price is unfair.” That felt like the first hint that the game wants me to think about what all this growth is costing.

What I’m taking into my own games

There’s a lot I want to take. Starting with one button and slowly revealing the system kept me curious the whole time, and I never needed a tutorial. I also love the idea of using small story beats as gates that open up new loops, because it gives the narrative an actual job inside the system. Describing things in words instead of numbers (“the room is freezing”) made the fire feel way more urgent than a temperature readout would have.

There are also things I’d do differently. Getting twenty “not enough wood.” messages meant the game let me fail over and over without telling me the trap price had gone up. The new cost was only there if I hovered, and I didn’t think to. The pacing drags enough that there’s a built-in hyper mode, and I turned it on partway through, which probably says something. Nothing nudged me to rebalance jobs either, so for a long time I left all my villagers gathering wood with zero hunters or trappers. And the Penrose thing was a fun surprise, but an arc that turns out to be an ad made me trust the game a little less.
Overall, A Dark Room showed me that a game can be almost entirely a formal system and still feel like a story, as long as each little arc opens up the next loop.

About the author

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.