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).