Modules du jeu
Le code source est organisé en six modules dans scripts/.
Module Monde (world/)
Responsable de la génération et de la gestion du monde voxel sous-marin.
- BlockDatabase.gd
Registre central de tous les types de blocs (id, nom, texture, propriétés physiques). API publique :
get_block(id: int) -> BlockData,get_id_by_name(name: String) -> int.- Chunk.gd
Représente un chunk 16×16×16 blocs. Gère son maillage 3D et son état de chargement. API publique :
set_block(x, y, z, id),get_block(x, y, z) -> int,rebuild_mesh().- ChunkManager.gd
Orchestre le chargement/déchargement des chunks autour du joueur (rayon configurable). API publique :
get_chunk(cx, cy, cz) -> Chunk,request_chunk(pos: Vector3i).- WorldGenerator.gd
Génère le contenu des chunks de façon procédurale (bruit de Perlin, biomes, structures). API publique :
generate_chunk(cx, cy, cz) -> Array(tableau de 4096 block ids).
Module Dauphin (dolphin/)
Contrôle du personnage joueur et interface utilisateur associée.
- DolphinController.gd
Gère les entrées clavier/souris, applique la physique de nage, envoie les actions au serveur. API publique :
apply_input(input: Dictionary),take_damage(amount: int).- HUD.gd
Affiche les jauges (oxygène, vie, faim), la hotbar et les notifications. API publique :
update_oxygen(value: float),update_health(value: float),update_hunger(value: float).- EcholocationPulse.gd
Crée et anime l’impulsion sphérique d’écholocation. Détecte les mobs et blocs dans le rayon. API publique :
emit_pulse(origin: Vector3, radius: float).
Module Ambiance (ambience/)
Environnement visuel et sonore sous-marin.
- UnderwaterEnvironment.gd
Configure le fog volumétrique, la lumière directionnelle atténuée et les effets de post-process selon la profondeur du joueur. API publique :
set_depth(depth: float).- AudioManager.gd
Singleton audio. Gère les pistes de musique et les effets sonores avec transitions douces. API publique :
play_sfx(name: String),play_music(name: String),stop_music().- PlanktonParticles.gd
Système de particules generant le plancton lumineux ambiant. API publique :
set_density(density: float).- MainMenu.gd
Logique du menu principal (navigation, transitions de scène).
Module Inventaire (inventory/)
Gestion des ressources, recettes et interface d’inventaire.
- Inventory.gd
Stockage des items du joueur (tableau de slots). Synchronisé avec le serveur en multijoueur. API publique :
add_item(id: int, qty: int) -> bool,remove_item(id: int, qty: int) -> bool,has_item(id: int, qty: int) -> bool.- ItemDatabase.gd
Registre de tous les items (id, nom, icône, stack max). API publique :
get_item(id: int) -> ItemData.- CraftingRecipes.gd
Définit les 5 recettes de craft et expose la logique de fabrication. API publique :
get_available_recipes(inventory: Inventory) -> Array,craft(recipe_id: int, inventory: Inventory) -> bool.- InventoryUI.gd
Interface graphique de l’inventaire et du panneau de crafting. API publique :
open(),close(),refresh().
Module Mobs (mobs/)
Intelligence artificielle des créatures marines.
- FishSchool.gd
Comportement de banc de poissons (alignment, cohesion, separation — boids simplifié). Fuit le joueur à proximité. API publique :
set_school_size(n: int).- Jellyfish.gd
Déplacement oscillant aléatoire. Inflige des dégâts de contact au joueur. API publique :
get_damage() -> int.- Shark.gd
IA hostile : détection du joueur, poursuite, attaque, réaction à l’écholocation (fuite). API publique :
stun(duration: float).- MobSpawner.gd
Gère l’apparition des mobs selon le biome et la profondeur, avec limite de population. API publique :
spawn_in_chunk(chunk_pos: Vector3i).
Module Réseau (net/)
Infrastructure multijoueur ENet.
- NetworkManager.gd
Singleton réseau. Initialise ENet, gère les connexions/déconnexions joueurs, expose les RPCs. API publique :
host_game(port: int),join_game(ip: String, port: int),disconnect().- PlayerSyncComponent.gd
Attaché à chaque
Dolphin. Synchronise position, rotation et état sur le réseau. API publique :sync_state(state: Dictionary).- WorldSyncComponent.gd
Synchronise les modifications de blocs entre serveur et clients. API publique :
broadcast_block_change(pos: Vector3i, block_id: int).- ChatManager.gd
Gère l’envoi et la réception des messages de chat en multijoueur. API publique :
send_message(text: String),on_message_received(sender: String, text: String).