Quelle est la solution de rechange aux dommages causés par les égratignures pour résoudre le blocage du combat?

37

Les dommages par égratignure sont un mécanisme de jeu dans lequel toute attaque réussie inflige toujours un minimum de dégâts. Ceci est souvent utilisé dans les systèmes de combat soustractifs, où la défense est directement soustraite aux dégâts causés par un attaquant. Par conséquent, la cible subira toujours des dégâts minimes.

L'inconvénient d'un tel système, du moins pour moi, c'est que c'est un bidouillage. Il faut une formule simple comme Damage = Attack - Defenseet il se transforme en un plus complexe ( un peu) un: Damage = max(Attack - Defense, 1).

Je pense aussi que cela nuit aux compétences d’un joueur dans le développement de son personnage / etc. Peu importe le nombre de bonus de défense qu'ils reçoivent, chaque attaque fera de petits dégâts. Alors, pourquoi avoir votre défense si haute, si cela ne veut rien dire?

De plus, cela encourage maintenant l’utilisation de nombres plus importants pour la puissance et les dégâts, de sorte que les dommages causés par les rayures sont vraiment négligeables. Après tout, si le minimum de dégâts est de 1 et que vous n’avez que 10 CV, c’est toujours 10% de votre santé. Même avec 20 CV, c'est 5%. Et je préférerais éviter d’utiliser des chiffres plus importants comme celui-là, à moins que ce ne soit absolument nécessaire.

Cependant, il existe un avantage très important des dommages causés par les rayures: cela résout le problème de l'impasse.

Le blocage se produit lorsqu'aucun des camps n'est capable de causer des dommages à l'autre. Si vous investissez toutes vos ressources dans la défense et très peu dans l'attaque, votre personnage ne subira peut-être pas de dégâts, mais il ne sera pas en mesure de faire grand chose non plus. Ainsi, vous pourriez tomber sur une rencontre où aucune des deux parties ne sera capable d’infliger des dégâts. Le combat se poursuivra ainsi pour toujours. C'est surtout si vous n'avez pas de mécanismes aléatoires comme des coups critiques (que je déteste aussi).

Au moins avec les dommages causés par les rayures, quelqu'un finira par gagner. Ce ne sera peut-être que celui avec le plus grand nombre d'attaques ou le plus grand nombre d'attaques, mais la bataille se terminera.

J'aime donc avoir un système de combat où il y aura toujours un résultat. Mais je n'aime pas avoir les dommages causés par les rayures. Quelles sont mes alternatives?

Des alternatives qui n'impliquent pas de rouler des nombres aléatoires; Je veux que le combat soit déterministe à 100%. Si la même bataille est menée, le même résultat doit se produire.

Si vous voulez des détails sur le gameplay, pensez en termes de combat au tour par tour, où le combat peut être automatisé (vous concevez vos forces, puis vous les opposez aux autres).

Nicol Bolas
la source
8
Pourriez-vous créer un système de blindage en détérioration (par rencontre) pour résoudre le problème de blocage?
Tetrad
1
Je vous suggère de jeter un coup d'œil à "Modèles de conception de jeux de rôle réussis": rpg-design-patterns.speedykitty.com/doku.php/start
Exilyth
3
Position de l'avocat du diable: au lieu de forcer les joueurs à jouer de manière sûre, pourquoi ne pas les laisser décider s'ils veulent utiliser des constructions stupides qui peuvent aboutir à une impasse?
Patrick Hughes
3
@PatrickHughes: Parce que je crois que la conception du jeu est mauvaise pour permettre au joueur de se mettre dans une mauvaise position sans avertissement préalable. Et même avec un préavis, ils doivent pouvoir s'en sortir une fois qu'ils se rendent compte que cela se produit. Si leurs choix de conception de personnage ne peuvent être repris, ils doivent alors savoir à l'avance qu'ils ne se font pas de foutaises en permanence en faisant des choix qui semblaient être une bonne idée à l'époque.
Nicol Bolas

Réponses:

41

Vous pourriez mettre en place un système de fatigue / endurance. De plus en plus d'attaques sont effectuées, le joueur devient de plus en plus fatigué, ce qui signifie qu'il est incapable de maintenir une défense aussi efficace (le bras du bouclier commence à se sentir soudainement très lourd après avoir frappé l'épée 50 fois) lorsque la fatigue augmente, la défense tombe. Cela signifie qu'un joueur qui a développé un bon caractère ne subira pas de dégâts lors de rencontres rapides, mais des combats prolongés entraîneront une augmentation des dégâts évitant une impasse.

Sutty1000
la source
21

Cela semble être une question très ouverte. Solutions (qui ne sont pas déjà mentionnées) pour éviter les blocages:

  • Autoriser les impasses comme résultat final viable. C'est la solution la moins attendue ou la plus typique. Dans un jeu RTS, par exemple, il peut s'agir d'un cessez-le-feu inconfortable ou d'un conflit tendu mais discret dans un équilibre violent.
  • Une limite de temps avec des liens admissibles
  • Une limite de temps dans laquelle le premier hit / score / point après la limite gagne (mort subite / heures supplémentaires)
  • Dangers aléatoires dans le système (à la bombe dans Super Smash Bros ). Cela change le centre de la situation d'attaque à la défense.
  • Tout facteur externe susceptible de déséquilibrer le système (par exemple, un troisième agent hautement endommagé et faiblement blindé, un accord des deux côtés pour "se battre en duel" sans toute cette armure)
  • Défense en% réduite (probablement la solution la plus simple, tant que la défense est limitée)
  • Compétences ou tactiques qui modifient la dynamique du jeu (choix qui ne causent pas de dégâts, tels que compétence Cape / Invisibilité)
  • Moyens de faire beaucoup plus de dégâts (coups critiques classiques, bonus de furtivité, bonus de hauteur, bonus de terrain, une capacité qui transforme des parties aléatoires du sol en lave)
  • Moyen d'endommager ou d'abaisser l'armure ou d'infliger des blessures directement destinées aux personnages à haute défense (habileté qui inverse l'armure dans le calcul, afin que les agents dotés d'une défense inférieure reçoivent moins de dégâts)
  • Objets ou compétences à usage limité (par exemple, bombes, capacités puissantes mais drainantes). Utile uniquement s'il existe des objectifs à long terme, au-delà de l'impasse, permettant d'équilibrer une utilisation limitée
  • Mettre fin au combat artificiellement (option classique "Flee")
Attackfarm
la source
7

En variante, vous pouvez ajouter une accumulation de plaie. Certes, une hache en cuivre géante ne pénétrera pas dans une armure lourde en acier, mais causera des dégâts contondants et pourrait même casser des os. La même chose est vraie pour les balles et les gilets.

Chaque fois qu'un personnage est touché, convertissez une partie des dégâts perçants et réducteurs en dégâts contondants, qui s'accumulent. Après un certain seuil (qui dépend de l'endurance, par exemple), les dégâts cumulés vont interférer avec les compétences de combat du personnage. Quelques options ici:

  • L'armure pourrait être moins efficace lorsque vous frappez dans les mêmes parties du corps.

  • Blessures importantes: lésions périodiques, faiblesse due à la douleur.

  • Blessures graves: perte de conscience à court terme (rendant le personnage très vulnérable).

  • Blessures extrêmes: perte permanente de statistiques (si le personnage parvient à survivre).

Connexes: Mécanique des dégâts dans la forteresse naine

Ombres sous la pluie
la source
2
J'allais suggérer de donner à chaque arme des dégâts contondants qui ne peuvent pas être bloqués par une armure. Les épées et les dagues auraient une petite capacité de matraquage, mais les haches et les masses seraient très efficaces.
Jmegaffin
5

Mettez en œuvre différents types de dommages, avec des armures qui ne protègent que contre certains types de dommages. Par exemple, dommages cinétiques, dégâts acides, dégâts d’incendie, etc. Aucune armure ne devrait protéger de chaque type de dommage.

Les utilisateurs pouvaient superposer leurs armures pour se protéger contre tous les types de dommages, mais ils ne pouvaient pas se protéger contre tous les types de dommages en même temps. Cela met également en œuvre une stratégie dans les batailles, où les joueurs doivent changer de type de dégâts pour passer à travers les différentes couches d'armure.

MichaelHouse
la source
4

Vous pourriez simplement ne pas avoir de statistiques de défense et simplement donner à de plus grands ennemis une plus grande puissance. Je sais que vous voulez éviter des nombres gigantesques, mais si vous voulez un jeu déterministe à tour de rôle dans lequel les attaques ne sont pas basées directement sur les données des joueurs (aucune chance d'erreur humaine de gâcher l'attaque), la statistique de défense semble un peu inutile. ainsi que.

Si vous êtes préoccupé par l'aspect de la présentation, vous pouvez décomposer la HP en deux pépites Hearts ou Health EG 100 HP = 1 cœur. Les cœurs commencent à noircir lorsqu'un personnage perd des PV, puis disparaissent complètement. De cette façon, il est plus facile à comprendre pour le joueur que 129301239103123hp, mais vous n'avez pas à vous soucier d'équilibrer une équation magique.

Si le réalisme vous inquiète, vous pouvez toujours l’animer de façon à donner l’impression que la cible de l’attaque bloque avec succès ou qu’elle est légèrement rayée jusqu’au coup mortel.

Lewis Wakeford
la source
1
" Si vous voulez un jeu déterministe, basé sur des tournants, dans lequel les attaques ne sont pas basées sur la saisie directe des joueurs [...], la statistique de défense semble également un peu inutile. " La défense n'est pas basée sur le concept de "chance à Mademoiselle". Cela ressemble plus à la réduction des dégâts dans D & D, pas à THAC0 (ou peu importe comment on l'appelle ces jours-ci). Défense signifie qu'une attaque de 40 dégâts peut être réduite à 10 dégâts si vous avez 30 points de défense. Je ne vois pas en quoi cela peut être "inutile".
Nicol Bolas
1
Je sais que le calcul est un peu différent, mais en réalité, il n'y a pas beaucoup de différence en termes de jeu entre donner à un personnage une quantité proportionnelle de points de vie et faire en sorte que les dégâts soient réduits d'un certain montant. Pas s'il doit toujours y avoir un moyen d'infliger des dégâts à une cible. EDIT: Cela suppose qu’aucune attaque spéciale n’ignore la défense, ni aucun autre modificateur de jeu.
Lewis Wakeford
Avoir une statistique de défense soustractive vous donne quelque chose de plus que Hp (en plus de tout ce que vous avez en dehors, comme les attaques spéciales ou les modificateurs). Il crée une stratification entre les utilisateurs endommagés dans le temps et les utilisateurs occasionnant des dégâts importants. Un personnage qui attaque plusieurs fois mais avec des dégâts moindres va à l'encontre d'un personnage à haute défense, tandis qu'un personnage plus lent et à plus gros dégâts fera plus de dégâts avec le temps. De simples points de vie ne créeront pas cette stratification.
Nicol Bolas
4

Ajouter un mécanicien usé pour la défense. Faire chaque attaque légèrement réduit la défense de la cible.

Finalement, même une attaque faible épuisera suffisamment la défense de la cible pour infliger des dégâts réels.

Philipp
la source
3

Si vous êtes d'accord pour sortir du monde des nombres entiers et que vous souhaitez améliorer le système de soustraction, vous pouvez utiliser l'algorithme de réduction des dégâts de Warlords Battlecry III:

damage = attack

while DR > 0:
    usedDR = DR
    if DR > damage
        usedDR = damage
    damage = damage - usedDR * 0.5
    DR = (DR - usedDR) / 2

HP = HP - damage

C'est la fonction qui se comporte de manière très similaire au pseudocode ci-dessus:

damage(attack, DR) = attack * 2 ^ -(DR/attack)

Lorsque DR est inférieur à l'attaque (dégâts entrants), il se comporte comme l'attaque - k * DR où k est égal ln(2)à 0,693 ( pour être exact). Lorsque DR est proche de ou plus grand, les dégâts entrants sont divisés par deux DR/attack. Par exemple, pour DR = 30 et attaque = 10, les dégâts seraient de 1,25 (attaque divisée par deux en 3).

Cela peut sembler plus compliqué et plus difficile à évaluer par l’homme, mais il n’est pas piraté et les modifications des deux paramètres sont pertinentes. Si l'attaquant gagne un bonus de puissance d'attaque ou si le défenseur gagne ou perd le RD même ne serait-ce que par petites quantités, les dégâts en résultant changeront.

Empereur Orionii
la source
1

Utilisez des flotteurs.

Même si vous présentez un nombre entier HP au joueur, utilisez float pour hp et float pour les dégâts.

J'utilise actuellement des classes d'armures fractionnaires, où une armure de 1,0 est invincible et une armure de 0,0 signifie "prend tous les dégâts". Les dommages sont réduits comme suit:

float hpReduction = hp - dmg*(1.f - armor) ;

Cette formule a pour effet de permettre "le double dommage" en mettant l'armure à -1.

J'ai également classé les dommages en catégories, voir les types de dommages par commotion / explosion de Starcraft, ou le système de type de dommages d'Eve pour un exemple.

Alors maintenant, un petit lutin égratignera votre armure de classe 99 qui finira par vous tuer par Cherry Tap , mais les attaques sembleront ne pas causer de dommages au joueur prochaine attaque ..)

bobobobo
la source
0

Un graphique de compétences pourrait mettre certaines compétences en matière de dégâts comme des conditions préalables pour des compétences défensives de niveau supérieur afin de réduire la capacité d'un joueur à créer des formations hautement asymétriques.

Les coups critiques peuvent être endommagés tant que la défense n'est pas ridiculement élevée. Si vous les rendez périodiques plutôt que aléatoires, vous avez toujours un combat déterministe.

Après un certain nombre de coups manqués, vous pouvez automatiquement réduire la vitesse d'attaque au profit de chances de coup plus élevées et de dégâts plus importants. Votre personnage ultra-rapide à gratter faisait dix attaques par seconde; Désormais, après quinze attaques ne causant aucun dégât, il en subit trois par seconde à + 50% et + 200% des dégâts. Cela ressemble aux coups critiques, mais c'est plus rapide pour ce genre de situation.

Vous pouvez utiliser une réduction des dégâts basée sur le pourcentage d'armure, mais pour la rendre plus intéressante qu'un autre moyen de renforcer votre HP maximum, le pourcentage de réduction peut être plus élevé pour les coups plus faibles. Par exemple, réduction de 90% pour 1-20 CV de dégâts, 60% pour 20-30, et 30% pour tout le reste.

Enfin, ne vous inquiétez pas des grands nombres. Ils vous donnent un degré de contrôle beaucoup plus fin que les petits. Avoir un personnage de niveau 1 commençant avec 100 points de vie signifie que vous pouvez avoir quelque chose qui le tue en sept coups, mais pas cinq. Cela signifie que vous pouvez avoir des dégâts empoisonnés et d'autres effets sur le temps qui ne sont pas outrageusement dévastateurs (ainsi que d'autres, si vous voulez). Si vous n'aimez pas afficher de grands nombres, trouvez un moyen de ne pas les afficher.

Dhasenan
la source
0

Vous dites que vous voulez qu'il y ait toujours une résolution, mais est-ce que cela doit être une victoire?

Considérez l'approche utilisée par les dominions : au tour 50, l'attaquant déroute automatiquement. Au tour 75, le défenseur déroute automatiquement. (Une déroute ne fonctionne pas automatiquement - certaines unités sont immunisées contre le routage et même si une unité immobile déroute, elle ne peut pas réellement partir.) Au tour 100, tout ce qui reste est tué.

Bien que je ne sois pas d’accord avec la manière exacte dont il fonctionne (il existe des situations où il faut tout simplement trop de temps pour tuer l’autre côté), l’idée de base reste valable.

Ce que je suggérerais:

Regardez une mesure de la puissance de chaque côté. (Les points de frappe sont un point de départ évident, mais soyez prudents, Dominions a un problème à cet égard où la "perte" de points de frappe qui n’a pas de sens est comptabilisée - changement de forme, invocation, etc. Même pas prendre.) Gardez une trace de la valeur minimale atteinte et notez combien de tours il a été depuis qu'un nouveau minimum a été défini. Si cela dure trop longtemps sans qu'un nouveau minimum ne soit défini, vous vous retrouvez dans une impasse et l'attaquant doit battre en retraite.

Loren Pechtel
la source
0

Une alternative que je n'ai pas encore vue est que, comme votre valeur d'armure rend l'attaque négative, vous pouvez ajouter un peu de RNG pour un vrai bloc:

const stratchDamage = 1;
var armour = 10; 
var blockCount = 0;

function registerAttack (incomingAttack)
{
    var incomingDamage = incomingAttack - armour;

    // Nothing unusual, deal damage
    if( incomingDamage > 0 ) 
    {
        dealDamage(incomingDamage);
    } 

    // Armour cancels out attack, deal scratch damage
    else if( incomingDamage == 0 ) 
    {
        dealDamage(scratchDamage);
    }

    // Armour over attack value, check if can block
    else
    {
        var trueBlockChance = armour - incomingDamage;

        // blockCount starts at 0, will always block first attack
        if( trueBlockChance  > blockCount ) 
        {
            // Can technically do nothing, or trigger block animations etc
            block();
            blockCount ++; // Increment block so they can't block forever
        }
        else
        {
            dealDamage(stratchDamage);
            blockCount = 0;
        }
    }
}

Plus le déficit de dégâts après l'armure est pris en compte, plus le personnage peut bloquer d'attaques avant de subir de nouveaux dégâts.

Cela donne un peu plus d’échelle aux statistiques défensives sans les rendre invulnérables, mais permet également aux attaques de passer à travers ce mécanisme si vous le souhaitez et évite naturellement les blocages.

Les combats peuvent prendre beaucoup de temps si vous avez accumulé des statistiques dans votre défense avant l'offensive, mais cela finira par y arriver.

Tom 'Blue' Piddock
la source
Citation de OP: Je veux que le combat soit déterministe à 100%. Cela ne permet pas un combat déterministe à 100%.
Charanor
Ensuite, le bloc peut également être activé à tour de rôle. Pour chaque niveau de trueBlock situé au-dessus d’une attaque, l’ennemi doit l’attaquer à de nombreuses reprises pour obtenir des dégâts égratignés. La même idée peut s'appliquer.
Tom 'Blue' Piddock
@Charanor - a ajusté la réponse pour qu'elle soit déterministe à 100%.
Tom 'Blue' Piddock
-1

Beaucoup de jeux de combat en 3D évitent les dommages causés par les rayures. Tekken et Soul Calibur 2 en sont des exemples. Ils évitent cela en rendant difficile la mise en place d’une défense parfaite. Certaines attaques sont tout simplement trop rapides pour y réagir. Je pense que c'est une très bonne solution.

Daniel Kaplan
la source
-1

Je pense que réduire l'efficacité de la Défense n'est pas une bonne option. Dépower un joueur conduit à une mauvaise expérience de jeu. Pourquoi ne pas aller dans le sens inverse?

Pourquoi ne pas renforcer l'attaque au fil du temps. Cela augmente les dommages causés par les rayures avec le temps, ce qui réduit l'incitation au blocage. En milieu de partie, un personnage peut en tuer un autre tout en gémissant sur lui pendant sa défense.

Certains fichiers pnp implémentent un "mécanisme de tension". Chaque tension de tour augmente de un. Tous les jets ont le modificateur ajouté de la valeur de tension, poussant la bataille à sa fin.

Une autre idée, issue de jeux de combat, est une attaque qui passe par la défense. Je ne sais pas si votre jeu est au tour par tour ou en temps réel, mais cette attaque peut également ouvrir l'adversaire à un combo ou désactiver temporairement son aptitude ou certaines de ses capacités.

Je crois que le truc n'est pas de sous-alimenter la défense. Faites d’autres options aussi bonnes que la défense ou réduisez le nombre de fois où la défense est une bonne option.

Vasco Correia
la source