diff --git a/.devin/wiki.json b/.devin/wiki.json new file mode 100644 index 0000000..a713d3e --- /dev/null +++ b/.devin/wiki.json @@ -0,0 +1,304 @@ +{ + "repo_notes": [ + { + "content": "" + } + ], + "pages": [ + { + "title": "PyTaiko Overview", + "purpose": "High-level introduction to PyTaiko: what it is, its purpose as a Taiko no Tatsujin simulator, main features, and architecture overview", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Getting Started", + "purpose": "Installation instructions, running the application on different platforms, basic configuration", + "parent": "PyTaiko Overview", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Project Structure", + "purpose": "Overview of the codebase organization: directory structure, major modules, and how they relate", + "parent": "PyTaiko Overview", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Application Architecture", + "purpose": "Core application structure: main loop, screen management system, lifecycle, and state flow", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Screen System", + "purpose": "Detailed explanation of the screen-based architecture: Screen base class, screen transitions, lifecycle methods (on_screen_start, update, draw, on_screen_end)", + "parent": "Application Architecture", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Screen Flow", + "purpose": "The progression through different screens: Loading → Title → Entry → Song Select → Game → Result, including state management", + "parent": "Application Architecture", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Configuration System", + "purpose": "config.toml structure, configuration loading, runtime settings, and how configuration affects different subsystems", + "parent": "Application Architecture", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Global State Management", + "purpose": "global_data module: shared state, session data, input locking mechanism, and cross-system communication", + "parent": "Application Architecture", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Gameplay System", + "purpose": "Core gameplay mechanics: how the game works, from chart loading to scoring", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "TJA Chart Format", + "purpose": "The TJA file format: structure, metadata, note notation, commands (#BPMCHANGE, #SCROLL, #GOGOSTART, etc.), and branching", + "parent": "Gameplay System", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Chart Parsing", + "purpose": "TJAParser implementation: encoding detection, metadata extraction, note parsing, position calculation (hit_ms, load_ms), and NoteList generation", + "parent": "Gameplay System", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Note Management", + "purpose": "Note lifecycle: spawning, movement, rendering, note types (don, kat, drumrolls, balloons), and the note manager system", + "parent": "Gameplay System", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Input Handling", + "purpose": "Input abstraction layer: keyboard/gamepad/touch support, keybind configuration, input locking, and player-specific inputs", + "parent": "Gameplay System", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Hit Detection", + "purpose": "check_note implementation: timing windows (GOOD/OK/BAD), hit evaluation, auto-play mode, and hit feedback", + "parent": "Gameplay System", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Scoring System", + "purpose": "Score calculation: base_score formula, combo mechanics, gauge system, clear conditions, and crown determination", + "parent": "Gameplay System", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Score Persistence", + "purpose": "scores.db structure, hash_note_data calculation, score writing logic, and score history tracking", + "parent": "Gameplay System", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Audio System", + "purpose": "Overview of the audio architecture: layered design, Python API, C library, and PortAudio backend", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Audio Engine API", + "purpose": "AudioEngine class: initialization, device management, sound vs music distinction, volume control, and playback methods", + "parent": "Audio System", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Sound Playback", + "purpose": "Static sound loading, playback, volume/pan control, and simultaneous sound mixing", + "parent": "Audio System", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Music Streaming", + "purpose": "Music stream architecture: double-buffering, update requirements, seeking, and continuous playback", + "parent": "Audio System", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "C Audio Library", + "purpose": "Low-level implementation: PortAudio callback, audio buffer management, mixing algorithm, and threading model", + "parent": "Audio System", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Building Audio Libraries", + "purpose": "Makefile system: platform detection, dependency management, static vs dynamic linking, and cross-platform builds", + "parent": "Audio System", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Video Audio Integration", + "purpose": "VideoPlayer class: audio extraction, synchronization with video frames, and integration with AudioEngine", + "parent": "Audio System", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Visual System", + "purpose": "Overview of graphics rendering: raylib integration, texture management, and animation framework", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Texture Management", + "purpose": "TextureWrapper architecture: ZIP-based asset loading, texture.json format, frame-based sprites, and drawing API", + "parent": "Visual System", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Animation Framework", + "purpose": "Animation system design: BaseAnimation class, animation types (fade/move/texture_change/resize), easing functions, and lifecycle", + "parent": "Visual System", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Animation Definitions", + "purpose": "animation.json format: declarative animations, property references, delay chaining, and screen-specific animations", + "parent": "Visual System", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Background System", + "purpose": "Background class architecture: component orchestration, state-driven updates (normal/fever/rainbow), and milestone-based effects", + "parent": "Visual System", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Background Components", + "purpose": "Individual background objects: DonBG, BGNormal, BGFever, Dancer, Fever, Footer, Renda, Chibi - their roles and implementations", + "parent": "Visual System", + "page_notes": [ + { + "content": "" + } + ] + }, + { + "title": "Collaborative Backgrounds", + "purpose": "COLLABS system: theme registry, custom background implementations (Dan, Oshiri, ButtoBurst, etc.), and component overriding", + "parent": "Visual System", + "page_notes": [ + { + "content": "" + } + ] + } + ] +}