History: Crea juegos con Love2d

Revision made 7 years ago by Jakub Janarek. Go to the last revision.

Love2d o LÖVE es un framework, o un conjunto de funcionalidades, que permite hacer juegos chulísimos con Lua, y su fuerte son los juegos de plataformas o en 2d. Es simple, es potente, y también mola imporesionar a tus amigos con un clon de Mario Bros, que vamos a hacer aquí.

Para aprovechar el tutorial, descárgate Love2d en https://love2d.org/ y para escribir los programas, si no tienes un Linux o macOS, la cosa se hace más sencilla con el programa Zerobrane, que lleva Lua presinstalado:

https://studio.zerobrane.com/download

Una vez que tengas todo, pasemos a aprender el framework. Si no sabes Lua, te recomiendo nuestro curso en Libre University:

https://es.libre.university/lesson/B1Pll0oCg

3...2...1, ¡ya!

Funciones elementales

El juego más básico en Love es un archivo main.lua ubicado en una carpeta que puede tener otros archivos de Lua, imágenes, música para el juego. En esencia la estructura de un main.lua es:

function love.load()
  -- aquí creamos todos los objetos del juego
end

function love.update() 
  -- love.update() puede tomar un parámetro de tiempo dt
  
  -- aquí cambiamos el estado de los objetos
  -- es la lógica interna del juego
end

function love.draw()
  -- aquí dibujamos los objetos en pantalla
end

Estas funciones son ejecutadas automáticamente por Love en ciertos momentos, y se llaman callbacks, literalmente llamadas al revés, porque no las llamamos nosotros en ningún momento, pero sí las llama el programa. Hay algunas más, como love.mousepressed, love.keyreleased, love.quit, y love.focus. Al usarlas, el juego se hace más simple de programar, úsalas.

El tema de paquetes

El love.bla viene de que tenemos que importar la función de Love, no la hacemos nosotros desde 0 que digamos. No sé si te acuerdas, pero en la clase de Lua vimos una función, io.write, que escribía el texto en la pantalla o consola. Era, en realidad, la función write del paquete io, de entrada y salida de texto.

Lua tiene algunos paquetes incluidos, tipo math, table, io, y podemos instalar librerías externas como Love, ampliando así las posibilidades del lenguaje. Por cierto, Love también tiene subpaquetes de física, cálculo, manipulación de imágenes, texto, pero ya me estoy adentrando demasiado :)

Ejecuta programas, no personas

Escribir código no sirve de nada, si no se ejecuta o usa. Para ejecutar nuestro primer programa de Love completa la función love.draw del programa base con:

function love.draw()
    love.graphics.print('¡Love2d mola mazo!', 500, 400)
end

Una vez escrito, guarda el programa como "main.lua", entra con la consola en el directorio del juego si estás en linux o mac, y escribe:

$ love .

Sin el símbolo del dólar, que aclaro para los de windows que es el símbolo del shell :) Así, te aparecerá una ventana negra de 500 por 400 píxeles, con la frase que pasamos a la función como primer argumento. El programa se habrá ejecutado.

Con windows, pulsa con botón derecho en el archivo, y dále click a "abrir con love". Al abrirlo con amor te saldrá la ventana igual que en los casos anteriores.