← Back to games
Blowout Battle
FeaturedPhysics-driven blowdryer duel — local co-op or vs AI, built on Unity 6 and the Input System
Unity 6C#Generic SingletonScriptableObjectsInput SystemTemplate MethodRigidbody2D

A fast, chaotic arena game where rival blowdryers fight over a bubble. Blast air to push it into your opponent's goal — or force it to bounce on their side three times. Playable local co-op on one keyboard, or single-player against an AI opponent.
Tech stack
Unity 6 (6000.0.34f1) · C# · new Input System (generated PlayerInputAction bindings) · 2D physics (Rigidbody2D, raycast-based air blasts) · Post Processing · uGUI
Architecture & design patterns
- Generic Singleton base —
MonoSingletonGeneric<T> where T : MonoSingletonGeneric<T>gives every manager (game, UI, co-op) a single typed access point from one reusable class, with aprotected virtual Awake()subclasses can extend - Template Method across actors —
BaseBlowerControllerholds the shared blow/reflect physics and tunables, whilePlayerControllerandEnemyAIControllersubclass it, so the AI opponent reuses the exact same physics the human player does and only its decision-making differs - Strategy-style power-ups —
BasePowerUpexposes avirtual ActivatePowerUp()overridden byFreezePowerUp,SpeedUpPowerUpandBonusPointPowerUp, letting the spawner treat every power-up uniformly - Data-driven configuration with ScriptableObjects —
PowerUpSO([CreateAssetMenu]) stores type, icon and cooldown as an asset, so balancing happens in the Inspector rather than in code - Input abstraction layer —
BaseBlowerInputswraps the generated Input System actions and is specialised byPlayer1Inputs/Player2Inputs, letting two players share one keyboard without duplicating controller logic - Level lifecycle contract —
BaseLeveldefines virtualInitializeLevel/StartLevel/ResetLevel/EndLevelhooks driven by aLevelManager, and dedicated spawners (BubbleSpawnner,PowerUpSpawner) own object creation
Presentation is separated from logic through per-panel UI handlers (main menu, co-op, single player, countdown, game over), with a parallax background and camera follower for depth.
Gallery
