← Back to games

Blowout Battle

Featured

Physics-driven blowdryer duel — local co-op or vs AI, built on Unity 6 and the Input System

Unity 6C#Generic SingletonScriptableObjectsInput SystemTemplate MethodRigidbody2D
Blowout Battle

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 a protected virtual Awake() subclasses can extend
  • Template Method across actors — BaseBlowerController holds the shared blow/reflect physics and tunables, while PlayerController and EnemyAIController subclass it, so the AI opponent reuses the exact same physics the human player does and only its decision-making differs
  • Strategy-style power-ups — BasePowerUp exposes a virtual ActivatePowerUp() overridden by FreezePowerUp, SpeedUpPowerUp and BonusPointPowerUp, 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 — BaseBlowerInputs wraps the generated Input System actions and is specialised by Player1Inputs / Player2Inputs, letting two players share one keyboard without duplicating controller logic
  • Level lifecycle contract — BaseLevel defines virtual InitializeLevel / StartLevel / ResetLevel / EndLevel hooks driven by a LevelManager, 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

Blowout Battle screenshot