Resumen del sprint #14

¡Saludos!, espero estén bien en medio de este momento tan raro del mundo.

Les escribo porque hoy publiqué una versión nueva de pilas con muchas novedades.

Les recuerdo que pueden descagar pilas desde la web, usar la versión online o acceder al código en github:

Estas son las novedades:

Desplazamiento y zoom en el editor

Agregué la posibilidad de desplazar la cámara dentro del escenario directamente con el mouse.

También agregué un pequeño mini mapa para mostrar la parte del escenario que visualiza la cámara y cómo nos desplazamos:

movimiento

El tamaño total del escenario se podrá cambiar desde estas propiedades nuevas en la escena:

04F6DF04-DBB5-4F05-B4A4-B66CE8D19FBF

También añadí la posibilidad de hacer "zoom” y controlar con mayor precisión la posición de los actores. El “zoom” se puede modificar utilizando la rueda del mouse o directamente desde el selector en la parte superior de la pantalla:

zoom

Este es el selector:

PilasEngine%20*%202020-04-05%2020-52-14

Con estos cambios también mejoré varios ejemplos, hice una función para que la cámara pueda seguir actores en tiempo de ejecución y varias cosas mas. Les dejo el link del manual en donde comento estas mejoras: PilasEngine Manual - Cámara

¡Ejemplos nuevos!

Agregué varios ejemplos nuevos para mostrar cómo se pueden implementar alguna mecánicas tradicionales en pilas.

El primer ejemplo que armé es una especie de Sokoban muy sencillo, apenas con un solo nivel, pero que aún así se puede extender fácilmente:

El otro ejemplo qué armé muestra la mecánica de un juego de naves estilo 1942. Con enemigos que realizan recorridos predefinidos, disparos que van hacia el protagonista, e incluso ¡ la posibilidad de enfrentarse a un jefe final !

download

Los gráficos de este juego los tomé de la galería libre SpriteLib por si quieren modificarlo.

Y el último de los ejemplos de mecánicas que armé es un juego donde podemos apilar cajas. Este ejemplo lo armé porque quería mostrar cómo se pueden combinan colisiones físicas con el desplazamiento de la cámara:

download

Creando una función para realizar recorridos

Implementé una idea que sugirió hokuto en el foro de pilas para que los actores puedan realizar recorridos por la pantalla de manera sencilla.

Hice varias pruebas y llegué a una implementación que me gustó mucho: La idea es muy simple, podemos tomar un actor y llamar a la función hacer_recorrido especificándole todos los puntos que tiene que recorrer, una duración en segundos y algunos parámetros más:

posiciones-2

El movimiento del actor se puede ajustar de varias formas, pero por omisión es super gradual, incluso se puede enviar un parámetro para que el actor cambie su rotación de acuerdo al movimiento que está realizando:

recorrido-con-orientacion

Esto es super útil, por ejemplo en el juego tipo 1942 que les mencioné antes usé este parámetro para mejorar el recorrido de estos enemigos:

E377E886-0D80-4FEB-96AF-2BA82D54241C

Les paso el link al manual en donde se detalla cómo utilizar esta nueva función y algunos ejemplos más: PilasEngine Manual - Recorridos

Más imágenes

Incorporé varias imágenes nuevas de Kenney y las separé en tres grillas nuevas para mejorar la carga del editor:

Agregando grillas de posición

Añadí un selector de varios tipos de grillas para facilitar la ubicación de los actores en la pantalla y crear niveles con mayor precisión.

screencast%202020-04-05%2021-26-34

Esta nueva característica nos va a venir bien para hacer algunos juegos de plataformas en la próxima versión, estuve haciendo algunas pruebas y va muy bien.

Para el próximo Sprint…

Estuve pensando en varias mejoras para el siguiente Sprint, me gustaría rediseñar las pruebas que estaba haciendo para incorporar un gestor de sonidos. Si bien llegué a algo que funciona, no quedé muy conforme con el resultado y prefiero volver a diseñarlo usando otro enfoque. Veré si en este sprint logro darle una vuelta de tuerca e incluirlo en el motor.

Otra cosa que me gustaría hacer es crear algún mini juego de plataformas. Con las mejoras al sistema de cámaras y grillas creo que tengo todo para hacer un mini juego interesante.

¿Se les ocurren más mejoras para implementar?, estaré atento al foro cualquier idea que quieran compartir para la siguiente versión.

¡Saludos!

1 me gusta

Excelente.
Creo que ahora podrías empezar a trabajar en un sistema de GUI,que te permite crear y reutilizar menús más simple.
Una de las cosas más importantes a la hora de crear menús es la reutilización de las interfaces,esto también tiene que ser pensando en el código.
Por ejemplo crear una menu tipo simcity donde aparecen de costado varias opciones que sea posible duplicarlos y luego
con un sistema de autoalineado acomodarlos en la pantalla.Esto se representa en cajas que se pueden poner una dentro de la otra donde se acomoda automáticamente,también pueden tener un margen de separación.
Te paso la info y un video.
https://docs.godotengine.org/es/latest/getting_started/step_by_step/ui_main_menu.html
https://docs.godotengine.org/es/latest/getting_started/step_by_step/ui_game_user_interface.html


Muy buenas todas las novedades :+1:,me ha encantado la funcion para recorrer rutas.Estuve buscando la funcion de recorrer rutas en la version de pilas master de github pero no la encontre,podrias decirme donde esta para poder estudiar el codigo y saber como lo has programado.

Los dos minijuegos me han gustado mucho,me gustaria que en la proxima version añadieras mas,por eso te voy a poner unos videos de juegos para que puedas basarte en ellos para los proximos minijuegos.



He pensado que se podria investigar alguna forma de añadir un sistema de estados,donde poder implementar de una forma sencilla distintos estados para los enemigos,si te fijas en estos juegos los enemigos tienes distintos comportamientos como estar parado,disparar,moverse segun el tiempo o segun lo que tu hagas.

Tambien habia pensado que se podria investigar alguna forma de añadir un sistema de combos,si te fijas en el final fight el personaje tiene distintos golpes segun vas golpeando al enemigo.

Lo ultimo es algo que te he comentado ya hace tiempo,es añadir una funcion para colocar los frames por segundo a la que se mueve el juego,pilas2 biene por defecto a 60 fps y me gustaria bajar esa velocidad para que los juegos vayan mas fluidos.

¡¡Gracias por las ideas!!!

Lo de GUI voy a tratar de incorporarlo @kone9 , tal vez sin la funcionalidad de alineado por el momento, pero sí los elementos básicos para hacer menues y campos de texto al menos.

Con respecto a los estados de personajes que preguntabas @hokuto, pilas actualmente tiene un sistema de estados bien simple, pero que funciona bien: manual - autómatas y estados.

Y la función para hacer recorridos está acá, usé una técnica que detalla Emanuele Feronato en su sitio que consiste en crear una curva y luego ir recorriéndola paso a paso usando la función “onUpdate” y “getPoint”.

Ah, otra cosa, si queres hacer pruebas descargando el código de pilas te va a servir la guía que escribí en el manual y este video:

Sigo con la pregunta del 3D.
Será posible meter babylon.js dentro de pilas engine?

La documentacion sobre automatas y estados es muy corta y no queda muy claro lo que se puede hacer,seria bueno que la ampliaras explicando un ejemplo paso a paso,tampoco estaria mal que añadieras 2 o 3 ejemplos sobre esto en la proxima version y tambien podrias añadir esto en un nuevo minijuego.

Por el momento no… tal vez en un futuro, pero por ahora quiero hacer crecer el motor en los aspectos 2d solamente por ahora, hacerlo más sólido, fácil de utilizar y aprender.

1 me gusta

Probando un poco en profundidad la funcion de hacer recorrido,me he fijado que primero empieza con una velocidad lenta para luego incrementarla de forma brusca y al final la vuelve a poner lenta,a mi me gusta como queda pero creo que seria buena idea añadir un parametro mas que le indique si quiere una velocidad constante o variable como ahora.