Forum d'entraide à la création de jeux d'aventure
 
PortailAccueilFAQRechercherS'enregistrerMembresConnexion

Partagez | 
 

 Relancer toutes les animations en cours depuis la frame 1

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Pierrec
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 99

Date d'inscription : 16/06/2011


MessageSujet: Relancer toutes les animations en cours depuis la frame 1    Jeu 7 Fév 2013 - 20:37

Bonjour bonjour.
ça fait un moment que je ne viens plus poster de question (ni donner de réponses, honte à moi) sur ce forum, mais à force d'expérimenter et d'essayer de plier AGS à mes caprices, me voilà de nouveau face à une interrogation.

Dans le cadre d'un petit proto que j'essaye de créer pour le Game Prototype Challenge, j'aurais besoin de synchroniser mes animations...en fait, tout le gameplay tourne autour de la synchronisation d'animations. Oui...c'est assez expérimental.

Ce qu'il me faudrait, c'est une commande qui dise très exactement :
"Relancer toutes les animations en cours depuis la frame 1"
ou...plus simplement :
"Relancer toutes les animations"

Il me suffirait bien évidemment de réécrire manuellement
ctruc.animate...
cmachin.animate...
Mais mon jeu contient 64 animations qu'il faut réinterroger sans arrêt, et le travail serait alors titanesque.

Si vous avez donc entendu parler d'une telle commande (je n'ai rien trouvé sur le wiki, mais je ne sais pas trop par où chercher) ou si vous avez une solution alternative qui m'aurait échappé, je suis preneur.
Sinon ben...tant pis, je vais devoir revoir mes ambitions à la baisse.

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Billbis
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue


Nombre de messages : 1275

Date d'inscription : 10/05/2012


MessageSujet: Re: Relancer toutes les animations en cours depuis la frame 1    Jeu 7 Fév 2013 - 20:53

En fait il se trouve qu'on peut itérer un code à tout les characters et les objets assez facilement en utilisant l'appelation character[1].animate ou object[1].animate plutôt que les noms des characters et objets. Donc un truc du genre :

Code:
if (Game.CharacterCount > 0) {
        int index = 0;
        while (index < Game.CharacterCount) {
            character[index].animate(...);
            index++;
        }
}

et :
Code:
if (Room.ObjectCount > 0) {
    index = 0;
        while (index < Room.ObjectCount) {
            object[index].animate(...);
            index++;
    }
}

Il faut faire gaffe au premier index, l'objet[0] et le character[0] existent, mais pas le hotspot[0] il me semble.
Sinon il y a surement plein d'autre façon de faire. En tout cas bon courage.

_________________
Mon petit DevBlog


Dernière édition par Billbis le Sam 20 Avr 2013 - 11:25, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nothingaboutthedog.blogspot.fr/
Pierrec
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 99

Date d'inscription : 16/06/2011


MessageSujet: Re: Relancer toutes les animations en cours depuis la frame 1    Jeu 7 Fév 2013 - 20:55

OoooOOohh je vais étudier ça, ça pourrait bien me changer la vie!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Pierrec
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 99

Date d'inscription : 16/06/2011


MessageSujet: Re: Relancer toutes les animations en cours depuis la frame 1    Jeu 7 Fév 2013 - 21:49

Je pense avoir trouvé un système pour faire marcher mon proto avec ton astuce, mais je n'arrive pas à mettre en place ton astuce.

Tu veux dire que je pourrais par exemple créer un index contenant tous mes objets ? et animer le tout avec object[index].animate(blabla); ?
Si j'ai bien tout compris, pourrais tu m'expliquer un peu mieux comment créer cet index ? Je ne comprends pas Charactercount etc...
Ne peut-on pas simplement déclarer l'index avec tels et tels objets dedans ?

Edit : j'ai trouvé ça http://www.adventuregamestudio.co.uk/forums/index.php?topic=37808.0 en couplant avec tes infos, je crois commencer à piger le truc ^^
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue


Nombre de messages : 2431

Date d'inscription : 01/08/2006


MessageSujet: Re: Relancer toutes les animations en cours depuis la frame 1    Jeu 7 Fév 2013 - 23:20

Bonjour Pierrec,

Tout d'abord je suis ravi de voir qu'on va bientôt pouvoir mettre la main sur une nouvelle création à toi ! Et d'après ton bref descriptif, ça m'a l'air tout à fait intrigant (dans le bon sens du terme, pas dans ce sens vieilli qui a donné un substantif tout aussi peu employé aujourd'hui).

Billbis t'a déjà donné tous les conseils dont tu avais besoin je pense.
Tu n'as pas besoin de créer un index contenant tous tes objets. La propriété Room.ObjectCount se charge justement pour toi de compter le nombre d'objets présents dans la pièce en cours. D'autre part, AGS contient par défaut un tableau global nommé object dont chaque entrée correspond à un objet dans la pièce en cours.
Ce que fait donc le code de Billbis, c'est scruter chaque entrée du tableau, c'est-à-dire récupérer chaque objet de la pièce pour relancer son animation.

La démarche est similaire concernant les personnages (sauf que là, les entrées du tableau character ne sont pas dynamiquement mises à jour dans chaque pièce, chacune réfère de manière constante à travers tout le jeu à son propre personnage -- ce qui explique qu'on recourt à la propriété Game.CharacterCount et non pas Room).

Si tu veux vérifier que l'objet/le personnage récupéré est animé, tu utilises simplement la propriété Animating (qui existe aussi bien pour les objets que pour les personnages).
Voici ma version du code où j'essaie d'optimiser un peu les choses :
Code:
// Les personnages
int i = 0; // On va commencer au premier personnage (#0)
while (i < Game.CharacterCount) { // Tant que I ne dépasse pas le nombre de personnages dans le jeu
  // Si le Ième personnage se trouve dans la pièce du personnage joueur
  // et si ce Ième personnage a une animation en cours, on la relance
  if ((character[i].Room == player.Room) && (character[i].Animating)) character[i].Animate(...);
  i++; // On passe au personnage suivant
}
// Les objets
i = 0; // On va commencer au premier objet (#0)
while (i < Room.ObjectCount) { // Tant que I ne dépasse pas le nombre d'objets dans la pièce
  // Si le Ième objet a une animation en cours, on la relance
  if (object[i].Animating) object[i].Animate(...);
  i++; // On passe à l'objet suivant
}


Et enfin, il existe nécessairement une première entrée dans le tableau region mais elle réfère à la région "vide", c'est-à-dire à l'absence de région. Cela-dit ça ne devrait pas concerner Pierrec ici ^^

_________________
Ga is Ga
Vous pouvez consulter l'aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Pierrec
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 99

Date d'inscription : 16/06/2011


MessageSujet: Re: Relancer toutes les animations en cours depuis la frame 1    Ven 8 Fév 2013 - 18:32

ça y est! j'ai tout compris! Merci beaucoup! ^^
Et j'ai un proto qui marche...maintenant j'ai plus qu'à les faire mes 256 sprites langue
Je posterais le résultat ici lundi, quand ce sera fini
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Pierrec
Adepte de la Grande Tasse Bleue
Adepte de la Grande Tasse Bleue


Nombre de messages : 99

Date d'inscription : 16/06/2011


MessageSujet: Re: Relancer toutes les animations en cours depuis la frame 1    Mar 26 Fév 2013 - 21:56

Au fait, pour ceux qui seraient curieux du résultat, c'est là : http://oujevipo.fr/index.php?option=com_content&view=article&id=883:cassandra&catid=36:10-minutes&Itemid=55

J'en suis pas très content, mais au moins je suis parvenu à faire ce que je voulais et je me suis remis en selle. Maintenant j'attaque sur un jeu de Senet \o/
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue


Nombre de messages : 2431

Date d'inscription : 01/08/2006


MessageSujet: Re: Relancer toutes les animations en cours depuis la frame 1    Mer 27 Fév 2013 - 10:15

Merci de venir nous donner des nouvelles de ce jeu Pierrec.

À vrai dire le fichier est sur mon PC depuis que tu l'as publié, mais je n'ai toujours pas trouvé le temps de l'exécuter... Mais bientôt, bientôt.

Ah, un jeu de Senet ! Voilà que tu t'attaques aux jeux de société/stratégie, ça va faire de la concurrence aux productions de Shai-la clin d\\\\'oeil Curieux de voir le résultat (et les règles, que je ne connais pas !).

_________________
Ga is Ga
Vous pouvez consulter l'aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Contenu sponsorisé




MessageSujet: Re: Relancer toutes les animations en cours depuis la frame 1    Aujourd'hui à 19:17

Revenir en haut Aller en bas
 
Relancer toutes les animations en cours depuis la frame 1
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Cours : Les rotations dans Flightgear
» Peu importe que la route soit longue, de toutes tes forces: cours !
» [En cours] Exécuter un script php par webcron aléatoirement toutes les demi-heures
» Idées d'animations débiles pour intégration des nouveaux
» Message "sauvegarde en cours" permanent !

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Adventure Games Studio fr :: CREATION DE JEUX :: Questions / Réponses-
Sauter vers: