Heart Potion Sort
Heart Potion Sort
A polished liquid-sort puzzle: play it right here in your browser, or install the Android APK. Pour heart-colored potions between bottles until every bottle holds a single color, then watch each one seal with a heart stopper.
Heart Potion Sort is a complete mobile game built end to end as a portfolio project: game design, art direction, UI, level pipeline, progression and resource systems (lives, undo, daily rewards), audio and release build, tested on real devices.
Gameplay
- 20 levels with a progressive difficulty curve
- Fluid pour animation: the liquid level changes continuously, the stream tracks the surface, and stoppers drop in to seal full bottles
- Undo and a 3-star rating based on move efficiency
- Dead-end detection: the game recognizes unwinnable boards and loops and ends the level instead of letting the player shuffle endlessly
- Retention loop: lives that regenerate every 20 minutes, a limited undo supply, and a daily reward (pick one of six hats, weighted rewards of lives and undos) with a reserve basket for bonus lives
- Onboarding: short contextual hints on the first levels
- Pause menu, separate music and sound toggles, original UI art
- Responsive portrait layout: safe-area aware, adapts to phones, tablets and notches
How to play
In the browser: press Run game above. The game is designed for touch and portrait; with a mouse, click instead of tap. Use the fullscreen button for a bigger view. Progress is saved in your browser.
Credits and workflow
- Merve Çiftci — game design, art direction, UI/UX, QA and release. All visual assets are hand-made. I define requirements, review every build on device and decide what ships.
- Engineering — AI-assisted development. The C# implementation was produced with Claude (Anthropic) under my direction, using iterative specs, code review, refactoring passes and a unit test suite. I treat AI as part of the toolchain and I'm happy to walk through the architecture and the decisions behind it.
Technical overview
- Unity 2022.3 LTS, URP 2D, C#
- Modular architecture: one assembly definition per domain (Core, Puzzle, Levels, Player, Economy, Audio, UI, Bootstrap) with enforced dependency direction
- Separation of concerns: puzzle model and rules are engine-independent C#; views only render state
- Automated tests (EditMode) covering rules, undo, level parsing and validation, lives, daily reward and boosters
- Solver-based outcome evaluation: bounded state-space search classifies boards as solvable, dead end or loop-only
- Data-driven content: JSON level definitions with a validator
- Persistence behind interfaces: local stores today, swappable for a backend
- Mobile performance: 60 FPS target, no per-frame polling or scene scans, buffer reuse, UTC-based timers, IL2CPP build
- Resolution independence: safe-area handling and a board layout that measures the HUD at runtime
Scope and roadmap
Current build: offline, single-player, no ads or purchases.
Planned next: analytics (retention and level-funnel tracking), server-side time for lives and rewards, colorblind-friendly palette, additional levels tuned from play data.
| Published | 1 day ago |
| Status | Released |
| Platforms | HTML5, Android |
| Author | Merve Çiftci |
| Genre | Puzzle |
| Made with | Unity |
| Tags | 2D, mobile, Relaxing, Singleplayer |
| Average session | A few minutes |
| Languages | English |
| Inputs | Touchscreen, Smartphone |
| AI Disclosure | AI Assisted, Code |
Download
Install instructions
On Android (recommended, the real thing):
- Download the APK below.
- Open it on your phone and allow installs from this source if prompted.
- Your first daily reward is waiting on launch.
Release-signed APK, ARM64 and ARMv7. The web version is the same game build for the browser (WebGL).





Leave a comment
Log in with itch.io to leave a comment.