Come posso evitare che piccoli vantaggi numerici dominino l'equilibrio di un incontro?


27

Ho armeggiato da un po 'di tempo con un gioco e sto avendo un bel po' di problemi con qualcosa:

Ho due caratteri, ognuno dei quali ha attributi (circa dieci) in un intervallo (tra 1 e 20). Voglio usare questi attributi per generare un "tiro" in modo tale che il tiro più alto vince quel particolare incontro. Vale la pena notare che i due personaggi non si danneggiano / si difendono a vicenda. Stanno girando entrambi per vedere se superano quello che immagino che potremmo chiamare un controllo di abilità. Stanno entrambi rotolando per passare / fallire contro un valore comune. Non interagiscono tra loro.

Tuttavia, quando uno dei personaggi ha anche un piccolo vantaggio numerico, qualsiasi formula che ho escogitato dà risultati in quello sempre leggermente superiore vincendo una grande maggioranza delle volte. Questo è indesiderabile.

Ho provato a ponderare l'attributo "più pertinente" per il test all'80% e la somma degli altri attributi al 20%. Ho anche provato a confrontare le medie per produrre una differenza relativa e usarla per aumentare il carattere più debole. Entrambi gli approcci hanno portato ai vantaggi significativi che sto cercando di rimuovere (ad esempio, se incontro l'incontro 5.000 volte, produce abbastanza regolarmente una parte vincendo tutti i 5.000).

L'aggiunta di un componente "fortuna" è importante, a quanto pare, se è ponderata in qualche modo a favore del personaggio minore, e non ho raggiunto un buon equilibrio lì.

Quali approcci posso adottare per attenuare l'impatto di un piccolo vantaggio numerico, ma preservare e aumentare comunque tale vantaggio all'aumentare del divario relativo negli attributi?


Per la richiesta, ecco i dettagli che ho finora. Alcune cose che non ho ancora capito, quindi rimangono generalità:

Al momento, il rotolo viene generato come

0.8 * (mainAttribute) + 0.2 (1/3 * subAttA + 1/3 * subAttB * 1/3 subAttC)

Allo stato attuale, questo produce numeri nel quartiere di 4.0. Gli attributi vengono generati casualmente tra intervalli specificati. Il test corrente usa un personaggio con attributi da 2 a 4 e l'avversario tra 3 e 5. Com'era prevedibile, questo produce medie vicine rispettivamente a 3 e 4.

Con questo vantaggio di un punto, mi piacerebbe vedere il più forte dei due vincere nell'area dal 55% al ​​60% delle volte, con questo ridimensionamento fino a vincere circa l'80% delle volte con un vantaggio di attributo medio di 5 o 6, 90% a vantaggio di 7 o 8, lasciando un certo spazio per una vittoria improbabile quando il divario aumenta. Preferirei non avere mai vittorie garantite, ma forse le cose stanno diventando molto improbabili - al punto di vincere il 99,5% o il 99,6% delle volte in cui il divario diventa molto grande.

La formula corrente produce un numero non casuale. La casualità deriva dalla selezione di quali attributi sono rilevanti. Non tutti gli attributi sono usati per ogni lancio. È possibile che quello con gli attributi complessivamente più deboli sia più forte nelle aree rilevanti per quel tiro e rubi una vittoria. Ma, prevedibilmente, succede raramente.

Il mio prossimo tentativo è stato quello di valutare i loro punti di forza relativi, prendendo una media di tutte le statistiche di ciascuno, dividendole l'una contro l'altra e usando quel valore per dare una piccola spinta al personaggio minore. Ciò ha attenuato un po 'le cose, ma ha comunque avuto una forte tendenza a produrre cose come 5.000 vittorie per un ragazzo su 5.000 tentativi.


2
Dici che il "ruolo è generato" ma poi pubblichi una formula che genererà sempre un numero fisso. Dov'è la casualità?
Philipp,

1
Quindi, se ti capisco correttamente, l'unica casualità nella tua meccanica di gioco è la scelta casuale dell'attributo principale?
Philipp,

2
Ma come suggerisce @Philipp, 5000 tentativi produrranno esattamente gli stessi risultati allora? Oppure generi nuovi attributi ogni simulazione
Felsir il

1
Come vince esattamente uno dei due, se non interagiscono tra loro? Sembra che manchino alcuni dati qui?
Erik,

1
Il tiro che ognuno produce viene confrontato con un obiettivo che devono raggiungere. Se uno lo raggiunge e l'altro no, quello vince. Se entrambi lo raggiungono, il più alto dei due vince. Se nessuno dei due raggiunge, né ottiene il punto. Nell'improbabile pareggio, hanno diviso il punto. Per "non interagire", intendevo non colpire o difendersi l'uno contro l'altro nel senso tradizionale, poiché è qui che è stata avviata la discussione iniziale.
ffenliv,

Risposte:


36

Il problema con il tuo approccio è che decidi il risultato del combattimento nel momento in cui decidi la statistica principale. Quando hai 4 statistiche principali e il combattente è solo migliore in una di esse, la loro probabilità di vittoria è sempre 1 su 4, indipendentemente dalle differenze. Quando desideri risultati più dettagliati, hai bisogno di una casualità più precisa.

Prima di tutto, penso che tu possa mantenere la tua scelta casuale per l'attributo principale e puoi anche mantenere la tua formula se vuoi. È il numero che rappresenta il vantaggio di questo combattente in questo incontro specifico. Per il resto di questo post, mi riferirò a questo solo come power.

Un metodo che ho usato in molti giochi e che mi è servito abbastanza bene quando si tratta di un duello tra due cose con un certo power, è di tirare un numero a virgola mobile casuale tra 0e powerper entrambi e vedere chi è arrivato più in alto. Ecco un elenco dei risultati previsti di questo metodo. Le percentuali non vengono calcolate ma generate sperimentalmente eseguendo 100000 combattimenti per combinazione e il conteggio delle iterazioni e il conteggio di chi ha vinto con frequenza:

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%

La cosa bella di questo algoritmo è che si ridimensiona, non importa quanto siano grandi i numeri con cui hai a che fare. La possibilità di 0,3 vs 0,7 è la stessa di 3 vs 7, 300 contro 700 o 3.000.000.000 contro 7.000.000.000.

Quando questo è ancora troppo imprevedibile per i tuoi gusti, puoi rendere il combattimento più prevedibile facendo rotolare più numeri casuali per ciascun combattente e sommarli. A causa della legge dei grandi numeri , molti eventi casuali si uniformano e si traducono in risultati più prevedibili. Ecco una tabella con un numero diverso di iterazioni.

| 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% | 

I risultati del 100% e 0% nella tabella sopra sono un'illusione a causa delle differenze di arrotondamento. A meno che il powerdi un combattente sia esattamente 0 c'è sempre la possibilità che vincano. Non è successo nel test sopra, quindi puoi aspettarti che sia inferiore a 1: 100000.

Potresti anche notare alcune lievi irregolarità che possono essere attribuite a sbalzi d'umore di java.lang.Random e potrebbero non apparire quando esegui di nuovo il codice con un seme diverso.

Il programma che ho usato per generare questa tabella (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;
    }
}

Se desideri utilizzare questo codice nel tuo gioco, è concesso in licenza in base alla Licenza pubblica WTF versione 2 pubblicata da Sam Hocevar .


Questo è un approccio interessante. In alcuni dei miei tentativi, sono andato quasi a metà di questo. Lo collegherò e lo proverò. Grazie molto.
ffenliv,

10
Le percentuali nella prima tabella possono essere calcolate esattamente come 1 - powerA / ( 2 * powerB ).
Kyle,

2
@Kyle Funziona solo fino a quando powerA < powerB. Una volta che powerA è più grande, è necessario passare a powerB / (2 * powerA).
Dorus,

1
Non sono sicuro che StackExchange ToS ti consenta di allontanarti dalla licenza obbligatoria del sito su contenuto e codice, anche se la tua licenza è più permissiva della loro. Certo, è impossibile scoprire se è il MIT proposto o ancora CC.
Lars Viklund,

5
@LarsViklund Stai iniziando una discussione fuori tema qui, ma no, questo non è corretto. La licenza di stackexchange non è esclusiva, il che significa che sono ancora libero di cedere la mia proprietà intellettuale in base ad eventuali altri termini di licenza quando voglio. I miei contributi hanno una doppia licenza in base a CC-BY-SA (come richiesto da Stackexchange) e WTFPL. Puoi scegliere a quale condizione desideri utilizzare i miei contributi.
Philipp,

13

Il tuo errore è usare un approccio basato sui dadi. Sei su un computer e puoi usare qualsiasi sistema che ti piace. Crea una tabella che trasforma una differenza di valori in una probabilità% di età di vincere e quindi puoi impostare i valori su qualsiasi cosa ti piaccia, ad es.

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

(Devi solo fare metà della tabella, semplicemente scegli sempre A come quello con la statistica più alta)

Ovviamente, questi numeri sono solo un esempio, puoi farlo seguire qualunque distribuzione ti piaccia.


2
Anche se attualmente sto lavorando con un sistema basato sulla risposta accettata, questa è abbastanza semplice e potrebbe anche essere una buona soluzione per me. Sapevo che il vecchio StackExchange sarebbe arrivato per me.
ffenliv,

5

Questa è una domanda piuttosto profonda, onestamente, dal punto di vista della meccanica di gioco. Ma ci sono alcune cose che potrebbero aiutare.

Innanzitutto, questo è il motivo per cui la maggior parte dei giochi ha un componente separato per colpire e danneggiare, dove c'è un "tiro" per vedere se colpisci per danno, quindi un "tiro" contro una tabella di danno o un raggio per il personaggio dato. Questo porta anche ad alcuni archetipi standard tra i generi, in cui potresti avere personaggi più piccoli e più veloci che hanno meno punti ferita ma infliggono più danni (maghi cannoni di vetro, alcuni tipi di furfanti) e personaggi corazzati più grandi che colpiscono per meno danni (carri armati, guerrieri ).

Ciò porta a un equilibrio naturale in cui il personaggio più piccolo potrebbe essere fragile, ma evita di essere colpito altrettanto spesso a causa di un'abilità di tipo agilità e uniforma anche il campo di gioco facendo più danni (un incantesimo o un effetto veleno che danneggia sopra tempo). Il carro armato potrebbe essere più lento e essere colpito più spesso, ma spesso ha un enorme pozzo di salute o punti ferita da sostenere, tuttavia tende a fare meno danni per colpo (o danni al secondo).

Lo sfondo di questi è il motivo per cui molti giochi subiscono continuamente il bilanciamento di armi, classi e statistiche. World or Warcraft, Destiny, Diablo, Battlefield: ogni tipo di gioco in qualsiasi genere spesso passa attraverso il bilanciamento e la messa a punto nel tempo.

Questa potrebbe non essere una risposta diretta, ma hai chiesto idee generali. Quindi, valutiamo anche il sistema di gioco.

Come funzionano quegli attributi? Se tutto il resto è uguale (nessun archetipo, nessuna armatura o armi migliori o quant'altro), allora è probabile che ogni leggero guadagno lanci le cose pesantemente a favore di una parte. L'aggiunta di sfaccettature per combattere complica qualsiasi sistema, ma consente anche una maggiore flessibilità.


A parte questo, penso che questa sia un'ottima domanda e potrebbe portare ad alcune discussioni molto interessanti sulla meccanica dei giochi. È possibile che questo finisca per diventare basato sull'opinione, quindi è importante stare attenti a tali tangenti (questo gioco fa meglio di questo gioco, e così via), ma ci sono alcuni fondamentali coinvolti che potrebbero essere illuminanti quando più persone pubblicano.
Jesse Williams,

In modo divertente, ho avuto per primo un meccanismo di "colpo" e "danno", ma l'ho scartato per motivi che non ricordo più (ed era solo ieri. La mia memoria è un po '... scarsa) Dovrei essere chiaro, i personaggi non si stanno attaccando / difendendosi a vicenda. Non ci sono componenti di danno. È un controllo di abilità, in cui entrambi vengono confrontati con un valore comune per vedere se il tiro "passa". Non c'è interazione tra i due concorrenti.
ffenliv,

2

Ci sono due grandi cose.

Innanzitutto, ricorda che sei su un computer. Puoi realizzare qualsiasi sistema tu voglia. Non è necessario limitarsi a un tiro di d20, anche se questo è facile da capire per i giocatori. Cose come tirare 6 dadi D6 sono facili su un computer e danno risultati molto meno casuali.

In secondo luogo, osservando altri sistemi come D&D è ovvio che limitano notevolmente l'effetto degli attributi. Invece di avere la tua statistica di base aggiungi l'80% del suo valore alla regola, ridimensionala e rendila più sottile. In D&D, ad esempio, se hai 18 abilità, ottieni solo 4 come bonus per la tua classe di armature.

Quindi, in breve numericamente, tutto ciò che devi fare è ridimensionare il tuo dominio per adattarlo meglio al tuo intervallo. Ma qualitativamente penserei che guardare altri sistemi e inventare cose che sembrano meno matematiche costituirebbe un sistema più soddisfacente per il giocatore.


1d20 o 6d6 o 5d4 - i risultati non sono più o meno casuali, si cambia solo l'intervallo. Casuale è casuale. Il ridimensionamento dell'intervallo e del dominio non sono sufficienti per bilanciare un sistema. È probabile che tiri fuori le cose solo più a lungo.
Jesse Williams,

8
@JesseWilliams non è vero. 1d20 ha le stesse possibilità di ottenere uno qualsiasi dei valori possibili. Con 5d4, hai molte più probabilità di ottenere un 12 o 13 rispetto a un 20
Rob Watts,

Anche i rotoli multipli nascondono difetti nei generatori di numeri, quindi è particolarmente importante sui computer. In effetti, combinare i rulli a un livello bit a bit è praticamente la base di molti generatori.
Yudrist,

Sono corretto.
Jesse Williams,

3
@RobWatts che non è ancora più o meno casuale, è solo una distribuzione diversa. Avere informazioni sui "tiri" precedenti non ti consente di fare una migliore previsione dei risultati futuri (ignorando i difetti del RNG), quindi è altrettanto casuale.
chbaker0

1

Che ne dici di questo: aggiungi una costante, ad esempio 1000, a tutti gli attributi interessati. Quindi la differenza relativa diventa molto piccola.


1

Conosci i tuoi numeri

Aggiungendo un po 'alla risposta di Philipp , vale a dire che rand [x] rispetto a rand [y] potrebbe non produrre sempre ciò che ci si aspetta. Sotto una tabella in cui confrontiamo A con B. Sia A che B hanno i valori 1 ... 10. Confrontiamo in due modi (nota: rand () in questo caso genera numeri interi, cioè rotoli):

  1. rand [A]> rand [B]
  2. rand [A] ≥ rand [B] (cioè maggiore o uguale a)

Inoltre confrontiamo

  1. rand [A * 1000000]> rand [B * 1000000]
    (in questo caso non è rilevante che sia> o ≥ dato che sono così vicini). Queste grandi figure sono tra parentesi.

Le celle contengono% 's. Ogni risultato contiene 1 milione di iterazioni (realizzate utilizzando 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
└────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┘

Se si guarda A = 2 e B = 3 (e 1 milione di test):

  • Rand (2) è più grande di Rand (3) nel 17% dei casi
  • rand (2000000) è più grande di rand (3000000) nel 33% dei casi (ridimensionamento avviso / arrotondamento intero)
  • rand (2) è maggiore o uguale a rand (3) nel 50% dei casi
  • (rand (2000000) è anche maggiore o uguale a rand (3000000) nel 50% dei casi)

Le sorprese potrebbero essere che:

  • rand (2)> rand (3) solo nel 17% dei casi
  • rand (10)> rand (10) nel 45% dei casi
  • rand (6)> rand (5) ogni due volte

Potrei in effetti risolvere questo Q in modo diverso, semplicemente digitando a mano una tabella 10x10 con belle percentuali desiderate (forse si desidera anche un'irregolarità?). Quindi, se necessario interpolare tra due valori, per ottenere una percentuale esatta, supponiamo che sia per qualche motivo 53. Quindi è facile generare un hit di probabilità del 53%, uno 0 o 1, semplicemente eseguendo un rand (100) e testando se è più piccolo o uguale a 53 :-).

Questo è lungo la linea menzionata da Jack Aidley .


1
Stai usando un generatore di numeri casuali che genera numeri interi? La mia risposta usa un RNG che genera numeri in virgola mobile a precisione doppia tra 0.0e 1.0. In tal caso la differenza tra >e >=è trascurabile. Potresti volerlo sottolineare.
Philipp,

Sì, fa parte del messaggio previsto, solo per sottolineare il comportamento variabile degli spazi numerici, ad es. numeri interi di piccolo valore (granularità approssimativa) rispetto a numeri interi di grande valore (e in effetti galleggiano) con granularità fine. Inserirò "numero intero" da qualche parte, grazie per l'individuazione. In realtà faccio notare tale trascuratezza: "(in questo caso non è rilevante che sia> o ≥ dato che sono così vicini"). Spesso i numeri trovano valori sorprendenti (per la mente di Hman) se il sistema non è incoraggiato a cercare un equilibrio. In generale, spesso, non necessariamente in questo caso.
Stormwind,

0

L'approccio tradizionale a cui diverse risposte hanno implicitamente fatto riferimento ma che nessuno ha effettivamente enunciato è che l'attività richiede un tiro di dado fisso e aggiunge un modificatore di abilità derivato dalle tue statistiche.

Ad esempio, se due giocatori seguono la procedura:

  • Lancia un dado a 14 facce
  • Aggiungi il loro modificatore al tiro di dado

e ripeti finché una parte non batte l'altra, poi ottieni i numeri nel tuo intervallo: ecco le probabilità di vittoria con un dato vantaggio numerico al loro modificatore:

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

0

I personaggi non si sfidano a vicenda per la supremazia. Sfidano un requisito. Che cosa succede se entrambi soddisfano il requisito. Chi vince? Sono sorpreso che tu non abbia sfidato abbastanza la logica da essere persino andato al calcolo con essa.

Ad ogni modo, ecco due cose che potrebbero farti del bene.

Vinci un caso fortuito con vantaggio:

La barra del passaggio / controllo abilità IF è un tiro di 10. A Rotoli 40. B Rotoli 42. SE solo uno deve vincere. A partire da una vincita pari al 50% A / B 50%. Puoi aggiungere% per vincere la possibilità in base alla quantità di vantaggio. Il rotolo B ha (42-40) / 40 = 5% di vantaggio in termini di rotolo. Aggiungendolo direttamente, la probabilità di vincita di B è del 55%. Oppure puoi determinare una possibilità di vincita personalizzata per percentuale di vantaggio. Dì per ogni vantaggio del 100% che aggiungi una probabilità del 10% di vincere. Quindi se A tira 10 e B tira 20. Quindi A vince il 40% e B vince il 60% dei casi.

Concetto di casualità equa:

Fare una probabilità standard del 30% di vincere potrebbe finire per vincere 38 assegni su 100.

Alcune persone desiderano un ulteriore passo in avanti nella correttezza e si assicurano che una probabilità del 30% vince sempre esattamente 30 su 100 incontri e basti con la casualità di non sapere quali incontri nella sequenza sono una vittoria e quali sono una perdita.

Ciò è particolarmente utile per economie di gioco ben calcolate. Perché una statistica casuale del 70% di possibilità di vincere. Dì il 70% di probabilità che un mob rilasci 5 monete d'oro. I mob possono finire per far cadere l'oro 81 volte su 100. Il che getta fuori flusso di entrate / uscite. E a seconda di quante entità / istanze utilizzano tali rotoli, l'inflazione e / o le carenze vengono inevitabilmente create. Naturalmente molte persone non hanno nemmeno una stima approssimativa del pieno declino degli input / spese della loro economia. Molte persone sono sufficienti per fare "la maggior parte" dei punti di economia. E lascia alcune variabili di generazione che non sono calcolate e accumula discrepanze straordinarie anche con una casualità equa.

L'inflazione e la carenza non sono un problema da soli. Puoi gestire casualità non eque e persino variabili impreviste se la tua economia è predisposta per rispondere adeguatamente all'inflazione e alla carenza.

Perché preoccuparsi di questo come la legge di grandi numeri uniforma le cose a lungo termine?

Non tutti gli ambienti sono in grado di mantenere il proprio comportamento progettuale pur contando su cose da uniformare in seguito ...


Mi piace soprattutto l'ultima frase. Afferrare da altrove: credo che ad esempio il rapporto in: out di Viking Lotto sia di circa 4: 1 nel lungo periodo (dove si potrebbe sostituire "long" con "large"); ha un comportamento progettuale quasi controverso (ma ben definito) e funziona. Non è possibile eseguire la matematica sottostante a meno che il comportamento progettuale non sia definito per primo con precisione. I numeri tendono ad essere incontrollati senza controllo ...
Stormwind

@Stormwind ovviamente. Se manca il design / la teoria, la matematica è inutile. È solo uno strumento. Ho visto designer con un livello di matematica di 5 ° grado che tirano fuori buone economie. Hanno semplicemente mappato ciò che volevano fare logicamente e sono andati alla gente di matematica (di solito i programmatori) per gli strumenti / consigli su come fare i bit di matematica. Riesce in qualche modo a non essere ovvio per tutti - più problemi hai con il progetto - più mal di testa vedrai nella costruzione. Basta afferrare un po 'di sistema e ottimizzarlo manca completamente il punto. Se ti accontenti di qualsiasi cosa funzioni prima, non è davvero creativa.
helena4,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.