Un ami et moi-même utilisons en ce moment Pygame pour créer un simple line runner (un personnage qui cours sur une line en sautant au dessus d'obstacles).
Or nous avions décidé de mettre un très grande image de fond et de la faire défiler. Le problème est justement ici ! Lorsque l'on met une image de 30 000 x 500px Pygame nous dit "Out of memory" ou quelque chose dans le genre. Et lorsque nous avons découpé l'image en 5000x500 ... notre programme bug.
Alors, pour le "bug", ce n'est pas vraiment un bug, c'est qu'on à l'impression que seul le personnage est "bliter".
Un screenshot vaut mieux qu'un long discours !
Mais avant je m'explique : nous faisons défiler une image grâce à une boucle while et la position de l'image en x qui va être égale à la position - 1 (changeable selon la vitesse que l'on veut). Nous avons aussi un script de saut qui va "blit" le personnage à certaines coordonnées mais cette boucle fait aussi défiler le fond.
Hors à la fin de l'image, lorsque je saute, voici ce que ça me donne : seul le personnage à l'air "blit". Est-ce dû au fait que se soit la "fin" de l'image. Et combien de Kio ou Mio, Pygame supporte à l'ouverture d'une image ?
SCREENSHOT : Le personnage de test est ici en rouge. L'image est terminé (il n'y a plus de décors ducoup)
Je pensais que c'etait dû au faite que vu qu'il n'y avais plus de pixels à faire défiler, l'image de fond ne se blitai plus et ducoup, le script n'affichait que le personnage. Vu que l'image de fond n'est plus mise à jours, on voit le personnage à toutes les positions qu'il à prises ?
30 000 x 500 x 3 octets -> tes données font au moins 45 Mio en RAM, juste pour une image, tu m'étonnes que Python n'apprécie pas, c'est la place que prend mon OS + mon gestionnaire de fenêtre pour faire tourner une session.
Tu ferais mieux d'employer une autre technique, AMHA.
Pygame nous dit "Out of memory" ou quelque chose dans le genre.
Il te dit QUOI, précisément ?
Enfin, je pense que Pygame n'est pas un bon choix pour le jeu que tu veux faire : d'après ce que tu décris, c'est le décor entier qui scrolle alors que ton personnage reste globalement fixe. Tu risques de vite tomber sur des problèmes de performances : la SDL n'est vraiment pas efficace pour raffraîchir tout l'écran à chaque frame. Tu devrais plutôt te pencher sur une bibliothèque basée sur OpenGL, comme PySFML.
Merci pour vos réponses, ça confirme en effet ce que je pensais. Et nohar, il nous met juste "Out of memory". Ca doit venir de ce que tu précises juste au dessus
On tiens à utiliser Pygame justement, car nous l'avons malheureusement fixé dans notre cahier des charges qui n'est maintenant plus changeable :X. On va se débrouiller pour faire plusieurs images que l'on va mettre à la suite, ça fera long et moche, mais nous avons que ce choix.
bha, suffit de précharger les images les une à la suite des autres durant le jeu en feintant un peu(genre aux checkpoint) à cause des temps d'accès au disque ...
Merci pour vos réponses, ça confirme en effet ce que je pensais. Et nohar, il nous met juste "Out of memory". Ca doit venir de ce que tu précises juste au dessus
Copie-colle l'exception complète, avec le traceback STP.
Sinon, on ne sait pas qui dit "Out of memory".
Non les obstacles seront mit à certains endroit par moi même sur l'image de fond. J'aurai juste à dire au programme "A tel pixel, si l'image du personnage touche entre tant et tant, il a perdu !" et ce en x et y. C’est facile de repérer avec photoshop là où tu places les obstacles et de combien sur combien tu les fait. Donc là ne sera pas le soucis à mon avis
Pourquoi ne pas faire un fond fixe (à la rigueur, l'utilisateur pourrais choisir le fond du niveau) puis se contenter de déplacer uniquement les obstacles ?
Comme ça plus de problème au niveau de la mémoire, seul le fond, le personnage ainsi que les différents obstacles seront chargés en mémoire.
Josmiley, j'en ai bien un, qui sont les premiers tests du jeu.
http://www.youtube.com/watch?v=UKxd9ngnSmc C'est une petite vidéo youtube que j'ai fais sans prétention bien sûr, mais juste pour pouvoir montrer "au jour le jour" à mes camarades qui s'y intéressent.
On voit un peu à quoi peu ressembler la chose. Après j'ai un autre lien qui viens d'un forum que j'ai créer mais qui pour le moment sert d'aide aux personnes de ma classe qui en ont besoin : http://python-fr.1fr1.net/t27-line-runner Tu as là tous les principes etc du jeu, si tu veux voir. Mais notre problème est simplement le fond, rien d'autre. Maintenant on pense faire un blit à chaque fois.
@Epychoc : Je me doit de répondre "non" même si la suggestion est très pertinente. Mais nous voulons un jeu court avec une petite mécanique assez cool. C’est juste un projet. Les professeurs veulent simplement voir ce dont nous sommes capable, pas voir si on sait développer un jeu entier. C’est pour ça que nous nous permettons de faire un fond qui défile : pour un jeu attrayant qui ne dur presque qu'une minute mais qui nous permet de bien voir ce que nous avons cherché à faire.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Site personnel : Julien Gidel - AutoMate - PHPresentation
Python c'est bon, mangez-en.
Site personnel : Julien Gidel - AutoMate - PHPresentation
Python c'est bon, mangez-en.
Site personnel : Julien Gidel - AutoMate - PHPresentation
Python c'est bon, mangez-en.
Site personnel : Julien Gidel - AutoMate - PHPresentation
Python c'est bon, mangez-en.
Site personnel : Julien Gidel - AutoMate - PHPresentation
Python c'est bon, mangez-en.
Site personnel : Julien Gidel - AutoMate - PHPresentation