133 projets qui s'ouvrent directement dans l'éditeur. Chacun est du GDScript pur qui construit sa propre scène, il n'y a donc rien à importer.
Une balle traverse l'écran et rebondit sur les bords. La plus petite boucle qui soit : lire le delta, déplacer, inverser la vitesse.
Deux formes poursuivant la même cible, l'une avec lerp et l'autre avec move_toward. L'écart entre elles est toute la leçon.
Trois Node2D imbriqués et deux rotations. L'enfant orbite parce que le parent tourne, et le petit-enfant orbite l'enfant.
Le fuyard fuit la souris et le poursuivant suit le fuyard. Les deux utilisent direction_to, seul le signe change.
Un vaisseau façon Asteroids et huit rochers qui sortent par un bord et reviennent par l'autre. Deux appels à wrapf suffisent.
Un Line2D qui gagne un point là où est le pointeur et lâche le plus ancien une fois plein. La courbe de largeur et le dégradé font l'estompage.
Maintenez le bouton gauche pour dessiner. Chaque trait est un nouveau Line2D, et le bouton droit efface la toile.
Une Curve2D construite point par point, dessinée avec tessellate et parcourue par trois PathFollow2D. La progression est la seule chose qui change.
Un ressort à amortissement critique et un suiveur en lerp poursuivant la même cible mobile. Le ressort tient le rythme, le lerp traîne derrière.
Une position libre qui tourne en boucle et la même position passée par snapped. Le carré bleu ne se pose que sur des nœuds de la grille.
Neuf formes sur la même sinusoïde, chacune un pas de phase devant la précédente. Sans Tween et sans AnimationPlayer.
La même constante de vitesse appliquée avec et sans delta, avec la distance parcourue sur chaque ligne. La seconde n'est rapide qu'à la mesure du framerate.
Gravité, saut et détection du sol avec CharacterBody2D, sur des plateformes construites par code.
Seize caisses lâchées entre deux murs. La première chose à essayer quand on veut voir le solveur travailler.
Douze maillons épinglés les uns aux autres et un poids au bout. Cliquez pour pousser la chaîne et la regarder se stabiliser.
Trois ressorts de même longueur au repos avec des raideurs et des amortissements différents, côte à côte.
Une zone qui compte ce qui la traverse, à l'aide des signaux body_entered et body_exited.
Vingt-huit rayons déployés en éventail vers la souris. Chacun devient rouge là où il touche un mur, c'est la ligne de vue dans sa forme la plus simple.
Une boîte qui demande où elle s'arrêterait avant de bouger. Le fantôme est la fraction sûre que le cast renvoie.
Sautez à travers les plateformes bleues par en dessous et posez-vous dessus par le haut. Une seule propriété fait tout.
Trois balles lâchées de la même hauteur avec trois réglages de PhysicsMaterial. La valeur de bounce fait toute la différence.
Deux tapis qui ne bougent pas d'un pixel. constant_linear_velocity entraîne tout ce qui les touche.
Un mur de 54 caisses et un clic qui les repousse, avec une force qui décroît avec la distance.
Cliquez pour lâcher un RigidBody3D sur le sol et le voir s'empiler. Ceux que vous créez se nettoient seuls au bout de dix secondes.
Vingt pièces sur une courbe et une impulsion sur la première. Tout le reste, c'est le solveur.
Une porte tenue par une charnière avec limite d'angle. Cliquez pour la pousser et voir où la limite arrête le battant.
Trois cubes SoftBody3D qui atterrissent avec des raideurs différentes. C'est le maillage lui-même qui se déforme.
Un émetteur qui suit la souris, avec une texture de point procédurale et une rampe de couleur. Des particules CPU, celles que le moteur de rendu web dessine.
Une couche d'étincelles one_shot sur une couche de fumée one_shot, relancées ensemble. Cliquez pour déplacer l'explosion, ou attendez que le minuteur la relance.
Un point qui suit un parcours et un émetteur qui ne tourne que pendant le déplacement. emitting vient de la vitesse mesurée, et local_coords laisse la traînée derrière.
Deux émetteurs empilés avec des rampes de couleur différentes, une flamme additive et un panache de fumée au-dessus. Cliquez pour souffler une brise à travers les deux.
De la pluie avec un lifetime calibré sur la chute, et un pool d'émetteurs one_shot qui éclatent sur la ligne du sol. Cliquez pour ajouter votre éclaboussure.
Deux canons tirant des bandes de papier avec gravité et rotation. Un color_initial_ramp constant donne à chaque morceau une couleur plate de la palette.
Les contrôles de base sur un seul écran, chacun rendant compte au même label via son signal.
Les mêmes quatre boîtes confiées à quatre conteneurs. La mise en page dans Godot, c'est choisir qui range les enfants.
Six panneaux épinglés par des préréglages de mise en page. Redimensionnez le panneau de jeu et chacun garde son coin.
Les mêmes trois nœuds deux fois, et la différence tient en une poignée de add_theme.
Gras, couleur, wave, shake et rainbow, le tout en balises BBCode dans un seul label. Sans aucun nœud d'animation.
Un Timer qui remplit une barre, avec pause et reprise. La barre lit time_left, elle ne compte pas toute seule.
Des jetons passant d'un emplacement à l'autre. Trois méthodes font tout : _get_drag_data, _can_drop_data et _drop_data.
Un arbre de scène à deux colonnes, construit depuis un dictionnaire imbriqué par une fonction récursive.
Un ItemList avec sélection multiple, qui retire les lignes sélectionnées et les remet.
Un panneau latéral et trois onglets qui se partagent la largeur. Glissez le séparateur et les deux côtés suivent.
Quatre nœuds avec des ports que vous reliez en glissant. GraphEdit dessine la courbe, accepter la connexion vous revient.
Le sélecteur complet relié à un aperçu en direct, à la valeur hexadécimale et à une rangée d'échantillons enregistrés.
Un menu contextuel et deux dialogues, chacun répondant par son propre signal.
Neuf boutons reliés en anneau par focus_neighbor, parcourus avec tab et les flèches. Une interface qui marche sans souris.
Un stick qui se limite à son anneau et pilote un point. Sur un téléphone le même code répond au tactile.
Six cartes dans une grille qui passe de trois colonnes à deux quand la fenêtre se resserre.
Les six maillages primitifs sur un anneau qui tourne, chacun avec son propre matériau : métal, rugueux et émissif.
Une grille de 196 cubes portés par une sinusoïde. Deux boucles imbriquées au montage, une ligne de maths par image.
WASD qui pilote un CharacterBody3D entre des piliers, avec une caméra qui suit derrière. Sans visée à la souris.
Glissez avec le bouton gauche pour tourner la caméra autour de la pièce centrale, et utilisez la molette pour zoomer. Lacet, tangage et distance sont tout l'état.
Huit cônes appliquant look_at sur le même orbe en mouvement. Un appel par image remplace toute la trigonométrie.
Des pivots Node3D imbriqués, chacun tournant à son rythme. Une lune orbite sa planète et hérite gratuitement de l'orbite de la planète.
Une boîte gardée en intersection avec une sphère, percée par trois cylindres qui alternent entre soustraction, union et intersection toutes les deux secondes.
Quatre mille arbres dessinés par deux nœuds MultiMeshInstance3D, avec une couleur par instance sur les frondaisons.
Des gemmes Sprite3D en billboard sur une texture peinte pixel par pixel en code, chacune nommée par un Label3D. Le panneau central garde le billboard désactivé pour comparer.
La même géométrie et le même matériau blanc trois fois. Un cull mask donne à chaque lumière son tiers de la scène.
Des sphères métalliques réfléchissant une pièce colorée sans réflexions en espace écran. Trois valeurs de rugosité montrent à quelle vitesse le miroir devient flou.
Cinq boîtes et cinq Transform3D écrits à la main : identité, origine, Basis tournée, Basis mise à l'échelle et les trois combinés. Un fantôme marque où se trouve l'identité.
Un shader canvas plein écran animé par TIME. Changez un uniform, enregistrez, et le projet se recharge.
Le sprite stocke des indices de palette au lieu de couleurs, donc faire tourner la palette repeint tout le dessin.
Courbure, scanlines et séparation chromatique sur une scène 2D ordinaire. Tout le rendu tient en une passe plein écran.
Désaturation, vignettage et grain de pellicule sur une scène 3D, en onze lignes qui lisent la texture d'écran.
Une sphère dont les sommets suivent une onde pendant que l'émission pulse, écrite dans un shader spatial.
Une texture de bruit générée en GDScript et un discard dans le shader, avec un bord incandescent au seuil.
L'angle entre la normale et la vue, élevé à une puissance. Trois formes, trois puissances de bord.
Un éclairage découpé en bandes dans la fonction light du shader, avec un point spéculaire net.
Un coucher de soleil procédural avec des étoiles, écrit en shader_type sky. Le disque solaire suit le nœud de lumière.
Un quad devant la caméra qui lit DEPTH_TEXTURE, le brouillard sait donc à quelle distance est chaque pixel.
Du bruit qui pousse l'UV d'écran, masqué à la moitié basse pour que la différence saute aux yeux.
Des vagues dans le vertex shader avec la normale recalculée depuis la dérivée, la lumière les suit donc.
Un plan et aucune texture. fwidth garde chaque ligne large d'un pixel quelle que soit la distance de la caméra.
Quatre maillages sans carte UV, texturés par projection depuis les trois axes du monde et mélangés selon la normale.
Les six types de FastNoiseLite côte à côte, même graine et sans fractal, pour que le caractère de chacun ressorte.
Une carte de hauteur transformée en ArrayMesh avec SurfaceTool, colorée par altitude via les couleurs de sommet.
Du bruit multiplié par un masque radial et peint dans une Image bande par bande. Cliquez pour une autre île.
Un labyrinthe parfait creusé par retour sur trace. Les couloirs apparaissent dans l'ordre où ils ont été creusés, colorés par cet ordre.
Des salles placées sans se chevaucher, puis une marche aléatoire qui creuse le couloir entre chaque paire.
Une chaîne réécrite quatre fois par deux règles puis lue comme des mouvements de tortue, un Line2D par branche.
Le bruit donne un angle à chaque point de l'écran. Les flèches montrent le champ et les particules le suivent.
Le contour d'un champ de bruit, redessiné pendant que le seuil balaie. Le champ ne change jamais, seule la coupe change.
Un maillage vidé et reconstruit sommet par sommet à chaque image, avec une bande de lignes et une surface de lignes.
Le même solide généré deux fois par SurfaceTool, à facettes et lissé. Seul le groupe de lissage change.
Une MeshLibrary construite à l'exécution et une GridMap remplie depuis une carte de hauteur, un cube par cellule.
Un TileSet dont l'atlas est une Image peinte pixel par pixel, posée cellule par cellule sur un TileMapLayer.
Trois appels de Geometry2D avec le résultat dessiné : intersection de polygones, enveloppe convexe et décalage de polygone.
Une région de navigation générée par code et un agent qui fait le tour de quatre coins. Cliquez n'importe où pour l'envoyer ailleurs.
La même idée en trois dimensions, avec le NavigationMesh généré depuis des maillages primitifs au chargement. Cliquez le sol pour choisir une destination.
Trois obstacles entrant et sortant du maillage de navigation. Chaque échange régénère la région et l'agent prend la voie encore ouverte.
Une grille où les murs bloquent des cases et où les jaunes coûtent six fois plus à traverser. Le résultat est le trajet le moins cher, pas le plus court.
Quarante points reliés par distance, avec AStar2D calculant la route entre deux d'entre eux. Rien ici n'est une grille, le graphe est ce que vous reliez.
Chercher et fuir sont les deux mêmes lignes avec un signe inversé. Les vecteurs dessinés sont la vitesse désirée, l'actuelle et l'écart entre les deux.
Chaque agent vise un point qui ne glisse qu'un peu autour d'un cercle devant lui. C'est ce qui fait lire l'errance comme une intention plutôt qu'un bruit.
Soixante-douze boids appliquant séparation, alignement et cohésion à tout ce qui se trouve dans un petit rayon. Chacun est coloré selon le nombre de voisins qu'il voit.
Un enum et un bloc match qui pilotent patrouille, poursuite et retour. La bande du bas montre les dernières secondes d'état.
Une Camera2D avec lissage de position et les quatre propriétés de limite. La croix jaune est le centre de la caméra, on la voit donc s'arrêter au bord pendant que le joueur continue.
Un trauma qui décroît avec le temps, échantillonné depuis FastNoiseLite vers l'offset et la rotation de la caméra. Une explosion part toutes les 1,2 seconde et le curseur la dose.
Glissez pour déplacer et roulez la molette pour zoomer sur le pointeur plutôt que sur le centre, ce qui tient en deux lignes de maths au-dessus de Camera2D.zoom.
Une scène 3D rendue dans un SubViewport et affichée comme la texture d'un moniteur posé sur un écran 2D.
Deux SubViewports côte à côte avec une caméra chacun, tous deux tournés vers le même World3D. Chaque volet suit son propre cube.
Une Camera2D éloignée dans un SubViewport qui partage le World2D du jeu. Le HUD est hors de ce monde, c'est pourquoi il n'apparaît pas sur la carte.
Trois couches Parallax2D avec des scroll_scale différents, répétées par repeat_size pour que les crêtes ne manquent jamais pendant le déplacement.
Un SpringArm3D qui rapproche la caméra quand un mur s'intercale entre elle et le personnage. Le relevé compare spring_length à la longueur réellement obtenue.
Cinq carrés traversent l'écran, un par courbe de transition. Le moyen le plus rapide de voir ce que fait chaque easing.
Un tween qui exécute quatre étapes à la suite. tween_callback allume l'étape à l'écran et parallel met deux propriétés sur la même étape.
Une piste de position et une de couleur écrites clé par clé au démarrage, sans aucun fichier .anim. La timeline en dessous montre les mêmes clés que le code a insérées.
Une Curve construite point par point et lue avec sample(t). Le graphe est dessiné depuis la ressource qui déplace le carré, à côté d'un carré mû par le seul temps.
Un cycle de marche de huit images peint dans des buffers Image au démarrage puis confié à un AnimatedSprite2D. La bande du bas est le SpriteFrames lui-même.
Un bras articulé fait d'un seul Polygon2D skinné sur deux os. Tourner un Bone2D déplace les sommets pondérés dessus.
Le même saut avec le même timing des deux côtés, et seul celui de droite anime l'échelle. Trois lignes de plus font toute la différence.
Repos, préparation, ruée et récupération, chacun avec son tween. Entrer dans un état tue le tween du précédent, ils ne se disputent donc jamais la même propriété.
Une chaîne de six os créée par code et posée à chaque image avec set_bone_pose_rotation. Chaque BoneAttachment3D porte le maillage qui suit son os.
Sinus, carré et dent de scie écrits échantillon par échantillon dans un AudioStreamGenerator. Le Line2D dessine l'onde même dont le buffer se remplit.
Un balayage généré routé vers son propre bus et mesuré par AudioEffectSpectrumAnalyzer. Le repère est la fréquence source, les barres sont ce que lit l'analyseur.
Une grille de notes cliquable qui tourne en boucle. Chaque case allumée ajoute une voix qui décroît dans le même buffer généré.
Des corps tombant entre des picots, avec un blip créé en code et réaccordé par pitch_scale selon la vitesse que chaque corps avait à l'impact.
Un pluck généré routé de Voice vers FX puis Master, avec réverbe et distorsion que vous activez et le niveau crête de chaque bus à l'écran.
Une source en mouvement avec max_distance et attenuation, à côté d'une barre montrant la même décroissance que AudioStreamPlayer2D applique au ton généré.
Cinq actions créées avec InputMap.add_action au démarrage, aucune déclarée dans les réglages du projet. Le panneau liste les touches de chacune et s'allume tant qu'elle est enfoncée.
Sticks, gâchettes et boutons lus directement depuis Input et dessinés au fil de leurs mouvements. Sans manette branchée il le dit, et les flèches pilotent toujours le vecteur ui.
Les quatre valeurs de Input.mouse_mode derrière quatre boutons. Le point suit event.relative, qui est ce qui continue de marcher une fois le pointeur capturé.
Glissez une carte à un doigt et pincez-la à deux. Le même gestionnaire retombe sur le bouton de souris et la molette, qui est le chemin d'un navigateur de bureau.
Cliquez une touche, appuyez sur une autre, et l'action déménage. Voler la touche d'une autre action laisse celle-ci sans raccourci, c'est le cas qu'un écran de remappage doit gérer.
Un nœud déclare un signal et n'apprend jamais qui écoute. Cinq panneaux s'y connectent et s'allument quand leur tour vient.
Soixante-douze carrés répartis en quatre groupes. Un call_group atteint chaque membre d'une bande sans une seule référence.
Un dictionnaire d'état de scène écrit dans user:// en JSON, avec le contenu du fichier affiché à côté des valeurs en direct.
Une Resource avec class_name utilisée comme donnée typée. Six éléments partagent le script et chaque carte se redessine via le signal changed.
Deux fontaines émettant au même rythme, l'une allouant chaque particule et l'autre les reprenant d'un pool. Ce sont les compteurs qui argumentent.
Images par seconde, mémoire statique et nombre de nœuds échantillonnés chaque image dans trois graphes vivants, pendant qu'une vague de nœuds est créée et supprimée.
Trois colonnes issues de trois générateurs. Les deux qui partagent une graine produisent les mêmes nombres à chaque fois, le troisième non.
Six opérations rangées dans un tableau comme Callables, cinq lambdas et une méthode avec bind, chacune confiée à Array.map sur les mêmes nombres.