jueves, 22 de diciembre de 2016

Tutorial - Sistema de dificultad creciente

Hoy vamos a crear un sistema de dificultad que aumenta a medida que avanza el tiempo o el progreso del jugador. Vamos a hacerlo mediante la sustitución de enemigos.

En este tutorial voy a configurar un solo enemigo para no hacerlo demasiado extenso, pero puede aplicarse para todos los que necesites.

Para ello vamos a necesitar los siguientes plugins:
También reservaremos una variable y un interruptor (pongamos por ejemplo el 40 y el 40) a los que nombraremos selector y cataclismo final.

Paso 1:
Instalamos los plugins, asegurándonos de que el main utility va antes del enemy selector, y configuramos este último. En enemy var ponemos 40 (es la variable que se va a usar para almacenar el selector, pero puedes poner la que quieras) y en absolute false.

Paso 2:
Creamos los enemigos que vamos a usar.
Vamos a usar el limo que viene por defecto en el nº2 y crearemos ligeras variaciones del mismo:
  • nº5: gelatina
  • nº6: moco
  • nº7: limo venenoso
  • nº8: limo de lava
  • nº9: limo vampiro
  • nº10: gelatina infernal
Ahora se van completando con parámetros más fuertes, rasgos propios de cada uno y sus habilidades. En este caso son pequeñas variaciones pero puedes usar cualquier otro tipo de enemigo.

Paso 3:
Ahora vamos a configurar el enemigo nº2 para que se sustituya por los distintos tipos de enemigos mediante etiquetas en las notas. El número de la izquierda representa cada valor que tiene que alcanzar y los demás la id del enemigo por el que se va a sustituir. Voy a ponerlo con cambios cada 5 puntos de dificultad pero puedes ponerlo como quieras, ya sea a intervalos o aleatorio, pero siempre en orden ascendente:

Opción 1:
<enemy selector>
5:5
10:6
15:7
20:8
25:9
</enemy selector>


Opción 2:
<enemy selector>
5:2 5
10:2 5 6
15:5 6 7
20:7 8
25:7 8 9
30:9
</enemy selector>

Opción 3:
<enemy selector>
5:2 2 2 5
10:2 5 5 5 5 5
15:2 5 5 6 6
20:5 6 6 7 7
25:7 7 7 8 8 8 9
30:7 8 9 9 9 9 9
35:9
</enemy selector>

La opción 1 es un cambio directo, la 2 es un cambio entre todas las posibles y la 3 incluye además probabilidades. Yo personalmente me inclino por la tercera.

Ahora añadimos un extra para cuando suceda en la historia el cataclismo final:

Opción 1:
<custom enemy selector>
if ($gameSwitches.value(40)) {
   converted = 10;
}
</custom enemy selector>

Opción 2:
<custom enemy selector>
if ($gameSwitches.value(40) && Math.random() > 0.05) {
   converted = 10;
}
</custom enemy selector>

La primera opción hace que cuando esté activado el interruptor el enemigo siempre sea la gelatina infernal y la segunda deja un 95% de probabilidad de que sea dicha gelatina. Igualmente me inclino por la última, pero puedes ponerlo como quieras.

Paso 4 (Opcional):
Normalmente no hace falta añadir las notas a los enemigos que no añadas en las tropas, pero si quieres ponerlos y que tengan la funcionalidad de cambio puedes colocarles las siguientes:

nº5 gelatina:
<enemy selector>
15:5 5 6 6
20:5 6 6 7 7
25:7 7 7 8 8 8 9
30:7 8 9 9 9 9 9
35:9
</enemy selector>
<custom enemy selector>
if ($gameSwitches.value(40) && Math.random() > 0.05) {
   converted = 10;
}
</custom enemy selector>
nº6 moco:
<enemy selector>
20:6 6 7 7
25:7 7 7 8 8 8 9
30:7 8 9 9 9 9 9
35:9
</enemy selector>
<custom enemy selector>
if ($gameSwitches.value(40) && Math.random() > 0.05) {
   converted = 10;
}
</custom enemy selector>

nº7 limo venenoso:
<enemy selector>
25:7 7 7 7 7 9
30:7 9 9 9 9 9
35:9
</enemy selector>
<custom enemy selector>
if ($gameSwitches.value(40) && Math.random() > 0.05) {
   converted = 10;
}
</custom enemy selector>
nº8 limo de lava:
<enemy selector>
25:8 8 8 8 8 9
30:8 9 9 9 9 9
35:9
</enemy selector>
<custom enemy selector>
if ($gameSwitches.value(40) && Math.random() > 0.05) {
   converted = 10;
}
</custom enemy selector>
nº9 limo vampiro:
<custom enemy selector>
if ($gameSwitches.value(40) && Math.random() > 0.05) {
   converted = 10;
}
</custom enemy selector>

Como puedes ver he quitado tanto los inferiores como los que me han parecido incompatibles entre sí.

Paso 5, probar el resultado:
Y para probar que todo funcione como es debido se crea un mapa en donde aparezca el enemigo, con eventos en los que cambies el valor de la variable del selector y el interruptor del gran cataclismo.

Final:
Y por último solo queda asignar el modo en el que vas a incrementar la dificultad:
  • Subir un punto cada hora.
  • Subir un número en función de cada acontecimiento.
  • Subir puntos a medida que se abran cofres o se descubran secretos.
  • Subir puntos al completar misiones.
Con un poco de imaginación hay muchas formas de manejar la dificultad para elegir y/o combinar.

Y con esto ya puedes crear un sistema de dificultad creciente para tu juego en RPG Maker MV.
Espero que te haya gustado.

Plugin - Status Menu para MV

Este es un complemento necesario para hacer visibles algunas características de otros plugins y así no dejaros sin el plugin de este mes. Esta vez no hay actualizaciones de plugins, serán para el año próximo.

Características:
  • Hasta tres columnas para organizar los parámetros a la izquierda del equipamiento ajustado al ancho de la ventana.
  • Uso de los parámetros creados con el ICF-Soft Params Core.
  • Posibilidad de usar parámetros como porcentaje.
Estas son las funcionalidades básicas para cambiar lo que se muestra en la ventana de estado del personaje, pero se añadirán más en futuras versiones.
Está hecho para poder mostrar los parámetro creados mediante el ICF-Soft Params Core. Es un plugin aparte porque hará uso de otros.

Descarga e instalación:
Como siempre, las instrucciones son sencillas. Primero lo descargas del servidor que más te convenga, esperas 5 segundos de publicidad y le das a saltar anuncio.

El mismo está en español e inglés .

Lo segundo es guardarlo con el nombre de archivo "ICFSoft_StatusMenu.js" y ponerlo en la carpeta js\plugins del juego. La configuración es sencilla. En cada columna puedes poner los nombres de los parámetros tal como se referencian en las fórmulas, ya sean los que vienen por defecto tales como atk, def, mat, mdef, como los que creas con el ICF-Soft Params Core, ya sea str, vit, sol, etc.
Toda la información necesaria se encuentra en el apartado de ayuda del plugin (también estoy disponible para resolver dudas).
Lo tercero es añadir el autor del plugin (ICF-Soft) en los créditos.

Problemas conocidos y/o incompatibilidades:
Puede interferir o ser incompatible con otros plugins que cambien la ventana de estado, aunque seguramente hay también otros a los que supone una mejora al combinarlos.

Y este es el script.
Espero que os guste.