Declinant (Placeholder)
A hypercasual mobile game previously live on Google Play.
Postmortem and design breakdown of Declinant — the minimalist arcade title I prototyped, shipped to Android, and ultimately retired.

Quick Stats
Declinant — Postmortem
Declinant is no longer on Google Play, but this postmortem captures the design decisions, telemetry results, and lessons from shipping a solo hypercasual title end to end.
Declinant was a one-touch arcade game: dodge falling shapes, climb the leaderboard, and adapt to "declining" gravity modifiers that invert or amplify physics each run. It went from prototype to store page in six weeks.
Core Loop
The loop was ruthlessly simple by design. Hypercasual retention lives and dies in the first 30 seconds — every mechanic that didn't survive that filter got cut.
- Shapes fall from the top; player taps to jump.
- A gravity modifier triggers every 15 seconds — inversion, speed burst, or double-gravity.
- Score is distance survived; a leaderboard kept players returning.

The gravity modifier
The "declining" mechanic gave the game its identity. Each modifier variant needed to be:
- Legible — player understands what changed within one second.
- Fair — never feels like a gotcha; there's always a survival path.
- Varied — three modifier types kept the mid-session feel fresh without adding complexity.
I playtested 11 modifier variants and kept three:
- Inversion — gravity flips; shapes now fall upward. Players adapt in under 2 seconds.
- Surge — everything accelerates by 40 %. High tension, short duration (8 s).
- Double — two shapes spawn per tick instead of one. Punishes passive play.
Tech stack breakdown
ScriptableObjects made live tuning fast — I could push new difficulty curves via Firebase Remote Config by mapping field names to JSON keys, no code deploy required.
Firebase integration
Key telemetry events:
session_start/session_endwith duration.modifier_triggeredwith variant and survival delta.ad_rewarded_completewith session position.
The data confirmed the hypothesis: players who encountered the Surge modifier in their first run had a 14 % lower D1 return rate. I delayed its introduction to run 3.
Monetisation experiments
The model was rewarded ads only — no IAP, no paywalls. I tested three ad placements:
- Session-end — highest completion rate (71 %) but no session extension.
- Mid-run offer — "watch an ad to revive" — 43 % accept rate; significantly extended session length.
- Passive banner — removed after week two; measurable negative effect on session rating.
The revive placement won and stayed.
Why I pulled it
The honest answer: support cost exceeded download velocity. Google Play policy changes in late 2021 required a privacy policy link and updated SDK targets. The update touched half the codebase. With downloads plateauing at ~200 / month, the maintenance ratio stopped making sense.
The game itself worked — the loop was sound, D7 retention was 8 % which beats category average. I'm glad I shipped it.
Shipping a real product, however small, teaches things no tutorial or side project ever can.
Have thoughts?
Curious what others see or think
Feel free to reach out or leave feedback
Share FeedbackPrefer email? joshuatjhie@pm.me