JeuWeb - Crée ton jeu par navigateur
Formules de combat - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Gameplay, gamedesign (https://jeuweb.org/forumdisplay.php?fid=48)
+--- Sujet : Formules de combat (/showthread.php?tid=3959)

Pages : 1 2 3


Formules de combat - Gabriel - 10-05-2009

Voici un problème épineux auquel je suis confronté : les formule de combats

Les joueurs possèdent 2 carac : l'attaque et la fuite (pas très original ^^)

Prenons un exemple : J1 vs J2

Caractéristiques de J1 : attaque : 250, défense : 200
Caractéristiques de J2 : attaque : 300, défense : 100

J1 et J2 s'attaquent et J1 fait plus de dégâts à J2 que celui ci ne lui en fait car bien qu'il est un peu moins d'attaque, il a une bien meilleur défense qui lui permet d'encaisser moins de dégats

Mais quelles formules adopter.... ça je ne sais pas

Si vos avez un système de combat du même typê dans votre jeu, comment avez vous résolu le problème ?

Merci d'avance pour vos idées !


RE: Formules de combat - Globe - 10-05-2009

Bah là c'est vraiment à toi de trouver comment tu vas déterminer l'issue du combat. Est ce que tu comptes mettre un facteur de hasard ? Sinon là tu peux tout simplement déterminer si une attaque plus puissante fait du combattant un guerrier plus rapide, il possède ainsi l'initiative c'est donc le premier qui frappe si son premier coup tue l'adversaire c'est la fin du combat. Sinon tu peux faire la différence de valeurs entre l'attaque du premier combattant et la défense du second.
J1 Attaque (250) - J2 Défense (100) = 150
J2 Attaque (300) - J1 Défense (200) = 100

Le joueur 1 remporte ainsi le combat. Ton système est assez simple donc les choix sont limités, si tu ne prend que deux valeurs.


RE: Formules de combat - Zamentur - 11-05-2009

S on considère qu'un combat n'a pas une issue certaine à 100% il est aussi possible d'ajouter une part variable à tous çà via mt_rand()...


RE: Formules de combat - wild-D - 11-05-2009

tu peux aussi décider que le combat se déroule sur plusieurs "rounds", pour affiner le déroulement du combat.
Avec par exemple un système où la défense faiblis d'un facteur dépendant des "dégâts" encaissé au tour précédent (au hasard un combat = 5 round, si pas de vainqueur par KO, càd dire déf à zéro, on a égalité (ou tu donne la victoire au défenseur ou à l'attaquant selon quelle type de stratégie tu préfère favoriser); et par exemple 20% des dégâts en perte de déf par round -on a donc à la fin une perte de 100%-). Et si les 2 tombe au même round: défaite ou victoire ou égalité pour les 2.

je reprend les valeur de globe:
1er round:
J1 Attaque (250) => def de J2 passe à 100 - 50 = 80
J2 Attaque (300) => J1 Défense = 200 - 60 = 140

2e round:
J1 Attaque (250) => J2 Défense 50 - 50 = 0
J2 Attaque (300) => J1 Défense = 140 - 60 = 80

J2 KO, J1 gagne.

pour ajouter ou pas un facteur aléatoire: il faut aussi voir: si chacun connait les cara de ses adversaires (info visible sur la carte/profile ennemi) ou pas ça aura plus ou moins d'intérêt. De même c'est à toi de voir si tu veux un jeu déterministe et tactique; ou un jeu plus proche d'un jeu de hasard, ou on tire à pile ou face.


RE: Formules de combat - Gabriel - 11-05-2009

Mon système actuel est basé sur ce que globe propose
Attaque - défense_adversaire

Dans mon jeu, lorsque un joueur gagne un niveau, il peut augmenter son attaque et sa défense un petit peu
Le problème que cela pose, c'est que de ce fait, un joueur de niveau 11 sera incapable de battre un joueur de niveau 12 même si celui ci n'a qu'1 PV ! (car son attaque et sa défense seront légèrement inférieure)

Certes il y a de l'aléatoire mais si on calcule la différence on obtient une valeur négative et donc l'aléatoire ne change rien dans se cas de figure.

C'est pour cela que je sollicitait votre aide car je ne sais pas quoi faire pour régler ça !


RE: Formules de combat - Globe - 11-05-2009

Je te conseillerais de complexifier ton système et de permettre la modification au choix au level up de plusieurs caractéristiques.
Force, Résistance, Esquive, Parade, Vitesse...
Tu calcules l'initiative par un rapport Force Vitesse, tu donnes au level up un certain nombre de points de compétence à répartir, plus la compétence est haute plus les niveaux coûtent cher. Après tu rajoutes du hasard, une chance de coup critique, une chance de rater ses coups... Ça reste ainsi des formules simples à réaliser mais plus réalistes et qui laissent plus de libertés aux joueurs.


RE: Formules de combat - Gabriel - 11-05-2009

c'est sur que je cherche un système de combat ou le joueur ne se contenterais pas de cliquer sur "attaquer" jusqu'à la fin...

L'idée de donner des points à répartir est bonne je vais surement la prendre en compte mais dans ma prochaine version car pour l'instant j'ai qqch qui marche à peu près donc je vais plutôt essayer de finir/faire d'autres scripts nécessaire au fonctionnement du jeu !

Par contre si quelqu'un a une idée pour qu'un joueur d'un niveau inférieur à son adversaire puisse tout de même lui infliger un peu de dégâts je suis preneur Wink


RE: Formules de combat - Delkaes - 11-05-2009

si tu veux avoir de bonnes idées regarde les jdr papier, matte les formules de combat etc et reprend les à ta sauce.


RE: Formules de combat - Zamentur - 12-05-2009

(11-05-2009, 05:47 PM)Gabriel a écrit : Dans mon jeu, lorsque un joueur gagne un niveau, il peut augmenter son attaque et sa défense un petit peu
Le problème que cela pose, c'est que de ce fait, un joueur de niveau 11 sera incapable de battre un joueur de niveau 12 même si celui ci n'a qu'1 PV ! (car son attaque et sa défense seront légèrement inférieure)

Certes il y a de l'aléatoire mais si on calcule la différence on obtient une valeur négative et donc l'aléatoire ne change rien dans se cas de figure.
J'ai du mal à comprendre pourquoi l'aléatoire ne change rien?


RE: Formules de combat - Gabriel - 12-05-2009

Code :
$aléatoire = rand(1,5) //dégats du simple au quintuple (j'exagère pour qu'on voit bien)

$dégats_totaux = ($attaque_joueur - $defense_adversaire)*$aléatoire
Si $attaque_joueur - $defense_adversaire est négatif (càd que l'adveraire est plus fort que l'attaquant) alors avec l'aléatoire les dégats seront toujours négatifs !

Actuellement si les dégâts sont négatifs je les mets égaux à 0 grâce à un "if" donc pour moi ça ne change rien

Delkaes >> qu'est ce que tu appelles un JdR papier ?