chore:(core) changed folder strukture #6

Merged
haylan merged 3 commits from chore--replacing-folder-structur-to-make-experements-easyer into main 2026-03-21 14:14:47 +01:00
Showing only changes of commit b672d0d26c - Show all commits

134
PROJECT_STRUCTURE.md Normal file
View File

@@ -0,0 +1,134 @@
# Godot Experiments - Project Structure
## Overview
One Godot project containing multiple self-contained experiments.
Each experiment lives in its own folder under `Experiments/` with its own scenes, scripts, assets and UI.
Shared code and assets used across experiments live in `Core/`.
---
## Folder Tree
```
res://
├── main.tscn # Project entry point / experiment selector
├── project.godot
├── Core/ # Shared across ALL experiments
│ ├── Components/
│ │ ├── back_to_main.gd # Navigation: return to main menu
│ │ ├── open_level_component.gd # Navigation: open a level
│ │ └── quit_game_component.gd # Navigation: quit game
│ └── Assets/
│ └── PixelPlanets/ # Shared planet sprites/textures
├── Experiments/
│ │
│ ├── Recuration/ # Top-down space game with solar system generation
│ │ ├── Scenes/
│ │ │ ├── Recuration.tscn # Main scene
│ │ │ ├── SolarSystem.tscn # Solar system root node
│ │ │ ├── Planet.tscn # Reusable planet scene
│ │ │ └── Star.tscn # Star scene
│ │ ├── Scripts/
│ │ │ ├── recuration_camera.gd # Top-down pan + zoom camera
│ │ │ ├── resource_component.gd # Planet resource data
│ │ │ └── solar_system_generator.gd # Procedural system generation
│ │ ├── UI/
│ │ │ ├── UI.tscn # HUD root
│ │ │ ├── ui.gd # HUD logic
│ │ │ └── planet_info_panel.tscn # Click-to-inspect planet panel
│ │ ├── Assets/
│ │ │ └── TheMoon/
│ │ │ ├── TheMoon.tscn
│ │ │ └── TheMoon.gd
│ │ └── Planning/
│ │ └── Movement 2D.svg # Design / planning diagrams
│ │
│ ├── SpaceMove/ # 2D space movement experiment
│ │ ├── Scenes/
│ │ │ ├── space_move.tscn
│ │ │ └── space_test.tscn
│ │ ├── Scripts/
│ │ │ ├── player_ship.gd
│ │ │ └── ship_ai_component.gd
│ │ └── Assets/
│ │ └── player_ship.tscn
│ │
│ ├── ThrusterCube/ # Physics thruster experiment
│ │ ├── Scenes/
│ │ │ ├── thruster_cube.tscn
│ │ │ ├── thruster_cube_collision.tscn
│ │ │ └── obstacle.tscn
│ │ ├── Scripts/
│ │ │ └── thruster_cube.gd
│ │ └── Assets/
│ │ ├── Thruster Cube.glb
│ │ └── Thruster Cube Collision.glb
│ │
│ └── PidTest/ # PID controller experiment
│ ├── Scenes/
│ │ └── pid_test.tscn
│ ├── Scripts/
│ │ └── pid_test.gd
│ └── Assets/
│ ├── PID_Spinning_Stuff.glb
│ ├── PID_Spinning_Target.glb
│ └── PID_Test_Obj.blend
└── dist/ # Web export output (auto-generated, do not edit)
```
---
## Rules
### 1. Each experiment is self-contained
All scenes, scripts, assets and UI for an experiment live inside its own folder.
Deleting an experiment folder should not break anything else.
### 2. Core is for shared things only
Only put something in `Core/` if **two or more** experiments use it.
When in doubt, keep it inside the experiment.
### 3. Move files inside Godot, not in Explorer
Always use Godot's **FileSystem panel** to move files.
This keeps UID references intact and prevents broken scene paths.
### 4. Naming conventions
| Type | Convention | Example |
| --------- | ---------------------- | --------------------------------------- |
| Folders | `PascalCase` | `Recuration/`, `ThrusterCube/` |
| Scenes | `snake_case.tscn` | `solar_system.tscn` |
| Scripts | `snake_case.gd` | `recuration_camera.gd` |
| Classes | `PascalCase` | `class_name RecurationCamera` |
| Variables | `snake_case` | `var orbit_radius: float` |
| Constants | `SCREAMING_SNAKE_CASE` | `const AU_TO_PIXELS := 100.0` |
| Signals | `snake_case` | `signal planet_clicked(planet: Planet)` |
---
## Adding a New Experiment
1. Create a new folder under `Experiments/YourExperimentName/`
2. Add the standard subfolders: `Scenes/`, `Scripts/`, `Assets/`
3. Add a `UI/` folder if the experiment needs one
4. Add an entry in `main.tscn` to open it
5. Only move shared code to `Core/` once a second experiment needs it
---
## Gitea CI
CI workflows live in `.gitea/workflows/`:
- `release.yml` — builds and publishes a release
- `sonar.yml` — code quality analysis
Web export output is in `dist/` and should be in `.gitignore` if you do not want to commit build artifacts.