Resumen del Sprint #10

Resumen del Sprint #10

¡Saludos!, les comento algunas novedades que se implementaron en Pilas Engine 2 en este sprint:

Notas

Los links para usar la versión online o descargar la versión nueva están aquí. Recuerden que aún estamos en una fase muy temprana del desarrollo:

Incorporando un asistente para escribir código fácilmente

Agregué un botón para incluir pequeñas recetas de código y ayudar a descubrir el código disponible de pilas para programar.

El botón aparece justo arriba del editor de código:

Cuando se pulsa este botón, aparece un menú que despliega las recetas más comunes a la hora de programar juegos. Por ejemplo, si estamos visualizando el código de una escena aparecen estas recetas:

image-20190729005613659

Con solo pulsar alguna de esas recetas, el asistente coloca un código de ejemplo complemente funcional para que comencemos a utilizar. Cada receta se escribió teniendo en cuenta que debe ayudar a ser fácil de leer y modificar.

Ahora bien, no solo las escenas tiene recetas. ¡Lo actores también!:

Mirá el listado de recetas que te sugiere el asistente para los actores:

Esto se vuelve bastante práctico a la hora de entrar en contacto con la herramienta. Hace más sencillo descubrir el código qué viene en pilas y cómo integrarlo a los actores.

Estoy pensando en incorporar más recetas en los próximos sprints. Si se les ocurren alguna que están faltando por favor escriban y las agrego :slight_smile:

Mejorando el mini homenaje a flappy bird y creando video tutorial

Como les comentaba en otro mensaje del foro, realicé mejoras al ejemplo de juego similar a Flappy Bird y también armé un video tutorial en youtube para mostrar cómo se puede programar este juego desde cero:

El video tutorial también es una especie de excusa para mostrar las características nuevas del editor, como el modo inspección, el manejo de colisiones y el botón para acceder a la recetas de código:

Creando posibilidad de desactivar y clonar actores

En este sprint añadí otra funcionalidad super importante, ahora se pueden construir actores personalizados y luego clonarlos cuantas veces queramos.

Esta funcionalidad permite crear actores personalizados con mucha facilidad. Imaginá que estás haciendo un juego de naves y necesitas crear actores enemigos cada 2 segundos. Con esta mejora vas a poder diseñar ese actor enemigo una sola vez, y luego insertarlo en la escena con un temporizador.

Lo primero que vas a notar, es que los actores tienen un atributo llamado “activo”. Si lo desmarcas, ese actor no va a aparecer automáticamente en la escena. Lo siguiente, es usar la función “clonar” desde el código para crear una copia o instancia de ese actor.

Incorporamos al actor Explosión

Tenemos un actor nuevo para representar explosiones de naves, bombas o cualquier cosa que se le parezca.

Este es uno de los ejemplos más sencillos que se pueden construir usando este actor, vas a encontrarlo en la sección ejemplos:

screencast%202019-07-29%2016-47-08

El actor es algo simple, pero aún así te puede resultar muy útil. Ya que se puede colocar en momentos particulares del juego haciéndolo mas divertido e interactivo.

Además, la animación en sí es bastante fluida y queda bien en casi cualquier tipo de juego:

Mejorando el sistema de animaciones

Ahora tenemos un método especial llamado cuando_finaliza_animacion en cada uno de los actores para detectar el momento exacto en que termina de reproducirse una animación.

Este método es útil para aquellos actores que tienen que ejecutar alguna acción particular cuando finaliza su animación. Por ejemplo, el nuevo actor Explosión reproduce un sonido, muestra una animación de explosión y al finalizar esa animación se elimina automáticamente de la pantalla.

El código de ese actor se puede resumir en este código:

class Explosion {

	iniciar() {
		this.pilas.reproducir_sonido("explosion");
		this.animacion = "explosion";
	}

	cuando_finaliza_animacion() {
		this.eliminar();
	}
	
}

Observa cómo estoy utilizando el método cuando_finaliza_animación en el código anterior: simplemente elimino al actor cuando la animación “explosión” termina, sin tener que contar o evaluar nada más.

Por cierto, omití algunos detalles en el código de ejemplo para hacerlo mas legible; el código completo de este actor lo podes mirar en la sección de actores: PilasEngine

Creando el actor Pizarra

Comencé a implementar un actor para realizar dibujado de figuras geométricas sobre un lienzo al estilo de pilas-engine 1.

Además, trabajé en mejorar la documentación para mostrar cómo se utiliza paso a paso este actor y realizar algunos dibujos simples:

Manual: Dibujado simple en pantalla

Podes acceder a este actor y a la documentación directamente desde el editor:

Y a futuro, cómo les había comentado en otro post del foro, mi intención a futuro es implementar una actor tipo tortuga de logo para dibujar en la pantalla de forma interactiva.

Para el próximo sprint

Voy a empezar investigando un poco sobre “facebook game room” que nos mencionó @kone9 hace unos días. Por lo que vi creo que puedo incorporarlo al dialogo de exportación de proyectos.

Luego me gustaría seguir investigando sobre cómo añadir imágenes personalizadas a los actores y crear el actor Tortuga para dibujar.

Y posiblemente agregue otra tarea que surja, sobre todo si salta algún bug :expressionless:

¿Qué les parece este sprint?, ¿se les ocurren ideas o mejoras para incorporar a pilas?

¡Abrazo!

2 Likes

Hola que bueno.
Para los actores personalizados podrías agregar:
Golpear:
Cuando golpeamos un actor tiene colisiones y cosas un poco difícil,estaría bueno un ejemplo de código de golpear.en pilas
Recibir Golpe
En casi todos los juegos los personajes o enemigos reciben golpes,un ejemplo de código estaría muy bueno
Combos
Nose si sera posible pero un ejemplo de combo de 3 golpes seria fenomenal
Golpear en el aire
Algo que también veo en muchos juegos es la posibilidad de golpear en el aire,estaría bueno un ejemplo de código

Para las escenas podrías agregar:
Cargar escenario
Algo que veo en muchos juegos es la barra de carga,un ejemplo de codigo de cargar escenario seria muy practico y es algo muy habitual.
Ejemplo:

Transiciones entre escenas
Al cargar un nivel esta bueno tener transiciones personalizada osea cuando cambias de nivel o cuando termina la barra de carga. Estaría bueno ver un ejemplo de código donde podamos animar una textura para así crear una transición más compleja y llamativa entre escenas.
Ejemplo:

Menu:
Un ejemplo básico de codigo de menu no estaria mal tampoco.

Menu animado:
Este video lo muestra mejor que yo.

Posibilidad de agregar videos
Para las presentaciones del juego o cosas por el estilo estaría bueno tener la posibilidad de agregar videos y poder reproducirlas.

Otra cosa que estaría buena pero me imagino que es re dificil seria tener un GameAssets dentro del Engine y un timeLine…Que bueno lo de facebookGameRoom. Estoy atento a todo el desaroollo.Saludos

Hermoso :slight_smile: gran trabajo. Muchas gracias!

Muy bueno todos los añadidos,ya va quedando menos para una version usable.:+1:

1 Like

Se me han ocurrido algunas recetas.

Se pueden poner algunas para darle movimientos a los enemigos y tambien se pueden poner otras para darle movimientos a un jefe final pero por estados,donde cada estado seria un movimiento nuevo.

Tambien se podria poner otra que al colisionar un enemigo con el personaje,este empiece a parpadear durante unos segudos y y mientras parpadee no se le pueda quitar vida.

Si se me ocurre alguna mas, las pondre.Saludos

una idea seria poder hacer que los personajes hagan animaciones por ejemplo: “el actor aparece y saluda al jugador” mientras hace esto el jugador no puede mover al actor

otra cosa es poder hacer combinaciones basicas como por ejemplo:“el actor hace barrida por el suelo” entonces el actor se desliza por el suelo durante unos segundos y para poder ejecutar esta combinacion que el jugador solo presione los botones abajo y salto luego el actor hace una barrida

y por ultimo poder hacer que las combinaciones se puedan cambiar de boton por ejemplo: no me gusta usar el boton z para poder golpear pero la puedo usar mejor en el boton a

pero se ve muy interesante este sprint espero que pronto se pueda hacer juegos increibles en pilas-engine 2 @hugoruscitti, pero mientras trabajas en pilas-engine 2 no puede existir una version online del pilas-engine clasico? solo es una pregunta :grinning::smile::grin:

Otra idea y algo fundamental en un programa…La posibilidad de crear snap y cambiar el punto de origen de los objetos…Tambien vendría bien una regla para ver ubicaciones

Hola Hugo.

Ya hace casi dos meses que no hay noticias de pilas2,¿como van los avances?,¿en la proxima version se podra ya empezar a crear juegos?.

Hace un tiempo te pregunte sobre la posibilidad de añadir un lenguaje visual a pilas2,crees que en un futuro pilas2 vendra con algun lenguaje visual.
Actualmente esta muy de moda el lenguaje visual de nodos,unreal 4 tiene el suyo propio,godot añadio uno en la version 3 y unity esta diseñando el suyo propio que ya se puede probar en version beta y posiblemente lo tengamos para finales de este año.

Si fueras a añadir un lenguaje visual en pilas2 ,¿cual seria?,el de bloques o el de nodos o el de eventos de construct2.

Por cierto,en la proxima version de pilas2 me gustaria que se pudiera crear actores y poder añadirlos a cualquier escena,porque en la version actual si creas actores en la escena 1 no puedo hacer copias o clones y trasladarlos a la escena 2,Saludos

Hola @hokuto!!!, voy a tratar de tener el informe para comienzos de la semana que viene, hice algunos cambios pero menos de los que esperaba, así que voy a intentar meter más cambios en estos días.

Lo de lenguaje visual es posible, usando bloques, pero por el momento voy a dedicarle más tiempo a la posibilidad de incorporar imágenes externas y en todo caso mejorar el editor de código. ¡pero no descartemos sumar bloques más adelante!, eso sí, preservando la posibilidad de escribir código.

Me quedé pensando en esta posibilidad, y es cierta, deberíamos poder mover o clonar actores a otras escenas. Dame unos días que lo analice a ver si logro ponerlo en esta versión y mostrar avances la semana que viene. Es una muy buena idea.

Abrazo!