# Unity Match-3: VContainer Edition A modern Match-3 puzzle game built in Unity, focusing on clean architecture, dependency injection, and data-driven design. This project serves as a template for scalable mobile game development. ## 🏗 Architecture & Patterns ### Dependency Injection with VContainer This project utilizes **VContainer** for high-performance dependency injection. By using a `LifetimeScope`, we decouple our game logic (Grid Management, Scoring, Input) from the Unity Lifecycle, making the codebase more modular and easier to test. ### Data-Driven Gameplay All balancing and configuration parameters are centralized in a **ScriptableObject** called `GameVariables`. This allows designers to tweak the game feel in real-time without touching code. **Adjustable Parameters include:** * Debug Mode * Tile prefabs * Spawnable object * Spawnable explosion prefab animation * Sprite * Score value * Grid Dimensions * Audio SFX * Special Tiles * Animation speed and delays --- ## 🎮 Features * **Grid Logic:** Efficient recursive algorithms for detecting matches and handling "gravity" (falling tiles). * **Decoupled Systems:** UI, Sound, and Gameplay systems communicate via injected interfaces. * **Scriptable Configuration:** Easily swap between "Easy" and "Hard" mode by swapping the `GameVariables` asset. --- ## 🛠 Tech Stack * **Engine:** Unity 2022.3+ * **DI Framework:** [VContainer](https://vcontainer.hadashikakeru.jp/) * **UniTask:** C# (Task-based async for animations) * **Data:** ScriptableObjects --- ## 🚀 Getting Started ### Prerequisites * Unity Hub & Unity 2022.3 LTS or newer. * VContainer package. * UniTask package. ### Installation 1. Open the project in Unity. 2. Navigate to Assets/Scenes/ and open `Scene_Submission` 3. Locate `GameVariables` asset in `Assets` to modify gameplay values.