Featured by Apple. In September 2026 the App Store editors put Duskroot in the Games tab's New Games We Love collection. From 17 to 24 September that brought 4,140 downloads from 119 countries and regions.

Inspiration

Farm sims are calm and mine crawlers are tense. I wanted both in one day: a game where the calm part funds the dangerous part, and the dangerous part is what makes the calm part feel earned.

What it does

You plant and water crops, then open the shop and serve villagers who judge your prices. In the shop the clock only runs once you open, so a trading day is a decision about how long to stay open.

Then you go down. The mine deepens procedurally, with melee, a bow and a dodge roll. Skeletons and slimes wind up before they swing, so every fight is readable rather than a test of reflexes. What you bring back goes to the blacksmith, who forges helmets and a lamp, and to the pedlar, who sells better picks, sacks and shelves. A constellation skill tree turns a good run into permanent progress. Hunger runs underneath all of it.

The two loops interlock on purpose. Farming and the shop fund mining trips. Mining funds farm and shop upgrades. Neither half is a side activity.

The valley is stuck in autumn. It has been since your grandmother Wren died. Villagers ask for favors that take days, and each one ends in a story you carry to the Duskroot tree at night. Feed it the first one and the next morning is Spring. From then on the seasons turn, 28 days each, with their own crops, fish and light, rain on the farm, and a rite at the tree on each season's last night. The favors you finish mend things you can see: the road, the church bell, the lit windows.

Two ways to get better. Six skills, from sword to fishing, level up to 10 as you use them. The constellation has 27 stars, and 16 of them want a skill level first.

Nobody tells you what things are worth. Five kinds of shopper judge your price with a face. Merchants haggle hard, adventurers overpay, and your price book remembers what sold. Three swipes at the till wrap a gift for a little extra.

The mine has depth. Five bands of color, 13 kinds of creature, two bosses with their own music, and crate puzzles built backwards from the answer so each one can be solved. Nine fish wait in the farm pond and the water underground, two of them legendary.

Make it yours. Move, flip and store things in the cottage, the shop and the forge. It speaks English, Spanish, Japanese, Korean and Traditional Chinese, with three text sizes, a high contrast switch, and switches for motion and vibration.

It waits for you. A small daily gift, bigger on the third and seventh day. One free night per real day, so your crops grow while you are away. Reminders if you want them.

Fair money. Three one time purchases, no subscriptions. The Rootkeeper's Pact ($3.99) removes the ads, the Menagerie ($4.99) gives you a cat or dog that follows you, and Feed the Tree ($4.99) makes the tree bloom at night. The two rewarded ads buy a price hint at the shop or a hand up in the mine. They are capped, an ad that fails to load still pays out, and Pact owners get the favor with no ad. On Google Play the ad revenue is also reported to RevenueCat.

How we built it

Godot 4 with GDScript. Pixel art throughout, a warm dawn palette in the farmhouse, and pixel fonts that cover all five languages.

RevenueCat carries all three purchases across both stores. AdMob serves the two rewarded placements. The store layer lives in one autoload, scripts/autoload/store.gd, so entitlement and ad state are decided in one place rather than scattered through the game.

Challenges we ran into

The hardest problem was making two different tempos live in one game without one ruining the other. An early build let you mine whenever you liked, and the farm became a chore you rushed through. Tying the shop day to a clock that starts when you open fixed it: the day became something you spend rather than something you skip.

The constellation skill tree needed its own test to stay honest, because it is easy to build a tree where a child node sits below its parent and the whole thing stops reading as progression.

Accomplishments that we're proud of

No forced ads. Not one banner, not one interstitial, nothing that plays without you choosing it. Both ad placements are rewarded and optional, and if you ignore them the game is complete. In a genre full of energy timers and paywalled crops, shipping a cozy game with no energy timers, no paywalled crops and no forced ads is the thing I am proudest of.

What we learned

Cozy is not the absence of tension. It is knowing exactly when the tension arrives and being able to say no to it. The mine is scary because the farmhouse is safe, and the farmhouse is comforting because the mine exists.

What's next for Duskroot

More of the mine, more customers with their own tastes, and more stories for the tree.

Built With

Share this project:

Updates

Submission history