Forums Développement Multimédia

Aller au contenu

tile/map en bitmapdata qui "saccade"...

CODE

21 réponses à ce sujet

#1 Henri_B

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 337 messages

Posté 24 September 2011 - 16:27 PM

Bonjour,
je tente de faire un scroll en tile/map avec des bitmap et bitmapdata (pour les "briques"), plutot que des movieClip.
en movieClip, je n'ai jamais eu de probleme. Là j'ai un probleme que je n'arrive pas a resoudre, ni identifier.
en gros : pour tester j'ai fais un tile/map petit (en nombre de briques et en taille de brique). je transforme mes graphs en bitmapdata au debut de l'appli et je lance le scroll (pour test). Tout à l'air OK. j'atteind les 60 img/s sans probleme, avec quelques % (3-4) du cpu (et je suis sur un "vieux" portable).
seulement à y regarder de plus pret, je vois que mon scroll "saccade". c'est tres léger, tres aléatoir, difficile à voir parfois. mais c'est là. a chaque fois. c'est pas régulier (dans le sens pas toutes les x secondes ou les x pixels). a 20 img/s ca se voit pas, à 60 oui (mais il faut quand meme se concentrer pour voir). je n'ai pas testé sur un autre ordi, je le ferai la semaine prochaine. mais bizarrement mes vieux tile/map plus grand, moins bien codé et avec des simple movieclips ne saccadent jamais de cette façon... je me demande si c'est mon pc ? le player ? j'ai du mal a comprendre comment ca pourrait etre le code vu la simplicité et surtout le caractere "aleatoir" des "saccades".

pouvez me dire deja si vous les voyez vous ? à cette adresse : http://www.opium-ble...p_bitmap00.html

c'est surtout à 60 que je le vois bien. le scroll s'arrete une fraction de seconde de temps en temps... il faut etre rapide car le scroll en ligne ne dure que quelques secondes (juste pour tester). A 60 img/s j'ai aussi mes lignes qui "bavent" des fois.
j'ai exporté en "acceleration materielle : aucun" et la qualité est à "inférieure". mais j'ai essayé d'autres trucs et ca ne change rien. dans le "player" du flash ide ca me parait encore plus visible que dans le navigateur...

help !

Modifié par henri b, 24 September 2011 - 16:27 PM.


#2 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 24 September 2011 - 17:08 PM

montre le code ?
tu utilise un Draw ? ou un setPixels ?

#3 Henri_B

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 337 messages

Posté 24 September 2011 - 17:19 PM

j'utilise un draw au demarrage pour transformer toutes mes briques en bitmapdata que je met dans un vector. et apres je change le bitmapdata de chaque "brique" (qui contient un bitmap) avec le contenu approprié du vector (seulement quand j'ai besoin de faire une nouvelle colonne evidemment, la majorité du temps, je change juste le .x du sprite qui contient toutes mes briques).

mais tu vois les saccades ou pas ?

#4 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 24 September 2011 - 17:34 PM

moi je les vois ls saccades :(
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#5 Henri_B

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 337 messages

Posté 24 September 2011 - 17:39 PM

merci Nataly. a toutes les cadences où juste 60 ?

#6 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 24 September 2011 - 17:43 PM

toutes :(
20 : une fois au début très nette.

Tu as vu cette discute où il est aussi question de bitmpap de draw et de saccades ?
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#7 Henri_B

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 337 messages

Posté 24 September 2011 - 17:47 PM

au debut c'est normal ! car en fait j'attend pas la fin de mes draw pour lancer le scroll (je le ferai evidemment par la suite). mais normalement apres 1 ou 2 secondes ca devrait plus tremblotter... et ca le fait quand meme...

je regarde ton lien ! merci

#8 Henri_B

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 337 messages

Posté 24 September 2011 - 18:05 PM

ps : j'ai enlevé les changements de bitmapdata lors de la rotation d'une colonne et ca ne change rien; j'ai essayé les cacheasbitmap et autre sur le sprite qui contient toutes les briques et ca change rien; j'ai essayé differents parametres pour la bitmap dans chaque brique (smoothing, etc...) et ca change rien; j'ai essayé de cacher (visible=false) les briques qui contiennent du vide (la majorité finalement) et ca change rien...

#9 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 24 September 2011 - 19:14 PM

sans code, je ne sais pas trop quoi te dire :)

#10 Henri_B

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 337 messages

Posté 24 September 2011 - 19:25 PM

j'ai regardé un peu sur internet ce que font les autres, genre ici : http://www.strille.n...1_scrolling.php
et si on met 1 comme pas de scroll et qu'on maintient la touche pour scroller... ben ca fait pareil ! de petits tremblements de temps en temps, comme ca...

je vais mettre mon code a charger quelque part, je fais un .zip avec tout dedans, 2mn... :-)

#11 Henri_B

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 337 messages

Posté 24 September 2011 - 19:32 PM

j'ai fais un .zip avec tout dedans, ici : www.opium-bleu.com/test/test_scroll_00.zip
merci !

#12 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 7017 messages

Posté 26 September 2011 - 11:56 AM

Salut,

J'ai pas tout lu ni tout testé mais je me pose la question de la gestion de la cadence du projet.
Tu te base sur le FPS du projet ou tu passes par un Timer ?

Question classique du rattrapage des tracés quand on essayes d'avoir un mouvement fluide sur la longueur avec un FPS projet et qui se corrige si on passe par un calcul manuel basé sur le temps.

#13 Henri_B

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 337 messages

Posté 26 September 2011 - 12:48 PM

je passe par un simple evenement enter_frame...

"Question classique du rattrapage des tracés quand on essayes d'avoir un mouvement fluide sur la longueur avec un FPS projet et qui se corrige si on passe par un calcul manuel basé sur le temps. "
ah ? tu peux me dire où je peux en savoir plus sur ce probleme de mouvement fluide ? je vais essayer avec un Timer tiens pour voir si ca corrige le truc...

merci pour cette piste.

#14 Henri_B

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 337 messages

Posté 26 September 2011 - 13:13 PM

remplacé mon enter_frame par un timer (a differentes vitesses) et ca change rien (j'ai eu l'impression que c'etait moins visible, mais là on est dans le ressenti alors je dirai pas que ca corrige vraiment le truc...).

personne ne fait donc de scroll de 1 en 1 en continu ?
(en fait j'ai regardé des jeux en flash avec des scroll du coup, et ca finit par tremblotter comme ça sur tous (si le scroll est continu quelques secondes), quelque soit le pas du scroll)

Modifié par henri b, 26 September 2011 - 13:16 PM.


#15 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 7017 messages

Posté 26 September 2011 - 13:36 PM

Re,

Ici tout en bas du chapitre : http://ressources.me...d_optimisations

Tu as un lien vers : http://www.bit-101.com/blog/?p=910
Qui dit en gros :

Citation

"If you are doing some kind of timing crucial simulation or game where the accuracy of the speed of animation is vital, the way to do it is to use a time-based animation set up. This checks the actual time elapsed since the last frame, and adjust the motion or animation based on that."

Tu peux aussi jeter un œil à ce qu'avait traduit Nicoptère en son temps sur les vecteurs : http://tonypa.nicoptere.net/tut04.html (voir "Frame ou temps ?").

Globalement il est avéré qu'utiliser le FPS du projet est la source de retraçages intempestifs, le FPS du projet n'étant pas régulier et dépendant beaucoup de la machine, de la version du player, etc...

L'idéal est de passer par un GetTimer au départ et de calculer le temps passé pour cadencer les animations. Je ne suis pas sur que ça résolve ton problème mais ça permettra déjà d'isoler cette partie et d'être sur que cela ne provient pas de là.

#16 draad

  • Members
  • PipPipPipPipPipPipPipPip
  • 654 messages

Posté 26 September 2011 - 14:00 PM

Coucou, moi je ne vois aucune saccade a aucun niveau.

#17 draad

  • Members
  • PipPipPipPipPipPipPipPip
  • 654 messages

Posté 26 September 2011 - 14:01 PM

Voir le messagedraad, le 26 September 2011 - 14:00 PM, dit :

Coucou, moi je ne vois aucune saccade a aucun niveau, ou alors si faible que ca ne me gene pas.


#18 Henri_B

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 337 messages

Posté 27 September 2011 - 08:41 AM

merci draad. je me demande quand meme si ca a pas un rapport avec la machine du coup...

monsieur_spi : en fait les gettimer et autres rattrapages de temps pourraient sans doute servir si le cas etait le suivant (amon avis) : le scroll s'arrete une fraction de seconde ou saute un pixel (flash loupe une marche en fait). mais la visuellement j'ai plutot l'impression d'un tremblement (plusieurs coup en avant/arriere) ce qui a mon avis n'est pas vraiment le symptome du probleme cité dans tes liens (tres interessant quand meme).

en tous cas maintenant que j'ai repéré ça, je suis attentif et je le remarque sur TOUS les jeux a scroll continu.
soit je le voyais pas avant car je faisais pas attention,soit je l'avais pas car j'avais pas la meme version du player ?

#19 StrikerFred1327250243

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 112 messages

Posté 28 September 2011 - 19:34 PM

Essaye d'activer la VSync. Pour cela, active le rendu gpu dans flash, et dans l'embed object. Ensuite, utilise enterFrame, et ca sera calé sur le rafraichissement de l'écran.

Moi aussi je ne le remarquais pas avant, mais une fois que tu y fais attention tu remarques ce genre de saccade.. La vsync devrait résoudre ton problème

#20 StrikerFred1327250243

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 112 messages

Posté 28 September 2011 - 20:27 PM

Un peu plus d'infos sur ce que je sais de la vsync

Il faut:
- avoir le focus sur le swf, ça élimine pas mal de saccades
- fermer toutes les fenêtres et onglets qui contiennent un ou plusieurs swf
- fermer les appli qui peuvent perturber le cpu genre msn

Pour qu'un programme gère proprement la vsync, il faut qu'il puisse detecter exactement le moment où le haut de l'écran commence à tracer. or si windows exécute un autre programme à ce moment là , flash player va louper le coche, d'où les saccades, c'est pourquoi si tu veux un truc parfaitement fluide il faut que l'utilisateur se mette en conditions comme s'il jouait à un jeu cd rom, fermer tout le reste des trucs qui tournent et foutre l'appli qui vsync en tâche prioritaire. or flash n'est pas une tâche prioritaire

#21 Henri_B

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 337 messages

Posté 28 September 2011 - 21:04 PM

bonjour StrikerFred,
je ne sais pas si c'est toi qui a fait transiter un mail via une connaissance commune à ce sujet, mais merci de toutes facons.
tout ce que tu dis est tres interessant, vrai et repond parfaitement à mon probleme (je m'etonne de ne pas en avoir trouver plus d'echos en francais sur le net, comme quoi on ouvre peut etre pas assez les yeux pour voir les details de nos flash...).
en tous cas je confirme donc que en mettant en mode GPU ca corrige ce probleme ! les autres pistes données non.
j'avais fais des essais, mais DANS flash. or il faut tester le swf hors flash (dans une page html ou pas).

par contre je me pose encore quelques questions :
_ quels inconvenients peut avoir ce mode gpu ?
_ ca ne marche qu'a 60 i/s ? c'est a dire une frequence en rapport avec l'ecran ?
_ ca ne marche que sur windows ? il me semble que sur mac et linux pas d'effet ? je me trompe ? (je testerai sur mac dans quelques jours).

encore merci, ca commencait a devenir une obsession ces tremblements...

#22 Henri_B

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 337 messages

Posté 28 September 2011 - 21:29 PM

"quels inconvenients peut avoir ce mode gpu ?"
je precise : dans mon cas, où tout (ou presque) est en bitmap.



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)