5 votos

¿Cómo crear una fórmula para calcular el efecto de la armadura en un juego de rpg?

Así que estoy haciendo un juego y quieres crear una ecuación para calcular el efecto de un stat llamado armadura. El efecto es en por ciento y determina la cantidad de reducción de daño que uno tiene frente a los ataques. Los parámetros son, 1, el nivel de los jugadores y, 2, puntos de Blindaje. Aquí está mi planteamiento inicial:

He creado una matriz de $A$ que se parece a esto: $$\left[\matriz{ 1 & 5 & 0.05\\ 30 y 170 & 0.5 }\right]$$ Yo quiero el efecto de 5% cuando el jugador es de nivel 1 y tiene 5 puntos de blindaje. Y cuando el jugador está en el nivel 30 y tiene más de 170 puntos de blindaje, el efecto debe ser de 50%.

Todo esto funciona bien, excepto por dos problemas:

  1. La solución para que la Matriz resultado en algo inadecuado: Cuando un jugador aumenta su armadura puntos (sin ganar en el nivel) el efecto disminuye. Si nunca has jugado a un juego de rol, se debe aumentar.

  2. Los cambios para el efecto están sucediendo demasiado rápido. Si $B$ es el efecto cuando el jugador es el nivel 25 y 150 puntos de blindaje y $C$ es el efecto cuando el jugador es el nivel 25 y tiene 151 puntos de blindaje, $|B-C|$ es demasiado grande.

Alguna sugerencia sobre cómo obtener mediante la resolución de 1 y 2?

Para aclarar:

Yo rowreduce de la matriz A. Que me da

$$\left[\matriz{ 1 & 0 & 0.3\\ 0 & 1 & -0.05 }\right]$$

De manera que la ecuación que uso es $$\text{effect} = 0.3\text{ level}-0.05\text{ armor}\;.$$

He aquí lo que me gustaría pasar: 1. Me gustaría que el efecto de aumento a medida que la armadura se incrementa(y el nivel parado). 2. Me gustaría que el efecto a disminuir a medida que aumenta el nivel(y la armadura de pie).

3voto

Philip Fourie Puntos 12889

En primer lugar, es de nivel 1 el más bajo nivel de los jugadores, o el nivel es 0? Si es de nivel 1, entonces usted necesita para reducir algunos de los números en la matriz por $1$, de modo que el nivel más bajo de jugador sin armadura consigue un efecto cero.

En segundo lugar, una lineal mapa no parece apropiado, a menos que el juego tiene una tapa para el jugador de nivel y puntos de blindaje. ¿No es así? De lo contrario, con un valor lo suficientemente elevado como para, a continuación, el efecto podría superar el 100%.

Si te hacen tener una tapa para cada uno de estos parámetros, esto es lo que tendría sentido para mí. Decidir cuál es el efecto que usted desea para

  • nivel máximo, cero armadura (Una situación que, en ocasiones, en realidad sucede.)
  • nivel máximo, el máximo de la armadura (Una situación que, en ocasiones, en realidad sucede.)

Estos dos valores de $e_1, e_2$ singularmente definir lineal en el mapa con el cambio positivo en efecto cada vez que cualquiera de los parámetros de aumento. Habría que reemplazar su matriz ampliada por $$\begin{bmatrix}M & 0 & e_1\\M & m & e_2\end{bmatrix}$$ where $M$ is the maximal level, $m$ is the maximal armor points, and naturally you would have chosen $e_2>e_1$.

2voto

Chris Kinsman Puntos 41

Intente con la siguiente fórmula:

$$\mathrm{effect} = 1 - 5099/(\mathrm{level} \times \mathrm{armor} + 5098)$$

Esto supone que tanto el nivel de jugador y la armadura tener un mínimo de uno. Si no, añadir $1$ a cada uno.

Se tiene el resultado correcto de una persona en el nivel 30 con 170 puntos de blindaje que produce un efecto de $0.5$. Sin embargo, se infravalora el resultado para una persona en el nivel 1 con 5 puntos de blindaje. Tiene varias ventajas, sin embargo. Si tanto el nivel como la armadura tiene el mínimo valor de 1, entonces se producirá una $0$. También, no importa cuán alto sea el valor es, nunca habrá un resultado mayor que $1$ (resultado mayor que uno supondría que los ataques en realidad iba a aumentar la salud de un jugador).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X