Pages - Menu

martes, 24 de diciembre de 2013

RPG Maker VX Ace: CSCA Coliseo

Como ya hemos visto en el post anterior, gracias a las librerías CSCA podemos añadir nuevas cosas a nuestro RPG para así dotarlo de muchas más horas de duración. En éste post vamos a añadir un nuevo componente que volverá a multiplicar la duración de nuestro RPG: Un coliseo o arena de batalla.


CSCA Colosseum.

El usuario Casper Gaming ha creado éste código con la idea de implantar un coliseo básico en nuestro juego. En éste coliseo podremos elegir el enemigo al que nos enfrentaremos, un estilo al sistema de Arena de los Monstruos de Final Fantasy X, aunque en éste sistema que vamos a implementar no podemos desbloquear nuevos combates, simplemente están todos disponibles a la vez.

No obstante es una primera aproximación a una arena de batalla sobresaliente, la interfaz es clara y las posibilidades todas las que queramos.

Instalar CSCA Colosseum.

Para instalar el CSCA Colosseum debemos copiar el código de éste enlace.

Acto seguido nos vamos a nuestro proyecto de RPG Maker VX Ace y pulsando F11 nos vamos a la ventana de scripts.


Lo nombramos como "CSCA Colosseum" y pegamos el código en la derecha. Pulsamos aplicar y Aceptar.

Ya tenemos el sistema de coliseo implantado en nuestro RPG, ahora debemos crear un evento que despliegue la ventana de elección de enemigos.

Para ello he creado un nuevo evento como el siguiente:


Fíjate en el trozo de código insertado dentro del código del evento, esto se hace de la siguiente forma:

Insertamos una nueva línea de evento:


En el apartado "Avanzado" usamos la opción "Script", aparecerá la siguiente ventana:


Aquí podemos poner el script que deseemos, en nuestro caso pondremos éste:

SceneManager.call(CSCA_Scene_Colosseum)


Esto hará que al dispararse éste evento se llame a la ventana del coliseo, haciéndola aparecer en pantalla.

Con esto hemos terminado de crear el evento que llamará a la ventana del coliseo y así poder seleccionar los combates que deseemos. Pulsamos F12 para probar el juego.



Así abrimos la ventana para elegir enemigo. Como podemos ver podemos elegir de un listado el combate que deseemos, pudiendo ver una imagen preliminar del enemigo y la recompensa que recibiremos al derrotarlo.


Una vez seleccionado comenzará el combate.


Al finalizarlo obtendremos la recompensa.


Añadir elementos al coliseo.

Como hemos podido ver tenemos un coliseo perfectamente funcional y que cumple con lo que deseamos. No obstante sería interesante poder añadir nuevos enemigos o modificar las recompensas, esto lo haremos en el código que hemos copiado y pegado.

Pulsamos F11 para abrir la ventana de scripts y nos vamos al script del coliseo:


Nos vamos a la parte de "module COLOSSEUM" y examinamos el código siguiente:


Éste código se refiere a la definición de dos arrays (REWARDS y TROOPS) que se van rellenando con ciertos datos, veamos esos datos:

REWARDS[...].

REWARDS[0] = [CSCA_Item.new(100, 0, :gold), CSCA_Item.new(10, 1, :item), CSCA_Item.new(1, 2, :armor), CSCA_Item.new(1, 2, :weapon)]
REWARDS[1] = [CSCA_Item.new(1, 30, :weapon)]

El array REWARDS recoge las recompensas que se otorgan al terminar un combate, se inserta un nuevo registro en el array por cada nueva recompensa que deseemos definir en el coliseo.

La forma de rellenar el array REWARDS es mediante nuevos registros de objetos de la clase CSCA_Item, veamos la forma del registro:

CSCA_Item.new(CANTIDAD, ÍNDICE_OBJETO, :TIPO_OBJETO)

Es decir, estamos creando una instancia de un objeto de la clase CSCA_Item, al cual le pasamos como parámetros la cantidad de ese ítem, el índice que ocupa el ítem en el listado de objetos de la Base de Datos, y por último el tipo de objeto que es.

Dicho de otra forma, estamos especificando la cantidad, el índice y en qué apartado buscar ese objeto que tiene ese índice.

Por ejemplo, éste código que viene por defecto:

CSCA_Item.new(1, 2, :weapon)

Está especificando que crea un nuevo objeto de la clase CSCA_Item donde la cantidad es 1, el índice del objeto es el 2 y el tipo de apartado donde buscar por ese índice es el de Armas.

Si nos vamos a la Base de Datos de RPG Maker VX Ace, al apartado de Armas podemos ver que el objeto de índice 2 es:


Si deseamos crear un nuevo objeto como parte de la recompensa del coliseo tan sólo tendríamos que añadir un nuevo registro dentro del array REWARDS, mirar en la Base de Datos el objeto que queremos otorgar y especificar su índice y su tipo. Los tipos son los siguientes:

:item.
:weapon.
:armor.
:gold.

Para el caso del oro podemos usar el código siguiente:

CSCA_Item.new(100, 0, :gold)

Aquí simplemente se refiere a 100 del tipo Oro, el índice es 0 debido a que el oro no se recoge en ningún apartado de la Base de Datos, y por consiguiente no es necesario buscar nada.

Vamos a crear una nueva recompensa, prueba a poner justo debajo de la línea REWARDS[1] lo siguiente:

REWARDS[2] = [CSCA_Item.new(5, 3, :item)]

Con ésto estamos diciendo que la recompensa son 5 ítems del ítem con índice 3 dentro del apartado Objetos. El cual, si lo miramos en la Base de Datos, corresponde a la Poción Superior.


IMPORTANTE: no podemos definir más de cuatro objetos dentro de un mismo registro del array REWARDS.

TROOP[...].

Ahora vamos a asignarle esa recompensa a una tropa, para ello veamos el array TROOP:

TROOP[0] = {"id" => 2, "rewards" => REWARDS[0]}
TROOP[1] = {"id" => 3, "rewards" => REWARDS[1]}

Como podemos ver, éste es más sencillo que el array REWARDS, la estructura es la siguiente:

TROOP[] = {"id" => INDICE_TROPA, "rewards" => REWARDS[INDICE]}

Los registros del array TROOP lo componen el id de la tropa que queremos añadir y el registro del array REWARDS que especifica la recompensa que se recibiría en caso de vencer a la tropa en el coliseo.

Vamos a añadir una nueva tropa, para ello añadimos el siguiente código:

TROOP[2] = {"id" => 9, "rewards" => REWARDS[2]}

Si nos vamos a la Base de Datos vemos que la tropa con índice 9 es:


Además como se puede ver en el código hemos especificado que la recompensa asociada sea la nueva que hemos creado.

Testear el coliseo.

Pulsamos F12 para comprobar los cambios.




Personalizando el coliseo.

Además de poder añadir o modificar combates también podemos modificar aspectos visuales del coliseo, los códigos a modificar son los siguientes:

HEADER = "Colosseum" - El nombre de la ventana de coliseo.
PREVIEW = "Enemy Preview" - El texto de la previsualización del enemigo.
REWARD_TEXT = "Rewards" - El texto de cabecera de la ventana de recompensas.
GOLD_ICON = 262 - La imagen del icono de Oro.

defeated = 'You defeated %s!' - El texto que dice que has vencido. El "%s!" se refiere al nombre de la tropa.
draw_text(0,line_height*3,contents.width,line_height,"Your Winnings:") - El texto que comienza a decir la recompensa que has ganado.

Conclusiones.

Hemos conseguido implementar un coliseo o arena de batalla en nuestro juego de RPG Maker VX Ace, además hemos visto como añadir o modificarlas tropas del coliseo así como la forma de personalizarlas ventanas que aparecen. Ahora tan sólo es cuestión de ir añadiendo nuevas tropas y nuevas recompesas para así tener una arena de batalla lo más completa posible.

Una arena de batalla alarga la vida de un RPG hasta límites insospechados, bien sea otorgando jugosas recompensas, logros o incluso las armas más poderosas. Te garantizo que introducir una arena de batalla es sinónimo de calidad y variedad para un RPG y muchas horas de diversión para el jugador.

¿Qué clase de arena de batalla implementarías en tu RPG?