22-11-2015, 04:20 PM
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 !
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 !