JeuWeb - Crée ton jeu par navigateur
[PHP] Script 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 : [PHP] Script de combat (/showthread.php?tid=5878)



[PHP] Script de combat - Racktor - 22-12-2011

Bonjour a tous,

Cela fait très longtemps que je n'était pas venu déjà a l'époque je voulais faire un jeu en PHP mais dur, dur sans vraiment d'expérience.

Je pense dans la partie qui selon moi correspond le mieux, j’espère que j'ai fait le bon choix. Voila j'ai repris la programmation de mon projet de jeu de gestion de cité, je suis bien plus a même de réussir cette fois.

Alors j'ai pratiquement terminé la partie de gestion de la cité et j'ai un script de combat déjà fonctionnel mais c'est plus d'avis dont j'ai besoin.

Voir pour l'instant c'est plus un duel entre deux unités, assez basique mais en étoffant le script on peut facilement ajouter des compétences, ect..., enfin vous voyez le genre.

Mais je me tâte avec un système plus massif :
il y aurait des officiers qui aurait des compétences qui augmenteraient les caractéristiques de l'armé organisé en division, division qui serait constituée par la "noblesse" de la cité. Ca serait plus dans la logique,plus réel mais plus difficile a coder puisque je part de zéro :-D

Je dois décider ça maintenant parce qu’il me semble que le codage de ces deux solutions sera bien différent.

Voila j'aimerais avoir vos conseils.




RE: [PHP] Script de combat - php_addict - 23-12-2011

commence par te faire un simulateur de combat, ainsi tu pourra le réutilisé pour des combats réels

ensuite c'est à toi de voir, mais grosso modo c'est points OFF contre points DEF, produits en croix, et avec un petit exponentiel, plus y a de troupes et plus les dégats seront important, apres tu peut rajouter tout tes bonus off et def, soit par addition soit par multiplication...

là où ca peut être plus compliqué c'est si tu a des troupes qui sont spécialisée en def contre une type d'offensive


RE: [PHP] Script de combat - atra27 - 23-12-2011

détaillé un peu plus ce que tu voudrai faire
y à tellement de méthodes et de règles différentes pour faire un système de combat qu'on peut pas vraiment aider comme sa

donne nous les règles qui s!applique lors d'un combat

bon en général on fait

TANT QUE !replis et (!équipe1.estMort() ou équipe2.estMort())
POUR CHAQUE unitée attaquante
tirer sur cible au hasard
POUR CHAQUE unitée défendante
tirer cible au hasard
FIN TANT QUE

Autre solution
somme des attaques - somme de la défense =dégâts à repartir entre les unitées

perso J'aime moins cette méthode
c'est plus rapide mais on peut pas appliquer de bonus à (ou contre) une unitée particulière vu qu'on calcule de façon globale

et puis c'est moins marrant à concevoir et à programmer je trouve :-D


RE: [PHP] Script de combat - Sephi-Chan - 23-12-2011

La complexité du mécanisme dépend aussi de son échelle. Si ton jeu implique d'immenses armées, on ne peut pas imaginer un algorithme qui permet de gérer chaque unité. Si tu es plus sur un modèle d'escarmouche (quelques dizaines d'unités de chaque côté), alors tu peux permettre plus de granularité.

Pour Seelies, j'ai fais le choix d'avoir des bêtes qu'on peut dresser au combat afin de lui indiquer quoi cibler en priorité. En gros, l'algorithme trie toutes les bêtes impliquées par ordre de vitesse (les plus rapides agissent en premier) et les passe en revue. Pour chaque bête, on consulte son profil de dressage pour déterminer une cible et on résout l'attaque.



RE: [PHP] Script de combat - Racktor - 23-12-2011

Je vais illustrer par un exemple :

Voila se que donne mon script actuellement :
Code :
Tour n°1
Généralissime Geoges Thirm engage le combat
Généralissime Geoges Thirm inflige 5 pts de dégât au Commandeur Barnt Tormbure
Généralissime Geoges Thirm se fatigue !

Tour n°2
Commandeur Barnt Tormbure riposte !
Commandeur Barnt Tormbure inflige 3 pts de dégât au Généralissime Geoges Thirm
Commandeur Barnt Tormbure se fatigue !

Tour n°3
Généralissime Geoges Thirm risposte
Généralissime Geoges Thirm inflige 7 pts de dégât au Commandeur Barnt Tormbure
Généralissime Geoges Thirm se fatigue !

Tour n°4
Commandeur Barnt Tormbure riposte !
Commandeur Barnt Tormbure inflige 3 pts de dégât au Généralissime Geoges Thirm
Commandeur Barnt Tormbure se fatigue !

Tour n°5
Généralissime Geoges Thirm risposte
Généralissime Geoges Thirm inflige 22 pts de dégât au Commandeur Barnt Tormbure
Généralissime Geoges Thirm se fatigue !
Commandeur Barnt Tormbure est mort !

C'est tout bête c'est deux unités qui se tape dessus.

Moi ce que j'avais dans l'idée de faire pour des plus grosses batailles :
j'imagine un terrain de bataille sous forme de formulaire pour disposer les unités militaires.

Le terrain de bataille compterais plusieurs ligne mettons 2 pour simplifier le bazard:
on peut aussi ajouter la chose suivante : chaque ligne est divisé en 3 couloirs et les unités attaques les unités adverses devant elle (enfin ca aussi ca peut être modifié: on peut mettre de base 1/3 d'attaquer des ennemis sur la première ligne).

Pour l'instant nous n'avons que des divisions normales :
Précision par rapport a la mécanique du jeu :
dans chaque cité il y a différent type d'habitation, les habitants des domaines sont les habitants utilisés pour l'armée donc on a un chiffre bien définit qui peut pas être extravagant déjà parce que ces habitations sont très chères a entretenir mais aussi parce qu’il faut équiper l'armée.

L'équipement, l'entrainement de l'académie militaire, le moral, le nombre de soldat dans l'unité (avec un plafond a déterminer) déterminent les caractéristiques d'attaque et de def.

Bon logiquement dans ce schéma 2 ligne avec 3 couloir ça nous fait 6 divisions par joueur.

et a chaque division on peut affecter un officier.
L'officier c'est pas la même chose sa gestion est plus fine :

d'abord on le recrute, on l'entraine, il a des traits de caractère (compétences innées qui donne des malus ou des bonus) et des compétences qu'il peut apprendre à l'académie militaire, l'expérience ajoute aussi un bonus.

On peut aussi faire un système d'entrainement grâce a un instructeur qui est un officier a la retraite.

le niveau d'entrainement serait en fonction du niveau d’entrainement acquis pendant sa carrière militaire, et au fur et a mesure ses compétences diminueraient .

Voila les idées que j'ai, a la rigueur le plus dur sa serait les logiques de déplacement après je pense que c'est accessible pour moi.








RE: [PHP] Script de combat - Racktor - 27-12-2011

Je vais élargir ma réflexion a la partie militaire de mon jeu :

Pour avoir accès à la partie militaire il faudrait construire la fortification principale (château < forteresse < citadelle).

Les niveaux de fortification détermineraient les technologies pouvant être recherchées dans l'académie moyennant un niveau d'investissement (faible, moyen, élevé).

Les fortifications débloquées serait constructibles dans une sous partie a part.

L'académie militaire, une fois construite, permettrais alors d’entrainer les unités militaires.
L'entrainement des divisions serait assurées par l'instructeur (officier reconverti), et de rechercher les technologies.

Les divisions serait crées a partir des habitants des domaines de la cité. IL faudra payer ses unités, et les nourrir pour les maintenir prête au combat.
Les officiers seraient recrutés et leur niveau serait fonction de l'investissement en recrutement que vous aurez choisi.

L'officier avec la division gagnerait en expérience et en caractéristique en fonction des combats.

En ce qui concerne les combats :
Le niveau de la fortification principale et les technologies acquises permettraient de repérer les attaques ennemies. Le défenseur pourra organiser une escarmouche et attaquer, ses troupes bénéficieront d'un gain d'exp au combat, d'un bonus de moral, d’initiative, et l'ennemi verrait la défense de ses divisions diminuées.



RE: [PHP] Script de combat - Holy - 28-12-2011

(23-12-2011, 01:32 AM)Sephi-Chan a écrit : Pour Seelies, j'ai fais le choix d'avoir des bêtes qu'on peut dresser au combat afin de lui indiquer quoi cibler en priorité. En gros, l'algorithme trie toutes les bêtes impliquées par ordre de vitesse (les plus rapides agissent en premier) et les passe en revue. Pour chaque bête, on consulte son profil de dressage pour déterminer une cible et on résout l'attaque.

A titre personnel, j'ai le même type de fonctionnement. Seule différence, j'ai un ordre d'attaque basé sur des probabilités, et à côté de cela un ciblage d'exception pour certains bataillons (assassins, charognard, soutiens, ...). En termes de lisibilité, ça fonctionne assez bien et ça permet aux joueurs de facilement comprendre l'utilité d'une unité.

Exemple : Un bataillon d'archer à 75% de chance de cibler un bataillon de mêlée et 25% de chance de cibler un autre bataillon d'archer.
Un bataillon d'assassin cible prioritairement les bataillons d'en face qui ont la plus haute importance tactique (généralement les unités de soutien ou les héros).
Une unité de soutien soigne prioritairement les bataillons les plus faibles.

J'ai donc deux méthodes de ciblage qui se complètent et sont exclusifs.


RE: [PHP] Script de combat - Racktor - 29-12-2011

(28-12-2011, 10:38 PM)Holy a écrit :
(23-12-2011, 01:32 AM)Sephi-Chan a écrit : Pour Seelies, j'ai fais le choix d'avoir des bêtes qu'on peut dresser au combat afin de lui indiquer quoi cibler en priorité. En gros, l'algorithme trie toutes les bêtes impliquées par ordre de vitesse (les plus rapides agissent en premier) et les passe en revue. Pour chaque bête, on consulte son profil de dressage pour déterminer une cible et on résout l'attaque.

A titre personnel, j'ai le même type de fonctionnement. Seule différence, j'ai un ordre d'attaque basé sur des probabilités, et à côté de cela un ciblage d'exception pour certains bataillons (assassins, charognard, soutiens, ...). En termes de lisibilité, ça fonctionne assez bien et ça permet aux joueurs de facilement comprendre l'utilité d'une unité.

Exemple : Un bataillon d'archer à 75% de chance de cibler un bataillon de mêlée et 25% de chance de cibler un autre bataillon d'archer.
Un bataillon d'assassin cible prioritairement les bataillons d'en face qui ont la plus haute importance tactique (généralement les unités de soutien ou les héros).
Une unité de soutien soigne prioritairement les bataillons les plus faibles.

J'ai donc deux méthodes de ciblage qui se complètent et sont exclusifs.

Oui c'est une bonne idée, je la garde dans un coin de ma tête ^^


RE: [PHP] Script de combat - Racktor - 31-12-2011

Bon je donne quelque nouvelle sur l'avancement de mon script. C'est assez primaire pour l'instant ,pour l'instant,j'ai cela :
  • On regarde le formulaire de la bataille
  • On calcule les forces de chaque protagoniste au centre, sur la droite et sur la gauche
  • le combat s'engage : si il y a des unités de siège ou d’ingénierie, la fortification peut être attaquée.
  • la fortification attaque les divisions de l'attaquant un nombre de fois en fonction de ses caractéristiques
  • les divisions d'archer de l’attaquant riposte
  • les divisions d'archer du défenseur riposte
  • les divisions au cac de l’attaquant riposte
  • les divisions au cac du défenseur riposte
Voila en gros pour l'instant je vais ajouter les officiers maintenant et essayer d’améliorer tout ca ...