Introducción a Defold Engine
Introducción a Defold Engine
¡Bienvenido al mundo de Defold! En esta primera lección aprenderás todo lo necesario para comenzar tu viaje como desarrollador de juegos con uno de los motores más innovadores y eficientes del mercado.
¿Qué es Defold Engine?
Defold es un motor de juegos 2D/3D completamente gratuito desarrollado por King (Activision Blizzard), el estudio detrás de Candy Crush Saga. Fue creado específicamente para el desarrollo de juegos móviles de alta calidad con las siguientes características únicas:
🚀 Ventajas Clave de Defold
- Tamaño Ultra Pequeño: APKs de 2-15MB vs 50-200MB de otros motores
- Rendimiento Extremo: Optimizado para móviles de gama baja
- Multiplataforma Real: iOS, Android, Web, Windows, macOS, Linux
- Flujo de Trabajo Único: Editor en la nube + herramientas locales
- Lua Scripting: Lenguaje simple pero potente
- Sin Regalías: 100% gratuito para uso comercial
🎯 ¿Para Qué Tipo de Juegos?
Defold sobresale en:
- Juegos 2D: Plataformas, puzzles, arcade
- Juegos Casuales: Match-3, endless runners
- Juegos Móviles: Optimizado para touch controls
- Juegos Web: Exportación WebAssembly nativa
- Prototipos Rápidos: Desarrollo iterativo
Instalación de Defold
Paso 1: Descargar el Editor
- Ve a defold.com
- Haz clic en “Download”
- Selecciona tu sistema operativo:
- Windows: Defold-x86_64-win32.exe
- macOS: Defold-x86_64-darwin.dmg
- Linux: Defold-x86_64-linux.tar.gz
Paso 2: Instalación
Windows:
# Ejecuta el instalador descargado
Defold-x86_64-win32.exe
macOS:
# Monta la imagen y arrastra a Applications
open Defold-x86_64-darwin.dmg
Linux:
# Extrae el archivo
tar -xzf Defold-x86_64-linux.tar.gz
cd Defold
./Defold
Paso 3: Crear Cuenta (Opcional pero Recomendado)
- Abre Defold Editor
- Ve a File → Preferences
- En la pestaña General, haz clic en Login
- Crea una cuenta gratuita en forum.defold.com
💡 Tip: La cuenta te permite sincronizar proyectos en la nube y acceder a templates exclusivos.
Tu Primer Proyecto Defold
Crear un Nuevo Proyecto
- Abrir Defold Editor
- File → New Project o
Ctrl+N - Selecciona “Desktop Game” template
- Nombra tu proyecto:
mi_primer_juego - Elige ubicación en tu disco duro
- Haz clic en “Create New Project”
Anatomía de un Proyecto Defold
Una vez creado, verás esta estructura de archivos:
mi_primer_juego/
├── game.project # Configuración global del juego
├── input/
│ └── game.input_binding # Mapeo de controles
├── main/
│ ├── main.collection # Escena principal
│ └── main.script # Script principal en Lua
├── render/
│ └── default.render # Pipeline de renderizado
└── builtins/ # Assets del sistema
Explicación de Archivos Clave
game.project
[project]
title = Mi Primer Juego
version = 1.0
[display]
width = 960
height = 640
[input]
main_collection = /main/main.collection
main/main.script (Lua)
function init(self)
msg.post(".", "acquire_input_focus")
print("¡Hola Defold!")
end
function update(self, dt)
-- Se ejecuta cada frame
end
function on_input(self, action_id, action)
if action_id == hash("touch") and action.pressed then
print("¡Has tocado la pantalla!")
end
end
Primer “Hello World” Interactivo
Vamos a modificar el proyecto para crear una experiencia interactiva:
Paso 1: Agregar un Sprite
- Click derecho en la carpeta
main/ - New → Game Object
- Nombra:
player.go - Click derecho en
player.go→ Add Component → Sprite - En Properties, configura:
- Image:
/builtins/graphics/particle_blob.png - Default Animation:
anim
- Image:
Paso 2: Script del Jugador
- Click derecho en
player.go→ Add Component → Script - Nombra:
player.script - Reemplaza el contenido:
-- player.script
function init(self)
-- Posición inicial del jugador
self.speed = 200 -- Velocidad en píxeles por segundo
end
function update(self, dt)
-- Obtener posición actual
local pos = go.get_position()
-- Movimiento con teclado
if input.is_pressed("left") then
pos.x = pos.x - self.speed * dt
elseif input.is_pressed("right") then
pos.x = pos.x + self.speed * dt
end
if input.is_pressed("up") then
pos.y = pos.y + self.speed * dt
elseif input.is_pressed("down") then
pos.y = pos.y - self.speed * dt
end
-- Aplicar nueva posición
go.set_position(pos)
end
function on_input(self, action_id, action)
-- Movimiento táctil/mouse
if action_id == hash("touch") and action.pressed then
local target_pos = vmath.vector3(action.x, action.y, 0)
go.animate(".", "position", go.PLAYBACK_ONCE_FORWARD,
target_pos, go.EASING_OUTSINE, 0.5)
end
end
Paso 3: Configurar Input Bindings
-
Abre
input/game.input_binding -
En la pestaña Key Triggers, agrega:
- Input:
KEY_LEFT→ Action:left - Input:
KEY_RIGHT→ Action:right - Input:
KEY_UP→ Action:up - Input:
KEY_DOWN→ Action:down
- Input:
-
En Mouse Triggers:
- Input:
MOUSE_BUTTON_LEFT→ Action:touch
- Input:
Paso 4: Agregar el Player a la Escena
- Abre
main/main.collection - Click derecho en el espacio vacío → Add Game Object File
- Selecciona
main/player.go - Posiciona el objeto en el centro de la pantalla
Paso 5: ¡Prueba tu Juego!
- Presiona Project → Build o
Ctrl+B - Una vez compilado, presiona Project → Run o
F5
¡Felicidades! Ya tienes un personaje que se mueve con las flechas del teclado y responde a clics del mouse.
Conceptos Fundamentales
Game Objects vs Components
Game Object (GO):
- Contenedor con posición, rotación y escala
- No hace nada por sí solo
- Se combina con components para funcionalidad
Components:
- Sprite: Imagen 2D
- Script: Lógica en Lua
- Sound: Efectos de sonido
- Factory: Crea otros objetos dinámicamente
Mensajes en Defold
Todo en Defold comunica via mensajes:
-- Enviar mensaje a otro objeto
msg.post("enemy", "take_damage", {amount = 10})
-- Recibir mensajes
function on_message(self, message_id, message, sender)
if message_id == hash("take_damage") then
self.health = self.health - message.amount
end
end
Colecciones y Proxies
- Collection: Grupo de game objects (como una escena)
- Collection Proxy: Carga collections dinámicamente
- Útil para niveles y menús separados
Editor de Defold: Tour Rápido
Panel Principal
- Assets: Explorador de archivos del proyecto
- Properties: Propiedades del objeto seleccionado
- Console: Logs y errores
- Outline: Jerarquía de objetos en la escena
Herramientas Esenciales
- Build:
Ctrl+B- Compila el proyecto - Run:
F5- Ejecuta el juego - Hot Reload: Cambios automáticos sin recompilar
- Debugger:
F9- Debug paso a paso
Shortcuts Útiles
Ctrl+N - Nuevo proyecto
Ctrl+S - Guardar
F5 - Ejecutar
Ctrl+B - Build
Ctrl+R - Recargar assets
W/A/S/D - Mover cámara en editor
Próximos Pasos
En la siguiente lección profundizaremos en:
- Sistema de Components más avanzado
- Arquitectura de Game Objects
- Collections y Factory Components
- Comunicación entre objetos
- Organización de proyectos grandes
Ejercicios Prácticos
Ejercicio 1: Personalizar el Movimiento
Modifica player.script para:
- Cambiar la velocidad de movimiento
- Agregar límites de pantalla
- Hacer que el sprite rote hacia la dirección de movimiento
Ejercicio 2: Segundo Jugador
Crea otro player controlado con WASD:
- Duplica
player.go→player2.go - Usa diferentes teclas en input bindings
- Cambia el color del sprite
Ejercicio 3: Efectos Visuales
Agrega un efecto trail al movimiento:
- Usa
go.animate()para cambiar escala - Experimenta con diferentes easings
- Agrega rotación automática
Recursos y Documentación
- Manual Oficial: defold.com/manuals
- API Reference: defold.com/ref
- Ejemplos: defold.com/examples
- Forum: forum.defold.com
⬅️ Volver al Índice | Siguiente: Game Objects y Components ➡️
¡Excelente trabajo! Ya tienes las bases sólidas de Defold. En la próxima lección construiremos sobre estos conceptos para crear sistemas más complejos y robustos.