Comment puis-je empêcher de petits avantages numériques de dominer l'équilibre d'une rencontre?

27

Je bricole depuis un certain temps avec un jeu et j'ai beaucoup de mal avec quelque chose:

J'ai deux personnages, chacun ayant des attributs (une dizaine) dans une plage (entre 1 et 20). Je veux utiliser ces attributs pour générer un «jet» tel que le jet supérieur gagne cette rencontre particulière. Il convient de noter que les deux personnages ne s'endommagent pas / ne se défendent pas . Ils roulent tous les deux pour voir s'ils réussissent ce que je suppose que nous pourrions appeler un test de compétence. Ils roulent tous les deux pour réussir / échouer par rapport à une valeur commune. Ils n'interagissent pas entre eux.

Cependant, lorsque l'un des personnages a même un petit avantage numérique, toute formule que j'ai trouvée fait en sorte que celle qui est toujours légèrement supérieure remporte une énorme majorité du temps. C'est indésirable.

J'ai essayé de pondérer l'attribut «le plus pertinent» pour le test à 80% et la somme des autres attributs à 20%. J'ai également essayé de comparer des moyennes pour produire une différence relative et de l'utiliser pour augmenter le caractère le plus faible. Les deux approches ont entraîné les avantages importants que j'essaie de supprimer (par exemple, si je lance la rencontre 5 000 fois, elle produit assez régulièrement une équipe gagnant les 5 000).

L'ajout d'un composant "chance" n'a d'importance, semble-t-il, que s'il est en quelque sorte pondéré en faveur du personnage inférieur, et je n'ai pas trouvé un bon équilibre là-bas.

Quelles approches puis-je adopter pour atténuer l'impact d'un petit avantage numérique tout en préservant et en augmentant cet avantage à mesure que l'écart relatif des attributs augmente?


Par la demande, voici les détails que j'ai jusqu'à présent. Certaines choses que je n'ai pas encore découvertes restent donc des généralités:

Pour le moment, le roulement est généré comme

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

À l'heure actuelle, cela produit des chiffres aux alentours de 4,0. Les attributs sont générés aléatoirement entre des plages spécifiées. Le test actuel utilise un caractère avec des attributs de 2 à 4, et l'adversaire entre 3 et 5. Comme on pouvait s'y attendre, cela produit des moyennes proches de 3 et 4 respectivement.

Avec cet avantage d'un point, j'aimerais que le plus fort des deux gagne dans la zone de 55% à 60% du temps, avec cette augmentation à environ 80% du temps avec un avantage d'attribut moyen de 5 ou 6, 90% avec des avantages de 7 ou 8, laissant une certaine marge pour une victoire improbable lorsque l'écart se creuse. Je préférerais ne jamais avoir de victoires garanties, mais peut-être que les choses deviennent très improbables - au rythme de gagner 99,5% ou 99,6% du temps lorsque l'écart devient très grand.

La formule actuelle produit un nombre non aléatoire. L'aléatoire vient de la sélection des attributs pertinents. Pas tous les attributs sont utilisés pour chaque rouleau. Il est possible que celui avec les attributs les plus faibles soit plus fort dans les domaines pertinents pour ce jet et vole une victoire. Mais, comme on pouvait s'y attendre, cela arrive rarement.

Ma prochaine tentative a été de peser leurs forces relatives, en prenant une moyenne de toutes les statistiques de chacun, en les divisant les unes contre les autres et en utilisant cette valeur pour donner un petit coup de pouce au personnage inférieur. Cela a un peu lissé les choses, mais avait toujours une tendance prononcée à produire des choses comme 5 000 victoires pour un gars sur 5 000 essais.

ffenliv
la source
2
Vous dites que le "rôle est généré" mais vous publiez ensuite une formule qui générera toujours un nombre fixe. Où est le caractère aléatoire?
Philipp
1
Donc, si je vous comprends bien, le seul caractère aléatoire de votre mécanisme de jeu est le choix aléatoire de l'attribut principal?
Philipp
2
Mais comme @Philipp l'indique, 5000 tentatives donneront alors exactement les mêmes résultats? Ou générez-vous de nouveaux attributs à chaque simulation
Felsir
1
Comment exactement l'un des deux gagne-t-il s'il n'interagit pas entre eux? Il semble qu'il manque des données ici?
Erik
1
Le rôle que chacun produit est comparé à un objectif qu'il doit atteindre. Si l'un l'atteint et l'autre pas, celui-là gagne. S'ils l'atteignent tous les deux, le plus élevé des deux gagne. Si aucun n'atteint, ni obtient le point. Dans le cas improbable même d'une égalité, ils ont divisé le point. Par «ne pas interagir», je voulais dire ne pas se heurter ou se défendre les uns contre les autres dans le sens traditionnel, car c'est là que se dirigeait une partie de la discussion initiale.
ffenliv

Réponses:

36

Le problème avec votre approche est que vous décidez du résultat du combat au moment où vous décidez de la statistique principale. Lorsque vous avez 4 statistiques principales et que le combattant n'est meilleur que dans l'une d'entre elles, sa chance de gagner est toujours de 1 sur 4, quelle que soit la taille des différences. Lorsque vous voulez des résultats plus fins, vous avez besoin d'un caractère aléatoire plus fin.

Tout d'abord, je pense que vous pouvez conserver votre choix aléatoire pour l'attribut principal et vous pouvez également conserver votre formule si vous le souhaitez. C'est le nombre qui représente la longueur d'avance de ce combattant dans cette rencontre spécifique. Pour le reste de cet article, j'y ferai référence comme juste power.

Une méthode que j'ai utilisée dans beaucoup de jeux et qui m'a très bien servi quand il s'agit d'un duel entre deux choses avec un certain power, est de lancer un nombre à virgule flottante aléatoire entre 0et powerpour les deux et de voir qui a roulé plus haut. Voici une liste des résultats attendus de cette méthode. Les pourcentages ne sont pas calculés mais générés expérimentalement en exécutant 100000 combats par combinaison et nombre d'itérations et en comptant qui a gagné à quelle fréquence:

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 bonne chose à propos de cet algorithme est qu'il évolue quelle que soit la taille des nombres avec lesquels vous avez affaire. La chance de 0,3 vs 0,7 est la même que celle de 3 vs 7, 300 vs 700 ou 3 000 000 000 vs 7 000 000 000.

Lorsque cela est encore trop imprévisible à votre goût, vous pouvez rendre le combat plus prévisible en lançant plusieurs nombres aléatoires pour chaque combattant et en les additionnant. En raison de la loi des grands nombres , de nombreux événements aléatoires s'équilibreront et donneront des résultats plus prévisibles. Voici un tableau avec un nombre d'itérations différent.

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

Les résultats de 100% et 0% dans le tableau ci-dessus sont une illusion en raison des différences d'arrondi. À moins que la valeur powerd'un combattant soit exactement 0, il y a toujours la possibilité qu'il gagne. Cela ne s'est tout simplement pas produit dans le test ci-dessus, vous pouvez donc vous attendre à ce qu'il soit inférieur à 1: 100000.

Vous pouvez également remarquer de légères irrégularités qui peuvent être attribuées à des sautes d'humeur de java.lang.Random et peuvent ne pas apparaître lorsque vous exécutez à nouveau le code avec une graine différente.

Le programme que j'ai utilisé pour générer cette table (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 vous souhaitez utiliser ce code dans votre jeu, il est sous licence WTF Public License Version 2 publiée par Sam Hocevar .

Philipp
la source
Il s'agit d'une approche intéressante. Dans certaines de mes tentatives, je suis allé à mi-chemin. Je vais câbler cela et l'essayer. Merci beaucoup.
ffenliv
10
Les pourcentages dans votre premier tableau peuvent être calculés exactement comme 1 - powerA / ( 2 * powerB ).
Kyle
2
@Kyle Cela ne fonctionne que tant que powerA < powerB. Une fois que powerA est plus grand, vous devez passer à powerB / (2 * powerA).
Dorus
1
Je ne suis pas sûr que le StackExchange ToS vous permette de vous éloigner de la licence de site obligatoire sur le contenu et le code, même si votre licence est plus permissive que la leur. Bien sûr, il est impossible de savoir s'il s'agit du MIT proposé ou encore du CC.
Lars Viklund
5
@LarsViklund Vous commencez une discussion hors sujet ici, mais non, c'est incorrect. La licence de stackexchange n'est pas exclusive, ce qui signifie que je suis toujours libre de céder ma propriété intellectuelle sous toute autre condition de licence quand je le souhaite. Mes contributions sont sous double licence sous CC-BY-SA (tel que mandaté par Stackexchange) et WTFPL. Vous pouvez choisir sous quelle condition vous souhaitez utiliser mes contributions.
Philipp
13

Votre erreur utilise une approche "basée sur les dés". Vous êtes sur un ordinateur, vous pouvez utiliser n'importe quel système que vous aimez. Créez un tableau qui transforme une différence de valeurs en% de chance de gagner en âge, puis vous pouvez définir les valeurs à tout ce que vous voulez, par exemple

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

(Vous avez seulement besoin de faire la moitié du tableau, choisissez simplement toujours A comme celui avec la statistique la plus élevée)

Évidemment, ces chiffres ne sont qu'un exemple, vous pouvez le faire suivre la distribution qui vous plaît.

Jack Aidley
la source
2
Bien que je travaille actuellement avec un système basé sur la réponse acceptée, c'est assez simple et peut également être une bonne solution pour moi. Je savais que le bon vieux StackExchange viendrait pour moi.
ffenliv
5

C'est une question assez profonde, honnêtement, du point de vue de la mécanique du jeu. Mais il y a quelques choses qui pourraient aider.

Tout d'abord, c'est pourquoi la plupart des jeux ont un composant distinct pour les coups et les dégâts, où il y a un "jet" pour voir si vous touchez pour des dégâts, puis un "jet" contre une table ou une portée de dégâts pour le personnage donné. Cela conduit également à certains archétypes standard dans tous les genres, où vous pourriez avoir des personnages plus petits et plus rapides qui ont moins de points de vie mais infligent plus de dégâts (mages de canons de verre, certains types de voleurs) et de plus grands personnages blindés qui frappent pour moins de dégâts (chars, guerriers ).

Cela conduit à un équilibre naturel où le petit personnage peut être fragile, mais évite d'être touché aussi souvent en raison d'une capacité de type agilité, et égalise également le terrain de jeu en faisant plus de dégâts (un sort ou un effet de poison qui fait des dégâts sur temps). Le char peut être plus lent et être touché plus souvent, mais il a souvent un énorme puits de santé ou des points de vie à maintenir, mais a tendance à faire moins de dégâts par coup (ou de dégâts par seconde).

Le contexte de ces derniers est la raison pour laquelle de nombreux jeux passent constamment par l'équilibre des armes, des classes et des statistiques. World ou Warcraft, Destiny, Diablo, Battlefield: tout type de jeu dans n'importe quel genre passe souvent par un équilibrage et un réglage au fil du temps.

Ce n'est peut-être pas une réponse directe, mais vous avez demandé des idées générales. Alors, évaluons également le système de jeu.

Comment fonctionnent ces attributs? Si tout le reste est égal (pas d'archétype, pas d'armure ou de meilleures armes ou autre), alors tout léger gain est absolument susceptible de jeter fortement les choses en faveur d'un côté. Tout en ajoutant des facettes pour combattre complique n'importe quel système, il permet également plus de flexibilité.

Jesse Williams
la source
En passant, je pense que c'est une excellente question et pourrait conduire à des discussions très intéressantes sur la mécanique du jeu. Il est possible que cela finisse par devenir basé sur l'opinion, il est donc important de faire attention à ces tangentes (ce jeu le fait mieux que ce jeu, etc.), mais il y a certains principes fondamentaux impliqués qui pourraient être éclairants à mesure que plus de gens publieront.
Jesse Williams
De manière amusante, j'ai eu un mécanicien "coup" et "dégâts" en premier, mais je l'ai mis au rebut pour des raisons dont je ne me souviens plus (et c'était seulement hier. Ma mémoire est un peu ... pauvre) Je devrais être clair, les personnages ne s'attaquent pas / ne se défendent pas. Il n'y a aucun composant endommagé. C'est un test de compétence, où les deux sont comparés à une valeur commune pour voir si le jet «passe». Il n'y a aucune interaction entre les deux qui sont en compétition.
ffenliv
2

Il y a deux grandes choses.

Tout d'abord, souvenez-vous que vous êtes sur un ordinateur. Vous pouvez créer n'importe quel système que vous souhaitez. Pas besoin de vous limiter à un jet de d20, bien que cela soit facile à comprendre pour les joueurs. Des choses comme lancer 6 dés D6 sont faciles sur un ordinateur et donnent des résultats beaucoup moins aléatoires.

Deuxièmement, en regardant d'autres systèmes comme D&D, il est évident qu'ils limitent tout simplement l'effet des attributs. Au lieu d'avoir votre statistique de base ajouter 80% de sa valeur à la règle, réduisez-la et rendez son ajout plus subtil. Dans D&D par exemple, si vous avez 18 dextérité, vous obtenez seulement 4 en bonus pour votre classe d'armure.

Donc, en bref, tout ce que vous devez faire est de réduire votre domaine pour mieux l'adapter à votre gamme. Mais qualitativement, je pense que regarder d'autres systèmes et proposer des choses qui semblent moins mathématiques rendraient le système plus satisfaisant pour le joueur.

Yudrist
la source
1d20 ou 6d6 ou 5d4 - les résultats ne sont ni plus ni moins aléatoires, vous ne modifiez que la plage. Aléatoire est aléatoire. La réduction de la portée et du domaine ne suffit pas pour équilibrer un système. Il est probable que cela ne fera que prolonger les choses.
Jesse Williams
8
@JesseWilliams ce n'est pas vrai. 1d20 a une chance égale d'obtenir l'une des valeurs possibles. Avec 5d4, vous avez beaucoup plus de chances d'obtenir un 12 ou un 13 que vous n'en avez un 20.
Rob Watts
Plusieurs rouleaux permettent également de masquer les défauts des générateurs de nombres, ce qui est donc particulièrement important sur les ordinateurs. En fait, la combinaison de rouleaux à un niveau de bits est à peu près la base de nombreux générateurs.
Yudrist
Je me suis trompé.
Jesse Williams
3
@RobWatts qui n'est toujours pas plus ou moins aléatoire, c'est juste une distribution différente. Avoir des informations sur les "rolls" précédents ne vous permet pas de faire une meilleure prédiction des résultats futurs (en ignorant les failles du RNG), donc c'est tout aussi aléatoire.
chbaker0
1

Que diriez-vous de ceci: Ajoutez une constante, par exemple 1000, à tous les attributs concernés. Ensuite, la différence relative devient très petite.

Alex
la source
1

Connaissez vos chiffres

Ajoutant un peu à la réponse de Philipp , à savoir que rand [x] par rapport à rand [y] peut ne pas toujours produire ce que l'on attend. Sous un tableau où nous comparons A à B. A et B ont les valeurs 1 ... 10. Nous comparons de deux manières (note: rand () dans ce cas génère des entiers, c'est-à-dire des rouleaux):

  1. rand [A]> rand [B]
  2. rand [A] ≥ rand [B] (c'est-à-dire supérieur ou égal à)

De plus, nous comparons

  1. rand [A * 1000000]> rand [B * 1000000]
    (dans ce cas, peu importe que ce soit> ou ≥ car ils sont si proches). Ces grandes figures sont entre parenthèses.

Les cellules contiennent des%. Chaque résultat contient 1 million d'itérations (effectuées à l'aide de 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 l'on regarde A = 2 et B = 3 (et 1 million de tests):

  • rand (2) est plus grand que rand (3) dans 17% des cas
  • rand (2000000) est plus grand que rand (3000000) dans 33% des cas (notez la mise à l'échelle ./ .. arrondi entier)
  • rand (2) est supérieur ou égal à rand (3) dans 50% des cas
  • (rand (2000000) est également supérieur ou égal à rand (3000000) dans 50% des cas)

Les surprises pourraient être que:

  • rand (2)> rand (3) dans seulement 17% des cas
  • rand (10)> rand (10) dans 45% des cas
  • rand (6)> rand (5) toutes les deux fois

Je pourrais en fait résoudre ce Q différemment, en tapant simplement à la main une table 10x10 avec de bons pourcentages souhaités (peut-être que l'on veut aussi une irrégularité?). Ensuite, si nécessaire, interpolez entre deux valeurs, pour obtenir un pourcentage exact, disons que c'est pour une raison quelconque 53. Ensuite, il est facile de générer un hit de probabilité de 53%, un 0 ou 1, en exécutant simplement un rand (100) et en testant s'il est plus petit ou égal à 53 :-).

C'est le long de la ligne mentionne Jack Aidley .

Hurlevent
la source
1
Utilisez-vous un générateur de nombres aléatoires qui génère des entiers? Ma réponse utilise un RNG qui génère des nombres à virgule flottante double précision entre 0.0et 1.0. Dans ce cas, la différence entre >et >=est négligeable. Vous voudrez peut-être le souligner.
Philipp
Oui, cela fait partie du message prévu, pour simplement souligner le comportement variable des espaces numériques, par exemple. des entiers de petite valeur (granularité grossière) par rapport à un entier de grande valeur (et même flottant) avec une granularité fine Je vais insérer "entier" quelque part, thx pour le repérage. En fait, je souligne que la négligence: "(dans ce cas, peu importe que ce soit> ou ≥ car ils sont si proches"). Souvent, les nombres trouvent des valeurs surprenantes (pour l'esprit humain) si le système n'est pas encouragé à rechercher l'équilibre. De manière générique, bien sûr, pas nécessairement dans ce cas.
Stormwind
0

L'approche traditionnelle que plusieurs réponses ont implicitement référencée mais que personne n'a vraiment expliquée est que la tâche nécessite un jet de dé fixe et ajoute un modificateur de capacité dérivé de vos statistiques.

Par exemple, si deux joueurs suivent la procédure:

  • Lancez un dé à 14 faces
  • Ajoutez leur modificateur au jet de dé

et répétez jusqu'à ce qu'un côté bat l'autre, puis vous obtenez des nombres dans votre gamme: voici les chances de victoire avec un avantage numérique donné à leur modificateur:

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

la source
0

Les personnages ne se défient pas pour la suprématie. Ils défient une exigence. Et si les deux réussissent. Qui gagne? Je suis surpris que vous n'ayez pas suffisamment contesté la logique que vous ayez même fait le calcul avec.

Quoi qu'il en soit, voici deux choses qui pourraient vous faire du bien.

Gagnez un cas de chance avec avantage:

SI la barre de réussite / vérification des compétences est un jet de 10. A lance 40. B lance 42. SI un seul doit gagner. A partir d'un gain A 50% / B 50% égal. Vous pouvez ajouter% pour gagner des chances en fonction du montant de l'avantage. Le jet B a (42-40) / 40 = 5% d'avantage en termes de jet. L'ajouter directement augmente les chances de victoire de B de 55%. Ou vous pouvez déterminer une chance de victoire personnalisée par pourcentage d'avantage. Dites pour chaque avantage de 100% que vous ajoutez 10% de chances de gagner. Donc, si A lance 10 et B lance 20. Alors A gagne 40% et B gagne 60% des cas.

Concept d'équité aléatoire:

Faire une chance standard de 30% de gagner peut finir par gagner 38 chèques sur 100.

Certaines personnes veulent une étape supplémentaire dans l'équité et s'assurent qu'une chance de 30% gagne toujours exactement 30 des 100 rencontres et suffit avec le hasard de ne pas savoir quelles rencontres dans la séquence sont une victoire et lesquelles sont une perte.

Ceci est particulièrement utile pour des économies de jeu bien calculées. Parce qu'une statistique aléatoire de 70% de chances de gagner. Dites 70% de chances à une foule de perdre 5 pièces d'or. Les foules peuvent finir par perdre l'or 81 fois sur 100. Ce qui déséquilibre les revenus et les dépenses. Et selon le nombre d'entités / instances qui utilisent de tels rouleaux, une inflation et / ou des pénuries sont inévitablement créées. Bien sûr, de nombreuses personnes n'ont même pas une estimation approximative de la répartition complète des intrants / dépenses de leur économie. Beaucoup de gens suffisent pour faire "la plupart" des points d'économie. Et laissez quelques variables de génération qui ne sont pas calculées et empilez les écarts au fil du temps, même avec un caractère aléatoire assez juste.

L'inflation et les pénuries ne sont pas un problème en soi. Vous pouvez gérer un caractère aléatoire non équitable et même des variables imprévues si votre économie est configurée pour répondre adéquatement à l'inflation et à la pénurie.

Pourquoi s'embêter avec ça comme la loi des grands nombres égalise les choses à long terme?

Tous les environnements ne peuvent pas conserver leur comportement de conception tout en comptant sur les choses pour égaliser plus tard ...

helena4
la source
J'aime particulièrement la dernière phrase. Saisir d'ailleurs: je crois que par exemple le ratio entrée / sortie du Viking Lotto est d'environ 4: 1 à long terme (où l'on pourrait remplacer "long" par "large"); il a un comportement de conception presque controversé (mais bien défini) et il fonctionne. On ne peut pas exécuter les mathématiques ci-dessous à moins que le comportement de conception soit défini avec précision en premier. Les chiffres ont tendance à être incontrôlés sans contrôle ...
Stormwind
@Stormwind bien sûr. Si la conception / théorie manque - les mathématiques sont inutiles. Ce n'est qu'un outil. J'ai vu des concepteurs avec un niveau mathématique de 5e année tirer de bonnes économies. Ils ont simplement cartographié ce qu'ils voulaient faire logiquement et sont allés voir les maths (généralement les codeurs) pour les outils / conseils sur la façon de faire les bits mathématiques. Il parvient toujours à ne pas être évident pour tout le monde - Plus vous avez de problèmes avec le plan - plus vous verrez de maux de tête dans la construction. Il suffit de saisir un système et de le peaufiner, ce qui manque complètement. Si vous vous contentez de tout ce qui fonctionne en premier, ce n'est pas vraiment créatif.
helena4