A ball-rolling puzzle game for mobile that uses tilt based controls. The player must morph the exo ball to adapt to their environment and solve physics based puzzles. The game comes with designed levels as well as a procedurally generated endless runner mode.
Project Status: Released on Play Store
The TiltInputReader detects accelerometer values and drives the character controller through the BallInputReader
The BallController and BrakeController are the base controllers through which movement is handled using physical forces and drag. Triggers are available to manipulate movement properties or setup custom movements such as a rail-grind or controlled-floating.
The CameraController uses the accelerometer readings to pivot and tilt around the ball. The camera is prevented from clipping through world geometry. Triggers are available to manipulate or constrain the camera angle, zoom and camera effects in order to customise gameplay sequences.
The MorphController manages the different ball Morphs which change the physical properties of the ball and how it moves. Some morphs also enable specialised gameplay functions such as the ability to reflect lasers.
The PickupController manages the players inventory of Pickups. The HUD for pickups is managed through PickupSlots. Pick ups are consumable items that are triggered by tapping the icon on the HUD.
Game state such as level unlocks, achievements, and player settings are persisted to disk. Temporary level state such as collectables and interactives are stored in memory using a checkpointing system.
The TunnelSpawnController builds an endless sequence of Tunnel Pieces. Tunnel pieces are selected semi-randomly based on a preference system to create exciting and challenging sequences. Each piece can be further randomised with missing panels, obstacles, materials, decals and collectables. The system uses object pooling for performance.
This repository contains only the scripts from the Unity project. Binary file are kept out of the public repo as they contain art assets purchased from the Unity Asset Store.