- 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
Ce n’est pas simplement Lua, mais LuaJIT, donc c’est très rapide.
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
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
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
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
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