20-04-2008, 06:54 PM
Le deuxième point noir de mon projet: les combats ^^
1. Description des règles à utiliser:
Les combats se déroulent par assauts successifs, amenant à la défaite (ou fuite) d'un des deux groupes opposés. Chaque assaut dure 6 secondes (pour vous donner une idée)
Les persos/monstres jouent par ordre d'initiative décroissante, et peuvent réaliser une action + déplacement court par assaut.
Actions possibles:
* rien
* frapper corps a corps avec arme
* frapper/immobiliser corps a corps à mains nues
* tirer à distance
* lancer/utiliser un sortilège/rune
* utiliser un objet (potion, parchemin...)
* changer l'inventaire (lacher l'arc pour prendre l'épée, au hasard)
* fuir
* déplacement long
Ce n'est pas un jeu où l'on a 12PA par 12heures, ou un truc du genre... on récupère 10PA/minutes. 1 action: 1PA ou plus.
2. Comment gérer ca?
Alors, c'est là qu'intervient la notion de compagnie (des joueurs qui forment un petit groupe pour aller a l'aventure). le groupe arrive sur la sous-carte, ensemble... un perso va engager un monstre et initier un combat.
phase1: initiation du combat
les persos a coté peuvent rejoindre le combat pendant un délais max de 2 minutes que l'engageur peut finir a tout moment. Les membres de la compagnie de l'engageur sont automatiquement admis. D'autres joueurs peuvent demander à entrer. L'engageur peut accepter ou non.
Coté monstre, si le monstre est isolé, c fait. Sinon, le reste de la meute/groupe est automatiquement inclus.
phase 2: combat
deux possibilités:
A. chaque joueur joue a tour de role (en gros, on passe la main à chaque joueur un après l'autre... 5 joueurs... en gros, on se tourne les pouces pas mal, je crois, c'est long, c chiant. (enfin, c'est mon avis))
Je ne suis pas cette voix, mais si vous trouvez que ca peut le faire, ben, je veux bien des idées d'implémentations, de comment gérer le temps libre... etc...
B. les joueurs décident de leur action tous en meme temps.
En gros, y a un timer sur le serveur... chaque joueur à 1 minute pour envoyer un ordre. Dès que c'est fait, le tour est résolu (on attend pas forcément la minute), et le résultat est envoyé à chacun, et le tour suivant commence. SI la minute passe sans choix validé, le joueur perd son tour.
phase 3: fin du combat
calcul XP, fouille des cadavres, etc...
durée max à 10 minutes, on quitte quand on veut, et on se fait éjecter sinon.
3. Implémentation
Ajax arrive a point nommé...
nouveau tour... on crée un timer en JS, pour le décompte du temps restant a afficher au joueur. Je ne met rien à jour tant que le joueur ne valide pas son ordre (a part le chat, bien sur). Une fois validé, l'ordre part vers le serveur. Soit c'est le dernier ordre qu'on attendait... le serveur éxécute le script de combat, et renvoit les infos, et le tour suivant commence. Soit, un autre joueur a pas encore répondu (le plus courant)... Que va faire le serveur?
peut-il bloquer la réponse jusqu'à ce que le dernier ai validé?
dois-je envoyer un "ordre recu"... et attendre quoi pour demander la suite? renvoyer une requete en ajax toutes les x secondes pour voir l'état
du tour?
enfin, bref: quelle serait pour vous la meilleure méthode à appliquer?
grand merci d'avance pour vos idées!
PS: applet java qui recoit en UDP, j'y ai pensé, mais ca passerait pas sur OVH, a ce que j'ai cru lire.
1. Description des règles à utiliser:
Les combats se déroulent par assauts successifs, amenant à la défaite (ou fuite) d'un des deux groupes opposés. Chaque assaut dure 6 secondes (pour vous donner une idée)
Les persos/monstres jouent par ordre d'initiative décroissante, et peuvent réaliser une action + déplacement court par assaut.
Actions possibles:
* rien
* frapper corps a corps avec arme
* frapper/immobiliser corps a corps à mains nues
* tirer à distance
* lancer/utiliser un sortilège/rune
* utiliser un objet (potion, parchemin...)
* changer l'inventaire (lacher l'arc pour prendre l'épée, au hasard)
* fuir
* déplacement long
Ce n'est pas un jeu où l'on a 12PA par 12heures, ou un truc du genre... on récupère 10PA/minutes. 1 action: 1PA ou plus.
2. Comment gérer ca?
Alors, c'est là qu'intervient la notion de compagnie (des joueurs qui forment un petit groupe pour aller a l'aventure). le groupe arrive sur la sous-carte, ensemble... un perso va engager un monstre et initier un combat.
phase1: initiation du combat
les persos a coté peuvent rejoindre le combat pendant un délais max de 2 minutes que l'engageur peut finir a tout moment. Les membres de la compagnie de l'engageur sont automatiquement admis. D'autres joueurs peuvent demander à entrer. L'engageur peut accepter ou non.
Coté monstre, si le monstre est isolé, c fait. Sinon, le reste de la meute/groupe est automatiquement inclus.
phase 2: combat
deux possibilités:
A. chaque joueur joue a tour de role (en gros, on passe la main à chaque joueur un après l'autre... 5 joueurs... en gros, on se tourne les pouces pas mal, je crois, c'est long, c chiant. (enfin, c'est mon avis))
Je ne suis pas cette voix, mais si vous trouvez que ca peut le faire, ben, je veux bien des idées d'implémentations, de comment gérer le temps libre... etc...
B. les joueurs décident de leur action tous en meme temps.
En gros, y a un timer sur le serveur... chaque joueur à 1 minute pour envoyer un ordre. Dès que c'est fait, le tour est résolu (on attend pas forcément la minute), et le résultat est envoyé à chacun, et le tour suivant commence. SI la minute passe sans choix validé, le joueur perd son tour.
phase 3: fin du combat
calcul XP, fouille des cadavres, etc...
durée max à 10 minutes, on quitte quand on veut, et on se fait éjecter sinon.
3. Implémentation
Ajax arrive a point nommé...
nouveau tour... on crée un timer en JS, pour le décompte du temps restant a afficher au joueur. Je ne met rien à jour tant que le joueur ne valide pas son ordre (a part le chat, bien sur). Une fois validé, l'ordre part vers le serveur. Soit c'est le dernier ordre qu'on attendait... le serveur éxécute le script de combat, et renvoit les infos, et le tour suivant commence. Soit, un autre joueur a pas encore répondu (le plus courant)... Que va faire le serveur?
peut-il bloquer la réponse jusqu'à ce que le dernier ai validé?
dois-je envoyer un "ordre recu"... et attendre quoi pour demander la suite? renvoyer une requete en ajax toutes les x secondes pour voir l'état
du tour?
enfin, bref: quelle serait pour vous la meilleure méthode à appliquer?
grand merci d'avance pour vos idées!
PS: applet java qui recoit en UDP, j'y ai pensé, mais ca passerait pas sur OVH, a ce que j'ai cru lire.
attendez, je cherche...