CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Comment marche les Sprites?

Kindeur
Kindeur
Niveau 9
22 mars 2012 à 12:04:49

Salut, je souhaiterais savoir comment faire pour faire marcher des sprites car étant donner que toutes les images sont alignées comment faire? Je posais juste cette question qui me tordait la tête depuis des semaines :) merci ;)

hapliniste
hapliniste
Niveau 9
22 mars 2012 à 12:34:28

enfait c'est simple:

1. on charge l'image en mémoire
2. on affiche un sous-partie de l'image (souvent appelée SubRect)
3. on décalle ce subrect pour afficher les autres images :)

et en gros on décalle le subrect de X (ou X est la largeur d'une étape du sprite) tout les Y temps.

J'ai un exemple en C++ avec SFML si tu veux, mais tu risque de pas mieux comprendre qu'avec mon explication :noel:

caelacanthe
caelacanthe
Niveau 10
22 mars 2012 à 12:47:56

marcher les sprites? les sprites d'un personnage qui marche? :(

tu affiche les petits morceaux d'image dans l'ordre à la vitesse qui te convient. :hap:

Kindeur
Kindeur
Niveau 9
22 mars 2012 à 13:13:48

Non mais enfaites comment les faire hum que sa affiche pas la table de sprite entière d'un coup (Caelacanthe) et sinon merci hapliniste

Glosoli
Glosoli
Niveau 10
22 mars 2012 à 15:30:11

Tableau regroupant chaque image de l'animation de ton sprite + incrémentation du tableau + blit à toutes les X frame ? :hap:

hapliniste
hapliniste
Niveau 9
22 mars 2012 à 16:56:23

@Kindeur écoutes pas ces jeunes fous, ils ont surement jamais touché à une classe d'animation pour dire ça :hap:

Utiliser une image par frame c'est pas très pratique :non: les 99% des gens utilisent une seule image, et comme je l'ai dit, la plupart des bibli qui gèrent les images permettent d'afficher une sous-partie de l'image. SDL et SFML le font par exemple :ok:

godrik
godrik
Niveau 30
22 mars 2012 à 17:40:47

"Utiliser une image par frame c'est pas très pratique."

Ca c'est quelquechose que je n'ai jamais compris, pourquoi ce n'est pas pratique exactement?

Dans un moteur (loin de rien de professionnel dans le domaine du jeux video), j'ai fait mes animations avec un fichier par image et un fichier annexe de description de l'animation (pour le timing). Et ca se passe tres bien.

Apres j'imagine que si tous les jeux pro font leur sprite en quelques fichiers, il doit y avoir une raison. Mais, moi, je ne vois pas de raison de faire ca. Est ce que cela vient des architectures consoles qui ont une memoire graphique pagine?

Pocolo
Pocolo
Niveau 10
22 mars 2012 à 17:48:27

" les 99% des gens utilisent une seule image "

Sans déconner.

Personnellement je ne pense pas qu'utiliser un fichier par image soit vraiment mauvais non plus.
Pour ma part si j'utilise des sprite sheets c'est juste pour que ce soit plus ordonné (en gros pour regrouper toutes les images correspondant à un personnage ou autre sur un seul fichier).

En revanche un truc qui est vraiment à ne pas faire (et que certains débutants font) c'est d'enlever une image en mémoire pour en remettre une autre à chaque changement d'animation, de surcroît la partie "enlever" est souvent oubliée, donnant lieu à des fuites de mémoire.

godrik
godrik
Niveau 30
22 mars 2012 à 18:03:59

"Pour ma part si j'utilise des sprite sheets c'est juste pour que ce soit plus ordonné (en gros pour regrouper toutes les images correspondant à un personnage ou autre sur un seul fichier)."

Personnellement j'organise ca en repertoire. On peut aussi imaginer faire un targz.

Un des problemes que l'on a avec les sprite sheet est le probleme de leur preparation et de leur compacite. Si tous les sprites ont la meme taille c'est facil, mais maintenant dans plein de jeu les sprites ont des tailles variables. Du coup, packer tous les sprites en une seule image sans perdre trop d'espace, ce n'est pas forcement si simple.

Et je ne parle pas de la misere quand tu as besoin de changer la taille d'un sprite, il faut decaler tous les autes et refaire un sprite sheet. Bon, j'imagine que ce n'est pas fait manuellement. L'artiste genere des sprites en different fichier qui sont ensuite agencer automatiquement par un programme. Mais quand meme ca fait chier.

vintrigue
vintrigue
Niveau 10
22 mars 2012 à 18:06:17

Et quand t'as un bug dans l'animation et qu'il faut faire du recalage par pixel en déplaçant un rectangle de selection sur un logiciel de retouche, bonjour la galere. Et evidemment je ne parle pas de la place perdue, des temps de chargement, de l'espace pris en mémoire par les animations non-utilisées si la spritesheet est un peu trop généraliste..

tbop2
tbop2
Niveau 10
22 mars 2012 à 19:17:54

Godrik le point que tu soulèves est finalement intéressant. Si on omet peut-être la redondance de certaines informations (et même pas sûr qu'au final la solution spritesheet compense cela) tu me fais remettre en cause des années de pratique. Car finalement oui : pourquoi toujours des spritesheets ?

caelacanthe
caelacanthe
Niveau 10
22 mars 2012 à 19:43:25

"Car finalement oui : pourquoi toujours des spritesheets ? "

:d) on s'épargne des temps d'accès au chargement, et une grosse image se compresse mieux que plusieurs petites, habituellement...

oh, et avant, les sprites étaient palettisés. une palette de couleurs par sprite, ça finit par peser très lourd face à une palette pour tous les sprites. :oui:

tbop2
tbop2
Niveau 10
22 mars 2012 à 20:06:28

- on s'épargne des temps d'accès au chargement : OK
- une grosse image se compresse mieux que plusieurs petites : OK
- ça finit par peser très lourd face à une palette pour tous les sprites : OK

Bon ben ça répond à pas mal de mes interrogations :)

godrik
godrik
Niveau 30
22 mars 2012 à 22:27:08

"- ça finit par peser très lourd face à une palette pour tous les sprites : OK "
Ca je comprends

"- on s'épargne des temps d'accès au chargement : OK "
C'est vraiment vrai ca ? (si on ignore les histoires de palettes qui augment la taille des sprites.) Lire 1 ou 10 fichiers, je ne suis pas sur qu'il y ait une vraie difference tant que leur taille est la meme. (quoi que les fichiers sont tellement petit que l'ouverture du fichier est probablement la partie couteuse)

"- une grosse image se compresse mieux que plusieurs petites : OK "
La our le coup, je ne suis pas bien convaincu, la plupart des algo compression font de la compression par bloc.

caelacanthe
caelacanthe
Niveau 10
22 mars 2012 à 23:35:10

okay j'admets, l'argument de la compression était biaisé... à la limite, tu as les en-têtes d'archives, une par fichier, même problème que les palettes de couleur. :(

"Lire 1 ou 10 fichiers, je ne suis pas sur qu'il y ait une vraie difference tant que leur taille est la meme. "

:d) là par contre, tout dépendra du support. une fiche de sprite contient souvent pas mal de sprites, en plus. :oui:

[Plisko]
[Plisko]
Niveau 10
23 mars 2012 à 01:08:43

Perso j'aime bien avoir un fichier image par sprite, tout charger au début, et ne plus y toucher après. Ca évite de trop se prendre la tête avec les fuites de mémoire.

Par contre, je sais pas si c'est exactement la question posée ^^

tbop2
tbop2
Niveau 10
23 mars 2012 à 20:52:34

En quoi ca empêche les fuites de mémoire de charger des sprites fichiers par fichiers... au lieu de les charger fichiers par fichiers ?

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware