Red Hope

Red Hope devlogUnder the hood

One metre from the door

My Mars colony froze whenever people were outside, and pioneers kept running out of air a few steps from home. One of those is fixed.

Three glass habitats glowing in a dark red dusk, with small outbuildings and solar panels around them and a brown haze rising over the mesas behind. Staged development still at revision c0dda269.Red Hope · Development still · c0dda269
A staged storm scene from the game, with the haze already over the mesas. The lights are on and, for now, everyone is inside.

Red Hope is my Mars colony survival game, where you keep a handful of pioneers fed, housed and breathing. Dust storms are meant to be the frightening part. Lately it has been everything around them.

Two things kept going wrong this month, in my own colonies, on the development build for 0.4. The game froze, and people ran out of air outside doors that worked. The first is fixed. The second I finally understand, which is not the same thing. None of this is in the free demo, which is still 0.3.

The freeze

It started with plumbing. I ordered seven short pipe runs and the colony slowed to about 14 ticks a second at 5× speed, when it should manage 300. Another time, with a storm on the way and half the crew still outside finishing jobs, it very nearly stopped.

A wide view of a Mars colony on the development build: four glass habitats in a row, battery and storage blocks, solar arrays and dark water tanks. The crew panel reads 14 crew, 2 outside.Red Hope · Development build · October 26 · my own game
My colony on October 26, during one of the slow sessions. Fourteen people, two of them outside, and a game that could barely keep up with them.

Here is what it was doing. Anyone working outside needs to know they can get home before their suit runs out, so the game keeps checking the walk back. It checked that walk for every person outside, to every habitat, several times a tick. It did remember the answers, but it filed them under the exact spot each person was standing on, to more decimal places than anyone has ever walked. Someone who is walking is never in exactly the same spot twice, so the game worked out the same route home from scratch, over and over.

Each step of each of those searches also checked itself against every rock, mesa, habitat and machine in the colony. That was about 185 things, every step. It is a very conscientious way to run a colony, like rereading the whole map every time you put a foot down.

The fix does not change a single decision anyone makes. The game now works out which ground is blocked once, when the layout changes, and remembers routes by the patch of ground you are on rather than the precise point. Then I checked it was still the same game. After 900 ticks, the old and new versions leave each of my test colonies in exactly the same state, down to the last byte.

A chart of the time to simulate one tick, before and after the fix, on four saved colonies. Big work queue: 27.3 ms before, 1.03 after. Seven pipe orders: 15.3 before, 0.44 after. Crew outside before a storm: 3.35 before, 0.35 after. Nothing queued: 1.56 before, 0.19 after. A dashed line marks 1.7 ms, the budget at 10× speed.Red Hope · Development build for 0.4 · measured October 27
Four of my saved colonies, before and after. The route searches behind those numbers fell by 95 to 99 percent. Anything right of the dashed line is too slow for 10× speed.

Later passes took it further, and the worst of those saves now averages about 0.12 ms a tick. I am keeping the bug reports open until I have played it myself, because a chart has never once told me a game feels sluggish.

Working homes

The second problem was worse, because people died.

On October 27 my colony had two electrolyzers to make oxygen, three oxygen buffers, three condensate collectors and six batteries. A storm came through. Afterwards the screen said two pioneers lost, and I said, “Consider how redundant my colony is.” In hindsight that was asking for it.

The saves told a stranger story. Over its life that colony had lost seven people, and six of them ran out of suit air with a working home right there. One was 47 m short. Two were 1 m short. The game’s own record of one of them read:

Habitat 3 had working life support 1 m from where they fell.

That is a true sentence. It is also about the least useful true sentence a game has ever told me.

A glass habitat at night. Inside, three people stand in warm light among planters and seats. Outside, a pioneer in a red suit stands beside the airlock with one arm raised.Red Hope · Development still · c0dda269
A staged scene, not one of the deaths: one person outside, three in the warm, and an airlock in between.

The latest deaths had a single cause. The storm had knocked out one of the two electrolyzers, the machines that turn water into oxygen. Nobody ordered a repair. With half its oxygen production gone, the colony could keep about 9 of its 15 people breathing, so the homes ran dry one at a time, in order. People sheltering in a home that ran dry had to leave for the next one. Suits do not refill indoors, so they left with whatever they had come in with.

One pioneer, partway along the walk to the next habitat, had 826 ticks of air left. They died exactly 826 ticks later, one metre from its door. The five who did get there brought the shortage with them, and drained that home too.

The screen did say the electrolyzer was damaged. It never said what that meant, which was that the colony was making oxygen for about nine people and housing fifteen.

It is not the first time the game has been confidently unhelpful about this. Back in 0.2, a pioneer with no room in the only working shelter was described as “taking in the view, 64m of suit air”. She was not taking in the view.

My first fix was to teach people to choose better shelters: rank homes by how long they would last, prefer the ones you could actually reach. It moved the deaths around. Depending on the order the homes happened to be listed in, the same change saved a life or cost two more. The pioneers were not choosing badly. They were choosing between homes that were all running out, because the machine that made the air was broken and nobody had been asked to fix it.

On the development build, the record now says so:

Electrolyzer 8 was down and no repair was ordered while Habitat 3 ran short of oxygen.

A repair nobody asked for

The 0.3 preview has a scene that runs the other way. The colony computer said no repair could finish in time, and Lena Vale went out on suit air and built the pipe anyway. All four made it. This time the repair had time to finish, and nobody asked for it.

The computer said no. Lena didn't.Play the video
A 0.3 preview Short from October, filmed before any of the changes in this article. Playing loads YouTube. Watch on YouTube.

What I still don’t know

The fix I am testing now makes the Life support priority mean what it sounds like. If anyone in your colony has Life support switched on, broken life-support machines get a repair job without you having to remember to press Repair. Repairs that cost kits either spend them automatically, if you turn that on, or ask you first.

Replaying the day after that storm from a save, with automatic spending on, the colony lost nobody instead of seven people. On a later save, from deep into the shortage, it did worse than doing nothing: one more person died, and that person was the first one sent out to do the repair. The order can stop a shortage from starting. It cannot rescue a colony that has already been short of air for most of a day, and I do not yet know what should.

The extra death is the next thing I am reading the saves for.