A raíz del artículo de ayer en este blog, hay quien me ha preguntado cómo se compila un juego para el game engine Löve 2D. Aunque en realidad, no sería correcto llamar a ese proceso compilar, lo dejaremos así para no liarnos con tecnicismos –que por otra parte a mí también se me pueden escapar matices (recuerdo que soy sólo un psicólogo aficionado a la tecnología)– y nos pondremos manos a la obra, porque la cosa no puede ser más sencilla.
Generar el fichero juego.love
Supongamos que tenemos ya nuestro proyecto realizado y lo queremos
empaquetar en un fichero en formato .love
para distribuirlo a
nuestras amistades, por ejemplo. Tenemos todo nuestro proyecto en un
directorio con sus correspondientes subdirectorios con imágenes,
recursos y demás cosas, tal que:
juego/imagenes/personaje.png
juego/imagenes/obstaculo.png
juego/main.lua
juego/conf.lua
Lo único que debemos hacer es empaquetar todo el proyecto dentro de un
zip
con extensión .love
. Supongo que en windows utilizarán
alguna herramienta tipo WinZip, en GNU/linux yo hago en el mismo
directorio:
$ cd proyectos/juego
proyectos/juego$ zip -9 -r juego.love .
Atención porque esto lo que hace es comprimir todo el directorio y
subdirectorios dentro del zip
, pero hay que tener cuidado y no
comprimir el directorio también. En ocasiones, con herramientas
gráficas es posible que se seleccione el directorio también y Löve
2D no encontrará los ficheros. La estructura dentro del zip
debe
ser:
imagenes/personaje.png
imagenes/obstaculo.png
main.lua
conf.lua
Y con eso ya tenemos empaquetado nuestro juego. Ahora sólo debemos lanzarlo, arrastrando el fichero al icono, haciendo doble click o, simplemente, utilizando la línea de comandos:
$ love juego.love
Producir un ejecutable
Para la pregunta de si se puede producir un ejecutable que distribuir, pues sí: se puede, pero hay que tener varias cosas en cuenta:
- Me estás preguntando por windows y es un sistema operativo que no utilizo ni tengo uno a mano. Así que no puedo comprobar mis aseveraciones y deberías acudir a la documentación de Löve 2D.
- Para android he visto que también se puede distribuir una app
pero necesitas tener instaladas las herramientas pertinentes: SDK y
demás. Así que explicaré cómo he hecho para cargar el paquete
.love
en la tablet.
Primero lo del ejecutable
Para crear un ejecutable sólo hay que poner el fichero .love
creado
detrás del ejecutable. En GNU/linux la cosa es sencilla:
$ cat /usr/bin/love juego.love > juego
$ chmod +x juego
En GNU/linux como se puede ver no puede ser más sencillo. En windows es un poquitín más complejo pero sólo por cuestiones estéticas. El comando (sí, tendrás que lanzar una terminal en windows) es:
copy /b love.exe+juego.love juego.exe
La parte estética a la que me refería antes es que eso sólo crea el ejecutable, al que debes añadir las librerías necesarias, como la de Lua, las de SDL y alguna más. Además si quieres cambiar el icono de la aplicación tendrás que recurrir a herramientas como resource hacker.
También hay que recordar que es buena política incluir en la
distribución un fichero conf.lua
con al menos el contenido de la
versión de Löve 2D que se necesita para que el juego funcione
correctamente. Por ejemplo:
function love.conf(t)
t.version = "0.10.1"
end
Aunque esto sea menos necesario en una distribución de windows porque se supone que lo acompañas con las librerías que necesitará... pero nunca se sabe.
Lanzarlo en android
En android como ya he dicho también se pueden generar aplicaciones
con este game engine pero necesitas el SDK de google y algo más de
trabajo –aunque tampoco resulta, según la documentación, muy
complicado–. Pero mientras puedes ir haciendo otras cosas, como
instalar la apk para android, que se
puede
descargar de la página web del proyecto Löve 2D.
En ese sitio puedes descargarte el fichero .apk
directamente. Para
instalarlo recuerda que tienes que configurar android para que
acepte aplicaciones de terceros. Algo que ya tendrás hecho si utilizas
también repositorios como f-droid. Si no es así, también la puedes
descargar de google play. Lo que te sea más cómodo.
Una vez tienes instalado en tu móvil o tablet el intérprete sólo
tienes que copiar allí, en algún sitio el fichero .love
que has
generado. Lo puedes hacer con un cable usb desde el ordenador,
subiéndolo a algún servidor y descargándolo desde android, etc.
Luego sólo tienes que ir, con algún gestor de archivos para android
–yo estoy utilizando amaze
para esas cosas– y abrirlo. Para ello es mejor utilizar la
opción «abrir con...» y seleccionar la aplicación Löve, porque es
posible que el sistema lo reconozca como el zip
que es e intente
descomprimirlo o abrirlo con otras herramientas.
Conclusión
Todo, y mucho más, está en el wiki del proyecto de Löve, incluso la documentación de los distintos módulos en varios idiomas. Como game engine 2D tiene bastantes capacidades de las que no he hablado. Por ejemplo en el artículo de ayer, el código, utilizaba un módulo de físicas para simular el funcionamiento de un péndulo doble en el ejemplo. También hay módulos para sonido, para pantallas táctiles, para joystick (o ratón, teclado...).
Además, la distribución de cualquier aplicación o juego se hace de una forma sencilla. Los paquetes son fáciles de hacer y generar un ejecutable no depende de complejas instrucciones de compilado, ni makefiles, ni ninguna de esas cosas que a los no programadores les parecen magia arcana. Así puede ser, creo, un game engine para meterse en temas de programación de juegos para gente que está empezando:
- Utiliza un lenguaje interpretado, Lua, del que se puede encontrar mucha información para aprender, incluso en español.
- No necesita complejos IDE's con miles de opciones. Cualquier editor de texto nos sirve. Emacs tiene modos para Lua y Löve, por ejemplo.
- La documentación es extensa y completa (en inglés), pero hay proyectos de traducción de la misma a distintas lenguas. Algunos módulos la tienen traducida ya al español. En el caso en que el idioma sea un problema.
- Hay toda una comunidad detrás en los foros y como sucede en muchas comunidades formadas al rededor de proyectos de software libre está formada por gente amable dispuesta a ayudar a los novatos.
Y con esto y un bizcocho, creo que he respondido las preguntas que me habéis hecho. Podéis seguir haciendo más, aunque no sé si seré capaz de contestar, porque tampoco he utilizado esta herramienta más allá de algunas pruebas que he hecho.