Bonjour à tous
Je suis en ce moment en train de programmer un jeu de stratégie en as3, et je me heurte fréquemment à un problème de consommation CPU.
Une des chose qui en mange le plus, c'est lorsque le joueur fait un scroll sur la carte (la carte du jeu étant donc plus grande que la fenêtre), et que je déplace l'ensemble des objets qui s'y trouve : L'entièreté de la fenêtre doit être redessinée à chaque seconde, ce qui implique une grande consommation CPU, surtout en plein écran. J'ai réussi à minimiser les dégâts pour que ça ne soit pas trop affreux, mais hier je suis tombé sur ce jeu :
http://fr.goblinkeeper.com/play (on peut y jouer directement sans s'inscrire)
C'est un free-to-play qui peut vaguement ressembler à mon jeu sur certains aspect mais chez eux, le scrolling ne consomme presque aucune CPU supplémentaire. J'ai passé la journée a essayer de comprendre la méthode à utiliser, et j'ai découvert en affichant les zones de retraçage (possible avec la version debug de flash player), que le scrolling n'entrainait aucun retraçage du décors (seulement de quelques pauvres icones, qui semble collées par-dessus.
Comment c'est diantre possible ça, me demandais-je ?
Et la seule hypothèse que j'ai trouvé, c'est que le jeu en flash ne contiennent pas le-dit décors, que celui-ci soit dans une appli sous la fenêtre flash (en javascript, par exemple), et que la fenêtre flash le laisse voir par transparence.
A chaque interaction de l'utilisateur de type scrolling, le programme en flash ne s'occuperait donc que de certaines icones et enverrait toutes les infos de scroll au programme javascript dessous, qui lui déplacerait le décors. Cette théorie a vaguement été confortée par le fait que lors de mouvement rapides, il se crée un petit décalage entre les icônes du flash (qui sont redessinées) et le décors dessous.
Donc ma question c'est : à quel point cette théorie est absurde ? Ou est-ce qu'un truc comme ça est possible.
Désolé pour le pavé, et merci d'avance.
Partager