-
-
Awaken allies from the forest you opened and send the invaders back where they came from.
-
A quiet forest guarded by its spirits. Hand-drawn art and calm music set a cozy mood.
-
Discover nearly 50 allies, from forest spirits to dragons. Each one fights in its own way.
-
Allies evolve as they grow. Fill the codex one discovery at a time.
-
Five worlds, from sunlit groves and waterfalls to snowy forests, each with new terrain and enemies.
-
Online rankings: see how your forest's defense compares with players around the world.
-
Every tile you open becomes a path. Carve your own dungeon and let the invaders walk into it.
-
icon
-
-
-
-
-
-
-
Inspiration
I've always loved games where you shape the ground itself and watch the fight play out on terrain you designed. Morifis is my take on that feeling, rebuilt for phones as a gentle, cozy forest instead of a dark dungeon.
What it does
- Open the forest: every tile you open becomes a path — and a place where allies can appear. You have a limited number of moves, so each stage plays like a puzzle.
- Nearly 50 allies from forest spirits to dragons. They evolve as they grow, and each has its own role: a healer, a howler that buffs attack, a spawner that multiplies, a flyer that hunts the weakest enemy, an ice shield that reflects damage.
- Real-time battles you can step into at any moment.
- Five worlds, from sunlit groves to snowy forests, plus the Forest Trial: an endless mode where you see how many waves you can hold, with online rankings.
- Available in 8 languages (English, Japanese, Simplified/Traditional Chinese, Korean, Spanish ×2, Brazilian Portuguese).
Monetization
Free to play, no paywall on progress. Players can buy gem packs (consumable IAP). Gems are also earned just by playing, so paying is always optional. Purchases are validated server-side (PlayFab) and granted idempotently so a player never loses a purchase.
How I used RevenueCat
The game already had a server-validated purchase flow built on Unity IAP. In the Android version I integrated the RevenueCat Unity SDK (9.11.1) with PurchasesAreCompletedBy.MyApp, so RevenueCat receives every Google Play transaction (synced right after the purchase arrives and before it is consumed) while my existing validation and granting stay untouched. This gives me RevenueCat's revenue analytics and customer history without risking double-grants during the migration.
How I built it
Unity 6, C#, PlayFab (economy and cloud save), Azure Functions for purchase validation, and Cloudflare for the web version. Solo developer, Hakumai Studio (Japan).
Challenges
Balancing nearly 50 allies across five worlds. I built a replay harness that re-simulates real play sessions to measure each ally's contribution, then tuned numbers toward target bands instead of guessing.
What I learned
Shipping to iOS, Android and the web in 8 languages as a solo developer only works if the repetitive parts are automated early — store listings, screenshots, builds and release notes are all scripted, so a small update doesn't eat a whole week.
What's next
New worlds and allies, and a Steam version.
Built With
- azure-functions
- c#
- cloudflare
- playfab
- revenuecat
- unity
Log in or sign up for Devpost to join the conversation.