# Godot Game Development - GEMINI.md This directory contains the Godot 4.5 game project for "Promiscuity". ## Core Mandates - **Engine Version**: Godot 4.5 (Forward Plus). - **Language**: GDScript is the primary scripting language. C# is enabled but used only when performance or specific library needs arise. - **Naming Conventions**: - Files/Folders: `snake_case.gd`, `snake_case.tscn`. - Variables/Functions: `snake_case`. - Constants: `SCREAMING_SNAKE_CASE`. - Classes: `PascalCase`. - **Autoloads**: Use the established singletons for global state and services: - `AuthState`: JWT authentication and session. - `CharacterService`: API calls for character management. - `QuestManager`: Game quest progression. - `DialogSystem`: UI dialog and interaction. - **Node Paths**: Prefer `unique names` (%NodeName) or `@onready` variables for node references. Avoid fragile string paths. ## Asset Pipeline - **Models**: Blender files (`.blend`) and GLB files are supported. Blender integration is preferred for easy editing. - **Audio**: Use `.ogg` for music/loops and `.wav` for short sound effects. - **UI**: Themes are stored in `themes/`. Adhere to established UI patterns. ## Project Organization - `scenes/`: Scene files and associated scripts. - `Characters/`: Player and NPC scenes. - `Levels/`: Game world/environments. - `UI/`: Menus, HUDs, and UI components. - `assets/`: Raw assets (textures, models, audio). - `addons/`: Third-party plugins (e.g., `simplegrasstextured`). ## Best Practices - **Signals**: Use signals for decoupled communication between nodes. - **Resources**: Encapsulate data in custom `Resource` scripts for modularity. - **Tool Scripts**: Use `@tool` carefully for editor-side logic. - **Physics**: Use `_physics_process` for movement and interaction logic.