In Part 1, I wrote about the rule that shaped ddodol 1.0:
The rock can react, but it should not demand.
That rule is easy to keep while someone is in the app. Tap the rock and it gets surprised. Pet it and it gets ticklish. Nothing is asked for.
The harder question is what happens when they are gone.
Moss is a feature in the ddodol 1.1 TestFlight build. I wanted the rock to change while someone was away, without making their time away feel like a failure. That took more restraint than I expected.
The problem with absence
Most apps know what to do when you stop opening them. A streak breaks. A notification arrives. A screen shows you what you missed.
ddodol 1.0 did none of that. You could leave for a month, and the rock would be exactly where you left it.
That was the point. It was also a problem: nothing marked that time had passed, and there was little reason to open the app today rather than next week. I wanted to give people a reason to come back.
That goal made moss dangerous. "If you don't come back, something happens to your rock" is uncomfortably close to the pressure ddodol was supposed to avoid. The question was how much the rock could change, and what the app would say about it.
Why moss fit the rock
Moss is what happens to a stone when time passes and nobody moves it. It is not a hungry pet or a wilting plant. Neither of those lets you return without feeling that you should have done something sooner.
A little moss on a rock says that some time went by. The rock's face, games, album, and drawer of collected things are still there. The moss does not replace them or stop you using them.
A ceiling, not a rate
The growth rule is small:
- For each full day away, two patches of moss grow.
- There are never more than three patches.
"Full day" matters. If you visited yesterday, there was no empty day between yesterday and today. A rock made today should not grow moss either. And moving the device clock backward should not invent time away.
The ceiling matters more than the growth rate. Without it, the longer you stay away, the more you come back to. Eventually opening the app would mean facing a pile of cleanup.
Someone who was away for a month and someone who was away for three days should meet the same amount of moss. That is what lets the first person come back too.
I kept the two numbers separate on purpose. The rate controls how quickly moss appears. The ceiling controls how much a returning person might feel they have to clear. I could change the rate. I would be much more reluctant to raise the ceiling.
The sentence I didn't write
When moss is on the rock, one line appears:
A little moss has grown.
The obvious next sentence would be "Rub it to clear it off." I left that out. Once the app tells you to clean the moss, it becomes a task waiting to be done.
You can clear it by petting the rock, using the gesture that was already there. There is no new button or cleanup mode. Each patch takes a few strokes, and the line disappears when all the moss is gone. You might also leave it there. Nothing else changes.
The order of the messages mattered too. After several days away, the welcome comes before the moss line. I wanted the first thing someone saw to acknowledge their return, not point out what grew while they were gone.
Drawing moss that doesn't look like damage
The first version was a circle. It looked like a paint stain. Making it rounder gave me something closer to a pea stuck to the rock; a smooth edge looked like a sticker.
I flattened the patches and broke up their outlines with small bits of fuzz. Fuzz only on the rim made the edge ripple too evenly, like a cloud, so it needed texture inside as well.
Placement was just as important. The patches sit near the shaded lower part of the rock, spaced far enough apart that clearing one is visible. They follow the outline of the rock the person shaped and are pulled slightly inward; fixed positions could put moss in the air beside a thin rock. They also stay below the face. Moss over the eyes makes the rock look hurt.
Each patch has a fixed shape. If I generated fresh randomness every time the rock was drawn, the moss would flicker instead of appearing to have grown. And a patch stays visible until it is fully cleared. If it vanished halfway through, the result of petting would be harder to read.
None of these choices is dramatic. Together, they determine whether the rock looks like time passed or like something went wrong.
Why moss is not a streak
Both moss and streaks respond to time away. A streak counts missed days and can break. Moss changes the rock, then stops at three patches. There is no ranking for who keeps their rock cleanest or returns most often; comparing people would turn the moss back into a score.
A streak turns absence into a score. Moss turns absence into texture.
What is still missing
Moss has an obvious limitation. If you do not open the app, you do not know it has grown. A feature intended to bring people back only becomes visible once they have returned.
Local notifications are one possible next step. They could work without a server, but the wording and timing would have to pass the same test: let someone know without nagging them. They are a question for later, not part of what moss currently solves.
There is a smaller unresolved question too. When you share a picture of your rock, the moss appears in it. I have not decided whether that feels honest or embarrassing.
What this taught me
I built moss because I wanted people to come back. I kept its ceiling low because I did not want being gone to make coming back harder. I left out the cleaning instruction because touching the rock should not turn into maintenance.
The rock can change while you are gone. It should not make you feel you owe it for leaving.