¿Cómo puedo evitar que pequeñas ventajas numéricas dominen el equilibrio de un encuentro?

27

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.

ffenliv
fuente
2
Dices que "el rol se genera" pero luego publicas una fórmula que siempre generará un número fijo. ¿Dónde está la aleatoriedad?
Philipp
1
Entonces, si te entiendo correctamente, ¿la única aleatoriedad en tu mecánica de juego es la elección aleatoria del atributo principal?
Philipp
2
Pero como implica @Philipp, ¿5000 intentos arrojarán exactamente los mismos resultados entonces? ¿O genera nuevos atributos en cada simulación
Felsir
1
¿Cómo exactamente gana uno de los dos, si no están interactuando entre sí? Parece que faltan algunos datos aquí?
Erik
1
El rollo que cada uno produce se compara con un objetivo que deben alcanzar. Si uno lo alcanza y el otro no, ese gana. Si ambos lo alcanzan, el más alto de los dos gana. Si ninguno alcanza, tampoco obtiene el punto. En el improbable empate, dividieron el punto. Al "no interactuar", me refería a no golpear ni defendernos unos contra otros en el sentido tradicional, ya que allí se dirigía parte de la discusión inicial.
ffenliv

Respuestas:

36

El problema con su enfoque es que usted decide el resultado del combate en el momento en que decide la estadística principal. Cuando tienes 4 estadísticas principales, y el luchador solo es mejor en una de ellas, su probabilidad de ganar es siempre de 1 en 4, sin importar cuán grandes sean las diferencias. Cuando desea obtener resultados más precisos, necesita una aleatoriedad más precisa.

En primer lugar, creo que puede mantener su elección aleatoria para el atributo principal y también puede mantener su fórmula si lo desea. Es el número que representa la ventaja que tiene este combatiente en este encuentro específico. Para el resto de esta publicación, me referiré a esto como justo power.

Un método que utilicé en muchos juegos y que me sirvió bastante bien cuando se trata de un duelo entre dos cosas con un cierto power, es rodar un número aleatorio de punto flotante entre 0y powerpara ambos y ver quién rueda más alto. Aquí hay una lista de los resultados esperados de este método. Los porcentajes no se calculan sino que se generan experimentalmente ejecutando 100000 peleas por combinación y recuento de iteraciones y contando quién ganó con qué frecuencia

PowerA | PowerB | Win chance of A
  9    |   1    |    94.5%
  8    |   2    |    87.5%
  7    |   3    |    78.6%
  6    |   4    |    66.6%
  5    |   5    |    50.0%
  4    |   6    |    33.3%
  3    |   7    |    21.5%
  2    |   8    |    12.5%
  1    |   9    |    5.5%

Lo bueno de este algoritmo es que escala sin importar cuán grandes sean los números con los que esté tratando. La probabilidad de 0.3 vs 0.7 es la misma que la de 3 vs 7, 300 vs. 700 o 3,000,000,000 vs. 7,000,000,000.

Cuando esto todavía es demasiado impredecible para tu gusto, puedes hacer que el combate sea más predecible tirando múltiples números aleatorios para cada combatiente y sumarlos. Debido a la ley de los grandes números , muchos eventos aleatorios se igualarán y darán resultados más predecibles. Aquí hay una tabla con diferente número de iteraciones.

| A | B | Iterations
|   |   |       1 |     2 |     3 |     4 |     5 |     6 |     7 |     8 |     9 |
-----------------------------------------------------------------------------------
| 9 | 1 |   94.5% | 99.3% | 99.9% |100.0% |100.0% |100.0% |100.0% |100.0% |100.0% | 
| 8 | 2 |   87.4% | 96.3% | 98.8% | 99.5% | 99.8% |100.0% |100.0% |100.0% |100.0% | 
| 7 | 3 |   78.7% | 89.2% | 94.0% | 96.6% | 97.8% | 98.9% | 99.2% | 99.6% | 99.7% | 
| 6 | 4 |   66.8% | 74.3% | 79.2% | 82.9% | 85.7% | 88.0% | 89.9% | 91.2% | 92.5% | 
| 5 | 5 |   50.0% | 50.0% | 50.0% | 50.0% | 50.0% | 50.0% | 50.0% | 50.0% | 50.0% | 
| 4 | 6 |   33.6% | 25.6% | 20.9% | 17.1% | 14.7% | 12.0% | 10.2% |  8.9% |  7.5% | 
| 3 | 7 |   21.4% | 10.7% |  6.0% |  3.5% |  2.0% |  1.2% |  0.7% |  0.4% |  0.3% | 
| 2 | 8 |   12.7% |  3.7% |  1.2% |  0.4% |  0.1% |  0.1% |  0.0% |  0.0% |  0.0% | 
| 1 | 9 |    5.5% |  0.7% |  0.1% |  0.0% |  0.0% |  0.0% |  0.0% |  0.0% |  0.0% | 

Los resultados de 100% y 0% en la tabla anterior son una ilusión debido a las diferencias de redondeo. A menos que el powerde un combatiente sea exactamente 0, siempre existe la posibilidad de que gane. Simplemente no sucedió en la prueba anterior, por lo que puede esperar que sea inferior a 1: 100000.

También puede notar algunas pequeñas irregularidades que se pueden atribuir a cambios de humor de java.lang.Random y que podrían no aparecer cuando ejecuta el código nuevamente con una semilla diferente.

El programa que utilicé para generar esta tabla (Java).

public class Main {

    private static Random random = new Random();
    private static final int SAMPLES = 100000;

    public static void main(String[] args) {        
        for (int i = 1; i < 10; i++) {
            double powerA = 10.0 - i;
            double powerB = i;
            System.out.print("| ");
            System.out.print((int)powerA);
            System.out.print(" | ");
            System.out.print((int)powerB);
            System.out.print(" |   ");

            for (int iterations = 1; iterations < 10; iterations++) {
                int wins = 0;
                for (int j = 0; j < SAMPLES; j++) {
                    if (fight(powerA, powerB, iterations)) wins++;
                }
                System.out.print(String.format("%2.1f", 100.0 * (double)wins / (double)SAMPLES));
                System.out.print("% | ");
            }
            System.out.print("\n");
        }       
    }

    private static boolean fight(double powerA, double powerB, int iterations) {        
        double sumA = 0.0f;
        double sumB = 0.0f;     
        for (int i = 0; i < iterations; i++) {
            sumA += random.nextDouble() * powerA;
            sumB += random.nextDouble() * powerB;

        }       
        return sumA > sumB;
    }
}

Si desea utilizar este código en su juego, está licenciado bajo la WTF Public License Version 2, publicada por Sam Hocevar .

Philipp
fuente
Este es un enfoque interesante. En algunos de mis intentos, llegué a la mitad de esto. Conectaré esto y lo intentaré. Muchas gracias.
ffenliv
10
Los porcentajes en su primera tabla se pueden calcular exactamente como 1 - powerA / ( 2 * powerB ).
Kyle
2
@Kyle Eso solo funciona mientras powerA < powerB. Una vez que powerA es más grande, debe cambiar a powerB / (2 * powerA).
Dorus
1
No estoy seguro de que StackExchange ToS le permita alejarse de la licencia obligatoria del sitio en contenido y código, incluso si su licencia es más permisiva que la de ellos. Por supuesto, es imposible encontrar si es el MIT propuesto o aún el CC.
Lars Viklund
55
@LarsViklund Está comenzando una discusión fuera del tema aquí, pero no, esto es incorrecto. La licencia para stackexchange no es exclusiva, lo que significa que todavía tengo la libertad de ceder mi propiedad intelectual bajo cualquier otro término de licencia cuando lo desee. Mis contribuciones tienen doble licencia bajo CC-BY-SA (según lo ordena Stackexchange) y WTFPL. Puede elegir bajo qué condición desea utilizar mis contribuciones.
Philipp
13

Su error es utilizar un enfoque "basado en dados". Estás en una computadora, puedes usar cualquier sistema que desees. Haga una tabla que convierta una diferencia en los valores en una probabilidad de% de edad para ganar y luego puede establecer los valores para absolutamente cualquier cosa que desee, por ejemplo

Difference (A-B) | %chance A wins
-----------------|---------------
+5 or greater    | 100%
+4               | 95%
+3               | 85%
+2               | 70%
+1               | 55%
0                | 50%

(Solo necesita hacer la mitad de la tabla, simplemente elija siempre A como el que tiene la estadística más alta)

Obviamente, estos números son solo un ejemplo, puede hacer que siga cualquier distribución que le plazca.

Jack Aidley
fuente
2
Aunque actualmente estoy trabajando con un sistema basado en la respuesta aceptada, esto es bastante simple y también puede ser una buena solución para mí. Sabía que el viejo StackExchange vendría por mí.
ffenliv
5

Esta es una pregunta bastante profunda, sinceramente, desde el punto de vista de la mecánica del juego. Pero hay algunas cosas que podrían ayudar.

Primero, esta es la razón por la cual la mayoría de los juegos tienen un componente separado para golpear y dañar, donde hay una "tirada" para ver si golpeas por daño, luego una "tirada" contra una tabla de daño o rango para el personaje dado. Esto también conduce a algunos arquetipos estándar en todos los géneros, donde es posible que tengas personajes más pequeños y rápidos que tengan menos puntos de vida pero inflijan más daño (magos de cañones de vidrio, ciertos tipos de pícaros) y personajes blindados más grandes que golpean por menos daño (tanques, guerreros )

Esto conduce a un equilibrio natural donde el personaje más pequeño puede ser frágil, pero evita ser golpeado tan a menudo debido a una habilidad de tipo agilidad, y también iguala el campo de juego al hacer más daño (un hechizo o un efecto de veneno que hace daño sobre hora). El tanque puede ser más lento y ser golpeado con más frecuencia, pero a menudo tiene un gran pozo de salud o puntos de vida para sostener, sin embargo, tiende a hacer menos daño por golpe (o daño por segundo).

El trasfondo de esto es por qué muchos juegos continuamente pasan por el equilibrio de armas y clases y estadísticas. World or Warcraft, Destiny, Diablo, Battlefield: cualquier tipo de juego en cualquier género a menudo pasa por el equilibrio y el ajuste a lo largo del tiempo.

Puede que esta no sea una respuesta directa, pero solicitó ideas generales. Entonces, también vamos a evaluar el sistema de juego.

¿Cómo funcionan esos atributos? Si todo lo demás es igual (sin arquetipo, sin armadura o mejores armas o cualquier otra cosa), es probable que cualquier ganancia leve arroje las cosas a favor de un lado. Si bien agregar facetas para combatir complica cualquier sistema, también permite una mayor flexibilidad.

Jesse Williams
fuente
Por otro lado, creo que esta es una excelente pregunta y podría conducir a algunas discusiones muy interesantes sobre la mecánica del juego. Es posible que esto termine convirtiéndose en una opinión, por lo que es importante tener cuidado con tales tangentes (este juego lo hace mejor que este juego, etc.), pero hay algunos fundamentos involucrados que podrían ser esclarecedores a medida que más personas publican.
Jesse Williams
Divertidamente, tuve una mecánica de 'golpe' y 'daño' que iba primero, pero la descarté por razones que ya no recuerdo (y fue solo ayer. Mi memoria es un poco ... pobre) Debería estar claro, los personajes No están atacando / defendiéndose unos a otros. No hay componente de daño. Es una verificación de habilidad, donde ambos se comparan con un valor común para ver si la tirada 'pasa'. No hay interacción entre los dos que compiten.
ffenliv
2

Hay dos cosas grandes.

Primero, recuerda que estás en una computadora. Puedes hacer cualquier sistema que quieras. No es necesario limitarse a una tirada de d20, aunque esto es fácil de comprender para los jugadores. Cosas como tirar dados de 6 d6 son fáciles en una computadora y dan resultados mucho menos aleatorios.

En segundo lugar, observando otros sistemas como D&D, es obvio que simplemente reducen mucho el efecto de los atributos. En lugar de que su estadística base agregue el 80% de su valor a la regla, reduzca su escala y haga que su adición sea más sutil. En D&D, por ejemplo, si tienes 18 destrezas, obtienes solo 4 como bonificación para tu clase de armadura.

Entonces, en resumen, numéricamente todo lo que necesita hacer es reducir su dominio para adaptarse mejor a su rango. Pero desde el punto de vista cualitativo, pensaría que mirar otros sistemas y crear cosas que parezcan menos matemáticas haría un sistema más satisfactorio para el jugador.

Yudrist
fuente
1d20 o 6d6 o 5d4: los resultados no son más o menos aleatorios, solo cambia el rango. Aleatorio es aleatorio. Reducir el rango y el dominio no es suficiente para equilibrar un sistema. Es probable que solo saque las cosas por más tiempo.
Jesse Williams
8
@JesseWilliams eso no es cierto. 1d20 tiene la misma oportunidad de obtener cualquiera de los valores posibles. Con 5d4, es mucho más probable que obtenga un 12 o 13 que un 20.
Rob Watts
Varios rollos también ocultan fallas en los generadores de números, por lo que es especialmente importante en las computadoras. De hecho, la combinación de rollos en un nivel de bits es la base de muchos generadores.
Yudrist
Estoy corregido.
Jesse Williams
3
@RobWatts que todavía no es más o menos aleatorio, es solo una distribución diferente. Tener información sobre "rollos" anteriores no le permite hacer una mejor predicción de los resultados futuros (ignorando fallas en el RNG), por lo que es tan aleatorio.
chbaker0
1

Qué tal esto: Agregue una constante, por ejemplo 1000, a todos los atributos involucrados. Entonces la diferencia relativa se vuelve muy pequeña.

Alex
fuente
1

Conoce tus numeros

Agregando un poco a la respuesta de Philipp , es decir que rand [x] en comparación con rand [y] puede no siempre producir lo que uno espera. Debajo de una tabla donde comparamos A con B. Tanto A como B tienen los valores 1 ... 10. Comparamos de dos maneras (nota: rand () en este caso genera enteros, es decir, rollos):

  1. rand [A]> rand [B]
  2. rand [A] ≥ rand [B] (es decir, mayor o igual que)

Además comparamos

  1. rand [A * 1000000]> rand [B * 1000000]
    (en este caso es irrelevante si es> o ≥ ya que están tan cerca). Estas grandes figuras están entre paréntesis.

Las celdas contienen% 's. Cada resultado contiene 1 millón de iteraciones (realizadas con Dyalog APL ).

┌────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┐
 A      B  1 (1000000)│ 2 (2000000)│ 3 (3000000)│ 4 (4000000)│ 5 (5000000)│ 6 (6000000)│ 7 (7000000)│ 8 (8000000)│ 9 (9000000)│10(10000000)│
├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤
 1 (1000000)│ >0(50) 100  >0(25) 50  >0(17) 33  >0(13) 25  >0(10) 20   >0(8) 17   >0(7) 14   >0(6) 13   >0(6) 11   >0(5) 10
├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤
 2 (2000000)│>50(75) 100 >25(50) 75 >17(33) 50 >12(25) 38 >10(20) 30  >8(17) 25  >7(14) 21  >6(13) 19  >6(11) 17  >5(10) 15
├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤
 3 (3000000)│>67(83) 100 >50(67) 83 >33(50) 67 >25(37) 50 >20(30) 40 >17(25) 33 >14(21) 29 >12(19) 25 >11(17) 22 >10(15) 20
├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤
 4 (4000000)│>75(87) 100 >62(75) 88 >50(62) 75 >37(50) 63 >30(40) 50 >25(33) 42 >21(29) 36 >19(25) 31 >17(22) 28 >15(20) 25
├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤
 5 (5000000)│>80(90) 100 >70(80) 90 >60(70) 80 >50(60) 70 >40(50) 60 >33(42) 50 >29(36) 43 >25(31) 38 >22(28) 33 >20(25) 30
├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤
 6 (6000000)│>83(92) 100 >75(83) 92 >67(75) 83 >58(67) 75 >50(58) 67 >42(50) 58 >36(43) 50 >31(38) 44 >28(33) 39 >25(30) 35
├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤
 7 (7000000)│>86(93) 100 >79(86) 93 >71(79) 86 >64(71) 79 >57(64) 71 >50(57) 64 >43(50) 57 >38(44) 50 >33(39) 44 >30(35) 40
├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤
 8 (8000000)│>88(94) 100 >81(87) 94 >75(81) 87 >69(75) 81 >63(69) 75 >56(62) 69 >50(56) 62 >44(50) 56 >39(44) 50 >35(40) 45
├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤
 9 (9000000)│>89(94) 100 >83(89) 94 >78(83) 89 >72(78) 83 >67(72) 78 >61(67) 72 >55(61) 67 >50(56) 61 >44(50) 56 >40(45) 50
├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤
10(10000000)│>90(95) 100 >85(90) 95 >80(85) 90 >75(80) 85 >70(75) 80 >65(70) 75 >60(65) 70 >55(60) 65 >50(55) 60 >45(50) 55
└────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┘

Si observa A = 2 y B = 3 (y 1 millón de pruebas):

  • rand (2) es más grande que rand (3) en el 17% de los casos
  • rand (2000000) es más grande que rand (3000000) en el 33% de los casos (aviso de escala ./ .. redondeo entero)
  • rand (2) es mayor o igual que rand (3) en el 50% de los casos
  • (rand (2000000) también es mayor o igual que rand (3000000) en el 50% de los casos)

Las sorpresas pueden ser que:

  • rand (2)> rand (3) en solo el 17% de los casos
  • rand (10)> rand (10) en el 45% de los casos
  • rand (6)> rand (5) cada dos veces

De hecho, podría resolver esta Q de manera diferente, simplemente escribiendo a mano una tabla de 10x10 con buenos porcentajes deseados (¿tal vez uno también quiere irregularidades?). Luego, si es necesario, interpolar entre dos valores, para obtener un porcentaje exacto, digamos que es por alguna razón 53. Entonces es fácil generar un golpe de probabilidad del 53%, un 0 o 1, simplemente ejecutando un rand (100) y probando si es más pequeño o igual a 53 :-).

Eso es lo que Jack Aidley menciona.

Ventormenta
fuente
1
¿Estás utilizando un generador de números aleatorios que genera enteros? Mi respuesta utiliza un RNG que genera números de coma flotante de doble precisión entre 0.0y 1.0. En ese caso, la diferencia entre >y >=es insignificante. Es posible que desee señalar eso.
Philipp
Sí, eso es parte del mensaje previsto, para señalar el comportamiento variable de los espacios numéricos, por ejemplo. enteros de valor pequeño (granularidad aproximada) versus enteros de valor grande (y de hecho también flota) con granularidad fina. Insertaré "entero" en algún lugar, gracias por señalar. De hecho, señalo esa insignificancia: "(en este caso es irrelevante si es> o ≥ ya que están tan cerca"). A menudo, los números encuentran valores sorprendentes (para la mente humana) si no se alienta al sistema a buscar el equilibrio. Hablando genéricamente, ofc, no necesariamente en este caso.
Stormwind
0

El enfoque tradicional al que varias respuestas han hecho referencia implícitamente pero que nadie ha explicado realmente es que la tarea requiere una tirada de dado fija y agrega un modificador de habilidad derivado de tus estadísticas.

Por ejemplo, si dos jugadores siguen el procedimiento:

  • Tira un dado de 14 lados
  • Agrega su modificador a la tirada del dado

y repite hasta que un lado venza al otro, entonces obtienes números en tu rango: aquí están las probabilidades de victoria con una ventaja numérica dada a su modificador:

0   50%
1   57%
2   64%
3   70%
4   76%
5   81%
6   85%
7   89%
8   92%
9   95%
10  97%

fuente
0

Los personajes no se desafían entre sí por la supremacía. Desafían un requisito. ¿Qué pasa si ambos pasan el requisito? ¿Quién gana? Me sorprende que no hayas desafiado la lógica lo suficiente como para que incluso hayas calculado con ella.

De cualquier manera, aquí hay dos cosas que podrían hacerte algo bueno.

Caso de oportunidad de ganar con ventaja:

SI la barra de pase / verificación de habilidad es un resultado de 10. A Tira 40. B Tira 42. SI solo uno tiene que ganar. A partir de un A 50% Win / B 50% Win igual. Puede agregar% para ganar posibilidades en función de la cantidad de ventaja. Roll B tiene (42-40) / 40 = 5% de ventaja en términos de roll. Agregarlo directamente hace que la probabilidad de ganar de B sea del 55%. O puede determinar una posibilidad de ganar personalizada por porcentaje de ventaja. Digamos que por cada 100% de ventaja agregas un 10% de posibilidades de ganar. Entonces, si A tira 10 y B tira 20. Entonces A gana el 40% y B gana el 60% de los casos.

Concepto de aleatoriedad justa:

Si tiene una probabilidad estándar de ganar del 30%, puede terminar ganando 38 cheques de 100.

Algunas personas quieren un paso adicional en la justicia y se aseguran de que un 30% de probabilidad siempre gane exactamente 30 de cada 100 encuentros y sea suficiente con la aleatoriedad de no saber qué encuentros en la secuencia son ganadores y cuáles son una pérdida.

Esto es particularmente útil para economías de juego bien calculadas. Porque una estadística aleatoria del 70% de posibilidades de ganar. Digamos un 70% de probabilidad de que una mafia arroje 5 de oro. Los mobs pueden terminar soltando el oro 81 veces de cada 100. Lo que desequilibra los flujos de ingresos / gastos. Y dependiendo de cuántas entidades / instancias usen tales rollos, inevitablemente se crea inflación y / o escasez. Por supuesto, muchas personas ni siquiera tienen una estimación aproximada de las entradas completas / gastos de su economía. Mucha gente es suficiente para hacer "la mayoría" de los puntos económicos. Y deje algunas variables de generación que no se calculan y acumule horas extra de discrepancia incluso con una aleatoriedad justa.

La inflación y la escasez no son un problema por sí mismas. Puede gestionar una aleatoriedad no justa e incluso variables imprevistas si su economía está configurada para responder adecuadamente a la inflación y la escasez.

¿Por qué molestarse con esto como la ley de los grandes números? iguala las cosas a largo plazo?

No todos los entornos pueden retener su comportamiento de diseño mientras cuentan con cosas para igualar más adelante ...

helena4
fuente
Me gusta especialmente la última oración. Agarrando de otro lado: creo que, por ejemplo, la relación de entrada / salida de Viking Lotto es de 4: 1 a largo plazo (donde uno podría reemplazar "largo" por "grande"); tiene un comportamiento de diseño casi controvertido (pero bien definido) y funciona. No se pueden ejecutar los cálculos matemáticos a menos que el comportamiento del diseño se defina con precisión primero. Los números tienden a ser incontrolados sin control ...
Stormwind
@Stormwind, por supuesto. Si el diseño / teoría carece, las matemáticas son inútiles. Es solo una herramienta. He visto a diseñadores con un nivel de matemáticas de quinto grado sacar buenas economías. Simplemente mapearon lo que querían hacer lógicamente y fueron a las personas de matemáticas (generalmente los codificadores) para obtener las herramientas / consejos sobre cómo hacer los bits de matemáticas. De alguna manera, se las arregla para no ser obvio para todos: cuantos más problemas tenga con el plan, más dolor de cabeza verá en la construcción. Simplemente agarrando un sistema y ajustándolo se pierde el punto por completo. Si te conformas con lo que funciona primero, no es realmente creativo.
helena4