Skip to content

aminhanifm/arrow-flow

Repository files navigation

Arrow Flow feature graphic

Arrow Flow

A clean, one-tap puzzle game about reading the board, finding open paths, and keeping the flow alive.

View on Google Play

About the Game

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.

Arrow Flow gameplay and special tiles

Gameplay Features

  • 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

Special Tiles

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.

Technical Highlights

Solvable Procedural Generation

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.

Difficulty and Variety

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.

Runtime Architecture

  • BootstrapLoader coordinates consent, ads, silent Play Games sign-in, and the transition into gameplay.
  • GameManager owns the run state and coordinates the board, score, hearts, UI, audio, haptics, and services.
  • BoardManager handles path checks, tile interactions, movement resolution, countdown updates, and frozen-tile unlocking.
  • SaveManager persists settings, progress, and best scores locally.
  • Service integrations are isolated behind AdsManager, ConsentManager, and GPGSManager.

Android Tooling

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.

Project Structure

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

Getting Started

Requirements

  • Unity 6000.5.2f1
  • Unity Android Build Support, including the SDK, NDK, and OpenJDK
  • Git

Open the Project

git clone https://github.com/aminhanifm/arrow-flow.git
  1. Add the cloned directory in Unity Hub.
  2. Open it with Unity 6000.5.2f1 and allow the initial import to finish.
  3. Open Assets/Scenes/Bootstrap.unity.
  4. 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.

Local Release Configuration

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:

  1. Copy Tools/Publishing/BuildConfig.Local.cs.example to Assets/Scripts/Services/BuildConfig.Local.cs.
  2. Replace the placeholders with the production IDs for your own AdMob application.
  3. 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.

Validation

Use the built-in Unity menu commands after the project compiles:

  • Tools > Arrow Flow > Validate Project checks required scenes and core scene components.
  • Tools > Arrow Flow > Run Generator Validation batch-generates boards and simulates their recorded solutions.
  • Tools > Arrow Flow > Run Full Setup can 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.

License

No open-source license is currently provided. All rights reserved.

About

Arrow Flow Unity mobile puzzle game

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages