tschesky 0aa2270e1a Lifecycle System Refactor & Logging Centralization (#56)
## ManagedBehaviour System Refactor

- **Sealed `Awake()`** to prevent override mistakes that break singleton registration
- **Added `OnManagedAwake()`** for early initialization (fires during registration)
- **Renamed lifecycle hook:** `OnManagedAwake()` → `OnManagedStart()` (fires after boot, mirrors Unity's Awake→Start)
- **40 files migrated** to new pattern (2 core, 38 components)
- Eliminated all fragile `private new void Awake()` patterns
- Zero breaking changes - backward compatible

## Centralized Logging System

- **Automatic tagging** via `CallerMemberName` and `CallerFilePath` - logs auto-tagged as `[ClassName][MethodName] message`
- **Unified API:** Single `Logging.Debug/Info/Warning/Error()` replaces custom `LogDebugMessage()` implementations
- **~90 logging call sites** migrated across 10 files
- **10 redundant helper methods** removed
- All logs broadcast via `Logging.OnLogEntryAdded` event for real-time monitoring

## Custom Log Console (Editor Window)

- **Persistent filter popups** for multi-selection (classes, methods, log levels) - windows stay open during selection
- **Search** across class names, methods, and message content
- **Time range filter** with MinMaxSlider
- **Export** filtered logs to timestamped `.txt` files
- **Right-click context menu** for quick filtering and copy actions
- **Visual improvements:** White text, alternating row backgrounds, color-coded log levels
- **Multiple instances** supported for simultaneous system monitoring
- Open via `AppleHills > Custom Log Console`

Co-authored-by: Michal Pikulski <michal@foolhardyhorizons.com>
Co-authored-by: Michal Pikulski <michal.a.pikulski@gmail.com>
Reviewed-on: #56
2025-11-11 08:48:29 +00:00
2025-08-06 17:00:32 +02:00

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:

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
Description
Main production repository for the AppleHills game
Readme 1 GiB
Languages
C# 99.6%
ShaderLab 0.4%