Files
AppleHillsProduction/CHANGELOG.md
2025-11-07 13:53:11 +01:00

4.3 KiB

AppleHills - Interactables Refactor & Save System Integration

🎯 Overview

Major refactoring of the interaction system and full integration of save/load functionality across the game. This includes architecture improvements, asset cleanup, and comprehensive state persistence.


🔧 Core Systems

Interactables Architecture Refactor

  • Converted composition to inheritance - Moved from component-based to class-based interactables
  • Created InteractableBase abstract base class with common functionality
  • Specialized child classes: Pickup, ItemSlot, LevelSwitch, MinigameSwitch, CombinationItem, OneClickInteraction
  • Unified interaction flow - All interactables now share consistent behavior patterns
  • Custom inspector - New collapsible inspector UI for better editor experience

📚 Documentation: See docs/Interaction_System_Refactoring_Analysis.md

Save/Load System Integration

  • Implemented ISaveParticipant interface for all stateful objects
  • SaveableInteractable base class - Abstract base for all save-enabled interactables
  • Bilateral restoration pattern - Elegant timing-independent state restoration
  • Integrated systems:
    • Interactables (Pickups, ItemSlots, Switches)
    • Player & Follower positions and held items
    • Puzzle system state (completed/unlocked steps)
    • State machines (custom SaveableStateMachine wrapper)
    • Card collection progress

📚 Documentation:

  • docs/SaveLoadSystem_Implementation_Complete.md
  • docs/bilateral_restoration_implementation.md
  • docs/puzzle_save_load_proposal.md
  • docs/state_machine_save_load_FINAL_SUMMARY.md

🧹 Asset & Scene Cleanup

Prefab Organization

  • Removed placeholder files from Characters, Levels, UI, and Minigames folders
  • Consolidated Environment prefabs - Moved items out of Placeholders subfolder into main Environment folder
  • Moved Item prefabs - Organized items from PrefabsPLACEHOLDER into proper Items folder
  • Updated prefab references - All scene references updated to new locations

Scene Updates

  • Quarry scene - Major updates and cleanup
    • Saved multiple working versions (Quarry, Quarry_Fixed, Quarry_OLD)
    • Added proper lighting data
    • Updated all interactable components to new architecture
  • Test scenes - Updated MichalTesting_ItemsPuzzles to new interaction system

🛠️ Developer Tools

Migration & Cleanup Tools

  • StateMachineMigrationTool - Automated migration from base StateMachine to SaveableStateMachine
  • RemoveInteractableBaseComponents - Cleanup tool for removing old abstract Interactable references
  • RemoveOldInteractableReferences - Scene cleanup for refactored components
  • CardSystemTesterWindow - New testing window for card system development

Editor Improvements

  • InteractableEditor - Custom inspector with collapsible sections for base + child properties
  • Updated ItemPrefabEditor and PrefabCreatorWindow** for new architecture

📊 Statistics

  • 159 files changed
  • ~975k insertions, ~10k deletions (massive scene file updates)
  • 13 new documentation files covering implementation details
  • ~2k lines of new production code (excluding scene data)

🎨 Key Features

Bilateral Restoration Pattern

Solved complex timing issues with a simple elegant solution:

  • Both Pickup and Follower attempt to restore their relationship
  • First to succeed claims ownership
  • No callbacks, no queues, no race conditions

State Machine Integration

  • Custom SaveableStateMachine wrapper around Pixelplacement's StateMachine
  • Saves state IDs instead of references
  • Restores directly to target state without triggering transitional logic
  • Migration tool converts existing instances

Puzzle System Persistence

  • String-based step tracking (timing-independent)
  • Pending registration pattern for late-loading objectives
  • Supports both pre-placed and dynamically created puzzle elements

🚀 What's Next

The save system foundation is complete and tested. Future work:

  • Additional state machines integration
  • More complex puzzle element support
  • Save slot management UI
  • Auto-save functionality

📝 Notes

All internal implementation docs have been cleaned up. Key architectural documentation remains in the docs/ folder for future reference.