← Volver al listado de tecnologías

Introducción a Defold Engine

Por: Artiko
defoldinstalacionprimer-proyectoeditorsetup

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

🎯 ¿Para Qué Tipo de Juegos?

Defold sobresale en:

Instalación de Defold

Paso 1: Descargar el Editor

  1. Ve a defold.com
  2. Haz clic en “Download”
  3. 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)

  1. Abre Defold Editor
  2. Ve a File → Preferences
  3. En la pestaña General, haz clic en Login
  4. 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

  1. Abrir Defold Editor
  2. File → New Project o Ctrl+N
  3. Selecciona “Desktop Game” template
  4. Nombra tu proyecto: mi_primer_juego
  5. Elige ubicación en tu disco duro
  6. 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

  1. Click derecho en la carpeta main/
  2. New → Game Object
  3. Nombra: player.go
  4. Click derecho en player.goAdd Component → Sprite
  5. En Properties, configura:
    • Image: /builtins/graphics/particle_blob.png
    • Default Animation: anim

Paso 2: Script del Jugador

  1. Click derecho en player.goAdd Component → Script
  2. Nombra: player.script
  3. 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

  1. Abre input/game.input_binding

  2. En la pestaña Key Triggers, agrega:

    • Input: KEY_LEFTAction: left
    • Input: KEY_RIGHTAction: right
    • Input: KEY_UPAction: up
    • Input: KEY_DOWNAction: down
  3. En Mouse Triggers:

    • Input: MOUSE_BUTTON_LEFTAction: touch

Paso 4: Agregar el Player a la Escena

  1. Abre main/main.collection
  2. Click derecho en el espacio vacío → Add Game Object File
  3. Selecciona main/player.go
  4. Posiciona el objeto en el centro de la pantalla

Paso 5: ¡Prueba tu Juego!

  1. Presiona Project → Build o Ctrl+B
  2. 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):

Components:

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

Editor de Defold: Tour Rápido

Panel Principal

Herramientas Esenciales

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:

  1. Sistema de Components más avanzado
  2. Arquitectura de Game Objects
  3. Collections y Factory Components
  4. Comunicación entre objetos
  5. Organización de proyectos grandes

Ejercicios Prácticos

Ejercicio 1: Personalizar el Movimiento

Modifica player.script para:

Ejercicio 2: Segundo Jugador

Crea otro player controlado con WASD:

  1. Duplica player.goplayer2.go
  2. Usa diferentes teclas en input bindings
  3. Cambia el color del sprite

Ejercicio 3: Efectos Visuales

Agrega un efecto trail al movimiento:

Recursos y Documentación


⬅️ 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.