IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

[Simple] Augmentation des niveaux dans un jeu.


Sujet :

Algorithmes et structures de données

  1. #1
    Invité4
    Invité(e)
    Par défaut [Simple] Augmentation des niveaux dans un jeu.
    Bonjour,

    j'ai crée un jeu de rôle en PHP avec combats.
    Mais mon algorithme qui calcule l'expérience gagnée n'est pas génial, je n'arrive pas à le faire comme je voudrais.

    Voici mon but.

    - Plus le niveau de l'ennemi combattu est grand par rapport au nôtre, plus on gagne d'expérience.
    - Et inversément si l'ennemi a un niveau plus faible que le nôtre.
    - Plus notre niveau est haut, moins on gagne d'expérience.

    Voilà, ça paraît simple, mais je bute.

    Merci à ceux qui pourront m'aider.

  2. #2
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut Re: [Simple] Augmentation des niveaux dans un jeu.
    Citation Envoyé par Eldacar
    - Plus le niveau de l'ennemi combattu est grand par rapport au nôtre, plus on gagne d'expérience.
    - Et inversément si l'ennemi a un niveau plus faible que le nôtre.
    - Plus notre niveau est haut, moins on gagne d'expérience.
    Les deux premiers points peuvent être résolus en donnant, comme XP, la différence de niveau entre les deux combattants, affectée éventuellement d'un facteur multiplicatif.


    Cependant, perdre de l'expérience quand on latte plus petit que soi, même si ça évite les combats entre gros-bills et rookies, c'est préoccupant quand tu ne choisis pas le niveau des adversaires ... tu prend ce qui vient, et ça te fait perdre de l'XP


    Pour le dernier point, s'il existe un niveau maximal, tu peux considérer la différence entre ce max et le niveau actuel, divisée par ce max, comme un facteur à appliquer aux XP.

    Ainsi, pour un max de 25, par exemple, un gars de niveau 1 va marquer (25-1)/25 * XP, soit 96% de XP, alors que le même, de niveau 8 va marquer (25-8)/25 *XP, soit 60% de XP et un gars déjà à 25 marquera 0%.


    Tout ça est cependant un peu simpliste ...

    Il pourrait paraître juste (mais plus compliqué) de prendre en compte des réussites ou des échecs exceptionnels, les sorts ou armes utilisées (bonus d'XP si on massacre un dragon à la dague, plutôt qu'à la hache de bataille ), etc.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  3. #3
    Invité4
    Invité(e)
    Par défaut
    Merci,
    je me suis mal exprimé, si tu attaques un faible, tu ne perds pas de l'XP mais en gagnes vraiment beaucoup moins, en fonction de la différence de niveau.

    Il n'y a pas de niveau maximal, cependant, le niveau 150 ne risque jamais d'être atteint, donc il peut être choisi comme maximum.

    Ton explication m'a déjà bien aidé, je t'en remercie.

  4. #4
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    à tu esseyé une exponentielle du niveau de l'avresaire moins celui de celui qui tue. (peut-être avec un palier)

    exemple, si on tue quelqu'un de notre niveau, on gagne un point d'expérience.
    si on tue quelqun du niveau superieur, on en gagne e soit 2 et quelsque.

    si on tu quelqu'un qui à 10 niveau de plus, là ça commence malheureusement à faire beaucoup d'ou l'idée de palier.
    une aute méthode bourinne constiste à faire x+ la différence ou x est le niveau à partir duquel tu ne peux pus tuer de niveau 1 sans perdre de points d'exp.


    salut
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  5. #5
    Invité4
    Invité(e)
    Par défaut
    Je vois.
    Cette méthode me semble idéale.
    Il faut que je me documente pour trouver comment appliquer un système de palier en PHP, peux-tu sur ce point être plus précis.
    Je vois où tu veux en venir, mais ça reste encore nuageux autour du mot "palier".

  6. #6
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    n1 += K1 * (atan((n2 - n1)*K2)  + PI/2) * exp(-K3*n1)
    a l'air d'avoir le comportement que tu veux. Il te reste a faire un ajustement en fixant les Ki.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  7. #7
    Invité4
    Invité(e)
    Par défaut
    Ok, je vais étudier cette fonction.
    ça m'a l'air bien, peux-tu m'expliquer les atan et ce que Pi vient faire ici ?

    Merci encore de votre contribution à tous.

  8. #8
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Eldacar
    Ok, je vais étudier cette fonction.
    ça m'a l'air bien, peux-tu m'expliquer les atan et ce que Pi vient faire ici ?
    Elle permet de changer une difference de niveau non bornee en un intervalle borne (de -pi/2 a pi/2) avec un effet de saturation dans les deux sens, ce que tu semblais desirer.

    Ajouter pi/2 permet de se ramener dans un intervalle positif (tu n'avais pas l'air de vouloir que battre quelqu'un de plus faible fasse baisser ton niveau).

    Multiplier par l'exponentielle permet de reduire la vitesse d'avancement aux niveaux superieurs.

    Les constantes sont la pour te permettre d'ajuster tout cela comme tu veux.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  9. #9
    Invité4
    Invité(e)
    Par défaut
    Okay, merci beaucoup

Discussions similaires

  1. Gestion des déplacements dans un jeu
    Par penvernyo dans le forum Programmation multimédia/Jeux
    Réponses: 1
    Dernier message: 19/07/2009, 09h58
  2. Implanter des niveaux dans un jeu
    Par olihya dans le forum Composants
    Réponses: 9
    Dernier message: 01/02/2009, 02h16
  3. Réponses: 8
    Dernier message: 08/08/2008, 11h19
  4. Organisation des classes dans un jeu de type Mario
    Par peijnoob dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 16/01/2008, 21h08
  5. Problème d'organisation des données dans un jeu de stratégie
    Par khayyam90 dans le forum Développement 2D, 3D et Jeux
    Réponses: 8
    Dernier message: 15/06/2007, 17h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo