Archivo de la categoría: Godot Engine

Doble Salto en Juegos de Plataformas – Sunny Land en Godot

¡Hola amigos! En este turorial voy a explicarles cómo extender las funcionalidades de Sunny Land, el juego de plataformas que desarrollé hace unos meses, añadiendo la posibilidad de dos o más saltos en el personaje principal. Hago este tutorial porque un usuario me comentó que estaba intentando programar el doble salto del personaje y para ello había duplicado el estado de saltar en la Máquina de Estados.

Seguir leyendo Doble Salto en Juegos de Plataformas – Sunny Land en Godot

Mecánica de Movimiento en Juegos de Carreras

En la lista de tutoriales me dejaron la petición de las mecánicas para un juego de carreras. No he podido desarrollar el demo completo, tuve chance de estudiar un poco sobre las formulas de movimiento que podemos aplicar para los vehículos. Este método lo aplicó GDQuest en un repositorio que data del 2017, y usaba un auto como ejemplo. Yo usaré un barco, el funcionamiento es el mismo.

Seguir leyendo Mecánica de Movimiento en Juegos de Carreras

Enemigos que te disparan

Ya estoy retomando el ritmo de los tutoriales, vamos ahora con otro en la Lista. Les enseñaré a hacer enemigos un poco más inteligentes, que puedan dispararle a los jugadores cuando se encuentren cerca. Para esto podemos tomar prestado código del Juego de Plataformas Sunny Land y el Asset de la Máquina de Estados. Si al momento de ver este vídeo todavía estoy mudando los repositorios a GitLab, pueden obtener el código de los artículos.

Seguir leyendo Enemigos que te disparan

Regresando con Indie libre

Creo que llegó el momento de definir nuevamente mis objetivos con respecto a Indie Libre. Estos meses que han pasado quizás son para mi los más duros en cuanto a mi situación aquí en Venezuela. No entraré en detalles porque mi intención no es generar lastima, sino, por lo menos ahora, decirles por encima por qué estoy inactivo en todas las redes.

Seguir leyendo Regresando con Indie libre

Adiós GitHub

Desde hace ya más de un mes se anunció que la plataforma de GitHub pasaría revisión y probablemente bloquearía a los desarrolladores que vivieran en países sancionados por Estados Unidos.

Esto me pareció muy malo. Si bien no me habían suspendido, considero poco ético que lo hagan sólo con gente de países marcados. Había escuchado por muchas partes que después de la adquisición de GitHub por Microsoft, las cosas iban a cambiar en dirección a la filosofía de esta ultima empresa, y, por tanto, el Software Libre debería moverse a otras plataformas que brindaran más libertad y estuvieran “bien” desde un punto de vista ético.

No hice caso de estas advertencias, y podría seguir sin preocuparme. Como dije desde el principio: no me gusta que sólo le pasen lupa a países como el mío, Venezuela. Tenía planeado seguir manteniendo repositorios en GitHub y además abrir una especie de “tienda” aquí en Indie Libre, donde pudiera ofrecer los mismos repositorios con algunas guías únicas. Sería como una forma de recibir donaciones, de algún modo.

Cree una cuenta en la plataforma de SourceForge, pero no me sentí cómodo con su interfaz. Además, la creación de proyectos es un poco más tediosa que en GitLab o GitHub. Durante ese tiempo hubiera intentado otras alternativas, pero coincide con una apretada de tuercas que nos dieron en mi ciudad. Estuve (y sigo) sin Internet, casi que sin agua y con pocas horas de electricidad. Así pasaron días y días, sin embargo, he podido regresar a este blog. Está pasando mucho tráfico, personas interesadas en temas sobre Godot o GNU/Linux que me gustaría traer, y lo haré. Mientras viva no dejaré de trabajar aquí.

Decidí seguir con el proyecto de la “tienda de Assets” donde guardaré el código fuente de mis proyectos. Por ejemplo Sunny Land, así las personas que no quieran hacer inmediatamente el curso de YouTube, podrán descargar con una donación el código fuente del proyecto. Me parece algo sustentable que no rompe con mi ideal de no privatizar la educación. Sin embargo, quizás también abra repositorios en GitLab.


Entonces me toca despedirme. Ya saben más o menos mi estado, y algo que es muy importante: el destino de los repositorios con las cosas que he desarrollado. Quizás mantenerlos sólo en Indie Libre sea peligroso, si la muerte me alcanza no estaría bien que el material se pierda. Paralelamente a este servidor, probablemente guarde en GitLab un respaldo.

Sin más que decir (por lo menos en esta nota), nos vemos pronto familia. Estoy haciendo todo lo posible por trabajar nuevo contenido, me sorprende que hasta el día de hoy, mucha gente me siga teniendo paciencia.

Selector de Personajes

Tengo tiempo sin hacer esto de los tutoriales, es hora de retomarlo. Explicaré un tema que me habían pedido hace un tiempo, en los siguientes días es probable que pueda hablar sobre los dos que me faltan hasta ahora (según la lista de tutoriales).

(Escribí esto hace como un mes, pero no tenía internet para publicarlo. Hoy en día me faltan más tutoriales por cumplir)

Hacer un selector de personajes en Godot es muy sencillo, tenemos muchos métodos diferentes. Lo que aplicaremos ahora será la creación de una nueva escena de Interfaz 2D. Para los personajes que serán “seleccionables” podemos usar el nodo de tipo TextureButton, y si hace falta redimensionar la imagen, activamos su propiedad “expand”.

Cuando tengamos las imágenes/botón preparadas (que en mi caso son naves, pero puede ser cualquier cosa) añadamos un script para el nodo raíz y empecemos a conectar la señal de “pressed()” de los botones con él.

Después necesitaremos un Singlenton o script en el AutoLoad que pueda guardar al jugador que queremos añadir a nuestro nivel. Hagan clic en “Nuevo Script” y lo guardan con el nombre de “global_var”. Pueden hacer de ese script un Singlenton si entran en los aquíAjustes de Proyecto y en la pestaña de AutoLoad lo añaden. El nombre que elijan para ese script será el que deben usar cuando quieran trabajar con sus variables y/o funciones. Si no sabes como funciona el AutoLoad, pasa por aquí.

Antes de cerrar el nuevo script, creen la variable de “player_dir” e indiquen que será de tipo String. Ella guardará la ruta que tiene el personaje que instanciaremos, en el Sistema de Archivos de nuestro proyecto.

Ya con esto podemos volver a nuestro Selector de Personajes. En el script con todas las señales de presionado conectadas, vamos a crear las variables de “nave_azul”, “nave_roja” y “nave_verde”, que son mis personajes. Esas tres variables son una cadena de texto (String) y para tener la dirección de cada una sólo tenemos que arrastrar la escena correspondiente al personaje hasta el espacio después del igual, en la variable.

Dentro de todas las funciones que quedaron abiertas, hagan que la variable “player_dir” del script global, pase a tener la dirección del personaje que represente ese botón. Por ejemplo: la primera señal que emití corresponde a la nave verde, por lo que la dirección correcta para el script global será la variable con la nave verde.

También debemos añadir una línea que nos haga cambiar de escena, yo lo resolví con una función que llama a “get_tree().change_scene()”, sólo tienen que poner dentro “change_scene()” la ruta de la escena nivel, y después de hacer clic en alguna nave, cambiaremos de escena.

Ya en nuestro nivel sólo tendremos que instanciar la nave que indiquemos en el Selector. Añadan un Script donde quieran: puede ser en el nodo raíz o por algún contenedor de los personajes, como es mi caso. Básicamente tienen que cargar la escena con la dirección que guardamos hace un rato, y usar la función “instance()” para crear una nueva instancia que podamos tener en la escena. La añadimos como hija y cambiamos su propiedad de posición si no tenemos una cámara.

Como algo opcional pueden crear un nodo Position2D para guardar la posición del nuevo personaje.

Espero que este artículo con su vídeo les sea de utilidad. Pueden dejar dudas o recomendaciones en los comentarios de este blog o YouTube.