Dev log

Notes from the dust

What changed, and what it cost to find out. Mostly the second thing.

19 Aug

Played with thumbs

The browser build ran on a phone and could not be played on one. Everything was bound to a keyboard: WASD to walk, E to interact, I for the bag. A touch screen has none of those, so the game loaded, rendered beautifully, and sat there.

There is a stick in the bottom-left corner now, and the actions stack up the right edge where a thumb can reach them. They feed the same code the keyboard feeds, rather than a second input path that can quietly drift away from the first.

I got it wrong twice on the way. The first version read the touch list directly, which produced a stick that drew, animated, and reported nothing: browsers disagree about which of touch, pointer and synthesised mouse they populate. The second version worked and I could not prove it, because the test was comparing frames, and the frame had changed when a conversation closed rather than when anyone walked. It reads the character’s own coordinates now. Thirty-two metres with a thumb down, none without.

17 Aug

Three wrong answers and a rectangle

Black squares started appearing in the browser build. Only on the small stuff: scrap piles, junk, the debris you walk past without looking at. The desktop build was spotless, which is the worst way for a bug to behave, because every test that already passes goes on passing.

I was confident three separate times. First it was a texture re-encode that had written progressive JPEGs. Then a mip-chained texture being read back on the CPU. Then a batch of imported geometry carrying twelve percent doubled faces with nothing culling them. All three were real problems. None of them made the squares.

What ended it was measuring the thing instead of arguing with it. Forty pixels by forty, filling its bounding box exactly, every row the same width as the last. Objects do not do that. Shadows do not do that. Separable blurs do. One non-finite pixel was reaching the bloom buffer, the blur was spreading it the full width of its kernel, and the composite was adding the result as a solid box.

Turning bloom off did not help, which is most of why it took so long. Off scales the contribution to zero, and zero times a broken number is still a broken number. Desktop hid it because drawing straight to the screen clamps on the way out.

15 Aug

Weather moved off the lens

A dust storm: flat orange light, the horizon closed in, grit in the air.

Weather used to be a coloured rectangle drawn over the finished frame. It dimmed the interface along with everything else, and it ignored depth, so the far hills and your own boots collected exactly the same amount of dust. Nothing about the place you were standing in changed at all.

It now drives the same fog, sun and ambient light that the clock and the region already drive, so the three of them stack. Dusk, in the marsh, in a dust storm is all three at once. A storm cuts sight from 256m to 110m, drops the sun to a third of its strength and pushes it orange, and raises the ambient rather than lowering it. Dust storms are bright and flat. Getting that backwards is what makes the fictional ones look like an eclipse.

The first attempt closed visibility to 46m, which is nearer than the camera sits. Every number the test checked came back correct and the screenshot was a sheet of tan with no world in it. The test looks at the picture now.

15 Aug

Affection had nowhere to go

Friendship was a number. It scaled a reward, and it printed as “Lv 4” on a panel. For a game where the cast is most of the content, that is the wrong shape for it to have.

Everyone now has two things they will eventually tell you: one when they start trusting you, one when they properly do. The lines interrupt the next conversation instead of waiting in a menu, because a character moment you pick off a list is not a moment. The fiddly case is a player who saves up and crosses both thresholds at once, who should still get the first beat first. Look up the highest line a player has earned and you will pass every test you run by hand while quietly eating half the writing.

Brux is in this too. He takes no gifts and runs no errands, so his respect comes off the ledger instead: one point per hundred aluminium paid.

14 Aug

Making the clock worth learning

The cast kept schedules for a while before those schedules meant anything. Knowing that the gecko fishes at dawn is only interesting if turning up at dawn does something.

Each of them will now let you help with the one thing that defines them, once a day, and only while they are actually doing it. Help in the garden, get seed. Mind the stall, get paid in metal, because that is who Tink is. Sit up with the professor and you get salvage off whatever he is reading. His pays best and is the hardest to collect, since he is only awake between eight at night and four in the morning.

Testing anything that turns on the hour is its own problem. Six characters across twenty-four hours is a hundred and forty-four interactions by hand, so what actually gets checked is whichever hour you happened to launch at. The harness sweeps a whole day in one run.

13 Aug

Six animals milling in a circle

The camp at midday, villagers at their posts.

Everyone used to pick a random point within seven metres of home and walk to it. At every hour, in the same way, forever.

The day has a shape now. Poppy works the cool hours and shelters at noon. Meemee walks the perimeter, on account of one time she was not looking. Professor Hoot sleeps through everything you do and is up all night, which turned out to be the most legible piece of character in the whole table. Brux has no routine at all. He stands at the gate, and moving him would say something about him that is not true.

12 Aug

The day the desert stopped being a sheet of paper

The floodgate at dusk, water running, machinery lit.

Midday looked like one flat orange page. Ambient light was sitting at nearly sixty percent of the key light, so a lit face and a shaded face came out at nearly the same value, and no amount of grading puts form back once it has gone.

Ambient is a three-band gradient now, cool from the sky and warm off the sand, and the sun moves across the sky instead of being welded to one authored angle.

Ten rounds of “a bit brighter” had each looked fine next to the previous screenshot. Together they produced blown-out yellow. Frames get measured now, not admired.

11 Aug

East, without a loading screen

The Drowned Exchange, concrete ruins standing in green water.

The world is one continuous heightfield, six hundred metres across. Walk east from camp and the sand goes under water with no seam, no door and no waiting. That is the Drowned Verge, with its own palette, its own reeds and its own sound.

What lives out there is decided rather than scattered. Arriving buys you eight quiet seconds. Daylight releases wildlife, night releases something with more opinions, and opening a cache for the first time interrupts with pressure. Then it all goes quiet again for half a minute, on purpose.