diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 000000000..83d5350b7 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,180 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +AIBIS Dream (also known as "AllOurBrokenParts") is a Unity-based narrative adventure game with investigative elements. The project uses Yarn Spinner for dialogue, features a custom framework with modular systems, and includes multiple mini-games (notably the HuoShan/Volcano language particle system). + +**Unity Version:** Unity 2022.3.x LTS (Universal Render Pipeline) + +## Architecture + +### Core Framework (Assets/Scripts/Framework/) + +The project uses a custom modular framework with these key systems: + +- **ActionKit**: Action sequencing and command pattern implementation +- **AudioKit**: Audio management and sound effect system +- **Config**: Game configuration and settings management +- **Core**: Core game systems and utilities +- **EventSystemKit**: Decoupled event system for inter-system communication +- **PoolKit**: Object pooling for performance optimization +- **ResourceKit**: Asset loading and resource management +- **SingletonKit**: Singleton base classes for managers +- **StateMachineKit**: Game state management +- **TimelineKit**: Timeline-based event sequencing + +### Key Game Systems + +- **Dialog System** (Assets/Scripts/Dialog System/): Yarn Spinner integration for narrative flow +- **Clue System** (Assets/Scripts/Clue/): Investigation and evidence collection mechanics +- **MiniGame System** (Assets/Scripts/MiniGame/): Modular mini-game framework + - **HuoShan** (Volcano): Language particle system for emotional expression gameplay +- **SceneManagement**: Scene flow control and transitions +- **FixSystem**: Interactive repair/puzzle mechanics + +### Web Prototypes + +Located in `web-prototype/` and `WebPrototype/` directories, these contain HTML/JavaScript prototypes for testing game mechanics before Unity implementation. + +## Key Development Commands + +### Unity Build Process + +```bash +# Build for Windows (64-bit) +"C:\Program Files\Unity\Hub\Editor\2022.3.x\Editor\Unity.exe" -batchmode -quit -projectPath . -buildWindows64Player "Build/AIBIS_Dream.exe" -logFile Build/log.txt + +# Build for WebGL +"C:\Program Files\Unity\Hub\Editor\2022.3.x\Editor\Unity.exe" -batchmode -quit -projectPath . -executeMethod BuildScript.WebGL -logFile Build/webgl_log.txt +``` + +### Asset Import and Generation + +```bash +# Regenerate solution files (Visual Studio) +Assets\Open C# Project.regenerate-sln.bat + +# Refresh asset database +# (Use Unity Editor menu: Assets > Refresh or Ctrl+R) +``` + +## Critical Dependencies + +### Unity Packages (via Package Manager) +- **Yarn Spinner**: Dialogue system (dev.yarnspinner.unity) +- **TextMesh Pro**: Text rendering and typography +- **Universal Render Pipeline**: Graphics rendering +- **2D Animation**: Sprite-based animation tools +- **Cinemachine**: Camera system +- **Timeline**: Cinematic sequencing +- **Localization**: Multi-language support + +### Third-Party Assets +- **More Mountains Feedbacks**: Game feel and feedback system +- **FMOD**: Advanced audio engine +- **DOTween**: Tweening and animation +- **Shapes**: Vector graphics and shapes rendering +- **QFramework**: Additional utility framework +- **Destructible 2D**: 2D destruction mechanics + +## Development Guidelines + +### Code Organization + +1. **Modular Systems**: Each major system should be self-contained in its own folder under `Assets/Scripts/` +2. **Kit Pattern**: Reusable utilities go in `Framework/` with "Kit" suffix +3. **Manager Classes**: Use Singleton pattern for global managers (derived from `SingletonKit`) +4. **Component Design**: Favor composition over inheritance for game objects + +### Scene Structure + +- Scenes are located in `Assets/Scenes/` +- Main scenes use naming convention: `{Character}_{Day}{Time}` (e.g., `Fiction_Day1_begin`) +- Mini-game scenes start with prefix: `HuoShan*`, `languageTest*`, etc. +- Always configure scenes in `EditorBuildSettings` for proper loading + +### Yarn Dialogue Files + +Located in `Assets/Resources/Yarn/`, organized by character and day: +- Each character has their own folder +- Files follow pattern: `{Character}_{Stage}.yarn` +- Use UTF-8 encoding for Chinese text support + +### Asset Naming Conventions + +- **Scripts**: PascalCase with component purpose (e.g., `DialogController.cs`) +- **Prefabs**: PascalCase with type suffix (e.g., `ClueItem.prefab`) +- **Scenes**: Snake_Case with descriptive names +- **Resources**: Organize by system/type in `Assets/Resources/` + +## Important Configuration + +### Editor Settings +- **Text Encoding**: All text files must use UTF-8 (especially for Chinese) +- **Line Endings**: Windows (CRLF) for C# files, but be consistent +- **Visual Studio**: Use provided `.sln` and `.csproj` files + +### Build Settings +- **Target Platform**: Primarily Windows and WebGL +- **Scripting Backend**: IL2CPP for Windows, Emscripten for WebGL +- **API Compatibility**: .NET Standard 2.1 + +### Git Configuration +- **LFS**: Used for large binary assets (.unity, textures, audio) +- **Ignored**: Library/, Temp/, Logs/, Build/, *.csproj.user + +## Testing and Iteration + +### Running Individual Mini-Games + +Most mini-genes can be tested independently by opening their specific scene: +- HuoShan Language Game: `Assets/Scenes/languageTest.unity` +- HuoShan Fix Scene: `Assets/Scenes/HuoShanFixScene.unity` +- Expression Test: `Assets/Scenes/HuoShanExpressionTest.unity` + +### Web Prototyping + +For testing mechanics before Unity implementation: +1. Create HTML/JS prototype in `web-prototype/` +2. Use similar logic to planned Unity implementation +3. Test in browser for rapid iteration + +## Common Development Tasks + +### Adding a New Mini-Game + +1. Create folder in `Assets/Scripts/MiniGame/{GameName}/` +2. Implement game logic using Framework kits +3. Create test scene in `Assets/Scenes/{GameName}Test.unity` +4. Add required assets to `Assets/Resources/{GameName}/` +5. Document in `README_{GameName}.md` + +### Adding Yarn Dialogue + +1. Create `.yarn` file in appropriate `Assets/Resources/Yarn/{Character}/` folder +2. Add file to Resources using Unity's `Resources.Load` system +3. Reference in scene's `DialogueRunner` component +4. Test with `DialogueController` + +### Debugging Tips + +- Use `LogKit` for consistent logging with categories +- Enable verbose logging in `ProjectSettings/LogKit` +- Use Unity's frame debugger for rendering issues +- Profile with Unity Profiler, especially for mini-games with many particles + +## Performance Considerations + +- **Pooling**: Always use PoolKit for frequently instantiated objects (particles, UI elements) +- **Asset Loading**: Use ResourceKit for async loading to avoid frame drops +- **Particle Systems**: Pool particle systems, limit overdraw in language particle game +- **Audio**: Use object pooling for frequent SFX, FMOD for advanced audio + +## Important Notes + +- This is a narrative-focused game - ensure dialogue and story take precedence +- The HuoShan language particle system is a core feature - changes should maintain the emotional expression mechanics +- Web prototypes are for testing only - production code must be in Unity/C# +- Maintain compatibility with both Windows and WebGL builds