A clean, one-tap puzzle game about reading the board, finding open paths, and keeping the flow alive.
Every arrow needs a clear route off the board. Tap an arrow to send it in its effective direction, but plan carefully: other arrows can block the path, and each successful move changes the puzzle.
Levels grow in size and complexity while introducing new board patterns and special tiles. Wrong moves cost hearts, quick clears build combos, and the best scores can be submitted to Google Play Games.
- Guaranteed-solvable procedural puzzle boards
- One-tap controls designed for portrait mobile play
- Progressive difficulty with multiple board patterns
- Hearts, streaks, combo multipliers, and persistent best scores
- Sound and haptic feedback controls
- Offline core gameplay
- Google Play Games leaderboard integration
- Adaptive banners, interstitials, app-open ads, and UMP consent handling
| Tile | Behavior |
|---|---|
| Bonus | Awards additional score when cleared. |
| Reverse | Moves in the direction opposite its displayed arrow. |
| Hazard | Applies a larger penalty when tapped while blocked. |
| Countdown | Ticks down after successful moves and becomes a hazard at zero. |
| Frozen | Remains locked until an adjacent arrow is cleared. |
LevelGenerator constructs boards in reverse solution order. An arrow is only placed when it has a valid exit path in the current board state, and the final solution is recorded by reversing that construction sequence. Seeded generation makes boards reproducible for debugging.
LevelValidator independently simulates the recorded solution, checks bounds and duplicate positions, verifies opening moves, and enforces special-tile rules. A batch validator is available from the Unity Editor for exercising many levels and seeds at once.
Level tuning controls board dimensions, arrow density, available opening moves, direction variety, special-tile frequency, and pattern families including Open Flow, Lanes, Corners, Crossfire, and Pressure.
BootstrapLoadercoordinates consent, ads, silent Play Games sign-in, and the transition into gameplay.GameManagerowns the run state and coordinates the board, score, hearts, UI, audio, haptics, and services.BoardManagerhandles path checks, tile interactions, movement resolution, countdown updates, and frozen-tile unlocking.SaveManagerpersists settings, progress, and best scores locally.- Service integrations are isolated behind
AdsManager,ConsentManager, andGPGSManager.
The project includes editor and command-line utilities for Android icons, signed App Bundle builds, Gradle repository patching, store screenshots, release checks, and Google Play publishing through Fastlane. Signing credentials and generated builds are excluded from version control.
Assets/
Scenes/ Bootstrap and gameplay scenes
Scripts/Core/ Gameplay, generation, UI, persistence, and feedback
Scripts/Services/ Ads, consent, Play Games, and build configuration
Scripts/Editor/ Android build, icon, Gradle, and screenshot tooling
Editor/ Project setup and validation utilities
Prefabs/ Gameplay and UI prefabs
Docs/ Store assets and release documentation
Tools/Publishing/ Build and Play Store readiness scripts
fastlane/ Google Play metadata and publishing automation
- Unity
6000.5.2f1 - Unity Android Build Support, including the SDK, NDK, and OpenJDK
- Git
git clone https://github.com/aminhanifm/arrow-flow.git- Add the cloned directory in Unity Hub.
- Open it with Unity
6000.5.2f1and allow the initial import to finish. - Open
Assets/Scenes/Bootstrap.unity. - Enter Play Mode.
The enabled build scenes are Bootstrap.unity followed by Game.unity. Third-party console access, Android signing credentials, and store publishing access are environment-specific and are not required to inspect or run the core gameplay in the Editor.
The committed project always defaults to Google's test ad units. Production AdMob IDs are supplied through a machine-local partial configuration that is excluded from Git:
- Copy
Tools/Publishing/BuildConfig.Local.cs.exampletoAssets/Scripts/Services/BuildConfig.Local.cs. - Replace the placeholders with the production IDs for your own AdMob application.
- Keep the local file untracked; Android release builds fail when a complete production configuration is unavailable.
On Windows, Tools/Publishing/build-android-aab.ps1 builds a signed App Bundle. The keystore can be selected interactively, passed with -KeystorePath, or provided through ARROW_FLOW_KEYSTORE_PATH. Passwords are supplied only for the build process and are not stored in the repository.
Use the built-in Unity menu commands after the project compiles:
Tools > Arrow Flow > Validate Projectchecks required scenes and core scene components.Tools > Arrow Flow > Run Generator Validationbatch-generates boards and simulates their recorded solutions.Tools > Arrow Flow > Run Full Setupcan recreate the generated scenes, prefabs, UI, and project wiring when needed.
For release preparation, Tools/Publishing/check-play-readiness.ps1 validates the package metadata and expected Play Store assets.
No open-source license is currently provided. All rights reserved.

