JeuWeb - Crée ton jeu par navigateur
Mon systeme 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 : Mon systeme de combat (/showthread.php?tid=1215)



Mon systeme de combat - LittleQI - 25-05-2007

Salut à tous,
Je crée un nouveau sujet sur le systeme de combat, car je vais uniquement parler du mien (h) dans ce post.
Voila, ça fait maintenant quelques mois que mon systeme de combat fonctionne et les joueurs se battent sans trop se plaindre, mais voila, il est loin d'etre parfait et j'aurais besoin de vos conseils pour l'améliorer.

Je vous explique un peut comment fonctionne le combat:

AU départ 2 armées, l'attaquant et le défenseur. Ces armées sont (pour l'exemple) composées de:
Attaquant => 300 samourais et 200 ninjas
Défenseur => 100 samourais et 50 ninjas

Le combat débute, je calcule le nombre de PA (points d'attaque) de chaque joueur pour ce tour:
300x10+200x5=4000 PA pour l'attaquant
100x10+50x5=1250 PA pour le défenseur

C'est maintenant au tour de l'attaquant d'attaquer le défenseur, dans cet exemple je tire un nombre au hasard entre 1 et 150 (100 samourais + 50 ninjas), si il est inferieur ou egal à 100 alors on tape les samourais avec 10% des PA sinon on tape les ninja avec aussi 10% des PA.
Et on refait cela jusqu'à ce qu'il y ai plus de PA ou que le défenseur soit mort.

Ensuite on refait la meme mais avec le défenseur qui attaque l'attaquant toujours celon le meme principe.

Et on recommence tout ça jusqu'à ce qu'un des deux soit mort ou alors qu'on a atteint 6 rounds.

Vous allez me dire que ça tient à peu pres la route, sauf une petite chose: la gestion des dégats. effectivement comment je calcule cela:
reprenons notre exemple, le defenseur tape sur les samourais de l'attaquant avec une force de 125, les samourais on chacun 2 PV (points de vie) (c'est pour l'exemple) , c'est la que le probleme se pose, je ne peut traiter individuellement les samourais, avec par exemple un tableau contenant les samourais, car en cas de millions d'unités, PHP me jettera tout simplement (sisi j'ai essayé lol). alors je calcule que les samourais ont au total 600PV, ils se font taper de 125, il reste donc 475PV, on divise maintenant par 2PV, ce qui nous fait 237 samourais. soit 63 morts.
Le probleme là dedans c'est qu'on part du principe que les 63 morts se sont tout pris dans la figure et que les 237 autres ont aucune egratignure (pas du tout réaliste). Ce qui pose d'autres problèmes, tout d'abord, aucune forme d'aléatoire, les combat donnent toujours le meme resultat, et deuxiemement, que l'attaquant ait eu 300 samourais ou 4.000.000 de samourais, il en aurait de toute façon perdu 63 vu qu'il aurait toujours pris 125PA dans la figure, du coup les combats sont rarement rentables Confused

Voila, si une bonne ame ayant réussi a comprendre mon charabiat aurait une idée sur ce qui ne va pas dans mon systeme de combat ou comment l'améliorer, je suis preneur.
Merci de m'avoir lu.


RE: Mon systeme de combat - Nambew - 25-05-2007

Je dois avouer que je n'aime pas cette logique pour des mêlées, dans l'exemple que tu décris, le joueur qui attaque peut réduire les effectifs des unités de l'autres joueurs sans subir aucune perte. Il en subira quand sa sera le tour de l'autre joueur, mais je trouve ça illogique.

Si le joueur-A attaque avec 300 Samouraïs et qu'il tue normalement 50 Ninja du joueur-B. Le joueur-B attaque ensuite avec 100 Ninja les 300 Samouraïs ce qui veut dire que les 50 qui sont morts n'ont fait aucun blessés du côté ennemi?!?!?!?!?

Pour ce qui est de gérer les points de vie, tu n'es pas obligé de gérer chaque unité séparément. Tu peux très bien enregistrer qu'il y a 263 Ninja et parmis ses 263, il y en a 30 avec 2PV et 15 avec 1PV.


RE: Mon systeme de combat - jo_link_noir - 26-05-2007

Nambew a écrit :le joueur qui attaque peut réduire les effectifs des unités de d'autres joueurs sans subir aucune perte. Il en subira quand sa sera le tour de l'autre joueur, mais je trouve ça illogique.

Si le joueur-A attaque avec 300 Samouraïs et qu'il tue normalement 50 Ninja du joueur-B. Le joueur-B attaque ensuite avec 100 Ninja les 300 Samouraïs ce qui veut dire que les 50 qui sont morts n'ont fait aucun blessés du côté ennemi?!?!?!?!?
j'imagine qu'il y a effet de surprise xD

_____________________
bon alors si j'ai comprit ton problème, tu veux un nombre de morts un peu aléatoire ?

dans ce qu'à, j'avais rien à faire alors j'ai pensé à un truc dans ce style, -->
par contre, ça ne fait que pour un type d'unité... à toi de modifier ^^
(aussi, j'sais pas ce que ça donne, j'ai pas testé, mais sur papier ça à l'air potable)

Code PHP :
<?php 
//nombre de soldats
$soldat = 500;
//leurs pv
$pv = 2;
//le total de pv pour tous le soldat de se type
$pv_toto = $soldat *$pv;
//attaque ennemi
$attack = 600;

//$soldat minimum qui meurt dans la bataille
$mort_obliger = $attack-$pv_toto+$soldat; //= 100

//égal 0 si en dessous...
if ($mort_obliger < 0)
{
$mort_obliger = 0;
}

//si tout les soldat meurs obligatoirement
if ($mort_obliger > $soldat)
{
$soldat = 0;
}
//sinon on fait les calcul pour savoir le nombre restant
else
{
$soldat -= $mort_obliger; //= 400
$attack-= $mort_obliger*$pv; //= 400

$max_mort = $soldat - ($soldat*$pv-$attack)/$pv; //=200
//choisi aléatoirement entre 0 et le nombre de mort maxi (ici 200)
$mort -= mt_rand(0, $max_mort);
//soldat restant
$soldat-= $mort;

//attaque non utililser
$attack -= $mort*$pv;
}



RE: Mon systeme de combat - Nambew - 26-05-2007

Oui, il peut y avoir un effet surprise qui donne l'avantage à celui qui attaque, mais c'est seulement dans le cas d'une embuscade et encore j'aurais du mal à croire que sur 50 morts, aucun n'ait eu le temps de réagir et de blesser des ennemis. Et pour parler d'armées de milliers de personne, je ne crois pas qu'il y a ait d'ambuscade possible. J'ai encore plus de mal à croire que les autres ninja reste impassible.

Et bon si les Ninja se font attaquer par les Samouraïs, mais qu'à son tour le joueur décide d'attaquer avec ses Ninjas les mercenaires à la place des Samouraïs. Les Samouraïs rentre dans le tas sans perte? Je trouve qu'il manque vraiment une notion de mêlée dans un tel système et donc que ce n'est pas très représentatif d'un champ de bataille.


RE: Mon systeme de combat - LittleQI - 26-05-2007

@mambew: les Points d'attaque de l'attaquant et du défenseur sont calculés avant le round donc c'est comme si les protagonistes attaquaient en meme temps, les 50 ninjas tués par l'attaquant auront donc eu le temps de taper Wink

@j-12: merci beaucoup pour ton script, je vais essayé de voir ce que cela donne en l'insérant ans le mien et en faisant quelques simulations, bien sur je vous tiens au courant.