Project Structuur
Overzicht van de codebase organisatie.
Directory Structuur
milenas-cozy-treehouse-club/
│
├── project.godot # Godot project configuratie
│
├── scenes/ # Scene bestanden (.tscn)
│ ├── main_menu.tscn # Hoofdmenu
│ ├── character_builder.tscn # Karakter creator
│ ├── game.tscn # Hoofdgame (home scene)
│ ├── boomhut.tscn # Treehouse interior
│ ├── zevensprong.tscn # World hub/kruispunt
│ ├── loading_screen.tscn # Laadscherm
│ ├── map_browser.tscn # Community maps browser
│ ├── map_designer.tscn # Map editor
│ ├── walkable_editor.tscn # Walkable area editor
│ └── ui/ # UI scene componenten
│ ├── inventory_panel.tscn
│ ├── item_slot.tscn
│ ├── resource_hud.tscn
│ └── storage_ui.tscn
│
├── scripts/ # GDScript bestanden (.gd)
│ ├── game_state.gd # Autoload - global state
│ ├── main_menu.gd # Menu logica
│ ├── character_builder.gd # Karakter customization
│ ├── game.gd # Hoofd gameplay controller
│ ├── boomhut.gd # Treehouse scene logica
│ ├── zevensprong.gd # Hub scene logica
│ │
│ ├── inventory/ # Inventory systeem
│ │ ├── inventory_manager.gd
│ │ ├── item_database.gd
│ │ ├── item_slot.gd
│ │ ├── container_ui.gd
│ │ ├── inventory_panel.gd
│ │ ├── resource_bar.gd
│ │ └── storage_ui.gd
│ │
│ └── map_designer/ # Map editor
│ ├── map_designer.gd
│ ├── map_data.gd
│ └── map_io.gd
│
├── assets/ # Game assets
│ ├── character/ # Karakter sprites
│ │ ├── body/ # Lichaam varianten
│ │ ├── clothes/ # Kleding opties
│ │ ├── eyes/ # Ogen varianten
│ │ ├── faces/ # Gezichtsuitdrukkingen
│ │ └── hair/ # Kapsels
│ │
│ ├── ui/ # UI elementen
│ │ ├── buttons/
│ │ ├── icons/
│ │ ├── sliders/
│ │ └── panels/
│ │
│ ├── scenes/ # Scene achtergronden
│ │ ├── boomhut_home.png
│ │ └── zevensprong.png
│ │
│ └── fonts/ # Custom fonts
│
├── addons/ # Godot plugins
│ ├── SpacetimeDB/ # Multiplayer SDK
│ │ ├── core/ # Core classes
│ │ ├── codegen/ # Binding generator
│ │ └── nodes/ # Custom nodes
│ │
│ ├── TileMapDual/ # Dual grid tilemaps
│ └── TileCropper/ # Asset cropping tool
│
├── spacetime_bindings/ # Auto-generated
│ └── schema/
│ └── types/ # Database type bindings
│
└── server/ # Backend (Rust)
├── Cargo.toml
└── src/
└── lib.rs
Belangrijke Bestanden
Autoloads
| Script | Singleton Naam | Beschrijving |
|---|---|---|
scripts/game_state.gd | GameState | Global state management |
Scenes per Functie
| Functie | Scene | Script |
|---|---|---|
| Hoofdmenu | main_menu.tscn | main_menu.gd |
| Karakter maken | character_builder.tscn | character_builder.gd |
| Gameplay | game.tscn | game.gd |
| Treehouse | boomhut.tscn | boomhut.gd |
| World Hub | zevensprong.tscn | zevensprong.gd |
| Map Editor | map_designer.tscn | map_designer/map_designer.gd |
Code Conventies
Naamgeving
# Variabelen: snake_case
var player_health: int = 100
var is_moving: bool = false
# Constanten: UPPER_SNAKE_CASE
const MAX_SPEED: float = 200.0
const BODY_PATH = "res://assets/character/body/body-girl3.png"
# Functies: snake_case
func _ready() -> void:
func _on_button_pressed() -> void:
func calculate_damage(base: int) -> int:
# Signalen: snake_case
signal health_changed(new_value: int)
signal inventory_updated
Bestandsnamen
- Scripts:
snake_case.gd - Scenes:
snake_case.tscn - Assets:
kebab-case.png
Scene Structuur
SceneRoot (Control/Node2D)
├── UI/
│ ├── HUD
│ └── Menus
├── World/
│ ├── Background
│ ├── Characters
│ └── Objects
└── Systems/
└── Managers
Patronen
Scene Transitie
# Naar andere scene
get_tree().change_scene_to_file("res://scenes/game.tscn")
# Met fade effect
var tween = create_tween()
tween.tween_property(fade_rect, "color:a", 1.0, 0.5)
tween.tween_callback(func():
get_tree().change_scene_to_file("res://scenes/next.tscn")
)
Button Effects
func _setup_button_effects(button: TextureButton) -> void:
button.mouse_entered.connect(_on_hover.bind(button))
button.mouse_exited.connect(_on_unhover.bind(button))
func _on_hover(button: TextureButton) -> void:
var tween = create_tween()
tween.tween_property(button, "scale", Vector2(1.05, 1.05), 0.1)
SpacetimeDB Pattern
# In script
var _client = null
func setup(client, identity: String) -> void:
_client = client
_connect_to_db_updates()
func _connect_to_db_updates() -> void:
var db = _client.db
db.player.subscribe_to_inserts(&"Player", _on_player_joined)
Volgende Stappen
- SpacetimeDB SDK - Multiplayer integratie
- Scenes Overzicht - Alle scenes