jsGFwk sigue creciendo–Clones y Escenas

En la Córdoba Game Jam 2014 pode probar, realmente, que tan rápido es ese dichoso Framework de desarrollo de video juegos que creé hace un tiempo atrás.

Si bien lo hemos estado usando de forma educativa, no había aparecido un juego real, o por lo menos, no había sido puesta a prueba en una de las aristas del desarrollo.

Lo positivo, más allá de la simpleza del juego, fue la velocidad con la que se pudo realizar. Pudiendo enfocarme solo en cuestiones críticas como las de mover los objetos, la velocidad de movimientos, cambios de colores y demás, dejando de lado toda la infraestructura que requiere un juego.

En base a eso, durante estos días se agregaron nuevos plug ins, muy necesarios y esperados.

El primero, nos permite clonar objetos con comportamiento idéntico. Para esto, pensemos en los disparos de un arma. Las balas que salen disparadas son todas iguales. O sea, se mueven en una dirección, hasta que impactan contra el objetivo, para finalmente desaparecer.

En el estado del framework hasta antes de la Game Jam, para lograr esto teníamos que crear instancias de un objeto bala, y adicionarlo al stack de gráficos a renderizar, luego, destruir cada uno manualmente. O lo que era peor, encontrar esas balas, y verificar si cada una de ellas chocaba contra determinado objetivo (Esto se puede ver en el ejemplo de Galaga).

Hoy contamos con un contenedor de objetos a clonar. Un ejemplo a continuación:

//Le indicamos al framework que debe incluír el plugin
jsGFwk.include(“Container”);

//Creamos un contenedor y le asignamos comportamiento
jsGFwk.Container.createContainer(“bouncingBallsContainer”, {
    onInit: function (initializationParameters) { … },
    onUpdate: function (delta) { … },
    onDraw: function (context) { … }
});

En el código anterior, el contenedor obtiene una descripción de lo que necesita clonar. Por lo tanto, el código que creemos necesita pensarse de forma en que, si un objeto debe impactar contra otro, este impacto debe verificarse desde el objeto clonado.

El siguiente paso es poder clonar un objeto:

jsGFwk._gameObjects.bouncingBallsContainer.cloneObject({x: 0, y: 0});

Al clonar un objeto dentro del contenedor, podemos pasarle como parámetros, los valores de inicialización de ese objeto. Esto resulta extremadamente útil si quisiéramos que una bala salga disparada desde la posición del arma de nuestro personaje, cuando este personaje se puede estar moviendo por la pantalla.

cloned

El segundo plugin nos permite crear escenas. El concepto de escena hace referencia a una forma de poder agrupar determinados objetos del juego y mostrarlos o eliminarlos en conjunto.

Pensemos en la situación donde necesitamos cargar diferentes niveles de un juego. Cuando el jugador llega a determinado punto y necesitamos cargar el siguiente nivel, necesitamos una forma en la cual la escena anterior deje de existir (Libere memoria, dejen de ejecutarse los procesos del juego, etc.), para darle paso a la siguiente escena.

//Incluimos el plugin
jsGFwk.include(“Scenes”);

//Creamos algunos objetos para nuestro juego
var gameObject1 = {    id: “ball”, x: 10, y: 10, visible: true,
        update: function(delta) {  this.x++;
            if (this.x > 150) {  jsGFwk.Scenes.scenes.scene1.disable();  } },
        draw: function (context) { … } };
   
    var gameObject2 = {    id: “ball2”, x: 10, y: 100, visible: true,
        update: function(delta) { this.x++; },
        draw: function (context) { … } };

Creamos una nueva escena y adicionamos los dos objetos del juego:

jsGFwk.Scenes.create({name: “scene1” /*, gameObjects: [] */});
jsGFwk.Scenes.scenes.scene1.setGameObjects([gameObject1, gameObject2]);

Podemos crear otra escena con objetos previamente usados:

jsGFwk.Scenes.create({name: “scene2”, gameObjects: [gameObject2] });

Luego especificamos que escena entra en acción:

jsGFwk.Scenes.scenes.scene1.enable();

Como podemos ver en el primero objeto del juego. Cuando el mismo llega a determinada posición en la coordenada X, desactiva la escena uno. Lo que remueve todos los objetos relacionados a la misma y dejan de consumir procesos de juego. Otro evento podría activar la escena dos y el juego continuaría desde ella.

En resumen, el framework de desarrollo de video juegos tiene como metas hacia el futuro, seguir creciendo, no solo en funcionalidad, si no en juegos creados con el mismo.

Si te interesa usarlo, puedes descargarlo desde aquí: https://github.com/MatiasIac/jsGFwk


2 comentarios on “jsGFwk sigue creciendo–Clones y Escenas”

  1. nice! lo armaron con Patricio Marrone?

    • Los primeros draft salen de las Game Jams donde Patricio puso mucho de su trabajo.

      Luego, yo tomé esa base, la re hice. No quiero sacarle crédito a Patricio, pero el framework, como está hoy, es 100% creación mía. (Suena feo :)).

      Lo que digo es que no contiene nada de aquel primer framework creado para darle vida a RouteLoop en 2012.

      En mi caso, fui dando varios cursos de desarrollo de video juegos, donde hice los primeros intentos de un framework, luego lo probamos en la universidad donde doy clases y me dí cuenta que era un asco🙂

      Así que volví todo a cero y arranqué con esta nueva idea, la que parece, está en mucho mejor camino.


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s