Pausar el juego en Godot

Pausar la partida en un vídeojuego es algo muy importante y se puede hacer de diferentes maneras. Mientras que en motores como GameMaker: Studio la programación de un menú de pausa puede tardar sus 15 min, en Godot podemos hacerlo en uno y medio.

Podemos controlar la pausa de nuestro juego desde cualquier nodo, simplemente necesitamos un script y un nodo que se encuentre en la escena y, preferiblemente, no forme parte del jugador, enemigo u objeto. Además, hay una forma mas fácil para tener la pausa: usando un script singleton que, como saben, se ejecuta durante todo el proyecto. Ahora vamos a ver los dos métodos para hacer una pausa en Godot.

Seguir leyendo Pausar el juego en Godot

Cómo exportar proyectos a Android desde Godot 3

En la actualidad, el desarrollo de vídeojuegos indie con pocos recursos se enfoca en la plataforma de Android. Tanto por su facilidad para la obtención de ganancias vía anuncios o micro-pagos, como por la esperanza de que al ser un juego liviano en un dispositivo portátil, no sea rechazado e ignorado.

Entre las plataformas disponibles para exportar un proyecto desde Godot, tenemos Android como opción. En el artículo de hoy voy a tratar de despejar las dudas que pueden surgir al momento de querer hacer una exportación para dicha plataforma. Con suerte y una buena conexión a internet, hoy estarán probando su primera APK en un teléfono.

NOTA: En Godot 3.0.2 las exportaciones APK no funcionan en teléfonos/tablets que tengan OpenGL 2 (gless2), sólo es para dispositivos OpenGL 3 (gless3). Generalmente los dispositivos con esta versión son de gamma alta y media/alta. Sin embargo, los desarrolladores de Godot se encuentran trabajando en una nueva versión 3.1 en la que incluirán nuevamente capacidad y soporte para los dispositivos de gamma baja con OpenGL 2.

Descargas necesarias:

Vamos a descargar muchas cosas para poder realizar exportaciones a Android desde nuestra computadora, esto es un proceso igual para otros motores como GameMaker: Studio o Unity, no es culpa de Godot tanto almacenamiento consumido. Aviso desde ya que son muchos los megas para descargar, si eres de Venezuela o tienes una conexión lenta, recomiendo que lo hagas en la noche. Por el momento, necesitaremos lo siguiente:

  • SDK / Android Studio. Uno de los componentes más importantes, descargando Android Studio se nos instalaran automáticamente el SDK y las APIs que necesitamos como mínimo, además, podremos usar su «SDK Manager» para instalar versiones de Android con las que queramos trabajar.
  • JDK. Aunque generalmente ya tenemos instalado Java por defecto en nuestras computadoras, pueden acceder a su web y descargarlo, seleccionando su sistema operativo y arquitectura (x86 o x64).
  • Export Templates de Godot: En la web de Godot tenemos un enlace para descargar el paquete que guarda todos los «exports» que podemos realizar. Vamos a descargarlo y lo guardaremos hasta que terminemos de configurar el tema de SDK. Lo encontraremos debajo del enlace de descarga Godot, recuerden que el export_templates debe ser para la misma versión de Godot que están usando.

Cuando tengan instalados los dos primeros componentes, vamos a abrir Android Studio (durante su instalación les debió dar indicaciones sobre los SDK que iba a descargar, descarguen todo eso). Cuando entremos, vamos a crear un nuevo proyecto, no importa su configuración, sólo debemos crearlo.

Tardará un poco, al crearse tendremos algo como esto:

En los botones de la parte superior derecha, tenemos que seleccionar el que tiene icono de descargas (se encuentra de tercero de derecha a izquierda y se llama SDK Manager):

Al hacer clic veremos lo siguiente:

Van a marcar con un gancho las mismas APIs que yo, el NDK es importante y algunas APIs ya se habrán descargado durante la instalación de Android Studio (Si ya las tienen con un gancho sin haber tocado, es porque están instaladas, déjenlas así).

Después de marcar las mismas APIs que yo tengo instaladas, hagan clic en OK y acepten los términos para empezar a descargar:

Configurar las rutas

Ahora que tenemos todo lo necesario, vamos a entrar en Godot y buscamos las «ajustes de editor»:

En sus pestañas, seleccionamos Android:

Debemos seleccionar la ruta de AdbJarsigner y la KeyStore. En mi distribución de Linux se creó una carpeta llamada «Android» donde se encuentran los directorios necesarios.

Aunque no tengo un sistema operativo Windows, me parece que pueden encontrar la carpeta «Android» en el administrador de archivos de aplicaciones, el lugar a donde van todos los programas instalados en 64 bits. Ya dentro, debe ser como lo que muestro en mi imagen.

Para acceder al Adb vamos a entrar en la carpeta «SDK» dentro de «Android» y después buscamos la carpeta de «platform-tools». Android>Sdk>platform-tools>adb

Ahora tenemos que seleccionar el Jarsigner, si descargaron el .zip de Android Studio, lo van a encontrar dentro de la careta descomprimida:

Dentro de esa carpeta «Jre» tenemos que buscar la carpeta «bin», ahí ya tenemos el jarsigner.

Ya conocen las rutas para los dos primeros. Pueden buscar en internet como generar esas keys para android, pero por ahora vamos a hacer una para salir del paso, usando el comando que nos deja la documentación oficial de Godot:

En la terminal (cmd para Windows) ponen lo siguiente:

keytool -keyalg RSA -genkeypair -alias androiddebugkey -keypass android -keystore debug.keystore -storepass android -dname "CN=Android Debug,O=Android,C=US" -validity 9999

Si no se encontraban dentro de ningún directorio, se habrá creado en la carpeta «home».

Agarren ese archivo que se ha creado y llévenlo a la carpeta de proyecto, después, cuando este dentro, ponen la ruta.

Export Templates

Tengan preparada la ruta del paquete de export templates que descargamos arriba. En la pestaña de «Editor» buscamos la opción de «Cargar Plantilla de Exportación»

Ahora le damos a instalar desde un archivo y buscamos el paquete.

Exportar y dormir

Si has llegado hasta aquí, te felicito. Ya sólo tienes que exportar. En la parte de «Proyecto» seleccionamos «Exportar»:

Buscamos la plataforma de Android al añadir un nuevo dispositivo:

Y tendremos todos los parámetros por configurar. Si sólo quieren hacer la prueba para saber que pueden exportar cualquier APK, dejen todo por defecto y hagan clic en «Exportar Proyecto».

ACTUALIZACIÓN A GODOT 3.1. Ahora es obligatorio que escribas un Unique Name para tu aplicación. Puede ser como esto: com.indielibre.juegoindie

Tienen que exportar su APK en la misma carpeta donde tengan el debug.keystore, si la tienen en la carpeta de proyecto (como dije arriba) sitúense en la carpeta de su proyecto y hagan clic en «Guardar».


Ya tienen su APK y pueden probar en su teléfono/tablet el proyecto. Quiero agradecer a FuryCode por facilitar toda la información necesaria, pasen por su canal de Youtube para ver más tutoriales en vídeo.

Si tienen un problema déjenlo en los comentarios y voy a tratar de solucionarlo.

Hacer variables con «export» en Godot

Si formamos parte de un equipo de desarrollo, es probable que un miembro (diseñador/tester) no sepa de código. Al momento de querer cambiar el valor de algo, van a necesitar la ayuda del programador o lo intentarán cambiar ellos mismos.

Godot nos brinda una ayuda para estos casos, permitiendo que el valor de las variables puedan ser escritas desde el editor gráfico, el «inspector» donde cambiamos los valores generales de un nodo. Vamos a probar.

Usar «export» con una variable

Nos dirigirnos a un nodo que tenga un script, y antes de definir una variable que queramos exportar, escribimos export:

export var speed = 90
export var jump_speed = 200
export var gravity = 300

Si ahora hacemos clic en el nodo, veremos lo siguiente:

En este caso le hemos dado un valor por defecto a las variables, un valor numérico. Dentro del inspector sólo vamos a poder cambiar el valor original con números. Si no le damos un valor por defecto, haremos que se quede en null y nos devolverá un error.

Para exportar variables sin valor, tenemos que indicar el tipo de variable entre el «export» y el «var». Con el ejemplo anterior, sería algo así:

export (int) var speed
export (int) var jump_speed
export (int) var gravity

Con eso decimos que las variables son de tipo entero (int).

Podemos hacer lo mismo con cualquier tipo de recurso que queramos guardar desde el editor. Para las cadenas de texto sería así:

export (String) var nombre

Y si queremos guardar una instancia, usamos esto:

export (PackedScene) var balas

Eso es todo sobre export. Espero que puedan hacer la vida de un diseñador más fácil. Si tienen una duda, déjenla en los comentarios.

Cómo mantener objetos en pantalla con CanvasLayer en Godot

Cuando necesitamos mostrar en pantalla la cantidad de puntos o vidas del jugador, Godot nos permite usar un nodo llamado: CanvasLayer, en el que podemos colocar cualquier objeto que queramos siempre en la pantalla, no sólo textos.

Usar el nodo CanvasLayer

Primero tenemos que identificar los nodos que necesitamos en la pantalla, en caso de mostrar las vidas o puntos, usaremos un nodo Label y un script para trabajar con Singleton. Vamos a crearlo como hijo de CanvasLayer:

Dentro del script singleton, tengo lo siguiente:

var vidas = 3
var puntos = 0

Y en cada Label esta esto:

self.text = "Las vidas son: " + str(variables_globales.vidas)

La zona que ocupa el CanvasLayer es la misma que la cámara principal:

(El rectángulo azul)

Cuando queramos que un nodo se muestre en pantalla todo el tiempo, sólo le tenemos que asignar de padre un CanvasLayer y mover el nodo dentro de su zona.

Ahora voy a colocar un Sprite:

El resultado sería el siguiente:

Por mas que movamos al jugador, los nodos que están dentro de CanvasLayer se van a mantener en la pantalla. Es muy sencillo.

4 Preguntas para los desarrolladores de ParaTrooper

Desde que la versión de Godot 3 fue lanzada, muchos desarrolladores decidieron estudiarlo. Es una herramienta gratuita, con una comunidad activa y en constante aumento.

Durante 2016 aprender sobre Godot parecía una tarea difícil para la comunidad hispana de desarrolladores. Sin embargo, muchas personas se esforzaron por estudiar todo lo que podían y ahora se ven beneficiados. Con el crecimiento de Godot y su estabilidad financiera, se promete ser la mejor alternativa 100% gratuita a motores como Unity o GameMaker.

Entre las personas que hoy aprenden sobre Godot, encontramos al grupo de Seyacat, con su juego: Paratrooper. Se les hicieron cuatro preguntas relacionadas con su vídeojuego y Godot, aquí podemos ver sus respuestas:

1. ¿Por qué Godot Engine?

Godot es un motor que seduce por la manera de hacer cosas en el. Es un reto mostrar lo que se puede llegar ha hacer con este motor y mas con sus ultimas versiones. Les mostré a mis compañeros de desarrollo y, al profundizar, quedaron sorprendidos y con agrado.

2  ¿Fue difícil aprender sobre GDScript y el editor de Godot?

Aunque no puedo decir que lo sé todo ni mucho menos, estoy con mis compañeros en constante aprendizaje. Se avanza rápido aprendiendo el GDScript interno de Godot como el editor, para mi es muy intuitivo.

3. ¿Tuvieron el resultado esperado?

Sinceramente en este momento llevamos un solo juego y puedo hablarte de la experiencia en el, pues te diría que fue una de cal y otra de arena sobre todo a la hora de las exportaciones y al ser el primero pues se fueron corrigiendo cosas sobre la marcha a la ves que aprendíamos a usar Godot.

4. ¿Se animan a empezar un nuevo proyecto?

Sí, por supuesto. Ahora estamos en un segundo proyecto de un juego con estilo Super Double Dragon. Y el reto para nosotros es sacar un juego cada mes, estaría muy bien que siguiéramos en Godot, así que esperando actualizaciones del motor.

Hoy en día muchas personas trabajan con software privativo, generalmente gastan dinero en licencias costosas y todavía el programa puede dejar algo que desear. Con Godot podemos trabajar gratuitamente, además de poder ajustar el programa a nuestras necesidades. Muchas personas creen en Godot, si usas otro motor que te parece ineficiente, ven por aquí, quizás te sorprenda.

ForoGodot – Resuelve tus dudas y ayuda a más personas

Hace ya unos diez meses desde que fundaron el foro de Godot en español, en ese momento la comunidad hispana era menor a los 1000 usuarios y el foro ha pasado desapercibido para muchas personas. Generalmente las preguntas se lanzan en los grupos de Facebook o Telegram por su facilidad.

Sin embargo, las redes sociales tradicionales no son recomendadas para solicitudes de código o soluciones a problemas generales, porque no ayudan a los usuarios que buscan información sobre Godot y no pertenecen al grupo de Facebook. Las ventajas de usar ForoGodot para comunicar nuestras dudas y resolver problemas son:

  • Facilidad para compartir código y escribir todo lo que sea necesario. En Facebook necesitaremos compartir imágenes.
  • Lo que publiquemos será visto en la internet y si un usuario nuevo tiene un problema que ya se resolvió en el foro, lo puede encontrar navegando por Google. Facebook no tiene la misma capacidad de SEO, por lo que nuestras publicaciones no serán vistas en Google.
  • Las publicaciones se organizan en secciones y si queremos un resultado en particular podemos usar un formulario de búsqueda. En un grupo de facebook sólo podemos ver las publicaciones por orden de llegada o actividad.

Si resolvemos un problema que afectó a muchos usuarios, es probable que una persona en otro momento se tope con lo mismo. Si sólo resolvimos el problema en Facebook, la nueva persona se verá obligada a hacer una publicación pidiendo lo mismo que se había explicado antes. Si la solución se publica en ForoGodot, la nueva persona la encontrará navegando en Google y todos ahorraremos tiempo.

Usar ForoGodot no sólo nos permite solucionar nuestros problemas a corto plazo, también contribuye a solucionar los problemas similares que se puedan encontrar en un futuro y a extender la palabra «Godot» por toda la internet.

Ahora que conocen las ventajas de usar ForoGodot, les enseñaré a crear una cuenta.

Registrarse en ForoGodot

Primero tenemos que hacer clic en «Registrarse» de la barra superior. Nos saldrán las condiciones del foro:

Cuando las aceptamos, vamos a llenar el formulario de registro:

Ingresar en ForoGodot

Ahora que tenemos nuestra cuenta, vamos a ingresar con los datos que usamos para el registro:

Hacer una publicación (tema)

Cuando entramos en el foro con nuestro usuario, veremos todas las secciones disponibles:

Tenemos que elegir la sección adecuada para nuestro tema, yo voy a hacer una pregunta relacionada con programación. Al hacer clic en «Programación» de la sección «Ayuda», vamos a ver los últimos temas publicados:

Concentrémonos en los botones:

Podemos crear temas o encuestas, ahora necesito un tema:

En el «asunto» escribimos el nombre de nuestro tema, después pasamos a desarrollar el contenido. Si necesitamos mostrar código, lo tenemos que pegar entre las etiquetas [code] y [/code].

Podemos crear las etiquetas automáticamente usando el siguiente botón de las herramientas:

(el del centro)

Cuando tengamos listo nuestro tema, hacemos clic en publicar. El resultado sería así:

Si queremos responder un comentario o alguna otra cosa, usamos los botones (dentro del tema y con sesión iniciada).


Espero verlos pronto en el foro, el registro es sencillo y los temas que publican ayudan a extender el conocimiento de Godot por toda la internet. Si tienen una duda o recomendación, déjenla en los comentarios.

Cómo importar fuentes (Font) en Godot

Si queremos tener un estilo único en nuestras letras, Godot nos permite importar diferentes tipos de fuente. Sin embargo, no podemos trabajar con todas las extensiones que hay, es recomendable explicar al diseñador los formatos que pueden usar.

Si dentro de Godot creamos un recurso DynamicFont, podemos trabajar con los formatos «.otf» y «.ttf», mientras que un recurso BitmapFont usa «.font» y «.fnt».

Importar un font

Dentro del nodo Label (o cualquier nodo que tenga texto), vamos a buscar en el inspector la sección de «Custom Fonts»:

Sí le hacemos clic, tendremos los dos recursos que mostré arriba:

La fuente que he descargado es de formato «.ttf», seleccionaré el DynamicFont y después haré clic en el nombre que se agrega, así podemos editarlo:

Ahora que estamos dentro, vamos a seleccionar nuestro font en la parte de «Font Data»:

Ya tenemos la fuente, pero si escriben algo tendrán lo siguiente:

Para solucionar ese problema, vamos al editor de DynamicFont, recuerden que se accede haciendo clic aquí:

Tenemos que asignar un tamaño para las letras:

Ahora sí:


Puedes descargar la fuente que estoy usando desde Aquí.

Para finalizar: al momento de asignar un tamaño en las letras, debemos tener en cuenta que sólo podemos usar los tamaños que el diseñador ha creado. En la fuente que estoy usando, sólo tenemos el tamaño de 16.  Si usan otros, las letras se pixelan.

Cómo usar el Singleton (AutoLoad) en Godot

Mientras aumenta la complejidad en un proyecto, la necesidad de manejar datos persistentes  (variables del jugador, enemigos, funciones) se convierte en algo insostenible para la jerarquía de escenas. Podemos tener en cada nivel una escena que sostenga las variables de otra, pero al hacer funciones con un elevado requerimiento de memoria, se puede notar una perdida considerable.

Por esta razón, aunque Godot no admite las «variables globales», tenemos la opción de cargar scripts durante todo el proceso de nuestro juego. Dentro del script, conocido como Singleton, podemos guardar toda la información que necesitemos como persistente, ya que al ser ejecutado todo el tiempo, no importa que cambiemos de escena. El valor se mantiene en todas las escenas que formen parte del proyecto.


Poner script en el AutoLoad

Sólo podemos cargar scripts que hereden de un Node «extends Node». Vamos a dirigirnos a la pestaña de «Proyecto» y después a los ajustes:

Ahora buscamos la pestaña de AutoLoad:

Indicamos la dirección del script que queremos:

Por defecto se coloca el nombre del script, podemos cambiarlo por uno que sea de nuestro agrado. Ese nombre lo usaremos cuando estemos accediendo a los valores del Singleton desde una escena. Hay que hacer clic en el botón «Add».


Obtener valores de un script en AutoLoad

Dentro del Singleton, tengo lo siguiente:

extends Node

var puntos = 0
var vidas = 10
var nombre = "César"
var apellido = "León"

Para obtener las variables desde otra escena, escribimos el nombre del script y con un «.» la variable que queremos usar:

extends KinematicBody2D

var mi_vida = variables_globales.vidas
var mis_puntos = variables_globales.puntos

Por ahora esta es una explicación básica sobre el uso del Singleton en Godot.  Los próximos tutoriales explicaran formas para implementar esta característica de Godot en funcionalidades mas complejas, por ejemplo: Inventario.

Juegos Indie y Software Libre