- Es un motor de juegos centrado en 2D ligero y de alto rendimiento, y también admite funciones 3D
- Controla toda la lógica del juego con scripts en Lua, y mejora la velocidad de desarrollo con compilaciones rápidas y hot reload
- Se ofrece gratis, sin costos de licencia ni regalías
- Tiene un sólido soporte multiplataforma, por lo que permite distribuir en varias plataformas con un solo desarrollo
- Ofrece herramientas amigables para artistas, como editor de escenas y herramientas GUI, lo que facilita la producción visual
- Permite escalabilidad y uso en producción con extensiones nativas en C/C++ y la integración de diversos SDK
Funciones principales de Defold
- No requiere instalación: se puede usar de inmediato sin instalar ni configurar nada
- Editor visual y de código: permite trabajo creativo mediante editor visual y editor de código
- Depurador de Lua: ofrece herramientas para depurar scripts de Lua
- Editor de escenas y partículas: ofrece varios editores para desarrollo de juegos 2D y 3D
- Sin costo: no hay costo inicial, licencias, regalías ni costos de runtime
Soporte multiplataforma
- Varias plataformas: permite publicar juegos en plataformas principales como PlayStation, Nintendo Switch, Android, iOS, macOS, Linux, Windows, Steam, HTML5 y Facebook
- Sin herramientas externas: soporta todas las plataformas desde una sola base de código, sin herramientas externas
Arquitectura del motor: centrado en 2D, con 3D también posible
- Defold está optimizado para el desarrollo de juegos 2D, pero también incluye funciones 3D
- Diseño basado en componentes que mejora el rendimiento y la modularidad
- Componentes 2D: sprites 2D, modelos Spine, editor de tilemaps
- Componentes 3D:
- Carga de modelos 3D y animaciones
- Creación y modificación de mallas 3D en runtime
- Materiales personalizados y shaders basados en GLSL
- Efectos de partículas
- Editor de partículas con vista previa en tiempo real
- Ajuste de parámetros con editor de curvas
- Soporte para emisores de partículas 2D/3D
Funciones de animación
- Potente sistema de animación utilizable en sprites, modelos, GUI y más
- Animación flipbook: para sprites, nodos GUI y partículas
- Animaciones de Spine y modelos
- Soporte para blending
- Manejo de eventos por keyframe
- Permite aplicar cinemática inversa y controlarla por script
- Animación de propiedades
- Se pueden animar todas las propiedades de sprites y GUI
- Animación de propiedades basada en scripts personalizados
- Uso de funciones de easing personalizadas o predefinidas
Herramientas amigables para artistas
- Editor GUI
- Composición por capas con texto, imágenes, nodos pie y más
- Funciones de clipping y máscaras
- Soporte para auto layout y cambio de orientación de pantalla
- Texturas 9-slice, fuentes bitmap/distance field
- Reutilización de elementos UI mediante plantillas
- Editor de escenas
- Editor visual para ensamblar y colocar assets
- Composición de game objects basada en prefabs
- Agrupación de objetos con jerarquías
Simulación física
- Integración completa de motores físicos 2D/3D basados en Box2D y Bullet
- Objetos estáticos/dinámicos/cinemáticos
- Detección de colisiones basada en formas y ray casting
- Detección precisa de colisiones en tilemaps
- Soporte para triggers, joints y motores
Todo es posible con scripts en Lua
- Scripts en Lua
- Incluye editor de código, resaltado de sintaxis, autocompletado y LSP
- Depurador integrado e inspección de variables
- El pipeline de render puede programarse por completo mediante scripts
- Permite tipado usando el lenguaje Teal
- Estilo de código reactivo
- Soporta Lua con estilo reactivo manteniendo alto rendimiento
- Estructura de comunicación asíncrona entre game objects
Soporte multiplataforma
- Verdadero multiplataforma
- Publicación con un clic desde la misma base de código
- Steam, Facebook Instant y otros se soportan mediante extensiones
- El editor es compatible con macOS, Windows y Linux
- Permite publicar en móviles sin Xcode ni Android Studio
- Soporte para WebGL, OpenGL, Vulkan y Metal
- Muy liviano
- Gestión automática de recursos que incluye solo los assets usados
- Empaquetado de atlas de sprites
- Configuración de compresión de texturas por plataforma
- Batching dinámico en el pipeline de render
Rendimiento y estabilidad
- Tamaño binario mucho más pequeño que otros motores
- Aproximadamente 10% del tamaño binario de Unity 6 y Godot 4.3 (en Android, iOS, HTML5 y Windows)
- Excelente rendimiento
- Puede renderizar decenas de miles de objetos (ejemplo: Bunnymark)
- Funciona con fluidez incluso en hardware antiguo y navegadores móviles
- Versión estable
- Ciclo de lanzamiento de 4 semanas, con 2 semanas de beta incluidas
- Casi no hay cambios que rompan compatibilidad hacia atrás
- Los crashes del motor ocurren muy rara vez
Flujo de trabajo rápido
- Hot reload
- Aplicación en tiempo real de assets y lógica
- Soporte para hot reload y depuración en dispositivos inalámbricos
- Permite manejo personalizado de recarga mediante hooks de Lua
- Workflow personalizado
- Se puede usar un pipeline de build independiente
- Soporte para builds headless integrados con CI
- Permite compartir librerías entre proyectos
- Opera un Asset Portal con recursos oficiales y de la comunidad
- Todos los datos se gestionan como archivos de texto, por lo que son fáciles de fusionar
- Build y refactorización
- Todos los builds, incluido HTML5, se completan en segundos
- Soporte para carga asíncrona y síncrona
- Refactorización automática de assets
- Optimización y depuración
- Profiler visual en tiempo real
- Muestreo remoto de frames basado en web
- Permite capturar video del juego
- Proporciona una API de logs para crashes nativos
Agregar funciones con extensiones nativas
- Se puede extender la funcionalidad del motor Defold con C, C++, ObjectiveC, Java y JavaScript
- Generación automática en la nube de motores personalizados para el usuario
- Ejemplos de uso
- Cálculo de alto rendimiento y procesamiento de datos
- Acceso a hardware como la cámara del móvil
- Integración con SDK externos como publicidad y analítica
Uso en producción e integración con terceros
- Defold es un motor de juegos listo para producción que ofrece integración con SDK confiables
- Notificaciones push: Google, Apple
- Compras dentro de la app: Google, Apple, Amazon, Facebook
- Servicios de juego: Facebook SDK, Google Play, Firebase
- Publicidad: soporte para mediación como AdMob, IronSource y otros
- Redes: WebSockets, Nakama, PlayFab, Colyseus y más
- Se pueden ver más extensiones en el Asset Portal
¿Por qué Defold?
- Defold no afirma ser lo óptimo para todos los juegos
- Pero para algunos juegos puede ser la mejor opción
- Tiene fortalezas especializadas en productividad de desarrollo, ligereza, multiplataforma e iteración rápida
2 comentarios
No es simplemente Lua, sino LuaJIT, así que es muy rápido.
Comentarios en Hacker News
Eligieron una solución de licencia interesante. Me gusta que la hayan llamado una licencia de código fuente disponible en lugar de código abierto
Mucho crédito por llamarlo "código fuente disponible" y no usar mal el término "código abierto". También me gustó que destacaran lo que se añadió a la licencia basada en Apache
Le tengo cariño a Defold. Es algo único en el espacio de desarrollo de juegos. Por ejemplo, el editor de GUI integrado está escrito en Clojure
Defold existe desde hace mucho tiempo. No sé por qué esto está en la portada justo ahora. En cualquier caso, Defold está bien. La comunidad, la documentación y demás están por debajo de Godot
Recuerdo la sensación cuando Unity apareció por primera vez. Se sentía como que esto iba a llegar lejos
Hay un envío relacionado en curso. Es sobre un juego hecho con este motor y escrito en 60k LOC de Lua
Descubrí que no está en Nixpkgs
Me gustaría ver una comparación más profunda con Godot en términos de funciones. Al menos en capacidades 3D, el segundo parece estar mucho más avanzado
Seguí este motor hace algunos años. Era el motor de juegos de King, y lo liberaron después de que dejaron de invertir en él por su cuenta
En comparación con Löve 2D, me pregunto en qué se diferencia aparte de venir con un IDE. Defold parece soportar más plataformas, pero empaquetar juegos para varias consolas puede implicar dependencias muy cerradas