We went looking for why trial starts were low and found something worse.
Twenty-six real people had downloaded Ashenmarch, created an account, and clicked an email verification link. Three deliberate acts of intent. Twenty-four of them never completed a single march.
The cause was in our own launch sequence. A new player names their House. They design a coat of arms — pick a shield, a charge, a tincture. Then, before the app has even asked for location permission, they hit a paywall they cannot dismiss.
We had built a game whose entire promise is "the land is won on foot", and we were asking for a card before anyone had taken a step.
What makes it worth writing up is how invisible it was. Nobody complains about this. There is no crash, no error, no support ticket — the funnel just quietly ends. We only saw it because we went looking at the join between players and subscriptions for an unrelated reason. Our worst bugs keep turning out to look exactly like success, and this one looked like disinterest.
So the first conquest is free. Until a player has actually claimed ground, the paywall does not exist for them. They march, they close a loop, they watch their own street turn gold and hear the Herald name it — and only then does the app ask anything of them. Same price, same trial. Different order.
Two details we got wrong on the first pass and want to record:
It has to key on ever conquered, not currently holds ground. Territory decays in Ashenmarch. Key it off current holdings and anyone who lets their land lapse is silently un-walled — free play forever, and an incentive to play badly.
And it has to key on a successful claim, not a completed march. A first run that fails to close a loop must not burn the free conquest, or we wall someone who experienced nothing — strictly worse than what we have now.
We considered a permanent free tier instead — Strava import only, no Market. We're not doing it yet, because the data genuinely cannot tell us whether people refused the price or the timing of the ask, and those need opposite designs. Moving the wall is cheap, reversible, and answers the question. If players who taste a conquest then subscribe, the wall was in the wrong place. If they still don't, the objection is price and we'll design the tier knowing what it has to overcome.
One more thing worth noting for anyone building this: the whole change is server-side. Our clients already honour an "enforcement off" signal from the backend, and that signal is computed per player. No app release, no review cycle, both platforms at once, and revertable with a single config toggle. Deciding entitlement on the server rather than trusting the device was a call we made for correctness months ago. It just paid for itself in shipping speed.
Coming in 1.0.6
German and Italian, and the EU.
The last update promised these two shipping together, on the logic that languages don't interact so one layout pass finds both sets of bugs. They're now drafted end to end — 3,762 translatable strings per language across the seven canonical sources that feed all four clients, every row checked for placeholder parity, register and orthography before it was allowed near a build.
German is the one that finds your layout bugs. It runs about 30% longer than English, and the first casualty was already waiting for us: on the Home rank ladder, Freigelassener — Freeman — rendered as Freigelassene. One clipped letter, in the label naming the rank you currently hold.
Alongside them, Ashenmarch opens across the EU and EEA with localised store listings in German, Italian, French and Spanish. Six languages, and a map that keeps getting bigger.

Log in or sign up for Devpost to join the conversation.