Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Un outil pour les animations 2D  (Lu 14250 fois)

0 Membres et 1 Invité sur ce sujet

kamui

  • Sr. Member
  • ****
  • Messages: 291
    • Voir le profil
Un outil pour les animations 2D
« le: Mai 04, 2012, 04:34:51 pm »
Bonjour,

j'ai pas mal fait le tour de tout ce qui est proposé autour de SFML en terme d'animation, et j'ai constaté qu'il y a plusieurs projets, plus ou moins terminés, ne proposant pas forcément les mêmes choses. Étant moi-même en train d'en concevoir un pour les besoins du projet Xeenos (Cf. Projets), qui emprunte un chemin différent de ce qui a déjà été proposé, je me suis demandé si cela pourrait intéresser d'autres personnes, alors je l'ai rendu indépendant du jeu. Maintenant, vu tout ce qui a été fait, je m'étonne de ne pas en trouver un qui a autant de succès que sfeMovie pour les vidéos par exemple (qui soit dit en passant est une superbe idée).

J'aimerais donc savoir ce que vous attendez d'un ensemble de classes permettant de gérer les animations 2D d'un jeu vidéo, concrètement ? Quelles fonctionnalités ?

En espérant que l'idée vous intéresse ;)
« Modifié: Mai 04, 2012, 08:45:26 pm par kamui »

Lo-X

  • Hero Member
  • *****
  • Messages: 618
    • Voir le profil
    • My personal website, with CV, portfolio and projects
Re : Un outil pour les animations 2D
« Réponse #1 le: Mai 04, 2012, 04:44:29 pm »
AH ben je viens jute de faire mes skeleton animations ;D

kamui

  • Sr. Member
  • ****
  • Messages: 291
    • Voir le profil
Re : Un outil pour les animations 2D
« Réponse #2 le: Mai 04, 2012, 04:45:56 pm »
Salut Lo-X :)

t'es déjà sur une idée similaire ?

Lo-X

  • Hero Member
  • *****
  • Messages: 618
    • Voir le profil
    • My personal website, with CV, portfolio and projects
Re : Re : Un outil pour les animations 2D
« Réponse #3 le: Mai 04, 2012, 05:11:14 pm »
Salut Lo-X :)

t'es déjà sur une idée similaire ?

Ben j'avais besoin d'animations donc oui. J'ai créé de quoi bouger les os d'un squelette par keyframes, y coller de la "peau" (les sprites à animer), c'est pas encore parfait mais ça fonctionne.
Mon but est maintenant de créer une interface avec QT pour créer les animations plus facilement et les enregistrer en xml (dès que j'aurai le courage, y'a du boulot !)

Si tu veux faire des animations classiques (un spritesheet qui "défile"), je te conseille de regarder du coté de thor.

kamui

  • Sr. Member
  • ****
  • Messages: 291
    • Voir le profil
Re : Un outil pour les animations 2D
« Réponse #4 le: Mai 04, 2012, 05:17:47 pm »
Ah oui en effet c'est une autre approche.

je vais regarder ce qui a été fait du côté de Thor, mais je penses néanmoins qu'il serait utile d'avoir une mini-lib juste pour cela.

Mais ton projet a l'air sympa aussi. Beaucoup plus complexe, mais sympa ;)

Sinon la question reste la même, car dans la plupart des projets, les SFML-iens n'ont pas besoin d'outils aussi techniques, j'aimerais savoir ce qu'il serait intéressant d'avoir, dans une mini-lib dédiée à la gestion/création d'animation 2D.








« Modifié: Mai 04, 2012, 05:21:16 pm par kamui »

Bigz

  • Full Member
  • ***
  • Messages: 154
    • Voir le profil
    • Bigz.fr
Re : Un outil pour les animations 2D
« Réponse #5 le: Mai 04, 2012, 05:22:02 pm »
Perso je bosse sur un outil inspiré de celui d'Ubisoft pour réaliser Rayman Origins, l'Ubi-art (http://ubi-art.fr.ubi.com/). C'est aussi dans l'idée skeleton + keyframes qui me semble être une approche vraiment intéressante, même si plus complexe à mettre en place.

Lo-X

  • Hero Member
  • *****
  • Messages: 618
    • Voir le profil
    • My personal website, with CV, portfolio and projects
Re : Re : Un outil pour les animations 2D
« Réponse #6 le: Mai 04, 2012, 05:25:56 pm »
Perso je bosse sur un outil inspiré de celui d'Ubisoft pour réaliser Rayman Origins, l'Ubi-art (http://ubi-art.fr.ubi.com/). C'est aussi dans l'idée skeleton + keyframes qui me semble être une approche vraiment intéressante, même si plus complexe à mettre en place.

Ben pareil pour moi :D


kamui

  • Sr. Member
  • ****
  • Messages: 291
    • Voir le profil
Re : Un outil pour les animations 2D
« Réponse #7 le: Mai 04, 2012, 05:33:27 pm »
C'est génial les gars, et c'est vrai que c'est une approche vraiment intéressante, mais (encore une fois) vous êtes HS, j'ai bien précisé que l'objectif serait de pondre une mini-lib vraiment simple, mais utile, (au maximum dans l'esprit de SFML), qui permettrait aux personnes découvrant la programmation de Jeux vidéos ou n'ayant jamais abordé les animations 2D, de s'y mettre aussi simplement qu'il a été facile pour nous d'adopter la SFML pour la plupart en remplacement de la SDL ou d'Allegro.

Dans ce cadre, quels seraient les fonctionnalités, l'approche que vous voudriez voir être adoptés ? Vos avis m'intéressent, mais dans ce cadre là uniquement.

Lo-X

  • Hero Member
  • *****
  • Messages: 618
    • Voir le profil
    • My personal website, with CV, portfolio and projects
Re : Re : Un outil pour les animations 2D
« Réponse #8 le: Mai 04, 2012, 06:03:33 pm »
C'est génial les gars, et c'est vrai que c'est une approche vraiment intéressante, mais (encore une fois) vous êtes HS, j'ai bien précisé que l'objectif serait de pondre une mini-lib vraiment simple, mais utile, (au maximum dans l'esprit de SFML), qui permettrait aux personnes découvrant la programmation de Jeux vidéos ou n'ayant jamais abordé les animations 2D, de s'y mettre aussi simplement qu'il a été facile pour nous d'adopter la SFML pour la plupart en remplacement de la SDL ou d'Allegro.

Dans ce cadre, quels seraient les fonctionnalités, l'approche que vous voudriez voir être adoptés ? Vos avis m'intéressent, mais dans ce cadre là uniquement.

Je pense que, point de vue utilisateur, je voudrais que ce soit aussi simple que :
- Je dis quel est ma texture qui contient le spritesheet
- Je dis que pour telle animation, il faut prendre telle ligne du spritesheet avec tel sf::IntRect pour une seule image
- Je puisse faire play(" animation lambda ");, pause(), stop() sans connaître l'animation actuelle ni savoir où sont "stockées" les autres.

Donc point de vue classes ça donne, au minimum :
- Classe Animation qui peut dessiner, se mettre à jour selon le temps, play, pause, etc..
- Classe QuiCOntientLesAnimations avec une map entre les animations et leur identifiant(chaine de caractère,..)  et qui peut metre en pause,play,stop l'animation atuelle ainsi que l'update et la dessiner

lezebulon

  • Full Member
  • ***
  • Messages: 235
    • Voir le profil
Re : Un outil pour les animations 2D
« Réponse #9 le: Mai 04, 2012, 06:11:06 pm »
Moi je pense que ce qui serait bien ça serait exactement ce qu'a dit Lo-X mais avec surtout un moyen simple de dé-sérialiser des animations depuis le DD.
En gros tu as un fichier texte "en clair" qui dit où chercher les frames des animations (quel fichier, quel rectangle etc)
et après depuis SFML tu fais myAnim.Load("fichier.anim") et pouf la classe est créée.
Eventuellement un truc cool qui va avec serait un projet sfml (.exe) qui permette de charger des fichiers anim et de les visualiser

kamui

  • Sr. Member
  • ****
  • Messages: 291
    • Voir le profil
Re : Un outil pour les animations 2D
« Réponse #10 le: Mai 04, 2012, 06:55:49 pm »
Un grand merci pour vos retours.

@Lo-X : c'est ce principe que j'ai déjà mis en place :
   - un namespace "Catalog" qui fait vraiment catalogue : il contient une map pour stocker  des AnimHandlers et des methodes pour y accéder, pour en ajouter, en enlever, et tout détruire.
   - une classe AnimHandler : un gestionnaire d'animation qui permet de créer des animations pour une planche donnée et de les jouer. Cette classe (non instanciable) est dérivée en deux sous classes : Oredered et Unordered. La première permet de jouer les animations dans l'ordre d'apparition des différents sprites comme tu le propose, et la deuxième permet de gérer les jeux de sprites qui pourraient se jouer dans plusieurs ordres, sans qu'on est besoin de créer une ligne par séquence à jouer. Elle permettra aussi de jouer des fils d'animations aléatoire, (par exemple, un background d'évolution de le météo suivant une séquence aléatoire).
   Voilà pour l'architecture,  donc on est assez sur la même idée, mais je voudrais ne rien oublier, donc j'espère avoir encore plus de retours (même de ta part si t'a encore des idées d'améliorations)

J'hésite à templatiser le label (pour ne pas  forcer l'utilisation d'une chaine de caractère pour ceux qui veulent les repérer autrement) mais ça risque d'être un peu complexe pour ceu qui ne sont pas à l'aise avec les templates.. qu'est-ce que tu en penses ?

@lezebulon : je n'aime pas trop l'idée de manipuler des fichiers plats, je penses que ça rebute pas mal de personnes, mais y'a peut-être moyen d'en tirer quelque chose (faut investiguer). J'aime beaucoup plus l'idée de l'exe qui permet de jouer rapidement l'anim, mais on sort du contexte de la lib. Mais c'est pareil, ça peut être envisagé en annexe, puisqu'on est psa non plus sur un projet gigantesque a priori.

Merci encore pour vos retours ;)

N'hésitez pas à intervenir dès que vous avez une idée, et à critiquer l'architecture dont je vous ai parlé.

Allez maintenant, je file dans le sous-forum Graphique pour exposer mon problème de segfault avec un simple "sf::Image* test = new sf::Image();"  ;D
« Modifié: Mai 04, 2012, 07:01:41 pm par kamui »

Lo-X

  • Hero Member
  • *****
  • Messages: 618
    • Voir le profil
    • My personal website, with CV, portfolio and projects
Re : Re : Un outil pour les animations 2D
« Réponse #11 le: Mai 04, 2012, 07:00:38 pm »
Allez maintenant, je file dans le sous-forum Graphique pour exposer mon problème de segfault avec un simple "sf::Image test;"  ;D

Si tu veux fournir un outils, fais le avec SFML 2 :p (comme la 1.6 est/est sur le point de devenir obsolète)

kamui

  • Sr. Member
  • ****
  • Messages: 291
    • Voir le profil
Re : Re : Re : Un outil pour les animations 2D
« Réponse #12 le: Mai 04, 2012, 07:11:38 pm »
Allez maintenant, je file dans le sous-forum Graphique pour exposer mon problème de segfault avec un simple "sf::Image test;"  ;D

Si tu veux fournir un outils, fais le avec SFML 2 :p (comme la 1.6 est/est sur le point de devenir obsolète)

Oui oui t'inquiète pas, c'est ce qui est prévu, mais j'avais quelques tests rapides à faire, alors j'ai pris ce que j'vais sous la main ;)

Koryushin

  • Jr. Member
  • **
  • Messages: 93
    • Voir le profil
Re : Un outil pour les animations 2D
« Réponse #13 le: Mai 04, 2012, 08:11:24 pm »
Perso j'ai bossé sur une classe animation aussi  ;) Mais plus dans l'optique de ragnarok online.
C'est a dire bouger un sprite dans 8 directions, avec les différentes animes de combat et autre dans un univers 3D, heightmap 3D avec caméra fixe ( il y a juste la map qui tourne selon un angle, mais la caméra est fixe style 2,5D )
J'utilise les sprites de ragnarok mais le problème c'est que les planches de sprite sont toutes différentes et je suis donc obligé d'utiliser un fichier pour configurer chaque sprite. ( comme fait ragnarok online)
Ce fichier défini les tailles des différents sprites, leur position, le nombre d'anime par sprite etc ...

Pour l'instant ça fonctionne pas mal, je ne gère pas encore les différentes têtes que peuvent avoir les personnages mais j'y travaille.

Si ça intéresse du monde je veux bien m'y remettre de manière plus poussée et le cas échéant partager mon code. Je ne fournirais pas mes sprites mais ils sont récupérables facilement de manière gratuite tant que votre projet n'est pas commercial.

edit: je peux donner le lien pour télécharger les sprites en questions. (mes animations marchent aussi avec des jeux pur 2D style "Zelda : a link to the past" sur super nintendo (une référence à mon gout) )
« Modifié: Mai 04, 2012, 08:20:04 pm par Koryushin »

kamui

  • Sr. Member
  • ****
  • Messages: 291
    • Voir le profil
Re : Un outil pour les animations 2D
« Réponse #14 le: Mai 04, 2012, 09:04:36 pm »
C'est vrai que ça n'est pas très pratique quand une planche ne respecte pas une certaine rigueur. De mon côté je penses obliger à respecter une certaine rigueur, sinon il faudrait imaginer un moyen simple et efficace, de "soulager" le codeur quand une planche n'est pas bien foutue..