xapantu
un autre s'y est cassé les dents l'an dernier, mais il voyait plus gros, et le code était moins claire à l'époque.
C'est celui qui a commencé l'AI ?
Parce que je viens de regarder, en fait je pensais que c'était plus simple que ça 🙁
Peut-être qu'en simulant des frappes de claviers (enfin, je veux dire faire les actions comme si quelqu'un tapait sur le clavier), ça serait plus simple ? Je vais essayer de regarder.
edit: sinon, j'ai ouvert un sujet là :
http://forum.freegamedev.net/viewtopic.php?f=22&t=103
tshirtman
Oui, mais je pense qu'il vaut mieux que tu parte de zero... il comptait tout refaire, et j'ai plus eu trop de nouvelles, il me proposait de refactorer un peu tout le jeu, mais je n'ai pas le temps de faire ça :/ et je pense qu'on peut le finir avec la structure actuelle. En ce moment je pense qu'il a plus trop le temps, je l'apperçois rarement.
Sinon je ne pense pas que simuler des frappes soit le plus simple, juste choisir une action parmis ce qui nous est permis par sequences.cfg, éventuellement mettre une probabilité de rater la manip si elle demande trop de frappes, mais pas trop important, attendre un temps déterminé (fin de l'action ou distance parcourus) et faire une autre action.
Pas besoin que ce soit trop complexe au début, juste regarder si un ennemi est a portée (y'a une fonction pour calculer la distance entre deux entités) et tapper/attendre la fin du coup, c'est un bon début, on peut ajouter d'autres actions/décisions sur des critères plus complexes après.
Mais non en tout cas, faire une IA ce n'est pas simple! (sinon ce serait fait depuis un bail ^^).
xapantu
un autre s'y est cassé les dents l'an dernier
Ah, oui, je comprends pour quoi 😃
Si tu as le temps de répondre à quelques questions :/
Je doit pas être doué 😃 mais je ne comprend pas où sont géré les événement pendant le jeu. Tout est dans timed_event.py ?!
Et si tout est géré dans timed_event.py, où est-ce que les événements sont répercutés sur les persos ?!
tshirtman
salut et désolé du temps de réponse... je suis assailli de toutes parts ^^
alors, oui les évenements sont gérés par timed_event.py, en gros dans Game, il y a une liste d'évenements "en cours", a chaque boucle le Game fait un update sur tous. C'est là que les choses intérressantes commencent.
La classe TimedEvent définit un comportement générique, quand on fait update, l'évenement regarde s'il est toujours valide temporellement, puis si sa condition éventuelle est toujours vraie, et enfin réalise son action si tout va bien, et se supprime dans le cas contraire (ce qui peut déclencher d'autres actions).
Pour chaque type d'évenement on crèe une classe qui hérite de TimedEvent, et surcharge au moins "execute" et "condition" (on utilise jamais la classe de base). Enfin, pour que l'évent puisse modifier un ou plusieurs persos/items, on lui passe des paramettres à sa création, qui sont des références vers les objets concernés.
Pour que les fichier xml puissent lancer des évenements, il y a un mapping entre les noms d'évents et leur classe en bas du fichier.
C'est sans doute pas parfait, mais je suis pas mécontent du design de cette partie du jeu, j'en suis venus à lui faire gérer les vecteurs de déplacement par évenements vu que ça marche bien 🙂.
xapantu
Ok, merci, je vais regarder ça 🙂
xapantu
Bon, ça y est, j'ai à peu près compris comment ça marchait :lol:
Donc si j'ai bien compris, les frappes de claviers sont gérés dans controls (tiens d'ailleurs ça me fait penser que j'aurais du l'utiliser pour les menus 😐 ). Donc je pense gérer l'IA par l'intermédiaire de controls. Comme ça, ça ne complexifie pas trop le jeu lui-même et je trouve ça plus logique vu que de toute façon self.game est envoyé à controls. Et puis niveau performance, je pense que ça reviens à peu près au même que d'utiliser une autre classe pour l'IA
Tu penses que c'est une bonne idée ?
tshirtman
(tiens d'ailleurs ça me fait penser que j'aurais du l'utiliser pour les menus neutral )
si tu trouve le temps de faire la conversion je veux bien ^^, mais bon j'allais pas te le reprocher non plus 😉.
Sinon pour l'idée d'utiliser les controles pour l'IA je ne suis pas sur que ce soit le plus simple, mais bon c'est une façon comme une autre, de toutes façons ce n'est que l'interface entre le processus décisionnel et le jeu, si tu sépare les deux ça devrait pas être un problème de toutes façons. (même si je vois la conversion "décision du mouvement à faire -> touches à taper avec timing -> exécution du mouvement", comme inutile, si ça te parait plus simple de faire comme ça, vas y ^^).
xapantu
si tu trouve le temps de faire la conversion je veux bien ^^
En même temps, maintenant que les menus utilisent aussi la souris, je pense que c'est une mauvaise idée parce que ça utiliserai les événement à deux endroits en même temps.
D'accord, je viens de commencer (vraiment de commencer ^^). Je viens de désactiver les touches du claviers pour l'IA (c'est vraiment le début 😃 ).
tshirtman
y'a un début a tout ^^ et c'est un bon début ^^
cela dit en mode debug ça peut te servir de les avoir, pour tester, donc je te conseillerait de mettre ça en option dans la classe, ou d'avoir juste une ligne a commenter/décommenter pour ça. 😉
xapantu
Bon, je viens de faire une classe AI. Pour l'instant, si l'autre joueur est à droite, le perso va à droite et s'il est à gauche, il va à gauche.
Ça c'est de l'intelligence évolué 😃 (oui, d'accord, si il y a un trou, il fonce dedans mais bon) :lol:
A part ça, on sort une bêta ?
(sur l'autre forum ils ont pas l'air super intéressé)
xapantu
Bon sinon, je viens de regarder l'optimisation des musiques.
Je ne parle que des ogg.
Non-optimisé : ~23 mo (toutes) ex :
http://usf.tuxfamily.org/nouveau/game_1.ogg (~6mo)
optimisé : ~8mo (toutes) ex :
http://usf.tuxfamily.org/nouveau/game_1_new.ogg (~1,5mo)
Je n'ai pas l'impression qu'il y ait une grande perte de qualité mais bon je n'ai jamais eu une oreille très "efficace" .
tshirtman
Le résultat pour les musiques me semble tout à fait acceptable! donc on peut faire ça oui. pour l'instant on va mettre que les ogg optimisés dans le .deb.
On génère le .deb, on teste un peu tout, on corrige les trucs rapide et on le sort comme béta, hop! 🙂
xapantu
ok, je les mettrai dans la branche bazaar demain 🙂 et je déplacerai les musiques en haute qualité dans un dossier source à la racine (comme code et doc, ça va ?). Comme ça on pourra mettre aussi les svg des persos des fond etc...
xapantu
Bon je viens de regarder, j'ai mis les musiques dans un autre dossier et avec un remove des mp3, le paquet ne fait plus que 17,1 mo. (je vais l'uploader tout de suite 😛 )
tshirtman
\o/
xapantu
xapantu
Quelqu'un a testé ?
kidanger
Oui ça marche 🙂
Bonne continuation!
xapantu
Merci 🙂
Bon sinon, quelqu'un a posté ces liens sur freegamedev.net :
http://moosader.com/pdgraphics.html (à mon avis pas très utilisable)
et
http://qubodup.deviantart.com/art/Cave-Platformer-112186831 (plus intéressant pour faire un nouveau niveau)
tshirtman
c'est pas inintéressant!
http://moosader.com/pd/NinjaStrip.png ça peut faire un personnage, même s'il faut compléter pour faire sa palette de coups.
http://moosader.com/pd/Bunny.bmp ça peut faire un item, ou une attaque pour le ninja ^^.