# Apple Hills Apple Hills is a Unity-based adventure game featuring interactive puzzle mechanics, dialogue systems, and item interactions. ## Project Overview Apple Hills provides a unique gaming experience with: - Node-based dialogue system for interactive NPC conversations - Puzzle mechanics with condition-based progression - Item pickup, combination, and interaction systems - Custom Universal Render Pipeline setup ## Repository Structure ``` AppleHills/ ├── Assets/ # Unity asset files │ ├── Art/ # Visual assets, models, textures │ ├── Dialogue/ # Dialogue system and dialogue data │ ├── Scripts/ # C# code for game systems │ │ ├── Core/ # Core managers and services │ │ ├── Dialogue/ # Dialogue system implementation │ │ ├── Input/ # Input handling systems │ │ ├── Interactions/ # Object interaction systems │ │ ├── Movement/ # Character movement controllers │ │ ├── PuzzleS/ # Puzzle mechanics and systems │ │ └── UI/ # User interface components │ ├── Scenes/ # Game scenes and levels │ ├── Prefabs/ # Reusable game objects │ └── ... # Other asset folders ├── Packages/ # Unity package dependencies ├── ProjectSettings/ # Unity project settings └── docs/ # Project documentation ├── media/ # Images and other media for documentation └── dialogue_readme.md # Detailed documentation about the dialogue system ``` ## Code Structure ### Scripts Organization The game's codebase is organized into several key modules: | Module | Purpose | |--------|---------| | Animation | Animation controllers and state machines | | Bootstrap | Game initialization and scene loading | | Core | Core game managers and services | | Dialogue | Dialogue tree implementation and text handling | | Input | Player input processing and mapping | | Interactions | Interactive object behaviors and triggers | | Movement | Character controllers and navigation | | Pooling | Object pooling for performance optimization | | PuzzleS | Puzzle mechanics, conditions, and validators | | Settings | Configurable game parameters and constants | | UI | User interface elements and controllers | | Utilities | Helper classes and extension methods | ### Core Systems Highlight The `Assets/Scripts/Core` directory contains critical managers that orchestrate the game's systems: #### Key Managers - **GameManager**: Central hub managing game state, scene transitions, and system coordination - **ItemManager**: Handles inventory system, item pickup, combination, and usage logic - **SceneManagerService**: Controls scene loading, unloading, and transitions #### Settings Framework The `Core/Settings` system provides a robust configuration framework: - **ServiceLocator**: Dependency injection system for accessing game services - **SettingsProvider**: Central access point for game configuration values - **BaseSettings/BaseDeveloperSettings**: Foundation for creating configurable parameters - **InteractionSettings**: Configuration for player-object interactions - **MovementModeTypes**: Movement parameters for different locomotion modes ## Documentation Detailed documentation about specific systems can be found in the `docs` folder: - [Dialogue System Documentation](docs/dialogue_readme.md) ## Development The project is structured using standard Unity practices. Key components: - Universal Render Pipeline for consistent visuals - Input System for configurable controls - Addressable Assets for asset management