(06-02-2009, 10:47 AM)Argorate a écrit : Oui, donc pour l'histoire de "génétique", c'est bien se que j'avais en tete, même si le terme génétique n'est pas le plus pertinent ici, puisqu'on parle de comportement et de choix et qui n'est donc pas régis par les gènes (vive le libre arbitre...) Enfin bref passons ^^
Ce qui est "génétique" c'est la méthode de selection, et surtout de mixer les traits à chaque nouvelle génération pour créer pleins d'hybride.
En gros un algo génétique, ça revient à ne pas vraiment connaitre la solution a priori et d'essayer ce qui a l'air de mieux marcher.
Citation :Donc on travail sur des comportements. Le problème c'est: comment vous déterminez quand on doit passer a une "génération" suivante? Quand es-ce qu'on check-liste chaque pnj pour voir s'ils ont accomplit leurs taches? Pour pouvoir juger si leur méthode de comportement est la bonne?
Tout les 1er du mois? Tout les 15 jours? Combien de temps faut-il pour qu'ils aient pour évoluer?
C'est pas nécessairement des "comportements", c'est simplement des "traits", choisis un peu arbitrairement.
Par exemple tu peux choisir que la vitesse est un trait ajustable, ce qui risque de se passer c'est que de génération en génération les créatures seront de plus en plus rapide. C'est pas forcément ce que tu cherches non plus.
Comme ici ton problème c'est plus une question d'IA, c'est plus adapté que les variables soient plutôt liés à des "décisions" ou des comportements. Ton but c'est d'avoir les meilleurs décisions pas les meilleurs traits physique (comme vitesse, force, etc..)
Le plus important c'est:
- le choix des traits
- le critère de selection.
Par exemple pour le critère de selection tu peux imaginer de garder pour chaque créature un score.
Exemple:
Un "nouveau-né" à un score de 0.
Pour chaque nouveau tour ou il survit, il gagne 1 point.
Pour chaque PJ tué, il gagne 5 points.
Par contre si tu changes ton critère en inversant :
Pour chaque nouveau tour où il survit, 5 points.
Pour chaque PJ tué, il gagne 1 point.
Tu vas selectionner des comportements beaucoup moins agressif. Plus fuyard... Donc c'est très important d'avoir une "bonne mesure". (D'ailleurs c'est toujours vrai à chaque fois que tu vois le mot "meilleur", il faut toujours se poser la question "quelle est la mesure?" ou en français plus courant "quels sont les critères?")
Mais avant de selectionner ces critères, il faut se pencher sur comment tu vas modéliser le comportement/les décisions. Une fois que tu as un modèle basique, tu peux commencer à jeter dans ton modèles des variables qui influent sur le résulat finale.
Pour les générations, c'est arbitraire ça dépend de ton jeu. Il faut laisser suffisament de temps aux créatures d'intéragir avec tes pjs, mais que ce soit pas trop lent non plus. Tu peux décider que tous les 100 ou 1000 créatures générées tu passes à la génération N+1.
Pour la générer tu peux par exemple croiser les 20 meilleurs de la génération N, 10 meilleurs de la génération N-1, 5 meileurs de la generation N-2.
Par contre il faudra probablement faire ce test pour chaque type de créature distinct. Tu veux pas qu'un rat réagisse comme un dragon et inversement.