13 Matching Annotations
  1. Sep 2026
    1. Scripts et Architectures Favorisant l'Efficacité dans Godot : Guide de Synthèse

      Ce document technique synthétise les pratiques de développement et les structures de scripts optimisées pour le moteur de jeu Godot, telles qu'établies par l'expérience de quatre ans et demi du développeur Aarimous.

      L'accent est mis sur la réutilisabilité, la clarté du code et l'utilisation stratégique des fonctionnalités de chargement automatique (Autoload).

      Résumé Analytique

      L'architecture logicielle présentée repose sur l'utilisation intensive des "Autoloads" (Singletons) pour créer des systèmes globalement accessibles.

      Cette approche permet de résoudre les défis liés à la gestion des données, à la communication entre les scènes et à la cohérence visuelle.

      Les points clés incluent :

      • Centralisation des données : Utilisation d'énumérations et de scripts globaux pour éviter les "chaînes magiques" et assurer la cohérence.

      • Découplage des systèmes : Mise en œuvre d'un bus de signaux pour une communication flexible.

      • Optimisation de l'expérience utilisateur : Systèmes dédiés au changement de scène fluide et à la gestion de la surcharge sonore.

      • Fondations Mathématiques : Intégration de bibliothèques utilitaires pour des structures de jeu spécifiques (grilles hexagonales).


      1. Fondations de l'Architecture : Les Scripts Globaux (Autoloads)

      Le pilier central de cette méthodologie est l'utilisation des scripts accessibles globalement.

      Dans Godot, ces scripts sont configurés dans les paramètres du projet sous l'onglet "Global" et sont chargés dès le lancement du jeu.

      Gestion des Singletons et de la Mémoire

      Le script Global sert de conteneur de haut niveau pour divers gestionnaires qui ne doivent être instanciés qu'une seule fois :

      • Card Manager : Gère le chargement et l'analyse des données de jeu (ex: cartes pour le projet Hexagoda) en mémoire une seule fois au démarrage, évitant des rechargements coûteux.

      • Générateur de Nombres Aléatoires (RNG) : Centraliser l'instance RNG permet d'utiliser une graine (seed) unique pour l'ensemble du projet, assurant la reproductibilité de l'aléatoire si nécessaire.

      • Référence à la Scène Principale : Une technique consiste à stocker une référence à la scène "Main" dans le script global au moment de son initialisation (global.main = self).

      Cela facilite l'accès au nœud racine pour l'ajout d'enfants ou l'accès à des variables spécifiques depuis n'importe quel point du projet.


      2. Communication et Flux de Données

      Le Bus de Signaux (Signal Bus)

      Le Signal Bus est un script Autoload dédié exclusivement à la définition de signaux globaux.

      | Avantages | Avertissements et Limitations | | --- | --- | | Permet à de multiples émetteurs et récepteurs de communiquer sans couplage direct. | L'ordre d'exécution des signaux n'est pas garanti par Godot. | | Idéal pour les changements d'état globaux (ex: changement d'état d'apparition/spawning). | Ne doit pas remplacer les connexions directes parent-enfant si la hiérarchie est simple. | | Facilite l'organisation des méthodes de rappel via des connecteurs centralisés. | À éviter si une séquence logique stricte (A avant B avant C) est requise. |

      Le Script Utilitaire (Util) et le "Culte de l'Enum"

      Le script Util est conçu pour héberger les énumérations (enums), considérées comme la structure osseuse du projet.

      • Cohérence des données : Les énumérations garantissent que la même définition (ex: type de ressource "Nourriture") est utilisée pour l'interface utilisateur, la logique de gestion et les textures.

      • Scène de Référence et Variables d'Exportation : Pour éviter les valeurs hexadécimales complexes ("magic strings"), une scène de référence avec des variables exportées permet de définir visuellement les couleurs et les icônes.

      Des méthodes comme get_resource_color_by_type(enum) font le pont entre la logique (enum) et le visuel (couleur exportée).


      3. Systèmes Systémiques et Qualité de Vie

      Changeur de Scène (Scene Changer)

      Ce système repose sur une scène chargée globalement contenant un AnimationPlayer et un ColorRect sur un calque supérieur (CanvasLayer 100).

      • Processus : Il effectue un fondu vers une couleur, déclenche le changement de scène via get_tree().call_deferred, puis effectue un fondu sortant.

      • Logique : L'utilisation de structures match basées sur des énumérations permet d'appeler un changement de scène de manière lisible (ex: SceneChanger.change_scene(Scenes.GAME)).

      Gestionnaire Audio (Audio Manager)

      Développé pour résoudre les problèmes de saturation sonore (clipping) lorsque trop de sons identiques se déclenchent simultanément (ex: collecte massive d'objets).

      • Limitation d'instances : Le script suit le nombre de sons actifs.

      Si une limite définie (ex: 5 instances) est atteinte, aucun nouveau son n'est joué jusqu'à ce qu'une place se libère.- Cycle de vie : Le compte est décrémenté automatiquement à la fin de la lecture de chaque effet sonore.


      4. Outils Spécialisés : Gestion des Grilles Hexagonales

      Pour les projets impliquant des cartes complexes, l'utilisation d'une classe utilitaire hexagonale est préconisée, basée sur les concepts mathématiques de Red Blob Games.

      Caractéristiques de la classe HexUtility :

      • Transposition mathématique : Conversion des algorithmes de gestion de grilles hexagonales vers GDScript.

      • Configuration de la cellule : Nécessite la définition d'une taille de cellule (cell_size) adaptée à la texture utilisée.

      • Méthode de réglage : Le développeur recommande une approche par tâtonnements (guess and check) pour aligner parfaitement la taille des cellules sur les dimensions des pixels des textures.


      Conclusion et Philosophie de Développement

      Le développement de jeux est reconnu comme un processus complexe et parsemé d'erreurs.

      La stratégie adoptée ici ne cherche pas la "meilleure" manière absolue, mais celle qui favorise l'état de flux (flow state) et la réduction des frictions techniques.

      L'organisation rigoureuse via les scripts globaux et la standardisation par les énumérations permettent de transformer un chaos potentiel en un système gérable et évolutif.

    1. Guide de Développement 3D avec Godot Engine : Fondations et Méthodologies

      Ce document synthétise les principes fondamentaux, les flux de travail et les meilleures pratiques pour la création de jeux 3D au sein du moteur Godot, tels qu'exposés dans l'analyse technique fournie.

      Résumé Exécutif

      Le passage du développement 2D au 3D dans Godot est facilité par une architecture de conception cohérente où les concepts de base (nœuds, scripts, signaux) restent identiques.

      Alors que la 2D repose sur des pixels et des sprites, la 3D introduit une complexité accrue via les maillages (meshes), les matériaux PBR, l'éclairage dynamique et les environnements de rendu.

      Les points clés à retenir sont :

      • Fidélité conceptuelle : La plupart des nœuds 2D ont un équivalent 3D direct (ex: Node2D devient Node3D).

      • Prototypage rapide : L'utilisation des nœuds CSG (Constructive Solid Geometry) permet de construire des niveaux fonctionnels sans passer par un logiciel de modélisation externe.

      • Standardisation des assets : Le format glTF (ou .glb) est la recommandation officielle pour l'importation de modèles, offrant la meilleure compatibilité.

      • Optimisation physique : L'adoption du moteur de physique Jolt est recommandée pour une stabilité et des performances accrues par rapport au moteur par défaut de Godot.

      • Piliers visuels : La qualité graphique dépend de l'interaction entre les assets (matériaux), l'éclairage et la configuration du nœud WorldEnvironment.


      1. Transition de la 2D vers la 3D

      L'architecture de Godot permet une transition fluide.

      La logique de programmation reste largement inchangée, bien que les vecteurs passent de deux à trois composantes (ajout de l'axe Z).

      Équivalence des Nœuds

      De nombreux nœuds possèdent des versions 3D fonctionnant de manière quasi identique :

      | Nœud 2D | Équivalent 3D | | --- | --- | | Node2D | Node3D | | Sprite2D | MeshInstance3D | | Area2D | Area3D | | CharacterBody2D | CharacterBody3D | | CollisionShape2D | CollisionShape3D | | RayCast2D | RayCast3D |

      Certains nœuds, comme Timer ou AnimationPlayer, sont universels et ne possèdent pas de variantes spécifiques à la 3D.

      Navigation et Unités

      • Échelle : En 2D, une unité correspond généralement à un pixel.

      En 3D, la convention standard est 1 unité = 1 mètre.

      • Navigation dans le viewport :

      • Orbite : Bouton central de la souris.

      • Panoramique : Shift + Bouton central.

      • Zoom : Roulette de la souris.

      • Mode "Free Look" : Bouton droit maintenu + touches ZQSD (WASD).

      • Focus : Touche F sur l'objet sélectionné.


      2. Prototypage et Conception de Niveaux

      Le document préconise une approche par étapes, commençant par le "Grayboxing" avant de finaliser les détails visuels.

      Nœuds CSG (Constructive Solid Geometry)

      Les nœuds CSG permettent de créer des formes complexes en combinant des primitives (boîtes, cylindres, sphères).

      • Opérations : Union, Soustraction (utile pour créer des ouvertures comme des fenêtres ou des arches) et Intersection.

      • Avantage majeur : L'option "Use Collision" permet de générer automatiquement des collisions sans configuration manuelle.

      • CSGCombiner3D : Regroupe plusieurs objets CSG en une seule hiérarchie pour organiser la scène.

      Environnements Organiques

      Pour les scènes extérieures vastes, le document note que Godot ne possède pas de solution native de terrain, mais recommande l'extension Terrain 3D pour sculpter et peindre des paysages.


      3. Physique et Contrôle du Personnage

      Moteurs de Physique

      Bien que Godot dispose d'un moteur interne, l'intégration de Jolt Physics est fortement conseillée pour :

      • De meilleures performances globales.

      • Une simulation plus stable des objets rigides.

      • Une gestion supérieure des échelles non uniformes.

      Note : Dans Godot 4.4+, Jolt est prévu pour être intégré nativement.

      Contrôleur de Personnage

      Le document souligne la complexité de créer un contrôleur robuste (gestion des pentes, sauts, sprint).

      Pour le prototypage, l'utilisation d'un contrôleur simplifié (comme le "Protocontroller") est suggérée pour tester rapidement les niveaux avant de développer une solution personnalisée via Input Map.


      4. Pipeline des Assets 3D

      Le flux de travail des assets repose sur trois éléments : les modèles, les textures et les matériaux.

      Formats de Fichiers

      • glTF / glB : Format ouvert recommandé.

      Le .glb est la version binaire, plus compacte.

      • Blend : Godot peut importer directement des fichiers Blender si celui-ci est installé sur la machine.

      Matériaux et Textures (PBR)

      Le StandardMaterial3D suit le flux de travail PBR (Physically Based Rendering).

      Les propriétés principales incluent :

      • Albedo : Couleur de base ou texture.

      • Metallic : Niveau de réflexion métallique (0 à 1).

      • Roughness : Rugosité de la surface (influence la netteté des reflets).

      • Normal Map : Simule des détails de profondeur sans modifier la géométrie réelle.

      • Ambient Occlusion (AO) : Assombrit les zones où la lumière pénètre difficilement.

      • ORM Maps : Technique d'optimisation combinant l'Occlusion, la Rugosité et le Métallique dans les canaux Rouge, Vert et Bleu d'une seule texture.

      Structure des Scènes pour les Assets

      Trois méthodes d'intégration sont analysées :

      • Scènes héritées : Basées directement sur le fichier glTF.

      Rigides et potentiellement fragiles lors des réimportations.

      • Imbrication (Nesting) : Placer le modèle glTF dans une nouvelle scène Godot.

      Méthode recommandée pour séparer la logique de jeu de l'apparence visuelle.

      • Localisation (Make Local) : Rompt le lien avec le fichier original.

      Offre une flexibilité totale mais augmente considérablement la taille du fichier de scène en stockant les données de maillage.


      5. Animation et Suffixes d'Importation

      Systèmes d'Animation

      • AnimationPlayer : Gère les bibliothèques d'animations.

      • Retargeting : Permet d'utiliser des animations sur des squelettes différents, facilitant l'usage de bibliothèques tierces comme Mixamo.

      Automatisation par Suffixes

      Godot reconnaît des suffixes dans les noms des nœuds lors de l'importation pour automatiser des tâches :

      • -noimp : Empêche l'importation du nœud.

      • -colonly : Transforme le maillage en une forme de collision uniquement.

      • -loop : Définit automatiquement l'animation en boucle.


      6. Éclairage et Rendu (WorldEnvironment)

      Le nœud WorldEnvironment est le centre de contrôle de l'atmosphère visuelle.

      Types de Lumières

      • DirectionalLight3D : Simule le soleil ou la lune (éclairage global directionnel).

      • OmniLight3D : Lumière ponctuelle émettant dans toutes les directions (ex: ampoule).

      • SpotLight3D : Lumière directionnelle en forme de cône (ex: lampe de poche).

      Effets de Post-traitement et Qualité

      • SSAO (Screen Space Ambient Occlusion) : Ajoute du réalisme en ombrant les recoins.

      • Tone Mapping : Ajuste la courbe de contraste. Les modes ACES ou Filmic sont préférés pour éviter l'écrêtage des hautes lumières et obtenir un aspect cinématique.

      • Ajustements de Couleur : Possibilité d'utiliser des gradients 1D ou des LUT pour la correction colorimétrique.

      • Auto-Exposition : Simule l'adaptation de l'œil humain lors du passage d'une zone sombre à une zone lumineuse.

      Optimisation

      L'activation des ombres sur chaque lumière est coûteuse. Il est conseillé de les utiliser avec parcimonie pour maintenir des performances fluides.

      Pour le rendu final, les paramètres d'anti-crénelage (MSAA) et les réglages avancés de rendu peuvent être configurés dans les Project Settings.

    1. Guide d’Initiation à la Création de Jeux Vidéo avec Godot 4

      Résumé Analytique

      Ce document synthétise les enseignements fondamentaux pour la création d'un premier jeu vidéo de type "plateformeur" en utilisant le moteur de jeu Godot Engine 4.

      Le moteur se distingue par sa gratuité totale, son caractère open source et son architecture modulaire basée sur des nœuds (nodes) et des scènes.

      Les points clés du processus incluent :

      • Accessibilité et Configuration : Une installation simplifiée via un exécutable portable et une gestion de projet intuitive (mode "Forward Plus" pour PC).

      • Architecture Modulaire : La compréhension de la relation entre "Scènes" (unités réutilisables) et "Nœuds" (fonctionnalités spécifiques).

      • Mécaniques de Jeu : L'intégration de la physique (CharacterBody2D), des collisions (Area2D) et des graphismes animés (AnimatedSprite2D).

      • Logique de Programmation : L'utilisation du langage GDScript pour orchestrer les mouvements, la gestion du score et les interactions.

      • Développement de l'Environnement : L'usage de TileMapLayer pour la conception visuelle et physique des niveaux.


      I. Fondements et Configuration du Projet

      Nature du Moteur Godot

      Godot Engine est un moteur de jeu libre et gratuit, permettant le développement sans frais de licence.

      Son exécution est portable, ne nécessitant pas d'installation complexe sur le système d'exploitation.

      Paramétrage du Projet

      La création d'un jeu débute par la définition de paramètres essentiels :

      • Nom et Chemin : Organisation des fichiers dans un dossier dédié.

      • Mode de Rendu : Le tutoriel préconise le mode Forward Plus pour les jeux à destination des ordinateurs de bureau, offrant une puissance de calcul adaptée.

      • Vue 2D vs 3D : Bien que Godot supporte les deux, l'apprentissage des bases se concentre sur l'espace de travail en deux dimensions.


      II. Architecture Technique : Scènes et Nœuds

      Le concept fondamental de Godot repose sur l'imbrication de composants :

      • La Scène : Un ensemble d'éléments programmables et réutilisables (ex: un niveau, un personnage, une pièce).

      • Le Nœud (Node) : La brique de base dotée d'une fonction précise.

      Tableau des Nœuds Fondamentaux

      | Type de Nœud | Fonction Principale | | --- | --- | | CharacterBody2D | Base pour les personnages contrôlés par la physique. | | StaticBody2D | Objets physiques immobiles (plateformes). | | RigidBody2D | Objets soumis entièrement à la gravité et aux forces (pièces). | | AnimatedSprite2D | Gestion des visuels animés (marche, saut). | | CollisionShape2D | Définition de la zone d'impact physique (Hitbox). | | Area2D | Détection de zone sans collision physique bloquante (trigger). | | TileMapLayer | Construction de niveaux par "tuiles" graphiques. |


      III. Développement du Personnage et Physique

      Création du Joueur

      Le personnage est conçu comme une scène autonome contenant :

      • Un CharacterBody2D pour les déplacements.

      • Un AnimatedSprite2D lié à une "Sprite Sheet" découpée en régions (animations Idle et Marche).

      • Un script de mouvement basique (fourni par les modèles de Godot) gérant la vélocité et les sauts.

      Gestion de la Symétrie et des Animations

      Le script GDScript permet d'adapter le visuel au mouvement :

      • Direction > 0 : Désactivation de la symétrie horizontale (flip_h = false).

      • Direction < 0 : Activation de la symétrie (flip_h = true).

      • États : Si la vélocité est nulle, l'animation "Idle" est jouée ; sinon, l'animation "Marche" est activée.


      IV. Conception de l'Environnement (TileMaps)

      L'utilisation des TileMapLayer permet de peindre le décor à l'aide de tuiles de tailles fixes (70x70 pixels dans cet exemple).

      • TileSet : C'est la bibliothèque de ressources.

      Il faut configurer la séparation des pixels (marges) pour assurer un alignement parfait des textures.

      • Couches de Physique : Les collisions sont "peintes" directement sur les tuiles via l'inspecteur de propriétés.

      • Z-Index : Ce paramètre gère l'ordre d'affichage.

      Un index négatif (ex: -1) place un élément au second plan, idéal pour les fonds de décor.


      V. Logique de Jeu et Programmation (GDScript)

      Collectibles (Pièces)

      Les pièces utilisent un RigidBody2D pour un comportement physique réaliste (rebond, glissade).

      Une Area2D enfant détecte l'entrée du joueur (body_entered) pour déclencher :

      • L'incrémentation du score dans un gestionnaire global.

      • La suppression de l'objet via la fonction queue_free().

      Gestionnaire de Score (Game Manager)

      Un nœud centralisé gère la variable score.

      Il communique avec un nœud Label pour l'affichage textuel à l'écran, nécessitant une conversion du type numérique vers le type texte (str(score)).

      Zone de Danger (Game Over)

      Une zone "morte" est placée sous le niveau.

      Elle utilise également une Area2D.

      Si le nom du corps entrant est "joueur", la scène actuelle est rechargée via get_tree().reload_current_scene().


      VI. Immersion et Polissage

      Audio

      L'intégration sonore utilise le nœud AudioStreamPlayer.

      • Musique : Activée en "Autoplay" avec l'option "Boucle" (Loop) activée dans les réglages d'importation.

      • Effets (SFX) : Déclenchés par code (méthode .play()) lors d'actions spécifiques comme le ramassage d'une pièce.

      Caméra

      L'ajout d'une Camera2D parente du joueur permet un suivi dynamique du mouvement, évitant que le personnage ne sorte du champ de vision.

      Matériaux Physiques

      Pour éviter la monotonie, des "Physics Materials" peuvent être appliqués aux objets (comme les pièces) pour modifier leur rebond (bounce) et leur friction, rendant le gameplay plus organique.


      VII. Exportation du Projet

      L'étape finale consiste à transformer le projet en un fichier exécutable (.exe pour Windows) :

      • Modules d'exportation : Téléchargement des modèles nécessaires via l'éditeur.

      • Préréglages : Ajout de la plateforme cible.

      • Fichier PCK : Option d'intégration du pack de ressources pour obtenir un fichier unique.

      • Finalisation : Exportation du projet vers le bureau pour distribution.


      Conclusion

      Le flux de travail dans Godot 4 privilégie une approche itérative : importer des assets, configurer les nœuds, scripter les interactions et tester immédiatement grâce au bouton "Play".

      La maîtrise des conditions (if/else) et de la hiérarchie des nœuds constitue la base indispensable pour progresser vers des projets plus complexes.

  2. Jun 2025
    1. / state.step

      basically times fps(e.g. divide by 0.016 = time 60), this is because angular velocity is a per second unit, engine subsequently will integrate this value by times delta again.

    2. forward_dir.cross(target_dir)

      a vector that will be the rotation axis, perpendicular to both vectors, and since they are unit vectors, this is sin(a). this means it will rotate to target direction faster if their angle are larger.

  3. Oct 2024
  4. Oct 2023
  5. Jul 2017