JeuWeb - Crée ton jeu par navigateur
modélisation système de combat complexe - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : modélisation système de combat complexe (/showthread.php?tid=7507)



modélisation système de combat complexe - fortz - 22-11-2015

Bonjour à tous,
Je suis actuellement en train de créer un jeu en ligne par navigateur à la Ogame, Travian, Grepolis, etc... Je me heurte cependant à un problème de taille : la modélisation de mon système de combat en orienté objet. Je vais vous détailler mon système de combat (et élargir un peu afin que vous compreniez davantage).

Le joueur dispose de champions qui ont des capacités et des caractéristiques (d'attaque, de défense et de soutien). Chaque joueur peut améliorer ses champions à l'aide d'un arbre de technologie et donc débloquer de nouvelles capacités. De plus, chaque champion peut monter de niveau au fil des combats auxquels il participe et donc gagner en puissance.
Lorsqu'un joueur veut lancer un duel face à un autre, il doit préalablement choisir une composition de champions. Il a la possibilité de choisir le nombre de champion qu'il mettre en jeu (ainsi on se retrouve avec des 3vs3 ou 4vs4 jusqu'à 8vs8 au maximum). Une fois la composition sélectionnée, le joueur sélectionne l'intervalle d'heures entre deux tours (et oui, ce sera un combat en tour par tour). Par exemple, si il choisit 12h, il aura 12h pour jouer son tour et son adversaire de même.
Une fois ces paramètres fixés, il lance une recherche d'adversaire qui va lui fournir au bout d'un certain temps un adversaire d'un niveau relativement similaire au sien et donc lancer un duel entre ces deux joueurs (un peu comme la recherche de guerre de clan dans Clash of Clans pour ceux qui voient). Ensuite le système va choisir (disons aléatoirement) le premier joueur qui jouera son tour. Il aura alors un temps limité pour jouer son tour et pourra le "rejouer" autant de fois qu'il le veut durant cet intervalle de temps. Chaque joueur dispose d'un certain nombre de Points d'Actions qui lui permettent de réaliser les actions qu'il veut avec les champions qu'il veut. Il peut alors décider de se déplacer, de soigner, d'attaquer avec une certaine compétence, etc... (un système à la Dofus, sauf que lorsque tu as fini de jouer ton tour, donc utiliser tous tes PA, tu as la possibilité de le rejouer si tu sens que tu aurais pu mieux faire). Une fois l'intervalle de temps entre deux tours écoulée, le système prend en compte le dernier tour effectué par la personne (donc sa dernière tentative) et c'est alors à l'adversaire de jouer.

Le système étant assez complexe, il est possible que j'ai oublié des détails et que vous n'ayez pas tout compris, n'hésitez pas à me poser des questions, j'y répondrais avec plaisir.

Si vous voulez un exemple concret, essayez de vous imaginer sur une map de Dofus avec un certain nombre de personnages à jouer. Vous avez disons 12h pour jouer votre tour. Vous utilisez faites attaquer/bouger/soigner vos personnages jusqu'à ne plus avoir assez de PA. Si ce tour ne vous plaît pas vous pouvez alors "l'effacer" et le rejouer jusqu'à que vous trouviez que votre tour est optimisé.

Cordialement, merci pour votre aide !


RE: modélisation système de combat complexe - Xenos - 22-11-2015

Salut,

perso, je trouve cela parfaitement clair et bien pensé. Je n'ai rien à redire sur ta conception. Il faudra quand même voir à l'usage ce que donneraient des tours de 12h: entre la plage 10h-22h et la plage 22h-10h, l'un des deux joueurs pourrait être avantagé (la nuit mange le temps de l'autre joueur). Le même problème se poserait pour des tours d'1h (le joueur risque de rater ses tours entre 22h et 6h du matin), mais dans ce cas, tu pourras toujours mettre des "horaires ouvrés"; genre, que chaque joueur puisse dire à quelle heure il est présent, et donc son tour de jeu se sera que sur cette plage horaire-là (avant cette plage horaire, son tour est "freezé": il ne peut pas jouer et doit attendre l'heure de jeu qu'il a fixée).


RE: modélisation système de combat complexe - fortz - 22-11-2015

Bravo tu as capté un problème majeur de ce système, cependant j'y ai pensé également. J'ai pensé que le joueur n'aurait le choix qu'entre 3 intervalles : 5 minutes pour ceux qui veulent faire beaucoup de duels rapides, 12h pour ceux qui sont présents seulement tous les jours à une heure précise par exemple, et 24h pour ceux qui jouent assez peu mais qui veulent avoir quelque chose à faire tous les 2 jours. Après il est vrai que le joueur qui lance à 18h son duel et qui à son tour de 18h à 6h du matin, il est légèrement déséquilibré par rapport à l'autre mais je pense qu'un joueur peut LARGEMENT jouer un tour optimisé en 1h de temps.
Cependant le système de "planning de disponibilité" est plutot bien pensé, j'y ai pensé moi aussi, mais je pense que si tu défies un jour qui habite dans un DOM TOM ça risque de donner lieux à des duels très très long. Mais merci pour ces solutions, ca me fait plaisir que ca te plaise, j'y ai également énormément pensé afin d'avoir un système qui ne se voit pas partout et qui es viable.
Mais en fait mon problème est que je ne sais aucunement comment le modéliser au niveau de mes classes (diagrammes de classes) et de ma base de données... Sad

Merci beaucoup pour votre aide, cordialement.


RE: modélisation système de combat complexe - Thêta Tau Tau - 23-11-2015

Dans les jeux où il y a du tour par tour "par correspondance", comme ça semble être le cas ici, je préfère quand le 2ème joueur peut jouer dès que le premier a fini, sans avoir à attendre.

Exemple :
La partie commence à 16H.
Le joueur A joue son tour et fini à 16H10, le joueur B a mettons 24H pour jouer son tour.
Le joueur B qui était connecté à ce moment là joue son tour immédiatement (en prenant son temps) et fini à 16H30.
Le joueur A s'étant déconnecté, il aura jusqu'à 16H30 le lendemain pour jouer son tour.


Le gros avantage de ce système c'est que si les joueurs veulent jouer vite, ils peuvent, mais ils ne sont pas forcés de jouer à des horaires qu'ils ne veulent pas.
Et avec un délai de 24H, ça évite de tomber sur une période où on ne peux pas se connecter, sans avoir à mettre en place un système compliqué et/ou contraignant comme les plannings dont vous parlez.


RE: modélisation système de combat complexe - Xenos - 23-11-2015

Ca me semble effectivement mieux, et cela n'empêche pas au besoin de laisser les joueurs fixer en plus la durée max du tour (24h dans ton exemple).


RE: modélisation système de combat complexe - fortz - 23-11-2015

Oui en effet c'est une bonne idée, je pense le mettre en place. Merci pour cette idée, ça dynamiserai pas mal ce système Wink

Et du coup comment vous modéliseriez tout ça en niveau des classes svp ? j'ai du mal à déterminer mon diagramme de classes à ce niveau

Cordialement


RE: modélisation système de combat complexe - fortz - 25-11-2015

j'ai vraiment besoin d'une aide ou d'une piste svp.

Cordialement


RE: modélisation système de combat complexe - Xenos - 25-11-2015

Il te faut définir les composants du système (apparemment, joueur et tour, mais j'en oublie surement), et déterminer leurs interactions. Comment d'abord par schématiser le tour d'un joueur, et dans un second temps, schématise l'enchainement des tours.

A vue de nez, tu auras surement besoin de trois interfaces au moins (Partie, Joueur et Tour).


RE: modélisation système de combat complexe - fortz - 25-11-2015

très bien merci pour ta réponse. Bon je comprends que ce soit compliqué pour vous par maque de détails donc vous avez du mal à aider, je vais tenter d'y penser encore plus Wink merci pour l'histoire d'interface