He estado jugando durante un tiempo con un juego y tengo muchos problemas con algo:
Tengo dos personajes, cada uno de los cuales tiene atributos (aproximadamente diez) en un rango (entre 1 y 20). Quiero usar estos atributos para generar una 'tirada' de tal manera que la tirada más alta gane ese encuentro en particular. Vale la pena señalar que los dos personajes no se están dañando / defendiendo entre sí. Ambos están rodando para ver si pasan lo que supongo que podríamos llamar un chequeo de habilidades. Ambos están rodando para pasar / fallar contra un valor común. No interactúan entre sí.
Sin embargo, cuando uno de los personajes tiene incluso una pequeña ventaja numérica, cualquier fórmula que se me ocurra da como resultado que el ligeramente superior gane la gran mayoría de las veces. Esto no es deseable.
Intenté ponderar el atributo 'más relevante' para la prueba al 80% y la suma de los otros atributos al 20%. También intenté comparar promedios para producir una diferencia relativa y usar eso para aumentar el carácter más débil. Ambos enfoques dieron como resultado las ventajas significativas que estoy tratando de eliminar (por ejemplo, si ejecuto el encuentro 5,000 veces, con bastante frecuencia produce un lado ganando los 5,000).
Parece que agregar un componente de "suerte" solo importa, si está ponderado de alguna manera a favor del personaje menor, y no he logrado un buen equilibrio allí.
¿Qué enfoques puedo tomar para mitigar el impacto de una pequeña ventaja numérica pero aún preservar y aumentar esa ventaja a medida que aumenta la brecha relativa en los atributos?
Según la solicitud, aquí están los detalles que tengo hasta ahora. Algunas cosas que aún no he descubierto, por lo que siguen siendo generalidades:
Por el momento, el rollo se genera como
0.8 * (mainAttribute) + 0.2 (1/3 * subAttA + 1/3 * subAttB * 1/3 subAttC)
En la actualidad, esto produce números cercanos a 4.0. Los atributos se generan aleatoriamente entre rangos especificados. La prueba actual usa un personaje con atributos de 2 a 4, y el oponente entre 3 y 5. Como era de esperar, esto produce promedios cercanos a 3 y 4 respectivamente.
Con esta ventaja de un punto, me gustaría ver que el más fuerte de los dos gane en el área del 55% al 60% del tiempo, con esta ampliación para ganar aproximadamente el 80% del tiempo con una ventaja de atributo promedio de 5 o 6, 90% con ventajas de 7 u 8, dejando espacio para una victoria poco probable cuando la brecha crece. Preferiría no tener victorias garantizadas, pero tal vez las cosas se vuelven muy improbables, con la melodía de ganar el 99.5% o el 99.6% de las veces cuando la brecha se vuelve muy grande.
La fórmula actual produce un número no aleatorio. La aleatoriedad proviene de la selección de qué atributos son relevantes. No todos los atributos se utilizan para cada rollo. Es posible que el que tenga los atributos más débiles en general sea más fuerte en las áreas relevantes para esa tirada, y robe una victoria. Pero, como era previsible, ocurre raramente.
Mi siguiente intento fue sopesar sus fortalezas relativas, tomando un promedio de todas las estadísticas de cada uno, dividiéndolos uno contra el otro, y usando ese valor para dar un pequeño impulso al personaje menor. Esto suavizó un poco las cosas, pero aún tenía una tendencia pronunciada a producir cosas como 5,000 victorias para un chico de 5,000 intentos.