20 points par GN⁺ 2025-04-19 | 2 commentaires | Partager sur WhatsApp
  • Un moteur de jeu principalement orienté 2D, léger et performant, avec prise en charge de la 3D
  • Contrôle de toute la logique du jeu via des scripts Lua, avec builds rapides et hot reload pour accélérer le développement
  • Proposé gratuitement, sans frais de licence ni royalties
  • Excellente prise en charge du multiplateforme, permettant de déployer sur diverses plateformes à partir d’un seul développement
  • Des outils pensés pour les artistes, comme un éditeur de scènes et des outils GUI, qui facilitent la production visuelle
  • Extensible et exploitable en production grâce aux extensions natives en C/C++ et à l’intégration de nombreux SDK

Principales fonctionnalités de Defold

  • Aucune installation requise : utilisable immédiatement, sans installation ni configuration
  • Éditeurs visuels et de code : possibilité de créer avec un éditeur visuel et un éditeur de code
  • Débogueur Lua : outil fourni pour déboguer les scripts Lua
  • Éditeurs de scènes et de particules : divers éditeurs pour le développement de jeux 2D et 3D
  • Aucun coût : pas de coût initial, de licence, de royalties ni de frais de runtime

Prise en charge multiplateforme

  • Nombreuses plateformes : possibilité de publier des jeux sur les principales plateformes, dont PlayStation, Nintendo Switch, Android, iOS, macOS, Linux, Windows, Steam, HTML5 et Facebook
  • Aucun outil externe nécessaire : prise en charge de toutes les plateformes avec une seule base de code, sans outil externe

Une architecture orientée 2D, mais capable aussi en 3D

  • Defold est optimisé pour le développement de jeux 2D, tout en intégrant des fonctionnalités 3D
  • Conception basée sur des composants pour renforcer les performances et la modularité
  • Composants 2D : sprites 2D, modèles Spine, éditeur de tilemaps
  • Composants 3D :
    • chargement de modèles et d’animations 3D
    • création et modification de meshes 3D à l’exécution
    • matériaux personnalisés et shaders basés sur GLSL
  • Effets de particules
    • éditeur de particules avec aperçu en temps réel
    • réglage des paramètres via un éditeur de courbes
    • prise en charge des émetteurs de particules 2D/3D

Fonctionnalités d’animation

  • Système d’animation puissant utilisable avec les sprites, les modèles, les GUI, etc.
  • Animations flipbook : utilisables pour les sprites, les nœuds GUI et les particules
  • Animations Spine et de modèles
    • prise en charge du blending
    • gestion des événements de keyframes
    • prise en charge de la cinématique inverse et contrôle par script
  • Animation de propriétés
    • animation possible sur toutes les propriétés de sprites et de GUI
    • animation de propriétés personnalisées basée sur des scripts
    • utilisation de fonctions d’easing personnalisées ou prédéfinies

Des outils pensés pour les artistes

  • Éditeur GUI
    • composition en calques avec texte, images, nœuds en secteurs, etc.
    • fonctions de clipping et de masquage
    • prise en charge de la mise en page automatique et du changement d’orientation de l’écran
    • textures 9-slice, polices bitmap/champ de distance
    • réutilisation possible des éléments UI via des templates
  • Éditeur de scènes
    • éditeur visuel pour l’assemblage et le placement des assets
    • composition d’objets de jeu basée sur des prefabs
    • regroupement des objets dans une hiérarchie

Simulation physique

  • Intégration complète des moteurs physiques 2D/3D basés sur Box2D et Bullet
  • Objets statiques, dynamiques et cinématiques
  • Détection de collisions par formes et ray cast
  • Détection précise des collisions sur tilemap
  • Prise en charge des triggers, joints et moteurs

Tout est possible avec des scripts Lua

  • Scripts Lua
    • éditeur de code avec coloration syntaxique, autocomplétion et LSP
    • débogueur intégré et inspection des variables
    • pipeline de rendu entièrement scriptable
    • typage possible avec le langage Teal
  • Style de code réactif
    • prise en charge d’un style Lua réactif tout en conservant de hautes performances
    • structure de communication asynchrone entre objets de jeu

Prise en charge multiplateforme

  • Véritable multiplateforme
    • déploiement en un clic à partir de la même base de code
    • Steam, Facebook Instant, etc. pris en charge via des extensions
    • l’éditeur prend en charge macOS, Windows et Linux
    • déploiement mobile possible sans Xcode ni Android Studio
    • prise en charge de WebGL, OpenGL, Vulkan et Metal
  • Très léger
    • gestion automatique des ressources en n’incluant que les assets utilisés
    • packing d’atlas de sprites
    • configuration possible de la compression des textures selon la plateforme
    • batching dynamique dans le pipeline de rendu

Performances et stabilité

  • Taille binaire bien plus réduite que celle d’autres moteurs
    • environ 10 % de la taille binaire de Unity 6 et Godot 4.3 (sur Android, iOS, HTML5 et Windows)
  • Excellentes performances
    • rendu possible de dizaines de milliers d’objets (exemple : Bunnymark)
    • fonctionnement fluide même sur du matériel ancien et dans les navigateurs mobiles
  • Version stable
    • cycle de release de 4 semaines, incluant 2 semaines de bêta
    • très peu de changements cassant la rétrocompatibilité
    • les crashs du moteur sont très rares

Flux de travail rapide

  • Hot reload
    • application en temps réel des assets et de la logique
    • prise en charge du hot reload et du débogage sur appareils sans fil
    • gestion de rechargement personnalisée possible via des hooks Lua
  • Workflow personnalisé
    • utilisation possible de pipelines de build indépendants
    • prise en charge des builds headless intégrés à la CI
    • partage possible de bibliothèques entre projets
    • exploitation d’un Asset Portal avec assets officiels et communautaires
    • toutes les données sont gérées sous forme de fichiers texte, ce qui facilite les fusions
  • Build et refactoring
    • tous les builds, y compris HTML5, se terminent en quelques secondes
    • prise en charge du chargement synchrone et asynchrone
    • refactoring automatique des assets
  • Optimisation et débogage
    • profiler visuel en temps réel
    • échantillonnage distant d’images via le web
    • capture vidéo du jeu possible
    • API fournie pour les logs de crash natifs

Ajout de fonctionnalités via des extensions natives

  • Possibilité d’étendre les fonctionnalités du moteur Defold en C, C++, ObjectiveC, Java et JavaScript
  • Génération automatique dans le cloud d’un moteur personnalisé pour l’utilisateur
  • Exemples d’usage
    • calcul haute performance et traitement de données
    • accès au matériel, comme la caméra mobile
    • intégration avec des SDK externes pour la publicité, l’analytics, etc.

Déploiement en production et intégration de services tiers

  • Defold est un moteur de jeu prêt pour la production, avec intégration à des SDK fiables
  • Notifications push : Google, Apple
  • Achats in-app : Google, Apple, Amazon, Facebook
  • Services de jeu : Facebook SDK, Google Play, Firebase
  • Publicité : prise en charge de médiation comme AdMob, IronSource, etc.
  • Réseau : WebSockets, Nakama, PlayFab, Colyseus, etc.
  • D’autres extensions sont disponibles sur l’Asset Portal

Pourquoi Defold ?

  • Defold ne prétend pas être optimal pour tous les jeux
  • En revanche, il peut être le meilleur choix pour certains jeux
  • Il se distingue par de vrais atouts en productivité de développement, légèreté, multiplateforme et itération rapide

2 commentaires

 
viel214 2025-04-21

Ce n’est pas simplement Lua, mais LuaJIT, donc c’est très rapide.

 
GN⁺ 2025-04-19
Avis Hacker News
  • Ils ont choisi une solution de licence intéressante. J’apprécie qu’ils l’appellent une licence source available plutôt que open source

    • Il est possible d’apporter des modifications propriétaires au moteur sans avoir à les publier (contrairement à la GPL)
    • Il est possible de monétiser librement les jeux créés avec le moteur, avec la garantie qu’il n’y aura pas de bait-and-switch
    • Ce n’est pas de l’Apache 2.0 parce qu’il n’est pas possible de monétiser le moteur de jeu lui-même
    • Cela semble équitable et mûrement réfléchi. Bravo à l’équipe
  • Gros respect pour le fait de l’appeler "source available" sans employer à tort le terme "open source". C’est aussi bien d’avoir mis en avant les ajouts à la licence basée sur Apache

  • J’ai de l’affection pour Defold. C’est assez unique dans le développement de jeux. Par exemple, l’éditeur GUI intégré est écrit en Clojure

    • Si je me souviens bien, le projet est né dans un studio de développement de jeux suédois (probablement King)
    • Les outils de build/publication pour les plateformes console peuvent coûter de l’argent aux développeurs de jeux, car les SDK des plateformes elles-mêmes imposent des restrictions
    • On dirait que l’organisation Defold fait de sérieux efforts pour être équitable envers les développeurs de jeux, notamment sur les licences
  • Defold existe depuis longtemps. Je ne sais pas pourquoi c’est sur la page principale maintenant. Quoi qu’il en soit, Defold est bien. La communauté, la documentation, etc. restent en retrait par rapport à Godot

    • Parmi les autres options, il y a MonoGame (avec lequel Stardew Valley a été créé), ainsi que de gros moteurs comme Unity et Unreal
    • Cela dépend beaucoup du temps que l’on veut investir dans l’apprentissage, du jeu de fonctionnalités souhaité, des compromis ou plateformes à considérer, ainsi que du langage/style de programmation à utiliser
  • Je me souviens de l’impression qu’avait donnée Unity quand il est apparu au début. On sentait qu’il allait se passer quelque chose

    • Ici, j’ai une impression similaire. On sent dans la communication et dans l’esprit du langage que l’équipe tient quelque chose de bon
    • Le fait que l’export multiplateforme soit actuellement très complet est un gros point fort. L’un des plus grands obstacles de Godot était le support des consoles
    • Mon seul reproche, c’est qu’il ne supporte que Lua. Si c’était du C#, ce serait plus intéressant. Mais au moins, ce n’est pas une recompilation complète en C++ comme avec certains moteurs
  • Il y a une soumission connexe en cours à propos d’un jeu écrit en 60k LOC de Lua avec ce moteur

  • J’ai remarqué qu’il n’est pas dans Nixpkgs

  • J’aimerais voir une comparaison plus approfondie avec Godot sur le plan des fonctionnalités. Au moins pour la 3D, ce dernier semble bien plus avancé

  • J’avais suivi ce moteur il y a quelques années. C’était le moteur de jeu de King, qu’ils ont rendu librement disponible après avoir cessé d’y investir eux-mêmes

  • Je me demande en quoi il diffère de Löve 2D, en dehors du fait qu’il est fourni avec un IDE. Defold semble prendre en charge davantage de plateformes, mais empaqueter des jeux pour diverses consoles peut impliquer des dépendances très fermées